• Home
  • History
  • Annotate
  • only in /external/llvm/lib/CodeGen/
History log of /external/llvm/lib/CodeGen/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
22c310d78ce9630af15b0de94c18a409705b7496 10-Dec-2014 Tim Murray <timmurray@google.com> Revert "Revert "Bring in fixes for Cortex-A53 errata + build updates.""

This reverts commit c8db087b3b6d8767db4fa54057ac8fa448d812ca.
riticalAntiDepBreaker.cpp
iveRangeEdit.cpp
achineCSE.cpp
achineLICM.cpp
achineSink.cpp
egisterCoalescer.cpp
6eeae0cf0069a272980de53836081a244ca5dffb 10-Dec-2014 Tim Murray <timmurray@google.com> Revert "Apply rL216114 from upstream LLVM."

This reverts commit 9156e80250ada6f6d39af3b464a918d4855f9a2a.
riticalAntiDepBreaker.cpp
9156e80250ada6f6d39af3b464a918d4855f9a2a 23-Oct-2014 Tim Murray <timmurray@google.com> Apply rL216114 from upstream LLVM.

bug 18094492

Change-Id: Ic049d4123b9240d89daf4f3c5e8d82e8276a84e7
riticalAntiDepBreaker.cpp
c8db087b3b6d8767db4fa54057ac8fa448d812ca 23-Oct-2014 Tim Murray <timmurray@google.com> Revert "Bring in fixes for Cortex-A53 errata + build updates."

This reverts commit 8a1773694c6d9b1277647440583811ad3d85c6a4.

bug 18094492
riticalAntiDepBreaker.cpp
iveRangeEdit.cpp
achineCSE.cpp
achineLICM.cpp
achineSink.cpp
egisterCoalescer.cpp
8a1773694c6d9b1277647440583811ad3d85c6a4 17-Oct-2014 Stephen Hines <srhines@google.com> Bring in fixes for Cortex-A53 errata + build updates.

Bug: 18034609

(cherry picked from commit bfc2d688b591c574c0cc788348c74545ce894efa)

Change-Id: I010fb735bb84fe97ccb8e3878f9601cb533962f4
riticalAntiDepBreaker.cpp
iveRangeEdit.cpp
achineCSE.cpp
achineLICM.cpp
achineSink.cpp
egisterCoalescer.cpp
593a05ca1e177fc584cba399bf66fbf437ba75d9 11-Aug-2014 Petar Jovanovic <petar.jovanovic@imgtec.com> Add support for scalarizing cttz_zero_undef

Follow up to r214266. Add missing case in ScalarizeVectorResult() for
cttz_zero_undef.

Differential Revision: http://reviews.llvm.org/D4813

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215330 91177308-0d34-0410-b5e6-96231b3b80d8

(cherry picked from commit cddb0cfe383207ccec0cc797db401854e5f0c672)

Change-Id: I998526c9a9a77cb340c92ad6b292e7e5a9ba5767
electionDAG/LegalizeVectorTypes.cpp
f06aaf11fff0e6fa12d4ee959569a263bf7bd779 30-Jul-2014 Petar Jovanovic <petar.jovanovic@imgtec.com> Add support for scalarizing ctlz_zero_undef

Fix the missing case in ScalarizeVectorResult() that was exposed with
libclcore.bc in Android.

Differential Revision: http://reviews.llvm.org/D4645

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214266 91177308-0d34-0410-b5e6-96231b3b80d8

(cherry picked from commit 63045274494a5adfedbd4de7280386948f7ca9b9)

Change-Id: I38fc81e0ceefd2cfdd65d7619a62124dc4ceac6f
electionDAG/LegalizeVectorTypes.cpp
aa9f408cef5714fc0bc0ec61fa4016a3ba0a8c61 12-Sep-2014 Benjamin Kramer <benny.kra@googlemail.com> Legalizer: Use the scalar bit width when promoting bit counting instrs on
vectors.

e.g. when promoting ctlz from <2 x i32> to <2 x i64> we have to fixup
the result by 32 bits, not 64. PR20917.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217671 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
cd81d94322a39503e4a3e87b6ee03d4fcb3465fb 21-Jul-2014 Stephen Hines <srhines@google.com> Update LLVM for rebase to r212749.

Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls

Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
nalysis.cpp
ndroid.mk
smPrinter/ARMException.cpp
smPrinter/Android.mk
smPrinter/AsmPrinter.cpp
smPrinter/CMakeLists.txt
smPrinter/DbgValueHistoryCalculator.cpp
smPrinter/DwarfCFIException.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfUnit.cpp
smPrinter/DwarfUnit.h
smPrinter/EHStreamer.cpp
smPrinter/EHStreamer.h
smPrinter/Win64Exception.cpp
smPrinter/WinCodeViewLineTables.cpp
tomicExpandLoadLinkedPass.cpp
asicTargetTransformInfo.cpp
ranchFolding.cpp
MakeLists.txt
odeGenPrepare.cpp
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
lobalMerge.cpp
umpInstrTables.cpp
LVMTargetMachine.cpp
iveDebugVariables.cpp
iveDebugVariables.h
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineScheduler.cpp
asses.cpp
eepholeOptimizer.cpp
rologEpilogInserter.cpp
egAllocGreedy.cpp
egisterPressure.cpp
cheduleDAGInstrs.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ResourcePriorityQueue.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGVLIW.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGDumper.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
electionDAG/TargetSelectionDAGInfo.cpp
tackMapLivenessAnalysis.cpp
argetInstrInfo.cpp
argetLoweringBase.cpp
argetLoweringObjectFileImpl.cpp
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
llocationOrder.cpp
nalysis.cpp
ndroid.mk
smPrinter/ARMException.cpp
smPrinter/AddressPool.cpp
smPrinter/AddressPool.h
smPrinter/Android.mk
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/CMakeLists.txt
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
smPrinter/DbgValueHistoryCalculator.cpp
smPrinter/DbgValueHistoryCalculator.h
smPrinter/DebugLocEntry.h
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfFile.cpp
smPrinter/DwarfFile.h
smPrinter/DwarfStringPool.cpp
smPrinter/DwarfStringPool.h
smPrinter/DwarfUnit.cpp
smPrinter/DwarfUnit.h
smPrinter/WinCodeViewLineTables.cpp
smPrinter/WinCodeViewLineTables.h
tomicExpandLoadLinkedPass.cpp
asicTargetTransformInfo.cpp
ranchFolding.cpp
MakeLists.txt
alcSpillWeights.cpp
allingConvLower.cpp
odeGen.cpp
odeGenPrepare.cpp
riticalAntiDepBreaker.cpp
FAPacketizer.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
arlyIfConversion.cpp
dgeBundles.cpp
xecutionDepsFix.cpp
xpandISelPseudos.cpp
xpandPostRAPseudos.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
nlineSpiller.cpp
nterferenceCache.cpp
nterferenceCache.h
ntrinsicLowering.cpp
LVMTargetMachine.cpp
atencyPriorityQueue.cpp
exicalScopes.cpp
iveDebugVariables.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveIntervalUnion.cpp
iveRangeCalc.cpp
iveRangeCalc.h
iveRangeEdit.cpp
iveRegMatrix.cpp
iveStackAnalysis.cpp
iveVariables.cpp
ocalStackSlotAllocation.cpp
achineBasicBlock.cpp
achineBlockFrequencyInfo.cpp
achineBlockPlacement.cpp
achineBranchProbabilityInfo.cpp
achineCSE.cpp
achineCopyPropagation.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
achineInstr.cpp
achineLICM.cpp
achineModuleInfo.cpp
achinePassRegistry.cpp
achineRegisterInfo.cpp
achineSSAUpdater.cpp
achineScheduler.cpp
achineSink.cpp
achineTraceMetrics.cpp
achineVerifier.cpp
ptimizePHIs.cpp
HIElimination.cpp
asses.cpp
eepholeOptimizer.cpp
ostRASchedulerList.cpp
rocessImplicitDefs.cpp
rologEpilogInserter.cpp
seudoSourceValue.cpp
egAllocBase.cpp
egAllocBase.h
egAllocBasic.cpp
egAllocFast.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
egisterClassInfo.cpp
egisterCoalescer.cpp
egisterCoalescer.h
egisterPressure.cpp
egisterScavenging.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
coreboardHazardRecognizer.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ResourcePriorityQueue.cpp
electionDAG/SDNodeDbgValue.h
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGVLIW.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGDumper.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
lotIndexes.cpp
pillPlacement.cpp
pillPlacement.h
piller.cpp
plitKit.cpp
plitKit.h
tackColoring.cpp
tackMapLivenessAnalysis.cpp
tackMaps.cpp
tackProtector.cpp
tackSlotColoring.cpp
ailDuplication.cpp
argetInstrInfo.cpp
argetLoweringBase.cpp
argetLoweringObjectFileImpl.cpp
argetRegisterInfo.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
odule.modulemap
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
llocationOrder.h
nalysis.cpp
ndroid.mk
smPrinter/ARMException.cpp
smPrinter/Android.mk
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/AsmPrinterHandler.h
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/ByteStreamer.h
smPrinter/CMakeLists.txt
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
smPrinter/DebugLocEntry.h
smPrinter/DebugLocList.h
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
smPrinter/DwarfCFIException.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfUnit.cpp
smPrinter/DwarfUnit.h
smPrinter/ErlangGCPrinter.cpp
smPrinter/LLVMBuild.txt
smPrinter/OcamlGCPrinter.cpp
smPrinter/Win64Exception.cpp
smPrinter/WinCodeViewLineTables.cpp
smPrinter/WinCodeViewLineTables.h
asicTargetTransformInfo.cpp
ranchFolding.cpp
MakeLists.txt
alcSpillWeights.cpp
odeGen.cpp
odeGenPrepare.cpp
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
FAPacketizer.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
arlyIfConversion.cpp
rlangGC.cpp
xecutionDepsFix.cpp
xpandISelPseudos.cpp
xpandPostRAPseudos.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
nlineSpiller.cpp
nterferenceCache.cpp
nterferenceCache.h
ntrinsicLowering.cpp
LVMBuild.txt
LVMTargetMachine.cpp
atencyPriorityQueue.cpp
exicalScopes.cpp
iveDebugVariables.cpp
iveDebugVariables.h
iveInterval.cpp
iveIntervalAnalysis.cpp
ivePhysRegs.cpp
iveRangeCalc.cpp
iveRangeEdit.cpp
iveRegMatrix.cpp
iveRegUnits.cpp
ocalStackSlotAllocation.cpp
achineBasicBlock.cpp
achineBlockFrequencyInfo.cpp
achineBlockPlacement.cpp
achineBranchProbabilityInfo.cpp
achineCSE.cpp
achineCopyPropagation.cpp
achineFunction.cpp
achineFunctionPass.cpp
achineFunctionPrinterPass.cpp
achineInstr.cpp
achineInstrBundle.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineRegisterInfo.cpp
achineSSAUpdater.cpp
achineScheduler.cpp
achineSink.cpp
achineTraceMetrics.cpp
achineVerifier.cpp
ptimizePHIs.cpp
HIElimination.cpp
HIEliminationUtils.cpp
asses.cpp
eepholeOptimizer.cpp
ostRASchedulerList.cpp
rocessImplicitDefs.cpp
rologEpilogInserter.cpp
rologEpilogInserter.h
egAllocBase.cpp
egAllocBase.h
egAllocBasic.cpp
egAllocFast.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
egisterClassInfo.cpp
egisterCoalescer.cpp
egisterPressure.cpp
egisterScavenging.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
cheduleDAGPrinter.cpp
electionDAG/Android.mk
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ResourcePriorityQueue.cpp
electionDAG/SDNodeDbgValue.h
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGVLIW.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGDumper.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
electionDAG/TargetSelectionDAGInfo.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
lotIndexes.cpp
pillPlacement.cpp
pillPlacement.h
piller.cpp
plitKit.cpp
tackColoring.cpp
tackMapLivenessAnalysis.cpp
tackMaps.cpp
tackProtector.cpp
tackSlotColoring.cpp
ailDuplication.cpp
argetInstrInfo.cpp
argetLoweringBase.cpp
argetLoweringObjectFileImpl.cpp
argetOptionsImpl.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
373aa5c665fe6df6b9c5586d397dc3617f25aab5 07-Feb-2014 Stephen Hines <srhines@google.com> Update LLVM for merge to 3.4.

Update config.h files.

Add RS SubtargetFeature for +long64 on ARM devices.

Adjust Android.mk for added/removed files:

+ Delinearization.cpp
- PathNumbering.cpp
- PathProfileInfo.cpp
- PathProfileVerifier.cpp
- ProfileDataLoader.cpp
- ProfileDataLoaderPass.cpp
- ProfileEstimatorPass.cpp
- ProfileInfo.cpp
- ProfileInfoLoader.cpp
- ProfileInfoLoaderPass.cpp
- ProfileVerifierPass.cpp

+ LiveRegUnits.cpp
- ShrinkWrapping.cpp
+ StackMaps.cpp
- StrongPHIElimination.cpp

+ DIEHash.cpp

+ LegacyPassManager.cpp

+ ELF.cpp

+ Unicode.cpp

- MipsOptimizeMathLibCalls.cpp

- MipsELFStreamer.cpp
+ MipsTargetStreamer.cpp

- EdgeProfiling.cpp
+ DataFlowSanitizer.cpp
+ DebugIR.cpp
- OptimalEdgeProfiling.cpp
- PathProfiling.cpp
- ProfilingUtils.cpp

- BasicBlockPlacement.cpp
+ LoopRerollPass.cpp
+ PartiallyInlineLibCalls.cpp
+ SampleProfile.cpp

+ GlobalStatus.cpp

Change-Id: I17dcf0bf53a1720acd8226ae3e30d84993562a91
ndroid.mk
smPrinter/Android.mk
ce9904c6ea8fd669978a8eefb854b330eb9828ff 12-Feb-2014 Stephen Hines <srhines@google.com> Merge remote-tracking branch 'upstream/release_34' into merge-20140211

Conflicts:
lib/Linker/LinkModules.cpp
lib/Support/Unix/Signals.inc

Change-Id: Ia54f291fa5dc828052d2412736e8495c1282aa64
77e30195a006a022b1554933bc766b604692b9d1 15-Dec-2013 Bill Wendling <isanbard@gmail.com> Merging r197047:
------------------------------------------------------------------------
r197047 | d0k | 2013-12-11 08:36:09 -0800 (Wed, 11 Dec 2013) | 3 lines

SelectionDAG: Fix a typo.

Found by "cppcheck". PR18208.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@197355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b1eb9dd018475d45d9a8f705441f8f6c86a8f986 10-Dec-2013 Bill Wendling <isanbard@gmail.com> Merging r196858:
------------------------------------------------------------------------
r196858 | nadav | 2013-12-09 17:13:59 -0800 (Mon, 09 Dec 2013) | 1 line

Fix PR18162 - Incorrect assertion assumed that the SDValue resno is zero.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196886 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
aee5c3e1052b2e144fdc6461bd602cdc502a93cc 05-Dec-2013 Bill Wendling <isanbard@gmail.com> Revert r191049 and r191059. They were causing failures. See PR17975.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196521 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d0cf77ad590633c0e10336e4c59b509140328042 01-Dec-2013 Bill Wendling <isanbard@gmail.com> --- Reverse-merging r195823 into '.':
U lib/MC/MCSectionCOFF.cpp
U lib/CodeGen/TargetLoweringObjectFileImpl.cpp
U test/MC/COFF/weak-symbol.ll
U test/MC/COFF/tricky-names.ll
G .
--- Recording mergeinfo for reverse merge of r195823 into '.':
G .



git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196036 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
38af06736e6d46ef3d417e40b9843ca1658fc8e7 27-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195798:
------------------------------------------------------------------------
r195798 | rafael | 2013-11-26 17:18:37 -0800 (Tue, 26 Nov 2013) | 9 lines

Use simple section names for COMDAT sections on COFF.

With this patch we use simple names for COMDAT sections (like .text or .bss).
This matches the MSVC behavior.

When merging it is the COMDAT symbol that is used to decide if two sections
should be merged, so there is no point in building a fancy name.

This survived a bootstrap on mingw32.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195823 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
0ae07098f7d2ad5a1868d448d0b1b4eef2a3b091 27-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195148:
------------------------------------------------------------------------
r195148 | rafael | 2013-11-19 11:52:52 -0800 (Tue, 19 Nov 2013) | 15 lines

Support multiple COFF sections with the same name but different COMDAT.

This is the first step to fix pr17918.

It extends the .section directive a bit, inspired by what the ELF one looks
like. The problem with using linkonce is that given

.section foo
.linkonce....

.section foo
.linkonce

we would already have switched sections when getting to .linkonce. The cleanest
solution seems to be to add the comdat information in the .section itself.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195822 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
1349899ba424eb4655c890bdfecb514682627a8d 25-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195670:
------------------------------------------------------------------------
r195670 | void | 2013-11-25 10:05:22 -0800 (Mon, 25 Nov 2013) | 5 lines

Unrevert r195599 with testcase fix.

I'm not sure how it was checking for the wrong values...
PR18023.

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ddc3c964657cc0be4994ddfaf056d5ec6bb11e5b 25-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195636:
------------------------------------------------------------------------
r195636 | aemerson | 2013-11-25 03:24:18 -0800 (Mon, 25 Nov 2013) | 2 lines

Revert r195599 as it broke the builds.

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195671 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
975e958dbc12ba412385b721100fc1c830b0e3ab 25-Nov-2013 Daniel Sanders <daniel.sanders@imgtec.com> Merging r195635:
------------------------------------------------------------------------
r195635 | dsanders | 2013-11-25 11:14:43 +0000 (Mon, 25 Nov 2013) | 19 lines

Fixed tryFoldToZero() for vector types that need expansion.

Summary:
Moved the requirement for SelectionDAG::getConstant() to return legally
typed nodes slightly earlier. There were two optional DAGCombine passes
that were missed out and were required to produce type-legal DAGs.

Simplified a code-path in tryFoldToZero() to use SelectionDAG::getConstant().
This provides support for both promoted and expanded vector types whereas the
previous code only supported promoted vector types.

Fixes a "Type for zero vector elements is not legal" assertion detected by
an llvm-stress generated test.

Reviewers: resistor

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D2251
------------------------------------------------------------------------



git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195651 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGISel.cpp
f02a188899769cde2315c964f0fbed1d024b7514 25-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195491:
------------------------------------------------------------------------
r195491 | probinson | 2013-11-22 11:11:24 -0800 (Fri, 22 Nov 2013) | 11 lines

Teach ISel not to optimize 'optnone' functions (revised).

Improvements over r195317:
- Set/restore EnableFastISel flag instead of just running FastISel within
SelectAllBasicBlocks; the flag is checked in various places, and
FastISel won't run properly if those places don't do the right thing.
- Test looks for normal ISel versus FastISel behavior, and not
something more subtle that doesn't work everywhere.

Based on work by Andrea Di Biagio.

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e1679735d6df98bd71808f3c34a32599de0f40a1 25-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195599:
------------------------------------------------------------------------
r195599 | void | 2013-11-24 21:01:21 -0800 (Sun, 24 Nov 2013) | 4 lines

Don't look past volatile loads.

A volatile load should block us from trying to coalesce stores.
PR18023
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195600 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f0061998dd1256df1ba933e80fdad2f594ea3f50 22-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195398:
------------------------------------------------------------------------
r195398 | tstellar | 2013-11-21 16:41:05 -0800 (Thu, 21 Nov 2013) | 7 lines

SelectionDAG: Optimize expansion of vec_type = BITCAST scalar_type

The legalizer can now do this type of expansion for more
type combinations without loading and storing to and
from the stack.

NOTE: This is a candidate for the 3.4 branch.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195414 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
f62b274a93d4014d56fa3a656f4fac6e7d827358 22-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195397:
------------------------------------------------------------------------
r195397 | tstellar | 2013-11-21 16:39:23 -0800 (Thu, 21 Nov 2013) | 11 lines

Split SETCC if VSELECT requires splitting too.

This patch is a rewrite of the original patch commited in r194542. Instead of
relying on the type legalizer to do the splitting for us, we now peform the
splitting ourselves in the DAG combiner. This is necessary for the case where
the vector mask is a legal type after promotion and still wouldn't require
splitting.

Patch by: Juergen Ributzka

NOTE: This is a candidate for the 3.4 branch.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195413 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypesGeneric.cpp
ee287ca22abcce9f769618c107ff3f46aa2d0cba 22-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195156:
------------------------------------------------------------------------
r195156 | ributzka | 2013-11-19 13:20:17 -0800 (Tue, 19 Nov 2013) | 3 lines

[DAG] Refactor vector splitting code in SelectionDAG. No functional change intended.

Reviewed by Tom
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195412 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
54075bbea7e70fea6cdb9e5e89b066118c1d314b 21-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195339:
------------------------------------------------------------------------
r195339 | chapuni | 2013-11-21 02:55:15 -0800 (Thu, 21 Nov 2013) | 5 lines

Revert r195317 (and r195333), "Teach ISel not to optimize 'optnone' functions."

It broke, at least, i686 target. It is reproducible with "llc -mtriple=i686-unknown".

FYI, it didn't appear to add either "-O0" or "-fast-isel".
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195375 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4e2d2f091e88dd83d1685173d2c0692d8ae155e6 21-Nov-2013 Daniel Sanders <daniel.sanders@imgtec.com> Merging r195355:
------------------------------------------------------------------------
r195355 | dsanders | 2013-11-21 13:24:49 +0000 (Thu, 21 Nov 2013) | 20 lines

Add support for legalizing SETNE/SETEQ by inverting the condition code and the result of the comparison.

Summary:
LegalizeSetCCCondCode can now legalize SETEQ and SETNE by returning the inverse
condition and requesting that the caller invert the result of the condition.

The caller of LegalizeSetCCCondCode must handle the inverted CC, and they do
so as follows:
SETCC, BR_CC:
Invert the result of the SETCC with SelectionDAG::getNOT()
SELECT_CC:
Swap the true/false operands.

This is necessary for MSA which lacks an integer SETNE instruction.

Reviewers: resistor

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D2229
------------------------------------------------------------------------



git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195363 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0a0da619eb7a072836cf2c5debee1c5c7c8f5496 21-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195317:
------------------------------------------------------------------------
r195317 | probinson | 2013-11-20 22:33:32 -0800 (Wed, 20 Nov 2013) | 4 lines

Teach ISel not to optimize 'optnone' functions.

Based on work by Andrea Di Biagio.

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195321 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3773bef110790fbeeb386b083bdf8ad16bbceb91 20-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195138:
------------------------------------------------------------------------
r195138 | atrick | 2013-11-19 10:29:45 -0800 (Tue, 19 Nov 2013) | 3 lines

Obvious pasto survived a couple rounds of cleanup.

Caught by Aaron Ballman.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195219 91177308-0d34-0410-b5e6-96231b3b80d8
tackMaps.cpp
c00090b16b2b35f2d042d965945c4246d13321b5 19-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195103:
------------------------------------------------------------------------
r195103 | atrick | 2013-11-18 21:05:43 -0800 (Mon, 18 Nov 2013) | 1 line

Fix patchpoint comments.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195115 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
72ef53ad21cf2df7cdf6f2a0470b4eaa98d9e7ed 19-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195093:
------------------------------------------------------------------------
r195093 | atrick | 2013-11-18 19:29:56 -0800 (Mon, 18 Nov 2013) | 4 lines

Add an abstraction to handle patchpoint operands.

Hard-coded operand indices were scattered throughout lowering stages
and layers. It was super bug prone.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195112 91177308-0d34-0410-b5e6-96231b3b80d8
tackMaps.cpp
354362524a72b3fa43a6c09380b7ae3b2380cbba 19-Nov-2013 Juergen Ributzka <juergen@apple.com> [weak vtables] Remove a bunch of weak vtables

This patch removes most of the trivial cases of weak vtables by pinning them to
a single object file. The memory leaks in this version have been fixed. Thanks
Alexey for pointing them out.

Differential Revision: http://llvm-reviews.chandlerc.com/D2068

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195064 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
achineScheduler.cpp
egAllocBase.cpp
egAllocBase.h
8da7540802d67336892deeac3385442e0400333c 19-Nov-2013 David Blaikie <dblaikie@gmail.com> DwarfDebug: Move trailing else to the same line as prior closing brace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195060 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d6dffb40cb05909dd6289e6dc37c25359ab14b52 19-Nov-2013 David Blaikie <dblaikie@gmail.com> DwarfDebug: Remove some more redundant explicit constructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195059 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4adba52570723c2e1654b1c01feddf759893f096 19-Nov-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Simplify a few more explicit constructions, underconstrained types, and make DIType(MDNode*) explicit like all the other DI* node ctors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195055 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
b21ab43cfc3fa0dacf5c95f04e58b6d804b59a16 18-Nov-2013 Alexey Samsonov <samsonov@google.com> Revert r194865 and r194874.

This change is incorrect. If you delete virtual destructor of both a base class
and a subclass, then the following code:
Base *foo = new Child();
delete foo;
will not cause the destructor for members of Child class. As a result, I observe
plently of memory leaks. Notable examples I investigated are:
ObjectBuffer and ObjectBufferStream, AttributeImpl and StringSAttributeImpl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194997 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
achineScheduler.cpp
egAllocBase.cpp
egAllocBase.h
17a88a7e8b8ad2f0766c4099d09cd29229296352 17-Nov-2013 David Blaikie <dblaikie@gmail.com> Remove unnecessary temporary construction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194981 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
fbf70b383d170e00d5104b22f1bda604214d6c30 17-Nov-2013 David Blaikie <dblaikie@gmail.com> Remove redundant explicit default initialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194980 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
08e51e1d97e4dd2e5a0b4539da186869916ae5c3 17-Nov-2013 David Blaikie <dblaikie@gmail.com> DwarfCompileUnit: Add type safety to createGlobalVariableDIE

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194979 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
fe128c6ac8a6ae6aa85f0168f99d9c28de010fd8 17-Nov-2013 Bill Wendling <isanbard@gmail.com> Revert "Micro-optimization"

This reverts commit f1d9fe9d04ce93f6d5dcebbd2cb6a07414d7a029.

This was causing PR17964. We need to use thread data before regular data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194960 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
d5ae5b018644345ba0fc48a47030ef1105e1abfd 17-Nov-2013 Benjamin Kramer <benny.kra@googlemail.com> DAGCombiner: Partially revert r192795, getNOT was fixed not to create illegal constants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194959 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ca1b7799aaeeeb0c6af80fa31fb8f74e79ab2967 17-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Use more getZExtOrTruncs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194945 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
91053d585abf6b20b770532d007a8b7648d0621f 17-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Use getZExtOrTrunc instead of repeating the same logic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194944 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bb756ca24401e190e3b704e5d92759c7a79cc6b7 17-Nov-2013 Andrew Trick <atrick@apple.com> Added a size field to the stack map record to handle subregister spills.

Implementing this on bigendian platforms could get strange. I added a
target hook, getStackSlotRange, per Jakob's recommendation to make
this as explicit as possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194942 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
tackMaps.cpp
argetInstrInfo.cpp
94437c9691d538cc5d3862660c79fce2a32e2279 17-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Use right address space pointer size

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194940 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e6e811277f045ee3d61cd62622d71005c47eb48d 16-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix assert on unaligned access to global with different address space size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4fe5b640ee935f983db9445dc9fdb4009d4fa639 16-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix codegen for null different sized pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194932 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
1dc27239969889661115f40b293c83ab9ff3efd5 16-Nov-2013 David Blaikie <dblaikie@gmail.com> DwarfCompileUnit: Push type safety of DIDescriptor through CompileUnit::createAndAddDIE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194902 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
21c9708c0909a4373d04f0910ab0cb05b94f25ef 16-Nov-2013 David Blaikie <dblaikie@gmail.com> DwarfCompileUnit: Remove unnecessary OwningPtr<T>::get() call

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194901 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
87fd14d9b52079828c5db4e1e4878046a7488f81 16-Nov-2013 Eric Christopher <echristo@gmail.com> For dwarf4 use the correct form for referencing debug_loc locations,
and update test cases accordingly.

This doesn't affect the output dumped using llvm-dwarfdump, but
readelf does now dump the debug_loc section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194898 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
7b8677109452dc3f106f931edab2d1ccaf1d06b1 16-Nov-2013 David Blaikie <dblaikie@gmail.com> DwarfCompileUnit: Add type safety to CompileUnit::getNode by returning DICompileUnit instead of a raw MDNode*.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194895 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
942431fa710f186f11538eebdf3dc4a6b824a6ba 16-Nov-2013 David Blaikie <dblaikie@gmail.com> DwarfCompileUnit: Add type safety by using DICompileUnit rather than raw MDNode* for the CU metadata node

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194893 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
aedaa723c26c33d4f9497a79d9d74a3c197fa262 16-Nov-2013 David Blaikie <dblaikie@gmail.com> DwarfCompileUnit: Simplify getLanguage() calls to use existing member function

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194892 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
6bc810a49983e12006ba7a0dba61f7b2534b8f26 16-Nov-2013 Adrian Prantl <aprantl@apple.com> Replace the dangling context hotfix with an assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194883 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
14f41e7e1811b0c504c82865bd6828acfee82527 16-Nov-2013 David Blaikie <dblaikie@gmail.com> DwarfDebug: Push DISubprogram through updateSubprogramScopeDIE

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194879 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
cbc85a270d2546c49fc09f700687de2ecd46bd87 16-Nov-2013 David Blaikie <dblaikie@gmail.com> DwarfCompileUnit: Push DIDescriptors through a getDIE/insertDIE

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194875 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
86a33487376848a606fdc629ffce2a581ae45653 15-Nov-2013 David Blaikie <dblaikie@gmail.com> DwarfCompileUnit: Push DIDescriptor usage out from isShareableAcrossCUs

This is the first of a few similar patches. We'll see how far it
goes/makes sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194871 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
5a364c5561ec04e33a6f5d52c14f1bac6f247ea0 15-Nov-2013 Juergen Ributzka <juergen@apple.com> [weak vtables] Remove a bunch of weak vtables

This patch removes most of the trivial cases of weak vtables by pinning them to
a single object file.

Differential Revision: http://llvm-reviews.chandlerc.com/D2068

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194865 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
achineScheduler.cpp
egAllocBase.cpp
egAllocBase.h
17d4ac8c461fb3c32483cf7a37bc52937caeb650 15-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix confusing machine verifier error.

The error reported the number of explicit operands,
but that isn't what is checked. In my case, this
resulted in the confusing errors

"Too few operands." followed shortly by
"8 operands expected, but 8 given."

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194862 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
0cbdb81de76274c3f1731d92dc09864d2277d690 15-Nov-2013 Adrian Prantl <aprantl@apple.com> Reimplement r194843 in a slightly less broken way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194848 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
7d5f2bd5f9615c0f20d3a1f75ec01452d813283b 15-Nov-2013 Adrian Prantl <aprantl@apple.com> Restore the behaviour from before r194728.
If getDIE() fails, getOrCreateContextDIE() should also return the CUDie.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194843 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
cc7052343e5e955d4e2f48885c06360f9003390a 15-Nov-2013 Bob Wilson <bob.wilson@apple.com> Avoid illegal integer promotion in fastisel

Stop folding constant adds into GEP when the type size doesn't match.
Otherwise, the adds' operands are effectively being promoted, changing the
conditions of an overflow. Results are different when:

sext(a) + sext(b) != sext(a + b)

Problem originally found on x86-64, but also fixed issues with ARM and PPC,
which used similar code.

<rdar://problem/15292280>

Patch by Duncan Exon Smith!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194840 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
ea28aafa83fc2b6dd632041278c9a18e5a2b2b41 15-Nov-2013 Daniel Sanders <daniel.sanders@imgtec.com> Fix illegal DAG produced by SelectionDAG::getConstant() for v2i64 type

Summary:
When getConstant() is called for an expanded vector type, it is split into
multiple scalar constants which are then combined using appropriate build_vector
and bitcast operations.

In addition to the usual big/little endian differences, the case where the
element-order of the vector does not have the same endianness as the elements
themselves is also accounted for. For example, for v4i32 on big-endian MIPS,
the byte-order of the vector is <3210,7654,BA98,FEDC>. For little-endian, it is
<0123,4567,89AB,CDEF>.
Handling this case turns out to be a nop since getConstant() returns a splatted
vector (so reversing the element order doesn't change the value)

This fixes a number of cases in MIPS MSA where calling getConstant() during
operation legalization introduces illegal types (e.g. to legalize v2i64 UNDEF
into a v2i64 BUILD_VECTOR of illegal i64 zeros). It should also handle bigger
differences between illegal and legal types such as legalizing v2i64 into v8i16.

lowerMSASplatImm() in the MIPS backend no longer needs to avoid calling
getConstant() so this function has been updated in the same patch.

For the sake of transparency, the steps I've taken since the review are:
* Added 'virtual' to isVectorEltOrderLittleEndian() as requested. This revealed
that the MIPS tests were falsely passing because a polymorphic function was
not actually polymorphic in the reviewed patch.
* Fixed the tests that were now failing. This involved deleting the code to
handle the MIPS MSA element-order (which was previously doing an byte-order
swap instead of an element-order swap). This left
isVectorEltOrderLittleEndian() unused and it was deleted.
* Fixed build failures caused by rebasing beyond r194467-r194472. These build
failures involved the bset, bneg, and bclr instructions added in these commits
using lowerMSASplatImm() in a way that was no longer valid after this patch.
Some of these were fixed by calling SelectionDAG::getConstant() instead,
others were fixed by a new function getBuildVectorSplat() that provided the
removed functionality of lowerMSASplatImm() in a more sensible way.

Reviewers: bkramer

Reviewed By: bkramer

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1973

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194811 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
509a492442b7e889d615d3b451629c81a810aef1 15-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Add target hook to prevent folding some bitcasted loads.

This is to avoid this transformation in some cases:
fold (conv (load x)) -> (load (conv*)x)

On architectures that don't natively support some vector
loads efficiently casting the load to a smaller vector of
larger types and loading is more efficient.

Patch by Micah Villmow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194783 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7b641815290f34f0212e4cb7b26ed1708270cb97 15-Nov-2013 Eric Christopher <echristo@gmail.com> Use a reference rather than a pointer as we don't expect a NULL
DbgVariable.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194761 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
59d3ae6cdc4316ad338cd848251f33a236ccb36c 15-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Add addrspacecast instruction.

Patch by Michele Scandale!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194760 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGDumper.cpp
argetLoweringBase.cpp
849596ced42f2760c5b63f7676e16829b808b5c9 15-Nov-2013 Andrew Trick <atrick@apple.com> When folding memory operands, preserve existing MachineMemOperands.

This comes into play with patchpoint, which can fold multiple
operands. Since the patchpoint is already treated as a call, the
machine mem operands won't affect anything, and there's nothing to
test. But we still want to do the right thing here to be sure that our
MIs obey the rules.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194750 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfo.cpp
41e1a18885b8ef29219b7102ad25cd480c4a3f55 14-Nov-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Simplify/narrow null-check for getOrCreateType

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194737 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
8c0fecc39fe7f0928a7592104b4419022ad4b54e 14-Nov-2013 David Blaikie <dblaikie@gmail.com> DwarfCompileUnit::getOrCreateContext: Return the compile unit DIE rather than null.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194728 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
f4837be7c1d8f2a9e90100e849b148eb86a2d27e 14-Nov-2013 David Blaikie <dblaikie@gmail.com> Remove unnecessary 'else' after return.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194724 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
3d47402f2e8701c7ed340884720cc99727bd7f85 14-Nov-2013 Rafael Espindola <rafael.espindola@gmail.com> Error if we see an alias to a declaration.

In ELF and COFF an alias is just another offset in a section. There is no way
to represent an alias to something in another file.

In MachO, the spec has the N_INDR type which should allow for exactly that, but
is not currently implemented. Given that it is specified but not implemented,
we error in codegen to avoid miscompiling but don't reject aliases to
declarations in the verifier to leave the option open of implementing it.

In the past we have used alias to declarations as a way of implementing
weakref, which is why it exists in some old tests which this patch updates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194705 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
72cf01cc7c8f668a17e7fdfe6aaed50e164cac1b 14-Nov-2013 Andrew Trick <atrick@apple.com> Minor extension to llvm.experimental.patchpoint: don't require a call.

If a null call target is provided, don't emit a dummy call. This
allows the runtime to reserve as little nop space as it needs without
the requirement of emitting a call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194676 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a9a8f0f432966438800ffabb1b740a4cc8cd2599 13-Nov-2013 David Blaikie <dblaikie@gmail.com> DIEHash: Move header include to be first in the implementation file to flush out header inclusion ordering issues

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194588 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
c7e77f91fecd662b198939a9a8ee0a0cc3828fc4 13-Nov-2013 Juergen Ributzka <juergen@apple.com> SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too.

This patch reapplies r193676 with an additional fix for the Hexagon backend. The
SystemZ backend has already been fixed by r194148.

The Type Legalizer recognizes that VSELECT needs to be split, because the type
is to wide for the given target. The same does not always apply to SETCC,
because less space is required to encode the result of a comparison. As a result
VSELECT is split and SETCC is unrolled into scalar comparisons.

This commit fixes the issue by checking for VSELECT-SETCC patterns in the DAG
Combiner. If a matching pattern is found, then the result mask of SETCC is
promoted to the expected vector mask type for the given target. Now the type
legalizer will split both VSELECT and SETCC.

This allows the following X86 DAG Combine code to sucessfully detect the MIN/MAX
pattern. This fixes PR16695, PR17002, and <rdar://problem/14594431>.

Reviewed by Nadav

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194542 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypesGeneric.cpp
eb3602472026dc029beb45ccbe09bc84162ba949 13-Nov-2013 Aaron Ballman <aaron@aaronballman.com> Replacing HUGE_VALF with llvm::huge_valf in order to work around a warning triggered in MSVC 12.

Patch reviewed by Reid Kleckner and Jim Grosbach.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194533 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocGreedy.cpp
piller.cpp
d736763847cee94c40a7f4d106cad91445834b7c 11-Nov-2013 Arnaud A. de Grandmaison <arnaud.adegm@gmail.com> CalcSpillWeights: allow overidding the spill weight normalizing function

This will enable the PBQP register allocator to provide its own normalizing function.

No functionnal change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194417 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
095f994ba63994e8eb4b77127f9b872429496dba 11-Nov-2013 Arnaud A. de Grandmaison <arnaud.adegm@gmail.com> CalcSpillWeights: give a better describing name to calculateSpillWeights

Besides, this relates it more obviously to the VirtRegAuxInfo::calculateSpillWeightAndHint.

No functionnal change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194404 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveRangeEdit.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
953398916cfd6ee035f6f4bd2dde25c21cdde1fe 11-Nov-2013 Eric Christopher <echristo@gmail.com> Unify the adding of enumerators with the construction of the enumeration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194401 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
6129002232c3dda7ca4ef95bba77a829ddf241f4 11-Nov-2013 Eric Christopher <echristo@gmail.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194400 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
62af0c295a7e79384305557985d09de85916b4b5 11-Nov-2013 Eric Christopher <echristo@gmail.com> 80-col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194399 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
883ed6bd9544e7fac36a66711132bf151fb734ad 11-Nov-2013 Eric Christopher <echristo@gmail.com> Just pass the DIComposite type by value instead of by pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194398 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
028e4d27b1afc62be0687e9c3b57992c36852938 11-Nov-2013 Daniel Sanders <daniel.sanders@imgtec.com> Vector forms of SHL, SRA, and SRL can be constant folded using SimplifyVBinOp too

Reviewers: dsanders

Reviewed By: dsanders

CC: llvm-commits, nadav

Differential Revision: http://llvm-reviews.chandlerc.com/D1958

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194393 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a77da0579bc141eba62760e21a216e5d3eafd792 10-Nov-2013 Arnaud A. de Grandmaison <arnaud.adegm@gmail.com> CalculateSpillWeights does not need to be a pass

Based on discussions with Lang Hames and Jakob Stoklund Olesen at the hacker's lab, and in the light of upcoming work on the PBQP register allocator, it was though that CalcSpillWeights does not need to be a pass. This change will enable to customize / tune the spill weight computation depending on the allocator.

Update the documentation style while there.

No functionnal change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194356 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
odeGen.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
6d9e013447efb7f9fbed8d3348d6dbde208f32a7 10-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Use type form of getIntPtrType.

This should be inconsequential and is work
towards removing the default address space
arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194347 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ntrinsicLowering.cpp
a91d7b170b57e3ccb715e331575ef198e51cd304 09-Nov-2013 Lang Hames <lhames@gmail.com> Re-apply r194300 with fixes for warnings.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194311 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
ceb0d9c085492151f8e4538119bf3de29ff935c0 09-Nov-2013 Nick Lewycky <nicholas@mxc.ca> Revert r194300 which broke the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194308 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
d4f5a615674aaabeee4e444e708d1fa00a41495e 09-Nov-2013 Juergen Ributzka <juergen@apple.com> [Stackmap] Materialize the jump address within the patchpoint noop slide.

This patch moves the jump address materialization inside the noop slide. This
enables patching of the materialization itself or its complete removal. This
patch also adds the ability to define scratch registers that can be used safely
by the code called from the patchpoint intrinsic. At least one scratch register
is required, because that one is used for the materialization of the jump
address. This patch depends on D2009.

Differential Revision: http://llvm-reviews.chandlerc.com/D2074

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194306 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
fc93ae629e49b00fc1cc536d93f1b106bcd0937d 09-Nov-2013 Lang Hames <lhames@gmail.com> Rewrite the PBQP graph data structure.

The new graph structure replaces the node and edge linked lists with vectors.
Free lists (well, free vectors) are used for fast insertion/deletion.

The ultimate aim is to make PBQP graphs cheap to clone. The motivation is that
the PBQP solver destructively consumes input graphs while computing a solution,
forcing the graph to be fully reconstructed for each round of PBQP. This
imposes a high cost on large functions, which often require several rounds of
solving/spilling to find a final register allocation. If we can cheaply clone
the PBQP graph and incrementally update it between rounds then hopefully we can
reduce this cost. Further, once we begin pooling matrix/vector values (future
work), we can cache some PBQP solver metadata and share it between cloned
graphs, allowing the PBQP solver to re-use some of the computation done in
earlier rounds.

For now this is just a data structure update. The allocator and solver still
use the graph the same way as before, fully reconstructing it between each
round. I expect no material change from this update, although it may change
the iteration order of the nodes, causing ties in the solver to break in
different directions, and this could perturb the generated allocations
(hopefully in a completely benign way).

Thanks very much to Arnaud Allard de Grandmaison for encouraging me to get back
to work on this, and for a lot of discussion and many useful PBQP test cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194300 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
623d2e618f4e672c47edff9ec63ed6d733ac81d3 09-Nov-2013 Juergen Ributzka <juergen@apple.com> [Stackmap] Add AnyReg calling convention support for patchpoint intrinsic.

The idea of the AnyReg Calling Convention is to provide the call arguments in
registers, but not to force them to be placed in a paticular order into a
specified set of registers. Instead it is up tp the register allocator to assign
any register as it sees fit. The same applies to the return value (if
applicable).

Differential Revision: http://llvm-reviews.chandlerc.com/D2009

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194293 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
tackMaps.cpp
d900b1179535298510490030a5d2ecce93f79eb0 08-Nov-2013 Pedro Artigas <partigas@apple.com> increase the accuracy of register pressure computation in the presence of dead definitions by using live intervals, if available, to identify dead definitions and proceed accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194286 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
egisterPressure.cpp
de753f48535fb19cdd967af3bc3a743fa2a675ff 08-Nov-2013 Lang Hames <lhames@gmail.com> Fix some minor issues with r194282 to get the tree healthy again.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194284 91177308-0d34-0410-b5e6-96231b3b80d8
tackMaps.cpp
c87e4380542c0e15cdaa480716da1434284feb93 08-Nov-2013 Lang Hames <lhames@gmail.com> Add a method to get the object-file appropriate stack map section.

Thanks to Eric Christopher for the tips on the appropriate way to do this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194282 91177308-0d34-0410-b5e6-96231b3b80d8
tackMaps.cpp
d241fa7a61682a15b753c52afee07dfbf1b3bd1f 08-Nov-2013 Arnaud A. de Grandmaison <arnaud.adegm@gmail.com> Revert "CalculateSpillWeights does not need to be a pass"

Temporarily revert my previous commit until I understand why it breaks 3 target tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194272 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
odeGen.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
f0c6ab6f00861fd97ad593cfc6d841082e4b4bd1 08-Nov-2013 Quentin Colombet <qcolombet@apple.com> [VirtRegMap] Fix for PR17825. Do not ignore noreturn definitions when setting
isPhysRegUsed if the unwind information is required.
Indeed, the runtime may need a correct stack to be able to unwind the call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194271 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
663fcde3d33e44a9b543a692ad29873bd1ddc403 08-Nov-2013 Arnaud A. de Grandmaison <arnaud.adegm@gmail.com> CalculateSpillWeights does not need to be a pass

Based on discussions with Lang Hames and Jakob Stoklund Olesen at the hacker's lab, and in the light of upcoming work on the PBQP register allocator, it was though that CalcSpillWeights does not need to be a pass. This change will enable to customize / tune the spill weight computation depending on the allocator.

Update the documentation style while there.

No functionnal change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194269 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
odeGen.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
bf1757d5a100ef08e5e9b31b8dce5f5aad320197 08-Nov-2013 Arnaud A. de Grandmaison <arnaud.adegm@gmail.com> CalculateSpillWeights cleanup: remove unneeded includes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194259 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
dc8224def3d88915b0ff830687815a9a0aad5f63 05-Nov-2013 Andrew Trick <atrick@apple.com> Slightly change the way stackmap and patchpoint intrinsics are lowered.

MorphNodeTo is not safe to call during DAG building. It eagerly
deletes dependent DAG nodes which invalidates the NodeMap. We could
expose a safe interface for morphing nodes, but I don't think it's
worth it. Just create a new MachineNode and replaceAllUsesWith.

My understaning of the SD design has been that we want to support
early target opcode selection. That isn't very well supported, but
generally works. It seems reasonable to rely on this feature even if
it isn't widely used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194102 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
31ed50c225c8de764c899e31ab4e25f242ce0b78 02-Nov-2013 Eric Christopher <echristo@gmail.com> Comment some and reformat for clarity beginFunction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193894 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
26cc826a0e4693b861776d6b349d41d0e5c2678e 01-Nov-2013 Juergen Ributzka <juergen@apple.com> [Stackmap] Remove erroneous assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193871 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
19794da02cc48a772ae6f4756b14b111a627170e 01-Nov-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove linkonce_odr_auto_hide.

linkonce_odr_auto_hide was in incomplete attempt to implement a way
for the linker to hide symbols that are known to be available in every
TU and whose addresses are not relevant for a particular DSO.

It was redundant in that it all its uses are equivalent to
linkonce_odr+unnamed_addr. Unlike those, it has never been connected
to clang or llvm's optimizers, so it was effectively dead.

Given that nothing produces it, this patch just nukes it
(other than the llvm-c enum value).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193865 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
307cfaeaf0bc629357725fb0c471e45319d48ff1 01-Nov-2013 Aaron Ballman <aaron@aaronballman.com> Commenting out this assert because it is causing the build bots to fail. This effectively reverts r193861, but needs to be fixed as part of r193769.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193862 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8d13de3f0900e674920921bfb2d1b4c1893c0f27 01-Nov-2013 Aaron Ballman <aaron@aaronballman.com> Fixing an order of evaluation error in an assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193861 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9b93392185d3838cc438629981d7c3fee634176d 01-Nov-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Emit member variable locations as data instead of expressions in blocks

Drive by space optimization. Also makes the DIEs more regular which
might speed up DWARF parsing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193835 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
21cd360f521af405282effa0dd6743018385c9ce 31-Oct-2013 Andrew Trick <atrick@apple.com> Unused variable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193819 91177308-0d34-0410-b5e6-96231b3b80d8
tackMaps.cpp
3d74dea4bddc84d1881efc21eb5eefbddbfa9aed 31-Oct-2013 Andrew Trick <atrick@apple.com> Add support for stack map generation in the X86 backend.

Originally implemented by Lang Hames.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193811 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
electionDAG/SelectionDAGBuilder.cpp
tackMaps.cpp
b8b70e10a2b3f252314e0d176379778fe8f3b582 31-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: remove duplication of DIEs when a DIE can be shared across CUs.

We add a map in DwarfDebug to map MDNodes that are shareable across CUs to the
corresponding DIEs: MDTypeNodeToDieMap. These DIEs can be shared across CUs,
that is why we keep the maps in DwarfDebug instead of CompileUnit.

We make the assumption that if a DIE is not added to an owner yet, we assume
it belongs to the current CU. Since DIEs for the type system are added to
their owners immediately after creation, and other DIEs belong to the current
CU, the assumption should be true.

A testing case is added to show that we only create a single DIE for a type
MDNode and we use ref_addr to refer to the type DIE.

We also add a testing case to show ref_addr relocations for non-darwin
platforms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193779 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
2343e3b228c02896f4779962a91aaa659356fe2a 31-Oct-2013 Andrew Trick <atrick@apple.com> Lower stackmap intrinsics directly to their target opcode in the DAG builder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193769 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/TargetLowering.cpp
cf940ceff73f567876f1a1f62d3acbf67c43ea90 31-Oct-2013 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193765 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.h
83dd2ae095626d8e461f8a69214ec2b97ff18c2f 31-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the --shrink-wrap option.

It had no tests, was unused and was "experimental at best".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193749 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
rologEpilogInserter.cpp
rologEpilogInserter.h
hrinkWrapping.cpp
0e536ee4cae5f7359e8a8db99edadc39a5c12132 31-Oct-2013 Jim Grosbach <grosbach@apple.com> Legalize: Improve legalization of long vector extends.

When an extend more than doubles the size of the elements (e.g., a zext
from v16i8 to v16i32), the normal legalization method of splitting the
vectors will run into problems as by the time the destination vector is
legal, the source vector is illegal. The end result is the operation
often becoming scalarized, with the typical horrible performance. For
example, on x86_64, the simple input of:
define void @bar(<16 x i8> %a, <16 x i32>* %p) nounwind {
%tmp = zext <16 x i8> %a to <16 x i32>
store <16 x i32> %tmp, <16 x i32>*%p
ret void
}

Generates:
.section __TEXT,__text,regular,pure_instructions
.section __TEXT,__const
.align 5
LCPI0_0:
.long 255 ## 0xff
.long 255 ## 0xff
.long 255 ## 0xff
.long 255 ## 0xff
.long 255 ## 0xff
.long 255 ## 0xff
.long 255 ## 0xff
.long 255 ## 0xff
.section __TEXT,__text,regular,pure_instructions
.globl _bar
.align 4, 0x90
_bar:
vpunpckhbw %xmm0, %xmm0, %xmm1
vpunpckhwd %xmm0, %xmm1, %xmm2
vpmovzxwd %xmm1, %xmm1
vinsertf128 $1, %xmm2, %ymm1, %ymm1
vmovaps LCPI0_0(%rip), %ymm2
vandps %ymm2, %ymm1, %ymm1
vpmovzxbw %xmm0, %xmm3
vpunpckhwd %xmm0, %xmm3, %xmm3
vpmovzxbd %xmm0, %xmm0
vinsertf128 $1, %xmm3, %ymm0, %ymm0
vandps %ymm2, %ymm0, %ymm0
vmovaps %ymm0, (%rdi)
vmovaps %ymm1, 32(%rdi)
vzeroupper
ret

So instead we can check if there are legal types that enable us to split
more cleverly when the input vector is already legal such that we don't
turn it into an illegal type. If the extend is such that it's more than
doubling the size of the input we check if
- the number of vector elements is even,
- the source type is legal,
- the type of a split source is illegal,
- the type of an extended (by doubling element size) source is legal, and
- the type of that extended source when split is legal.
If the conditions are met, instead of just splitting both the
destination and the source types, we create an extend that only goes up
one "step" (doubling the element width), and the continue legalizing the
rest of the operation normally. The result is that this operates as a
new, more effecient, termination condition for the loop of "split the
operation until the destination type is legal."

With this change, the above example now compiles to:
_bar:
vpxor %xmm1, %xmm1, %xmm1
vpunpcklbw %xmm1, %xmm0, %xmm2
vpunpckhwd %xmm1, %xmm2, %xmm3
vpunpcklwd %xmm1, %xmm2, %xmm2
vinsertf128 $1, %xmm3, %ymm2, %ymm2
vpunpckhbw %xmm1, %xmm0, %xmm0
vpunpckhwd %xmm1, %xmm0, %xmm3
vpunpcklwd %xmm1, %xmm0, %xmm0
vinsertf128 $1, %xmm3, %ymm0, %ymm0
vmovaps %ymm0, 32(%rdi)
vmovaps %ymm2, (%rdi)
vzeroupper
ret

This generalizes a custom lowering that was added a while back to the
ARM backend. That lowering is no longer necessary, and is removed. The
testcases for it, however, provide excellent ARM tests for this change
and so remain.

rdar://14735100

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
4f17f88071260cecffd96c272098549ac5887523 31-Oct-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix CodeGen for unaligned loads with address spaces

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193721 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2cc546db188d5e4d4537681cab3d52781125518c 30-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Produce .weak_def_can_be_hidden for some linkonce_odr values

With this patch llvm produces a weak_def_can_be_hidden for linkonce_odr
if they are also unnamed_addr or don't have their address taken.

There is not a lot of documentation about .weak_def_can_be_hidden, but
from the old discussion about linkonce_odr_auto_hide and the name of
the directive this looks correct: these symbols can be hidden.

Testing this with the ld64 in Xcode 5 linking clang reduces the number of
exported symbols from 21053 to 19049.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193718 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1d36113c05e611c0fba9b872b5f03eca9848bd69 30-Oct-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Push header handling down into CompileUnit

This is a preliminary step to handling type units by abstracting over
all (type or compile) units.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193714 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
8e8e6dc41ff295a297fb517683be89b5509dabc2 30-Oct-2013 David Blaikie <dblaikie@gmail.com> DwarfDebug: Change Abbreviations member from pointer to reference

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193699 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9a5df73e32819c45884feee6bd49e7ebe911f977 30-Oct-2013 Juergen Ributzka <juergen@apple.com> Revert "SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too."

Now Hexagon and SystemZ are not happy with it :-(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypesGeneric.cpp
4eced19c505bb32dc210a18e87624f64d011894c 30-Oct-2013 Juergen Ributzka <juergen@apple.com> SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too.

The Type Legalizer recognizes that VSELECT needs to be split, because the type
is to wide for the given target. The same does not always apply to SETCC,
because less space is required to encode the result of a comparison. As a result
VSELECT is split and SETCC is unrolled into scalar comparisons.

This commit fixes the issue by checking for VSELECT-SETCC patterns in the DAG
Combiner. If a matching pattern is found, then the result mask of SETCC is
promoted to the expected vector mask type for the given target. This mask has
usually the same size as the VSELECT return type (except for Intel KNL). Now the
type legalizer will split both VSELECT and SETCC.

This allows the following X86 DAG Combine code to sucessfully detect the MIN/MAX
pattern. This fixes PR16695, PR17002, and <rdar://problem/14594431>.

Reviewed by Nadav

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193676 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypesGeneric.cpp
62406fdc6f199e4e7df60830be45de4da97b34c7 30-Oct-2013 Josh Magee <joshua_magee@playstation.sony.com> Reformat code with clang-format.

Differential Revision: http://llvm-reviews.chandlerc.com/D2057


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193672 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
38856f8bed12da9459a3eb958a1c8df68bf0aced 30-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: code clean up.

Use EmitLabelOffsetDifference for handling on darwin platform when
non-darwin platforms use EmitLabelPlusOffset.

Also fix a bug in EmitLabelOffsetDifference where the size is hard-coded
to 4 even though Size is passed in as an argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193660 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
3eabc2adb7387c97da547e250997ed0a8d5e6d3d 29-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: support for DW_FORM_ref_addr.

To support ref_addr, we calculate the section offset of a DIE (i.e. offset
of a DIE from beginning of the debug info section). The Offset field in DIE
is currently CU-relative. To calculate the section offset, we add a
DebugInfoOffset field in CompileUnit to store the offset of a CU from beginning
of the debug info section. We set the value in DwarfUnits::computeSizeAndOffset
for each CompileUnit.

A helper function DIE::getCompileUnit is added to return the CU DIE that
the input DIE belongs to. We also add a map CUDieMap in DwarfDebug to help
finding the CU for a given CU DIE.

For a cross-referenced DIE, we first find the CU DIE it belongs to with
getCompileUnit, then we use CUDieMap to get the corresponding CU for the CU DIE.
Adding the section offset of the CU with the CU-relative offset of a DIE gives
us the seciton offset of the DIE.

We correctly emit ref_addr with relocation using EmitLabelPlusOffset when
doesDwarfUseRelocationsAcrossSections is true.

This commit handles the emission of DW_FORM_ref_addr when we have an attribute
with FORM_ref_addr. A follow-on patch will start using ref_addr when adding a
DIEEntry. This commit will be tested and verified in the follow-on patch.

Reviewed off-list by Eric, Thanks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193658 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d498e5e960f237d3eb04ad7680bd093d1954c7fe 29-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: instead of calling addToContextOwner which constructs the context
after the DIE creation, we construct the context first.

Ensure that we create the context before we create a type so that we can add
the newly created type to the parent. Remove last use of addToContextOwner
now that it's not needed.

We use createAndAddDIE to wrap around "new DIE(". Now all shareable DIEs
should be added to their parents right after the creation.

Reviewed off-list by Eric, Thanks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193657 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
4598b40ce62dceb5ff96bbb7caeebd1ca57ae3fe 29-Oct-2013 Josh Magee <joshua_magee@playstation.sony.com> [stackprotector] Update the StackProtector pass to perform datalayout analysis.

This modifies the pass to classify every SSP-triggering AllocaInst according to
an SSPLayoutKind (LargeArray, SmallArray, AddrOf). This analysis is collected
by the pass and made available for use, but no other pass uses it yet.

The next patch will make use of this analysis in PEI and StackSlot
passes. The end goal is to support ssp-strong stack layout rules.

WIP.

Differential Revision: http://llvm-reviews.chandlerc.com/D1789


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193653 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
93cf0939f95b3d580d9c05375a7c84164e1ba72e 29-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Move getSymbol to TargetLoweringObjectFile.

This allows constructing a Mangler with just a TargetMachine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193630 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
argetLoweringObjectFileImpl.cpp
ffc7dca885151ed42642c2d6733e8db75d276621 29-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a helper getSymbol to AsmPrinter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193627 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCFIException.cpp
smPrinter/DwarfCompileUnit.cpp
6b713800ff03fdbb1d770d1e00af0e76041f3c03 29-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: instead of calling addToContextOwner which constructs the context
after the DIE creation, we construct the context first.

This touches creation of namespaces and global variables. The purpose is to
handle all DIE creations similarly: constructs the context first, then creates
the DIE and immediately adds the DIE to its parent.

We use createAndAddDIE to wrap around "new DIE(".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193589 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
18a988e3a76eb0f8783d115618e48466854f5901 29-Oct-2013 Alp Toker <alp@nuanti.com> Fix "existant" typos

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193579 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8ef9cebb68d6305e197c3e0b8369aa3c57570bbf 29-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: use createAndAddDIE to wrap around "new DIE" in DwarfDebug.

This commit ensures DIEs are constructed within a compile unit and
immediately added to their parents.

Reviewed off-list by Eric.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193568 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
bbdd02cc303d0f38f7739b64f419d645ca17b533 29-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: use createAndAddDIE for newly-created Subprogram DIEs.

More patches will be submitted to convert "new DIE(" to use createAddAndDIE in
DwarfCompileUnit.cpp. This will simplify implementation of addDIEEntry where
we have to decide between ref4 and ref_addr, because DIEs that can be shared
across CU will be added to a CU already.

Reviewed off-list by Eric.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193567 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
1a5e787f701c45ac2487d400faf6f6d4def6dcef 29-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: add a helper function createAndAddDIE.

It wraps around "new DIE(" and handles the bookkeeping part of the newly-created
DIE. It adds the DIE to its parent, and calls insertDIE if necessary. It makes
sure that bookkeeping is done at the earliest time and we should not see
parentless DIEs if all constructions of DIEs go through this helper function.

Later on, we can use an allocator for DIE allocation, and will only need to
change createAndAddDIE instead of modifying all the "new DIE(".

Reviewed off-list by Eric.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193566 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
a7be36c8eb4717e44b05e00008544b883fc87de9 28-Oct-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> [DAGCombiner] Respect volatility when checking for aliases

Making useAA() default to true for SystemZ showed that the combiner alias
analysis wasn't handling volatile accesses. This hit many of the SystemZ
tests, but I arbitrarily picked one for the purpose of this patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193518 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
66589dcc8fb5dcf0894a9a80a8dee890a4f3a379 28-Oct-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> Keep TBAA info when rewriting SelectionDAG loads and stores

Most SelectionDAG code drops the TBAA info when creating a new form of a
load and store (e.g. during legalization, or when converting a plain
load to an extending one). This patch tries to catch all cases where
the TBAA information can legitimately be carried over.

The patch adds alternative forms of getLoad() and getExtLoad() that take
a MachineMemOperand instead of individual fields. (The corresponding
getTruncStore() already exists.) The idea is to use the MachineMemOperand
forms when all fields are carried over (size, pointer info, isVolatile,
isNonTemporal, alignment and TBAA info). If some adjustment is being
made, e.g. to narrow the load, then we still pass the individual fields
but also pass the TBAA info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193517 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
7c0c2e56b09fee406ca0bb6e3ac840a3a6ed1160 25-Oct-2013 David Blaikie <dblaikie@gmail.com> DIEHash: Summary hashing of member functions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193432 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
a954618c6e6c5f94d3cedc0b6bc19dbc49e56ac2 25-Oct-2013 David Blaikie <dblaikie@gmail.com> DIEHash: Summary hashing of nested types

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193427 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
5a42ae81f742aaab826b7a72cb0a9a7e5a957a07 25-Oct-2013 Tim Northover <tnorthover@apple.com> LegalizeDAG: allow libcalls for max/min atomic operations

ARM processors without ldrex/strex need to be able to make libcalls for all
atomic operations, including the newer min/max versions.

The alternative would probably be expanding these operations in terms of
cmpxchg (as x86 does always), but in the configurations where this matters
code-size tends to be paramount so the libcall is more desirable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
argetLoweringBase.cpp
97541d400e5011fd8ab5d2eb2a736c301d85b232 25-Oct-2013 Nadav Rotem <nrotem@apple.com> Optimize concat_vectors(X, undef) -> scalar_to_vector(X).
This optimization is not SSE specific so I am moving it to DAGco.
The new scalar_to_vector dag node exposed a missing pattern in the AArch64 target that I needed to add.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193393 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5759c3a02902026a27a0d1bc24a5bad85f52bd71 25-Oct-2013 David Blaikie <dblaikie@gmail.com> MCStreamer: Reimplement the virtual EmitRawText as a protected member, EmitRawTextImpl, to avoid string literal ambiguities

Also improve the implementation of EmitRawText(Twine) so it doesn't
bother using the SmallString buffer if the Twine is a simple StringRef
anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193378 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
9e39e0d56d105f97b9d8f851403619bb0d9f780d 25-Oct-2013 David Blaikie <dblaikie@gmail.com> DWARF emission: Remove unnecessary/redundant DIE reference code

The default case at the end of the switch handles this just fine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193374 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
200bb6df7ff84e2129bcc0f4f79d6d96d47eb645 24-Oct-2013 Eric Christopher <echristo@gmail.com> Fix name of variable in comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193373 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
1f7d0d579475eefd772352f7f7f79acc445aa605 24-Oct-2013 Eric Christopher <echristo@gmail.com> Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193372 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
39cd7d48c07f6d8d104432a6b671c9cb3ede2b75 24-Oct-2013 Eric Christopher <echristo@gmail.com> Update misleading comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193371 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
377e83202cb40849d384ddede39f9468af197427 24-Oct-2013 David Blaikie <dblaikie@gmail.com> DIEHash: Const correct and use references where non-null/non-rebound.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193363 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
smPrinter/DwarfDebug.cpp
1d7d8da4cb81aa3f149e1e80811d72525eee15e3 24-Oct-2013 David Blaikie <dblaikie@gmail.com> DIEHash: Do not use shallow type hashing for unnamed types

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193361 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
851aa948cb7fa379c9e674ae1cfe7276dd9ab171 24-Oct-2013 David Blaikie <dblaikie@gmail.com> DIEHash: Refactor ref attribute hashing into smaller functions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193360 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
724452e94c0bdbcd45a95f62b21c5a06632f38eb 24-Oct-2013 David Blaikie <dblaikie@gmail.com> Remove unused debug-only member variable.

This may've been used at some point but the 'print' member function grew
an Indent parameter that entirely shadows this parameter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193358 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
be87b69a5f2f0b66939cef4d107a2cb8e4f4f4dc 24-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: code clean up.

Since we never insert DIE for DITemplateTypeParameter to a map, there is no need
to call getDIE in getOrCreateTemplateTypeParameterDIE. It is also renamed to
constructTemplateTypeParameterDIE to match with other construct functions
in CompileUnit.

Same applies to getOrCreateTemplateValueParameterDIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193287 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
a1d25b6360a6f40bf1c5651950226640211dc6d0 24-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: code clean up.

Rename createMemberDIE to constructMemberDIE to match other construct functions
in CompileUnit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193286 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
99addee7335441fe9bb6249eb9d5332cdbdf3c97 24-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: code clean up.

Remove the unneeded return values from createMemberDIE, constructEnumTypeDIE,
getOrCreateTemplateTypeParameterDIE, and getOrCreateTemplateValueParameterDIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193285 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
950f4e82afe9459457ce3f655ecb40fb64f761d9 24-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: code clean up.

Unifying the argument ordering of private construct functions in CompileUnit to
follow constructTypeDIE(DIE &, DIBasicType),
constructTypeDIE(DIE &, DIDerivedType), constructTypeDIE(DIE &, DICompositeType),
constructSubrangeDIE and constructArrayTypeDIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193284 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
250f4e8ec22175dcc121e81c9b270065e7b94677 24-Oct-2013 Manman Ren <manman.ren@gmail.com> Remove {} from one-line block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193276 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
3873361e281d1b25fd4579cb42c76954cf40c3ef 23-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Reduce casting and use a fully covered switch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193272 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d0716b064744598ba7df33b8b47de0375c450570 23-Oct-2013 Tom Stellard <thomas.stellard@amd.com> SelectionDAG: Pass along the original argument/element type in ISD::InputArg

For some targets, it is useful to be able to look at the original
type of an argument without having to dig through the original IR.

This also fixes a bug in SelectionDAGBuilder where InputArg.PartOffset
was not taking into account the offset of structure elements.

Patch by: Justin Holewinski

Tom Stellard:
- Changed the type of ArgVT to EVT, so it can store non-simple types
like v3i32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193214 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
argetLoweringBase.cpp
d56c9db9603c3e2edf43405142dee60559559919 22-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: code clean up.

Remove unnecessary creation of LexicalScope in collectDeadVariables.
The created LexicialScope was only used to get isAbstractScope, which
should be false from the creation:
"new LexicalScope(NULL, DIDescriptor(SP), NULL, false);".

We can also remove a DenseMap that holds the created LexicalScopes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193196 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c960816625ce47aea8368451b0025fbdcd15011a 22-Oct-2013 David Blaikie <dblaikie@gmail.com> DIEHashing: Provide an assert for unreachable functionality regarding friends.

Since (as of r190716) Clang no longer emits debug info for C++ friend
declarations (and it seems GCC never has/does, which was the motivation
for the Clang change), there's no actual reachable case for implementing
the part of DWARF 4, Section 7.27 part 5 that pertains to friends.

Leave an assert here so that if/when we do have a client producing
friends and using type units, we can fill in the gap and add appropriate
(unit and feature) tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193193 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
f196208900e690fe2d3bb1c6ca393d3fcd64226d 22-Oct-2013 David Blaikie <dblaikie@gmail.com> DWARF type hashing: pointers to members

Includes a test case/FIXME demonstrating a bug/limitation in pointer to
member hashing. To be honest I'm not sure why we don't just always use
summary hashing for referenced types... but perhaps I'm missing
something.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193175 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
8c955ea858b0c99c856c7c10a3eee7576d13abd1 22-Oct-2013 Wan Xiaofei <xiaofei.wan@intel.com> Using FoldingSet in SelectionDAG::getVTList.

VTList has a long life cycle through the module and getVTList is frequently called. In current getVTList, sequential search over a std::vector is used, this is inefficient in big module.
This patch use FoldingSet to implement hashing mechanism when searching.

Reviewer: Nadav Rotem
Test : Pass unit tests & LNT test suite

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8348b7d4003e4c404ef3f054001de499f24676c9 22-Oct-2013 Eric Christopher <echristo@gmail.com> Formatting/whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193135 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
449f036a8141b9032ff310ecbe0ab4433c5c307b 22-Oct-2013 David Blaikie <dblaikie@gmail.com> DWARF Type Hashing: Include reference and rvalue reference type in the declarable summary hashing path

More support for 7.25 Part 5.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193129 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
f1545a219744c1ae66137e64d1c456cd8e924eb7 22-Oct-2013 David Blaikie <dblaikie@gmail.com> DWARF type hashing: begin implementing Step 5, summary hashing in declarable contexts

There are several other tag types that need similar handling but to
ensure test coverage they'll be coming incrementally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193126 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
e161dc28a8a58431e5e1df98834aaee72baada85 21-Oct-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Remove unused TargetLowering field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193113 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringBase.cpp
ff71812dfaf30015a9abc5cb4712e67b96fe075e 21-Oct-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix CodeGen for different size address space GEPs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193111 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAGBuilder.cpp
599c0afb244e61fed389ea0d4b5479fbc380dfbf 21-Oct-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Reuse variable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193107 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
82e7eda150eda4e4635d96b7725db6d5ede192de 21-Oct-2013 Reid Kleckner <reid@kleckner.net> Fix the build in DIE.cpp with MSVC 2010

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193106 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
3baa3c37ce2cd7db7a4840e66f22a08ce1702787 21-Oct-2013 David Blaikie <dblaikie@gmail.com> DWARF type hashing: Handle multiple (including recursive) references to the same type

This uses a map, keeping the type DIE numbering separate from the DIEs
themselves - alternatively we could do things the way GCC does if we
want to add an integer to the DIE type to record the numbering there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193105 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
ef2d919f7f767b9d70bc44c4ac918b0a6b540cac 21-Oct-2013 Eric Christopher <echristo@gmail.com> Fix up some old review feedback.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193095 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
770530babc78e444bb6d0aadc87702ef138293fd 21-Oct-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Put each kind of constant (form, attribute, tag, etc) into its own enum for ease of use.

This allows various variables to be more self-documenting and easier to
debug by being of specific types without overlapping enum values.

Precommit review by Eric Christopher.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193091 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
da39dd30ad3c969be3ac843307d4630807699538 21-Oct-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Hash DW_FORM_GNU_str_index as a string.

Found while adding type safety to the various DWARF enumerations (form,
attribute, tag, etc) that caused Clang to warn on an incompletely
covered switch. Converting the comment to a default/unreachable
uncovered this case of an unsupported form encoding. Seems we were
skipping fission strings entirely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193089 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
0abc36205a39f3791342165502478bb51fe67f05 20-Oct-2013 Peter Collingbourne <peter@pcc.me.uk> Emit prefix data after debug and EH directives.

This ensures that the prefix data is treated as part of the function for
the purpose of debug info. This provides a better debugging experience,
among other things by allowing a debug info client to correctly look up
a function in debug info given a function pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193042 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
53c9e5fbb9492824adfa1b004c198236fba1a93b 19-Oct-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193038 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
6efc043f0ba88d8415e729c63a27e886fb64830f 19-Oct-2013 Eric Christopher <echristo@gmail.com> Reformat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193024 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
0ab6439c3f0eef28b4b40f31f2d4d9732fe8cd15 19-Oct-2013 Eric Christopher <echristo@gmail.com> Fix up a few minor performance problems spotted in code review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193023 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
630c3264a650af8e74f2b0b5ae7b57a17cb52061 18-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: add a newly-created DIE to a parent in the same function.

With this commit, all DIEs created in CompileUnit will be added to parents
inside the same function. Also make getOrCreateTemplateType|Value functions
private.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193002 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
57a964bc635359b97340b57510df4ebaf506806b 18-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: simplify code a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193001 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
3c58aad3bc10f888c08c82520ea5b6f629fb91ba 18-Oct-2013 Eric Christopher <echristo@gmail.com> Revert the rest of r192749 to bring back the buildbot. These two
error messages should not be able to occur at the same time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192985 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6cd04fdaae8c604aca3696ba120bde26a2ee9b67 18-Oct-2013 Bill Schmidt <wschmidt@linux.vnet.ibm.com> [PATCH] Fix PR17168 (DAG scheduler inserts DBG_VALUE before PHI with fast-isel)

PR17168 describes a test case that fails when compiling for debug with
fast-isel. Investigation showed that the test was failing because a DBG_VALUE
machine instruction was placed prior to a PHI.

For this problem to occur requires the following:
* Compile for debug
* Compile with fast-isel
* In a block B, fast-isel must partially succeed before punting to DAG-isel
* B must start with a PHI
* The first unhandled node in the DAG must not generate a machine instruction
* A debug value with an order less than that of that first node exists

When all of these circumstances apply, the existing test that an instruction
was not inserted won't fire. Currently it tests whether the block is empty,
or whether the last instruction generated is a phi. When fast-isel has
partially succeeded, the last instruction generated will not be a phi.
Instead, we need to check whether the current insert position is immediately
following a phi. This patch adds that check, and adds the test case from the
PR as a regression test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192976 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
641bea117d2f5e68c11156b9eea1c9270825dfb9 18-Oct-2013 David Majnemer <david.majnemer@gmail.com> CodeGen: Emit a libcall if the target doesn't support 16-byte wide atomics

There are targets that support i128 sized scalars but cannot emit
instructions that modify them directly. The proper thing to do is to
emit a libcall.

This fixes PR17481.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
argetLoweringBase.cpp
1c165b8ee38c4d960bb4cdd86bc54df144cf5e84 18-Oct-2013 Eric Christopher <echristo@gmail.com> Temporarily revert r192749 as it is causing problems for LTO and
requires a more in depth change to the IR structure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192938 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0d87c201b1284627cef54d28a4621f34742aa24d 18-Oct-2013 David Blaikie <dblaikie@gmail.com> DIEHash: Add more things (and remove one character) from the COLLECT_ATTR macro

Makes the uses more terse and requires that they use a semicolon at the
end that helps editors indent proceeding lines correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192925 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
47f66d5a756d4eaeba9082ff4c82023a213daf45 18-Oct-2013 David Blaikie <dblaikie@gmail.com> DIEHash: Support for simple (non-recursive, non-reused) type references

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192924 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
f9a5e40b90e5a98cfae5c0f8a42eedd71c849dbc 17-Oct-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> Replace sra with srl if a single sign bit is required

E.g. (and (sra (i32 x) 31) 2) -> (and (srl (i32 x) 30) 2).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
888cbad774acdff580611f6b07daaf96e825b7e7 17-Oct-2013 Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> Fix edge condition in DAGCombiner to improve codegen of shift sequences.

When canonicalizing dags according to the rule
(shl (zext (shr X, c1) ), c1) ==> (zext (shl (shr X, c1), c1))

remember to add the new shl dag to the DAGCombiner worklist of nodes.
If we don't explicitly add it to the worklist of nodes to visit, we
may not trigger later on the rule that folds the shift left + logical
shift right into a AND instruction with bitmask.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192883 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9198657e1eb13ab717248cfacb2b504fd7e72719 17-Oct-2013 Eric Christopher <echristo@gmail.com> According to the dwarf standard pubnames and pubtypes for languages
like C++ should be the fully qualified names for the type.

Add a routine that does a language specific context walk to build
up the qualified name and use it when we add types/names to the
tables. Expand the gnu pubnames testcase as it's the most complex
to make sure that qualified types are also being added.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192865 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
adbd3ae1dfa7530d23653b6fd910d28de8217fbd 17-Oct-2013 Jack Carter <jack.carter@imgtec.com> [projects/test-suite] White space and long line fixes.

No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192863 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bdfed1687b4288f7edb6faa637774bce903810c8 17-Oct-2013 Eric Christopher <echristo@gmail.com> Add the subprogram DIEs to the context they're created with only
if they're a declaration, otherwise they're owned by the compile
unit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192861 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
88a68cbbb57aa9caef60dbd2f63d908983e77465 17-Oct-2013 David Blaikie <dblaikie@gmail.com> DIEHash: Include the type's context in the type hash.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192856 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
c0987082206d202c20ebe1d528c1b28a875160ac 17-Oct-2013 David Blaikie <dblaikie@gmail.com> DIEHash: Use DW_FORM_sdata for integers, per spec.

This allows us to produce the same hash as GCC for at least some simple
examples.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192855 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
700b91f07ca506f19c6d736bc020b36c678eb527 16-Oct-2013 David Blaikie <dblaikie@gmail.com> Remove ambiguity introduced in r192836

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192840 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
75ee00021d5e753be09baa4121a090afc8d7c236 16-Oct-2013 David Blaikie <dblaikie@gmail.com> DIEHash: Include the trailing zero byte after the children of a DIE

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192836 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
81f69410cb942079964481aba8d1c4739b77290f 16-Oct-2013 Andrew Trick <atrick@apple.com> After PostRA scheduling, don't set kill flags on undef operands.

This should fix the ATOM buildbot failing on break-avx-dep.ll.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192824 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
72a3ee742296aa68fda0118d0e1fa649be756938 16-Oct-2013 Benjamin Kramer <benny.kra@googlemail.com> DAGCombiner: Don't fold xor into not if getNOT would introduce an illegal constant.

This happens e.g. with <2 x i64> -1 on x86_32. It cannot be generated directly
because i64 is illegal. It would be nice if getNOT would handle this
transparently, but I don't see a way to generate a legal constant there right
now. Fixes PR17487.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192795 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5d7e93c0d44a96a416d2f1d1518954d8fed73f40 16-Oct-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> Handle (shl (anyext (shr ...))) in SimpilfyDemandedBits

This is really an extension of the current (shl (shr ...)) -> shl optimization.
The main difference is that certain upper bits must also not be demanded.

The motivating examples are the first two in the testcase, which occur
in llvmpipe output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192783 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
3aa342be500a55c3bbee302f3a8db937eaa2c241 16-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add support for metadata representing .ident directives.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192764 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a486f55569c584d00cfdde43a8755d68cdb68c4f 16-Oct-2013 Eric Christopher <echristo@gmail.com> Fix a pair of bugs in the emission of pubname tables:

1) Make sure we emit static member variables by checking
at the end of createGlobalVariableDIE rather than piecemeal
in the function.
(As a note, createGlobalVariableDIE needs rewriting.)

2) Make sure we use the definition rather than declaration DIE
for two things: a) determining linkage for gnu pubnames, and b)
as the address of the DIE for global variables.
(As a note, createGlobalVariableDIE really needs rewriting.)

Adjust the testcase to make sure we're checking the correct DIEs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192761 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
e891775aa13b42d40483481b9dc5c701d1cc1be5 16-Oct-2013 David Blaikie <dblaikie@gmail.com> Simplify zero initialization of DIEAttrs variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192755 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
c622824ccbb74ac726c656ebc98647810d152cce 16-Oct-2013 Eric Christopher <echristo@gmail.com> Make sure we're not attempting to construct a subprogram DIE
twice and just look up the value. Fix the one case where
we were trying to create a subprogram DIE and we should already
have had one. Reflow formatting in collectDeadVariables while fixing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192749 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
73df4b9f5742023838ffa4eb36638a437e728193 15-Oct-2013 Adrian Prantl <aprantl@apple.com> Remove some dead code. (DarwinGDBCompat was retired in r189903).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192731 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d54946ac14cca14a0b4402fd7edf5271f5e74e6a 15-Oct-2013 Pekka Jaaskelainen <pekka.jaaskelainen@tut.fi> Guard the debug temp variable with NDEBUG to avoid warning/error with NDEBUG defined.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192709 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
862385112e4f81ca2e1ffb3e995c223ffd5328b7 15-Oct-2013 Pekka Jaaskelainen <pekka.jaaskelainen@tut.fi> Do not assert when trying to add a meta data operand with
MachineInstr::addOperand().



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192707 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
51dee24ca6ba63cf021d56ca9cbae62c739d5041 15-Oct-2013 Andrew Trick <atrick@apple.com> Improve on r192635, ExeDepsFix for avx, and add a test case.

rdar:15221834 False AVX register dependencies cause 5x slowdown on
flops-5/6 and significant slowdown on several others.

This was blocking the switch to MI-Sched.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192669 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
a6a9ac5aa1092067e6e1546226d8bdd6a4bfcf99 15-Oct-2013 Andrew Trick <atrick@apple.com> Fix the ExecutionDepsFix pass to handle AVX instructions.

This pass is needed to break false dependencies. Without it, unlucky
register assignment can result in wild (5x) swings in
performance. This pass was trying to handle AVX but not getting it
right. AVX doesn't have partial register defs, it has unused register
reads in which the high bits of a source operand are copied into the
unused bits of the dest.

Fixing this requires conservative liveness analysis. This is awkard
because the pass already has its own pseudo-liveness. However, proper
liveness is expensive, and we would like to use a generic utility to
compute it. The fix only invokes liveness on-demand. It is rare to
detect a case that needs undef-read dependence breaking, but when it
happens, it can be needed many times within a very large block.

I think the existing heuristic which uses a register window of 16 is
too conservative for loop-carried false dependencies. If the loop is a
reduction. The out-of-order engine may be able to execute several loop
iterations in parallel. However, I'll leave this tuning exercise for
next time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192635 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
966772931eea7cdc3cdd7199e304d667aa344bd7 15-Oct-2013 Andrew Trick <atrick@apple.com> LiveRegUnits: Use *MBB for consistency and convenience.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192634 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
iveRegUnits.cpp
6c325c9133511c4aeec3d7490da164d824231201 14-Oct-2013 Andrew Trick <atrick@apple.com> LiveRegUnits::removeRegsInMask safety.

Clobbering is exclusive not inclusive on register units.
For liveness, we need to consider all the preserved registers.
e.g. A regmask that clobbers YMM0 may preserve XMM0.
Units are only clobbered when all super-registers are clobbered.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192623 91177308-0d34-0410-b5e6-96231b3b80d8
iveRegUnits.cpp
7c489ab36564ddde3fa672aff52cfcae06517dfc 14-Oct-2013 Andrew Trick <atrick@apple.com> Use a SparseSet in LiveRegUnits.

Some clients may add block live ins and may track liveness over a
large scope. This guarantees an efficient implementation in all cases
with no memory allocation/deallocation, independent of the number of
target registers. It could be slightly less convenient but is fine in
the expected case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192622 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
eb3b9f8ed979c34b7c11d749efb85df7fe1cfc9a 14-Oct-2013 Andrew Trick <atrick@apple.com> Move LiveRegUnits implementation into .cpp. Comment and format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192621 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
iveRegUnits.cpp
5601abb60dcf9617ee24f4fd2da13b1caa0f6965 14-Oct-2013 Andrew Trick <atrick@apple.com> Convert LiveRegUnits methods to the current convention (it's new code).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192619 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
655a10d96cd79089fc949e9f98f8484c74ec4c90 14-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: static member DIE creation.

Clean up creation of static member DIEs. We can create static member DIEs from
two places, so we call getOrCreateStaticMemberDIE from the two places.

getOrCreateStaticMemberDIE will get or create the context DIE first, then it
will check if the DIE already exists, if not, we create the static member DIE
and add it to the context.

Creation of static member DIEs are handled in a similar way as subprogram DIEs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192618 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
54de36b39d9e6fe61e1fe697737056c567e7008a 14-Oct-2013 David Blaikie <dblaikie@gmail.com> Fix indenting.

That wasn't confusing /at all/...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192617 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
e4b44c1617b82ba4bb5451df83cfc214b1e5d5f5 14-Oct-2013 Will Dietz <wdietz2@illinois.edu> MachineSink: Fix and tweak critical-edge breaking heuristic.

Per original comment, the intention of this loop
is to go ahead and break the critical edge
(in order to sink this instruction) if there's
reason to believe doing so might "unblock" the
sinking of additional instructions that define
registers used by this one. The idea is that if
we have a few instructions to sink "together"
breaking the edge might be worthwhile.

This commit makes a few small changes
to help better realize this goal:

First, modify the loop to ignore registers
defined by this instruction. We don't
sink definitions of physical registers,
and sinking an SSA definition isn't
going to unblock an upstream instruction.

Second, ignore uses of physical registers.
Instructions that define physical registers are
rejected for sinking, and so moving this one
won't enable moving any defining instructions.
As an added bonus, while virtual register
use-def chains are generally small due
to SSA goodness, iteration over the uses
and definitions (used by hasOneNonDBGUse)
for physical registers like EFLAGS
can be rather expensive in practice.
(This is the original reason for looking at this)

Finally, to keep things simple continue
to only consider this trick for registers that
have a single use (via hasOneNonDBGUse),
but to avoid spuriously breaking critical edges
only do so if the definition resides
in the same MBB and therefore this one directly
blocks it from being sunk as well.
If sinking them together is meant to be,
let the iterative nature of this pass
sink the definition into this block first.

Update tests to accomodate this change,
add new testcase where sinking avoids pipeline stalls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192608 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
67b28826cdc7be697acdd3e536a05665fd2a9752 14-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the now unused strong phi elimination pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192604 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
asses.cpp
trongPHIElimination.cpp
55240a5ddbaebc44c9acb0353c18a394b06f348f 14-Oct-2013 Elena Demikhovsky <elena.demikhovsky@intel.com> Fixed a bug in dynamic allocation memory on stack.
The alignment of allocated space was wrong, see Bugzila 17345.

Done by Zvi Rackover <zvi.rackover@intel.com>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192573 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
833a29c296da0a6af622448569dcbe01b5cae6c7 13-Oct-2013 Will Dietz <wdietz2@illinois.edu> TargetLowering: Don't index into empty string.

(This is triggered by current lit tests)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192549 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
87b110ac24063a7a48a9d1273e6db596baab78a0 12-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: remove form from function addDIEEntry.

The form must be a reference form in addDIEEntry. Which reference form to
use will be decided by the callee.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192517 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
4c5956cefbb469b93fcbeb5ec3c5ba16d8b83dad 11-Oct-2013 Benjamin Kramer <benny.kra@googlemail.com> fConversion: Attempt #2 at fixing the MSVC build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192492 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
ae6fa27a0c17b448cc18b0f861f1b935195b419d 11-Oct-2013 Benjamin Kramer <benny.kra@googlemail.com> IfConversion: Try to unbreak the MSVC build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192487 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
85733840109907e1e0f8ffc03dcd2f5fd8e49d47 11-Oct-2013 Matthias Braun <matze@braunis.de> Remove kill flags after if conversion if necessary

When if converting something like:
true:
... = R0<kill>

false:
... = R0<kill>

then the instructions of the true block must not have a <kill> flag
anymore, as the instruction of the false block follow and do still read
the R0 value.
Specifically this patch determines the set of register live-in in the
false block (possibly after simulating the liveness changes of the
duplicated instructions). Each of these live-in registers mustn't be
killed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192482 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
83f743a4d5b4298893adaada0270ff2d832a50c7 11-Oct-2013 Quentin Colombet <qcolombet@apple.com> [DAGCombiner] Reapply load slicing (192471) with a test that explicitly set sse4.2 support.
This should fix the buildbots.

Original commit message:
[DAGCombiner] Slice a big load in two loads when the element are next to each
other in memory and the target has paired load and performs post-isel loads
combining.

E.g., this optimization will transform something like this:
a = load i64* addr
b = trunc i64 a to i32
c = lshr i64 a, 32
d = trunc i64 c to i32

into:
b = load i32* addr1
d = load i32* addr2
Where addr1 = addr2 +/- sizeof(i32), if the target supports paired load and
performs post-isel loads combining.

One should overload TargetLowering::hasPairedLoad to provide this information.
The default is false.

<rdar://problem/14477220>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192476 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4351741a3b36bfe1ac1b385334fc5fa6f6ef5a11 11-Oct-2013 Quentin Colombet <qcolombet@apple.com> [DAGCombiner] Revert load slicing (r192471), until I figure out why it fails on ubuntu.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192474 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c34693f6efc670b71e11f3479844c36d9696b535 11-Oct-2013 Quentin Colombet <qcolombet@apple.com> [DAGCombiner] Slice a big load in two loads when the element are next to each
other in memory and the target has paired load and performs post-isel loads
combining.

E.g., this optimization will transform something like this:
a = load i64* addr
b = trunc i64 a to i32
c = lshr i64 a, 32
d = trunc i64 c to i32

into:
b = load i32* addr1
d = load i32* addr2
Where addr1 = addr2 +/- sizeof(i32), if the target supports paired load and
performs post-isel loads combining.

One should overload TargetLowering::hasPairedLoad to provide this information.
The default is false.

<rdar://problem/14477220>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192471 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d2f8df50fbd2d91cc9f9e4c6b9c4b65304e710c1 11-Oct-2013 Matthias Braun <matze@braunis.de> fix typo in comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192455 91177308-0d34-0410-b5e6-96231b3b80d8
xpandPostRAPseudos.cpp
43777c3150c1dd12c661f62d5d7c95bf9b04c16a 11-Oct-2013 Justin Holewinski <jholewinski@nvidia.com> Make AsmPrinter::emitImplicitDef a virtual method so targets can emit custom comments for implicit defs

For NVPTX, this fixes a crash where the emitImplicitDef implementation was expecting physical registers,
while NVPTX uses virtual registers (with a couple of exceptions). Now, the implicit def comment will be
emitted as a true PTX register name. Other targets can use this to customize the output of implicit def
comments.

Fixes PR17519

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192444 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3b9c5eb589de17694dd4cec116eee5c704e7bd2e 11-Oct-2013 NAKAMURA Takumi <geek4civic@gmail.com> LiveRangeCalc.h: Update a description corresponding to r192396. [-Wdocumentation]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192421 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeCalc.h
03d9609c6154ed91daefb4e4f89b7298c11961f3 10-Oct-2013 Matthias Braun <matze@braunis.de> Print register in LiveInterval::print()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192398 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
achineVerifier.cpp
egAllocBase.cpp
egisterCoalescer.cpp
4f3b5e8c9232e43d1291aab8db5f5698d7ee0ea4 10-Oct-2013 Matthias Braun <matze@braunis.de> Represent RegUnit liveness with LiveRange instance

Previously LiveInterval has been used, but having a spill weight and
register number is unnecessary for a register unit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192397 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
nterferenceCache.cpp
nterferenceCache.h
iveDebugVariables.cpp
iveIntervalAnalysis.cpp
iveRangeEdit.cpp
iveRegMatrix.cpp
achineVerifier.cpp
egAllocGreedy.cpp
egisterCoalescer.cpp
egisterPressure.cpp
e25dde550baec1f79caf2fc06edd74e7ae6ffa33 10-Oct-2013 Matthias Braun <matze@braunis.de> Work on LiveRange instead of LiveInterval where possible

Also change some pointer arguments to references at some places where
0-pointers are not allowed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192396 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveRangeCalc.cpp
iveRangeCalc.h
egisterCoalescer.cpp
plitKit.cpp
a4aed9ae392b30147745bd27e5fea7b0cebc1702 10-Oct-2013 Matthias Braun <matze@braunis.de> Change MachineVerifier to work on LiveRange + LiveInterval

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192395 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
5649e25ce86b9d89d228ae7c392413571b0f8c19 10-Oct-2013 Matthias Braun <matze@braunis.de> Pass LiveQueryResult by value

This makes the API a bit more natural to use and makes it easier to make
LiveRanges implementation details private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192394 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveRangeEdit.cpp
achineScheduler.cpp
achineVerifier.cpp
egisterCoalescer.cpp
egisterPressure.cpp
cheduleDAGInstrs.cpp
87a86058fa0726328de42ace85b5532d18775646 10-Oct-2013 Matthias Braun <matze@braunis.de> Refactor LiveInterval: introduce new LiveRange class

LiveRange just manages a list of segments and a list of value numbers
now as LiveInterval did previously, but without having details like spill
weight or a fixed register number.
LiveInterval is now a subclass of LiveRange and simply adds the spill weight
and the register number.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192393 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
331de11a0acc6a095b98914b5f05ff242c9d7819 10-Oct-2013 Matthias Braun <matze@braunis.de> Rename LiveRange to LiveInterval::Segment

The Segment struct contains a single interval; multiple instances of this struct
are used to construct a live range, but the struct is not a live range by
itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192392 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveDebugVariables.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveRangeCalc.cpp
achineBasicBlock.cpp
achineVerifier.cpp
HIElimination.cpp
egisterCoalescer.cpp
plitKit.cpp
tackColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
4afb5f560d2c3171eda8be6ae64998080dddec0c 10-Oct-2013 Matthias Braun <matze@braunis.de> Rename parameter: defined regs are not incoming.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192391 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
828c9e73baacf0b0f68932718659681223b6b3c4 10-Oct-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Use getPointerSizeInBits() rather than 8 * getPointerSize()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192386 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b8e48a636e7ee6c13140382eb93d9695a65b0624 10-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the context field of subprogram is updated to use
DIScopeRef.

A paired commit at clang is required due to changes to DIBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192378 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
b4d9c11f6c7e0a38e750f946d5cea3ffa5ae8f61 09-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the context and type fields of template_type and
template_value are updated to use DIRef.

A paired commit at clang is required due to changes to DIBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192320 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
73f615b0bd822db3a2a8aab2fd4ed58f093c9769 08-Oct-2013 Reid Kleckner <reid@kleckner.net> Explicitly request unsigned enum types when desired

This fixes repeated -Wmicrosoft warnings when self-hosting clang on
Windows, and gets us real unsigned enum types with MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192227 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
egAllocGreedy.cpp
8199f0bc7722a4d93099cafdb30fa465a2746ce8 08-Oct-2013 Manman Ren <manman.ren@gmail.com> Add DbgVariable::resolve per Eric's suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192218 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
43251008c2ce836f47a6e4c8a64947069d6b268e 08-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: rename getOriginalTypeSize to getBaseTypeSize.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192216 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
017ceda04067cb51ed4dfc01ac4ad118f0cd9f42 08-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: take advantage of the existing CU::resolve.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192215 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
2565de926b64b0777c2a192b53ac1ab43fc42a70 08-Oct-2013 Eric Christopher <echristo@gmail.com> Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192199 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
320296a4cfe414ce59f406b8a5ce15272f563103 08-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a MCTargetStreamer interface.

This patch fixes an old FIXME by creating a MCTargetStreamer interface
and moving the target specific functions for ARM, Mips and PPC to it.

The ARM streamer is still declared in a common place because it is
used from lib/CodeGen/ARMException.cpp, but the Mips and PPC are
completely hidden in the corresponding Target directories.

I will send an email to llvmdev with instructions on how to use this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192181 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
smPrinter/DwarfException.h
379f76e873b91550e3d9cee79dff814e3ce1e86e 07-Oct-2013 Richard Mitton <richard@codersnotes.com> Formally added an explicit enum for DWARF TLS support. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192118 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
32e3150faba95187c76b211e27d6496a21bee360 07-Oct-2013 Craig Topper <craig.topper@gmail.com> Fix some assert messages to say the correct opcode name. Looks like one assert got copy and pasted to many places.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192078 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2def17935c87f5e6b23d899567ef3dd00ed89d48 06-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add support for aliases with linkonce_odr.

This will be used to extend constructor aliases in clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192066 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
87855d3013d9a87a3aeb51508312b76e200baac7 05-Oct-2013 Benjamin Kramer <benny.kra@googlemail.com> Emit a better error when running out of registers on inline asm.

The most likely case where this error happens is when the user specifies
too many register operands. Don't make it look like an internal LLVM bug
when we can see that the error is coming from an inline asm instruction.
For other instructions we keep the "ran out of registers" error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192041 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.cpp
egAllocFast.cpp
5e195a4c8d8cd4498ab7e0aa16a3b6f273daf457 05-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove some really nasty uses of hasRawTextSupport.

When MC was first added, targets could use hasRawTextSupport to keep features
working before they were added to the MC interface.

The design goal of MC is to provide an uniform api for printing assembly and
object files. Short of relaxations and other corner cases, a object file is
just another representation of the assembly.

It was never the intention that targets would keep doing things like

if (hasRawTextSupport())
Set flags in one way.
else
Set flags in another way.

When they do that they create two code paths and the object file is no longer
just another representation of the assembly. This also then requires testing
with llc -filetype=obj, which is extremelly brittle.

This patch removes some of these hacks by replacing them with smaller ones.
The ARM flag setting is trivial, so I just moved it to the constructor. For
Mips, the patch adds two temporary hack directives that allow the assembly
to represent the same things as the object file was already able to.

The hope is that the mips developers will replace the hack directives with
the same ones that gas uses and drop the -print-hack-directives flag.

I will also try to implement a target streamer interface, so that we can
move this out of the common code.

In summary, for any new work, two rules of the thumb are
* Don't use "llc -filetype=obj" in tests.
* Don't add calls to hasRawTextSupport.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192035 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
936910d9293f7118056498c75c7bca79a7fc579c 05-Oct-2013 Craig Topper <craig.topper@gmail.com> Add OPC_CheckChildSame0-3 to the DAG isel matcher. This replaces sequences of MoveChild, CheckSame, MoveParent. Saves 846 bytes from the X86 DAG isel matcher, ~300 from ARM, ~840 from Hexagon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c664d76716ba87577b6c2a513ce4fe0712a2d3e2 05-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the derived-from field of a DW_TAG_pointer_type
is updated to use DITypeRef.

Move isUnsignedDIType and getOriginalTypeSize from DebugInfo.h to be static
helper functions in DwarfCompileUnit. We already have a static helper function
"isTypeSigned" in DwarfCompileUnit, and a pointer to DwarfDebug is added to
resolve the derived-from field. All three functions need to go across link
for derived-from fields, so we need to get hold of a type identifier map.

A pointer to DwarfDebug is also added to DbgVariable in order to resolve the
derived-from field.

Debug info verifier is updated to check a derived-from field is a TypeRef.
Verifier will not go across link for derived-from fields, in debug info finder,
we go across the link to add derived-from fields to types.

Function getDICompositeType is only used by dragonegg and since dragonegg does
not generate identifier for types, we use an empty map to resolve the
derived-from field.

When printing a derived-from field, we use DITypeRef::getName to either return
the type identifier or getName of the DIType.

A paired commit at clang is required due to changes to DIBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192018 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
af76b1601cc1568aa7c672bca6383760b56d2ac4 05-Oct-2013 Eric Christopher <echristo@gmail.com> Reorganize some member variables and update a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192017 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
72dd4cd1dda543e76b5dfc6cba50d7c4e085e87c 05-Oct-2013 Eric Christopher <echristo@gmail.com> Fix one comment and update another. Slightly reformat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192016 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.h
eee74fbbb64e5a4fd3af90611128ded5d759c82f 05-Oct-2013 Eric Christopher <echristo@gmail.com> Add a resolve method on CompileUnit that forwards to DwarfDebug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192014 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
eacbfd1d512b97b5551ce9f30bf85ba000d9da42 05-Oct-2013 Adrian Prantl <aprantl@apple.com> Debug info: Don't crash in SelectionDAGISel when a vreg that is being
pointed to by a dbg_value belonging to a function argument is eliminated
during instruction selection.
rdar://problem/15094721.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
22852c76f5791f98aadb176ebcf15af5217a67eb 05-Oct-2013 Eric Christopher <echristo@gmail.com> Make a bunch of CompileUnit member functions private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192009 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
c4eb353c7a15f8b0283f4772dcac0571b7cc3350 05-Oct-2013 David Blaikie <dblaikie@gmail.com> Minor formatting/comment rewording/etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192005 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
9aa0a93f22beef36cd772b85d0dc4d82ff9f45fa 05-Oct-2013 Eric Christopher <echristo@gmail.com> Remove odd use of this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192004 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
c543a8849eb41b29b42bcd2986b1f7b4ef4ff082 05-Oct-2013 Eric Christopher <echristo@gmail.com> Reformat some odd formattings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192003 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
ccb663668455da81a629b7abeed905a7fcc886e3 05-Oct-2013 Eric Christopher <echristo@gmail.com> Tighten up some type arguments to functions. Where we expect a
scope, pass a scope.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192002 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
356ccdceed31f84472e58df56da65b2f4f6ab72f 05-Oct-2013 David Blaikie <dblaikie@gmail.com> Remove some dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192000 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
916d49e77237c5aabfd5638b4e481c7ed9441608 05-Oct-2013 David Blaikie <dblaikie@gmail.com> Simplify setting of DIE tag for type DIEs by setting it in one* place.

* two actually due to some weird template thing... investigating that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191998 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
d3b3eef49bac03b70b6394d647cf3813e781daa2 05-Oct-2013 Eric Christopher <echristo@gmail.com> Prune includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191994 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
371d95851a4e506dd0baba01c759f5dafcb3c128 05-Oct-2013 Eric Christopher <echristo@gmail.com> Use addFlag to add the enum class attribute.

This has the side effect of using DW_FORM_flag_present on dwarf4 and above.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
9c0c9485808ba4280a62429700693c41fa304598 05-Oct-2013 Eric Christopher <echristo@gmail.com> Use Die->addValue and DIEIntegerOne directly when we want to add
a flag. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191990 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
03c8f8fbd539e539796b0bd9824797f3240261d7 05-Oct-2013 Hal Finkel <hfinkel@anl.gov> Fix DAGCombiner::visitFP_EXTEND to ignore indexed loads

DAGCombiner::visitFP_EXTEND will apply the following transformation:

fold (fpext (load x)) -> (fpext (fptrunc (extload x)))

but the implementation does not handle indexed loads (pre/post inc.), but did
not specifically ignore them either (unlike for extending loads, which it
already ignored), causing an assert when the transformation was applied to an
indexed load. This is the minimal fix for correctness (causing the
transformation to be skipped for indexed loads).

Unfortunately, I don't have an in-tree test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191989 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e7099f6ff48ee99e50aa8347b455255e3a893a12 04-Oct-2013 Eric Christopher <echristo@gmail.com> Temporarily revert r176882 as it needs to be implemented in a different
way for all platforms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191975 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
3f045005bf96b6521b2769fc824283589bfa133a 04-Oct-2013 Eric Christopher <echristo@gmail.com> Temporarily revert r191792 as it is causing some LTO debug failures
on platforms with relocations in debug info and also temporarily
revert r191800 due to conflicts with the revert of r191792.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191967 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0bb5a66b0388d2c52a887eaafe3749aaceb6a754 04-Oct-2013 Matthias Braun <matze@braunis.de> Fix comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191966 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
b38d9877f490e6bd65a38048d7e00877c0a670f0 04-Oct-2013 Matthias Braun <matze@braunis.de> Fix indentation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191965 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
b1aa5e43a2976caed47e21d31823a48bf8324000 04-Oct-2013 Matthias Braun <matze@braunis.de> Fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191964 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
rocessImplicitDefs.cpp
596cfd045fa05c249083b5ff7cdb5e32f4d92b97 04-Oct-2013 Craig Topper <craig.topper@gmail.com> Revert r191940 to see if it fixes the build bots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d3562956789dbd0571a7e46052bee64b153fa7c4 04-Oct-2013 Craig Topper <craig.topper@gmail.com> Add OPC_CheckChildSame0-3 to the DAG isel matcher. This replaces sequences of MoveChild, CheckSame, MoveParent. Saves 846 bytes from the X86 DAG isel matcher, ~300 from ARM, ~840 from Hexagon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191940 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c32f2332b065d0fb8de4db8b8ca0981564dae92b 04-Oct-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Fix ordering of members after r191928

In the case (shown in the attached test) where a member function
definition was emitted into debug info the following could occur:

1) build the debug info for the member function definition
2) in (1), build the debug info for the member function declaration
3) construct and add the member function declaration DIE
4) add it to its context
5) build its context (the type it is a member of)
6) construct the members and add them to the type
7) except don't add member functions because "getOrCreateSubprogram"
adds the function to its parent anyway
8) except we're only partway through building this subprogram
declaration so it hasn't been added yet - but we returned the partially
constructed DIE (since it's already in the MDNode->DIE mapping to avoid
infinitely recursing trying to create the member function DIE)
9) once the type is constructed, add the member function to it
10) now the members are out of order (the member function being defined
is listed as the last member, even though it was declared as the first)

To avoid this, construct the context of the subprogram DIE before we
query to see if it exists. That way we never end up creating it before
creating its context and ending up in this situation.

Alternatively, the type construction that visits/builds all the members
could call something like getOrCreateSubprogram, but that doesn't ever
do the "add to context" step. Then the type building code would always
be responsible for adding members (and the subprogram "addToContextDIE"
would no-op because the context building would have added the subprogram
declaration to the type/context DIE already).

(the test cases updated were overly-sensitive to offsets or abbreviation
numbers. We don't have a nice way to make these tests more robust as yet
- multiline FileCheck matches would be required)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191939 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
7c9659a3b297be6298ffae4656b86797295c5d58 04-Oct-2013 Richard Mitton <richard@codersnotes.com> Fixed a bug with section names containing special characters.

Changed the dwarf aranges code to not use getLabelEndName, as it turns out it's not reliable to call that given user-defined section names. Section names can have characters in that aren't representable as symbol names.

The dwarf-aranges test case has been updated to include a special character, to check this.

This fixes pr17416.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191932 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e5830c4e2603ab36f08911ff6bb117638ae529c7 03-Oct-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Avoid redundantly adding child DIEs to parents.

DIE::addChild had a shortcircuit that silently no-op'd when a child was
readded to the same parent. This hid some quirky/redundant code in
DwarfDebug/CompileUnit. By removing that functionality and replacing it
with an assert I was able to find and cleanup those cases, mostly
centering around adding members to types in various circumstances.

1) The original oddity I noticed while working on type units (which
actually was helping me in the short term, by accident) was the
addToContextOwner call in constructTypeDIE. This call was completely
bogus (why was it only done for non-virtual types? what relevance does
that have at all) and redundant with the more uniform addToContextOwner
made in getOrCreateTypeDIE.

2) If a member function definition was visited (createSubprogramDIE), it
would attempt to build the member function declaration. The declaration
DIE would then be added to its context, but in building the context (the
type for which this function is a member) the members of the type would
be added to the type automatically, so by the time the context was
constructed, the member function was already associated with it.

3) The same as (2) but without the member function being constructed
first. Whenever a type was constructed, the members would be created and
member functions would be created by getOrCreateSubprogramDIE - this
would lead to the subprogram being added to the (incomplete) type
already, then the general member-construction code would add it again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191928 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
cee51c48030f37133ad4004d3e5c14d8ebfc91c4 03-Oct-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Rename DataLayout variables TD -> DL

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191927 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
45fae28db7ccc4f9d40f4b4d3fb35676826dfdc0 03-Oct-2013 Eric Christopher <echristo@gmail.com> Make sure we emit a section for pubnames even if that section is
going to be empty. This is particularly important for the gnu
pubnames case since we're emitting a relocation to the section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191915 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7c9fc90c75a2b7cf18dd725484aba0af55b44b33 03-Oct-2013 Eric Christopher <echristo@gmail.com> Fix cut and paste typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191914 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b70a05a871a9ce44231a5f6308271f333c4ad110 03-Oct-2013 Jin-Gu Kang <jaykang10@imrc.kist.re.kr> Added checking code whehter target supports specific dag combining about rotate
or not. The corresponding dag patterns are as following:

"DAGCombier::MatchRotate" function in DAGCombiner.cpp
Pattern1
// fold (or (shl (*ext x), (*ext y)),
// (srl (*ext x), (*ext (sub 32, y)))) ->
// (*ext (rotl x, y))
// fold (or (shl (*ext x), (*ext y)),
// (srl (*ext x), (*ext (sub 32, y)))) ->
// (*ext (rotr x, (sub 32, y)))

pattern2
// fold (or (shl (*ext x), (*ext (sub 32, y))),
// (srl (*ext x), (*ext y))) ->
// (*ext (rotl x, y))
// fold (or (shl (*ext x), (*ext (sub 32, y))),
// (srl (*ext x), (*ext y))) ->
// (*ext (rotr x, (sub 32, y)))


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191905 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9d08d69fd4562a4433cf19eb4b96c17b34f6da2e 03-Oct-2013 Alexey Samsonov <samsonov@google.com> Remove wild .debug_aranges entries generated from unimportant labels

r191052 added emitting .debug_aranges to Clang, but this
functionality is broken: it uses all MC labels added in DWARF Asm
printer, including the labels for build relocations between
different DWARF sections, like .Lsection_line or .Ldebug_loc0.

As a result, if any DIE .debug_info would contain "DW_AT_location=0x123"
attribute, .debug_aranges would also contain a range starting from 0x123,
breaking tools that rely on this section.

This patch fixes this by using only MC labels that corresponds to the
addresses in the user program.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191884 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
dd5d86d992eb129ecd0bb013d2db2d6a0e8d2605 02-Oct-2013 Chandler Carruth <chandlerc@gmail.com> Remove the very substantial, largely unmaintained legacy PGO
infrastructure.

This was essentially work toward PGO based on a design that had several
flaws, partially dating from a time when LLVM had a different
architecture, and with an effort to modernize it abandoned without being
completed. Since then, it has bitrotted for several years further. The
result is nearly unusable, and isn't helping any of the modern PGO
efforts. Instead, it is getting in the way, adding confusion about PGO
in LLVM and distracting everyone with maintenance on essentially dead
code. Removing it paves the way for modern efforts around PGO.

Among other effects, this removes the last of the runtime libraries from
LLVM. Those are being developed in the separate 'compiler-rt' project
now, with somewhat different licensing specifically more approriate for
runtimes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191835 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
2b53089bd017139f0125b870ace94ff27dffd2ff 02-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: In DIBuilder, the derived-from field of a DW_TAG_pointer_type
is updated to use DITypeRef.

Move isUnsignedDIType and getOriginalTypeSize from DebugInfo.h to be static
helper functions in DwarfCompileUnit. We already have a static helper function
"isTypeSigned" in DwarfCompileUnit, and a pointer to DwarfDebug is added to
resolve the derived-from field. All three functions need to go across link
for derived-from fields, so we need to get hold of a type identifier map.

A pointer to DwarfDebug is also added to DbgVariable in order to resolve the
derived-from field.

Debug info verifier is updated to check a derived-from field is a TypeRef.
Verifier will not go across link for derived-from fields, in debug info finder,
we go across the link to add derived-from fields to types.

Function getDICompositeType is only used by dragonegg and since dragonegg does
not generate identifier for types, we use an empty map to resolve the
derived-from field.

When printing a derived-from field, we use DITypeRef::getName to either return
the type identifier or getName of the DIType.

A paired commit at clang is required due to changes to DIBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191800 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
620f436b205ab75e1dd48b9af8823bc30c53fd0e 01-Oct-2013 Manman Ren <manman.ren@gmail.com> Debug Info: remove duplication of DIEs when a DIE is part of the type system
and it is shared across CUs.

We add a few maps in DwarfDebug to map MDNodes for the type system to the
corresponding DIEs: MDTypeNodeToDieMap, MDSPNodeToDieMap, and
MDStaticMemberNodeToDieMap. These DIEs can be shared across CUs, that is why we
keep the maps in DwarfDebug instead of CompileUnit.

Sometimes, when we try to add an attribute to a DIE, the DIE is not yet added
to its owner yet, so we don't know whether we should use ref_addr or ref4.
We create a worklist that will be processed during finalization to add
attributes with the correct form (ref_addr or ref4).

We add addDIEEntry to DwarfDebug to be a wrapper around DIE->addValue. It checks
whether we know the correct form, if not, we update the worklist
(DIEEntryWorklist).

A testing case is added to show that we only create a single DIE for a type
MDNode and we use ref_addr to refer to the type DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191792 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8819c84aed10777ba91d4e862229882b8da0b272 01-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove several unused variables.

Patch by Alp Toker.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191757 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
ailDuplication.cpp
20a3bc600c62b2519a1b6be7e752a8ac00deac3b 01-Oct-2013 Tom Stellard <thomas.stellard@amd.com> SelectionDAG: Clarify comments from r191600

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191724 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
451c71d67b1dd324dcd76d771cf05bf7721bdc59 01-Oct-2013 Eric Christopher <echristo@gmail.com> Add the DW_AT_GNU_ranges_base attribute if we've emitted any ranges
into the debug_ranges section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191721 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
08bd923be85d27d396c82fda7ef417c6d357bf9e 01-Oct-2013 Eric Christopher <echristo@gmail.com> Update comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191720 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a6d841561b1b7e3f32e1f77e35982d8cfd0f515e 01-Oct-2013 Eric Christopher <echristo@gmail.com> The DW_AT_GNU_pubnames/pubtypes attributes are actually form
SEC_OFFSET from the beginning of the section so go ahead and emit
a label at the beginning of each one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191710 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d42730dc712026cbfb1322a979e0ac72cd31a19e 30-Sep-2013 Arnold Schwaighofer <aschwaighofer@apple.com> IfConverter: Use TargetSchedule for instruction latencies

For targets that have instruction itineraries this means no change. Targets
that move over to the new schedule model will use be able the new schedule
module for instruction latencies in the if-converter (the logic is such that if
there is no itineary we will use the new sched model for the latencies).

Before, we queried "TTI->getInstructionLatency()" for the instruction latency
and the extra prediction cost. Now, we query the TargetSchedule abstraction for
the instruction latency and TargetInstrInfo for the extra predictation cost. The
TargetSchedule abstraction will internally call "TTI->getInstructionLatency" if
an itinerary exists, otherwise it will use the new schedule model.

ATTENTION: Out of tree targets!

(I will also send out an email later to LLVMDev)

This means, if your target implements

unsigned getInstrLatency(const InstrItineraryData *ItinData,
const MachineInstr *MI,
unsigned *PredCost);

and returns a value for "PredCost", you now also need to implement

unsigned getPredictationCost(const MachineInstr *MI);

(if your target uses the IfConversion.cpp pass)

radar://15077010

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191671 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
argetInstrInfo.cpp
argetSchedule.cpp
fd40d514ec7e95fe4a59a7a467c887b026364ff2 29-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> Allocate AtomicSDNode operands in SelectionDAG's allocator to stop leakage.

SDNode destructors are never called. As an optimization use AtomicSDNode's
internal storage if we have a small number of operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f80a63fa23862e578de919f4b44d4fcdee68fd0d 28-Sep-2013 Robert Wilhelm <robert.wilhelm@gmx.net> Fix spelling intruction -> instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
tackColoring.cpp
8034d7100652091c20101554a3b6d6afa545e696 28-Sep-2013 Tom Stellard <thomas.stellard@amd.com> SelectionDAG: Silence unused variable warning on release builds

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bbafe422d6f9036b03992ee5eacb5d09644c3267 28-Sep-2013 Tom Stellard <thomas.stellard@amd.com> SelectionDAG: Improve legalization of SELECT_CC with illegal condition codes

SelectionDAG will now attempt to inverse an illegal conditon in order to
find a legal one and if that doesn't work, it will attempt to swap the
operands using the inverted condition.

There are no new test cases for this, but a nubmer of the existing R600
tests hit this path.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191602 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
12d43f9baf83b6a2cc444c89bb688ebfe01a9fa1 28-Sep-2013 Tom Stellard <thomas.stellard@amd.com> SelectionDAG: Try to expand all condition codes using getCCSwappedOperands()

This is useful for targets like R600, which only support GT, GE, NE, and EQ
condition codes as it removes the need to handle unsupported condition
codes in target specific code.

There are no tests with this commit, but R600 has been updated to take
advantage of this new feature, so its existing selectcc tests are now
testing the swapped operands path.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191601 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
8a9879a4481667b18eee4a0f8b254b3810878539 28-Sep-2013 Tom Stellard <thomas.stellard@amd.com> SelectionDAG: Clean up LegalizeSetCCCondCode() function

Interpreting the results of this function is not very intuitive, so I
cleaned it up to make it more clear whether or not a SETCC op was
legalized and how it was legalized (either by swapping LHS and RHS or
replacing with AND/OR).

This patch does change functionality in the LHS and RHS swapping case,
but unfortunately there are no in-tree tests for this. However, this
patch is a prerequisite for R600 to take advantage of the LHS and RHS
swapping, so tests will be added in subsequent commits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191600 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0b15e9893d8dc71127e722d122214d6ec5d89d0e 28-Sep-2013 Eric Christopher <echristo@gmail.com> Unify conditionals and reformat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191582 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
18ebd48960afe9a4e694dac3ba0ee1002044d297 27-Sep-2013 Josh Magee <joshua_magee@playstation.sony.com> [stackprotector] Refactor the StackProtector pass from a single .cpp file into StackProtector.h and StackProtector.cpp.

No functionality change. Future patches will add analysis which will be used
in other passes (PEI, StackSlot). The end goal is to support ssp-strong stack
layout rules.

WIP.

Differential Revision: http://llvm-reviews.chandlerc.com/D1521


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191570 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
a9f113d0662faba063742d0ed82709c1f9087710 27-Sep-2013 Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> Re-apply the change from r191393 with fix for pr17380.

This change fixes the problem reported in pr17380 and re-add the dagcombine
transformation ensuring that the value types are always legal if the
transformation is triggered after Legalization took place.

Added the test case from pr17380.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191509 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6c73cf5a8aef28e4274a0d843940fdee0d9f7329 26-Sep-2013 Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> Revert r191393 since it caused pr17380.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191438 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
30ec8a3658b1f06bb94d392c55feb7f107517bf8 26-Sep-2013 Venkatraman Govindaraju <venkatra@cs.wisc.edu> [Sparc] Implements exception handling in SPARC with DwarfCFI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191432 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
83ba58e5f0a5afbb23d7d2092d817accded4455a 26-Sep-2013 Venkatraman Govindaraju <venkatra@cs.wisc.edu> Implements parsing and emitting of .cfi_window_save in MC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191431 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
268c743a3ba44ada364938bc5ff9b1be219df54f 26-Sep-2013 Amara Emerson <amara.emerson@arm.com> [ARM] Use the load-acquire/store-release instructions optimally in AArch32.

Patch by Artyom Skrobov.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b6ac11cd03e9dd97b45dc97787171f942ef8e344 26-Sep-2013 Andrew Trick <atrick@apple.com> Added temp flag -misched-bench for staging in default changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191423 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
egisterCoalescer.cpp
electionDAG/SelectionDAGISel.cpp
7394a7c0c27d498fe7ff0760eeefdb83bb54a795 26-Sep-2013 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191422 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2ce3ac8dd8c8e43f0a1a4db1a11f452b087ca24d 25-Sep-2013 Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> Teach DAGCombiner how to canonicalize dags according to the rule
(shl (zext (shr A, X)), X) => (zext (shl (shr A, X), X)).

The rule only triggers when there are no other uses of the
zext to avoid materializing more instructions.

This helps the DAGCombiner understand that the shl/shr
sequence can then be converted into an and instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191393 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
070156437752179833b1e5fddd50caa03fd7c12f 25-Sep-2013 Andrew Trick <atrick@apple.com> Mark the x86 machine model as incomplete. PR17367.

Ideally, the machinel model is added at the time the instructions are
defined. But many instructions in X86InstrSSE.td still need a model.

Without this workaround the scheduler asserts because x86 already has
itinerary classes for these instructions, indicating they should be
modeled by the scheduler. Since we use the new machine model for other
instructions, it expects a new machine model for these too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191391 91177308-0d34-0410-b5e6-96231b3b80d8
argetSchedule.cpp
ce734f1f43b3c5f614b95b53e3ed86f65daca8dd 25-Sep-2013 Quentin Colombet <qcolombet@apple.com> [PR16882] Ignore noreturn definitions when setting isPhysRegUsed.

PEI inserts a save/restore sequence for the link register, according to the
information it gets from the MachineRegisterInfo.
MachineRegisterInfo is populated by the VirtRegMap pass.
This pass was not aware of noreturn calls and was registering the definitions of
these calls the same way as regular operations.

Modify VirtRegPass so that it does not set the isPhysRegUsed information for
registers only defined by noreturn calls.
The rational is that a noreturn call is the "last instruction" of the program
(if it returns the behavior is undefined), so everything that is defined by it
cannot be used and will not interfere with anything else. Therefore, it is
pointless to account for then.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191349 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
85509802eba15c82ff486f512a0b559699dc6999 25-Sep-2013 Eli Friedman <eli.friedman@gmail.com> Add missing check to SETCC optimization.

PR17338.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191337 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b0dfceec2282d4af1e87042f1db8ed51c5330132 24-Sep-2013 Andrew Trick <atrick@apple.com> Comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191312 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cd216b2c7359b21de08e568792ae01106407b351 24-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> DAGCombiner: Unify rotate matching for extended and unextended amounts.

No functionality change, lots of indentation changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191303 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
477fc628b3c9ce1c970d4a678dd5607b15242cc8 24-Sep-2013 Jiangning Liu <jiangning.liu@arm.com> Initial support for Neon scalar instructions.

Patch by Ana Pazos.

1.Added support for v1ix and v1fx types.
2.Added Scalar Pairwise Reduce instructions.
3.Added initial implementation of Scalar Arithmetic instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
eed779ff68c9a4612ea229f4fbd23a5258458889 24-Sep-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] Allow for copies from vreg -> vreg to be in a terminator sequence.

Sometimes a copy from a vreg -> vreg sneaks into the middle of a terminator
sequence. It is safe to slice this into the stack protector success bb.

This fixes PR16979.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191260 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3d2c90f6dd7bc86a320b96bace7ad3fda631bf17 24-Sep-2013 Eric Christopher <echristo@gmail.com> Add namespaces to the list of items that we expose via pubnames.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191257 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
5a63474e2d4c797ca8245edae4064f17b47df3ee 24-Sep-2013 Eric Christopher <echristo@gmail.com> Add more external types to the pubtypes table. Expand the asm
checking patch until we get full dumping support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191239 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
a31a975e54074f39d9d1643763f800ed138510a5 24-Sep-2013 Eric Christopher <echristo@gmail.com> Rename IsStatic variable to Linkage in order to be a bit more descriptive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191236 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
734334e349f8a803e7dbcd969ab6e6bbf540e1bc 24-Sep-2013 Eric Christopher <echristo@gmail.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191235 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
54e82495e99632c2d1009ac0dde796c0e9e651f7 23-Sep-2013 Bill Wendling <isanbard@gmail.com> Reformat code with clang-format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191226 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
cdeaae4f75fa2716bdc749b812273ac046344091 23-Sep-2013 Eric Christopher <echristo@gmail.com> Handle gnu pubtypes sections:

a) Make sure we are emitting the correct section in our section labels
when we begin the module.
b) Make sure we are emitting the correct pubtypes section in the
presence of gnu pubtypes.
c) For C++ struct, union, class, and enumeration types are default
external.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191225 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
670711e66217d32a751f0dfc7bb88006bfb05012 23-Sep-2013 Kay Tiong Khoo <kkhoo@perfwizard.com> fix typo: than -> then

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191214 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
eb46def978a60fd705cca3037feff5573122b404 23-Sep-2013 Richard Mitton <richard@codersnotes.com> Fixed debug_aranges handling for common symbols.

The size of common symbols is now tracked correctly, so they can be listed in the arange section without needing knowledge of other following symbols.

.comm (and .lcomm) do not indicate to the system assembler any particular section to use, so we have to treat them as having no section.

Test case update to account for this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191210 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0d293e45b66c742fdbc3998209bb20ed6c5806bf 22-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> Provide basic type safety for array_pod_sort comparators.

This makes using array_pod_sort significantly safer. The implementation relies
on function pointer casting but that should be safe as we're dealing with void*
here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191175 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
3e84ad28d4d3ceee25771b1e30315c20b7608c39 22-Sep-2013 Tim Northover <tnorthover@apple.com> ISelDAG: spot chain cycles involving MachineNodes

Previously, the DAGISel function WalkChainUsers was spotting that it
had entered already-selected territory by whether a node was a
MachineNode (amongst other things). Since it's fairly common practice
to insert MachineNodes during ISelLowering, this was not the correct
check.

Looking around, it seems that other nodes get their NodeId set to -1
upon selection, so this makes sure the same thing happens to all
MachineNodes and uses that characteristic to determine whether we
should stop looking for a loop during selection.

This should fix PR15840.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
189c6235e7d783928c94cbfe4bccb39e4bd0b84f 21-Sep-2013 Juergen Ributzka <juergen@apple.com> Revert "SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too."

This reverts commit r191130.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191138 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypesGeneric.cpp
1941431f8a0f61fb5d5e3175cc49efd5dd19033c 21-Sep-2013 Juergen Ributzka <juergen@apple.com> SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too.

The Type Legalizer recognizes that VSELECT needs to be split, because the type
is to wide for the given target. The same does not always apply to SETCC,
because less space is required to encode the result of a comparison. As a result
VSELECT is split and SETCC is unrolled into scalar comparisons.

This commit fixes the issue by checking for VSELECT-SETCC patterns in the DAG
Combiner. If a matching pattern is found, then the result mask of SETCC is
promoted to the expected vector mask for the given target. This mask has usually
te same size as the VSELECT return type (except for Intel KNL). Now the type
legalizer will split both VSELECT and SETCC.

This allows the following X86 DAG Combine code to sucessfully detect the MIN/MAX
pattern. This fixes PR16695, PR17002, and <rdar://problem/14594431>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191130 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypesGeneric.cpp
9e0b08dd2053843fd330774cdbac06a7b0191f14 21-Sep-2013 Eric Christopher <echristo@gmail.com> Move emission of the debug string table to early in the debug
info finalization to greatly reduce the number of fixups that the
assembler has to handle in order to improve compile time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191119 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
50d37a4e569536485ace9131fa6726a36c8e0d87 21-Sep-2013 Eric Christopher <echristo@gmail.com> Migrate addGlobalName to the .cpp file as an intermediate step
to further work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191113 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
f45edcc3818757234c20d4d5975c0b992bf1f95e 20-Sep-2013 Andrew Trick <atrick@apple.com> Allow subtarget selection of the default MachineScheduler and document the interface.

The global registry is used to allow command line override of the
scheduler selection, but does not work well as the normal selection
API. For example, the same LLVM process should be able to target
multiple targets or subtargets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191071 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
ac3f016599ac50a4777b0348c43892c041ef489b 20-Sep-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: GDBIndexEntry*String conversion functions now return const char* for easy llvm::formating

This was previously invoking UB by passing a user-defined type to
format. Thanks to Jordan Rose for pointing this out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191060 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c2286720de4f665dc2750d54c3748d331f81e105 20-Sep-2013 David Blaikie <dblaikie@gmail.com> Add braces to suppress Clang's dangling-else warning.

These violations were introduced in r191049

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191059 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5cc319a42a914b24b164a94d9a563c728a7a4026 20-Sep-2013 Richard Mitton <richard@codersnotes.com> Added support for generate DWARF .debug_aranges sections automatically.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191052 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
70e0b047be83cbaca06c0cc72e508667bcd5e95f 20-Sep-2013 Andrew Trick <atrick@apple.com> Rename ConvergingScheduler to GenericScheduler.

This was an experimental scheduler a year ago. It's now used by
several subtargets, both in-order and out-of-order, and it
is about to be enabled by default for x86 and armv7. It will be the
new GenericScheduler for subtargets that don't provide their own
SchedulingStrategy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191051 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
994c37fcb001bc5a53bf2c676009b327b882d765 20-Sep-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: llvm-dwarfdump support for gnu_pubnames section

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191050 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ceb3b4649086c4aa6aa535440748c5860093f6e6 20-Sep-2013 Kai Nacke <kai.nacke@redstar.de> PR16726: extend rol/ror matching

C-like languages promote types like unsigned short to unsigned int before
performing an arithmetic operation. Currently the rotate matcher in the
DAGCombiner does not consider this situation.

This commit extends the DAGCombiner in the way that the pattern

(or (shl ([az]ext x), (*ext y)), (srl ([az]ext x), (*ext (sub 32, y))))

is folded into

([az]ext (rotl x, y))

The matching is restricted to aext and zext because in this cases the upper
bits are either undefined or known. Test case is included.

This fixes PR16726.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191049 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7cb98c9cb7688ad775d4dee07ca66570f1c030d1 20-Sep-2013 Kai Nacke <kai.nacke@redstar.de> Revert PR16726: extend rol/ror matching

There is a buildbot failure. Need to investigate this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191048 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a5950e0149871671847c051c95113460f161e384 20-Sep-2013 Kai Nacke <kai.nacke@redstar.de> PR16726: extend rol/ror matching

C-like languages promote types like unsigned short to unsigned int before
performing an arithmetic operation. Currently the rotate matcher in the
DAGCombiner does not consider this situation.

This commit extends the DAGCombiner in the way that the pattern

(or (shl ([az]ext x), (*ext y)), (srl ([az]ext x), (*ext (sub 32, y))))

is folded into

([az]ext (rotl x, y))

The matching is restricted to aext and zext because in this cases the upper
bits are either undefined or known. Test case is included.

This fixes PR16726.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191045 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
18a6ade6cd638c1e5d2c7c7d044cec0fec5c63d3 20-Sep-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Improve IR annotation comments for GNU pubthings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191043 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9599f51559c692bb20092da23e3a34b2cc841e03 19-Sep-2013 David Blaikie <dblaikie@gmail.com> Unshift the GDB index/GNU pubnames constants modified in r191025

Based on code review feedback from Eric Christopher, unshifting these
constants as they can appear in the gdb_index itself, shifted a further
24 bits. This means that keeping them preshifted is a bit inflexible, so
let's not do that.

Given the motivation, wrap up some nicer enums, more type safety, and
some utility functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191035 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ecb41cfe36c9e60664c95970bfae82e4cf7397c5 19-Sep-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Simplify gnu_pubnames index computation.

Names open to bikeshedding. Could switch back to the constants being
unshifted, but this way seems a bit easier to work with.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191025 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e56a4d9236336910cf46976c22dc767ebc8ced43 19-Sep-2013 David Blaikie <dblaikie@gmail.com> Remove unnecessary conditional operators performing bool->bool conversion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191020 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
08b5ff7f5809ece849f1fdcd7e011aa175c31516 19-Sep-2013 David Blaikie <dblaikie@gmail.com> Fix a typo and simplify a boolean expression.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191018 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
530d09a22bd2f5c638ae1932bed560c8a46e399e 19-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> DAGCombiner: Don't fold vector muls with constants that look like a splat of a power of 2 but differ in bit width.

PR17283.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191000 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0a4371a2073d8841768cf3e8cf65601a8d7cc4fc 19-Sep-2013 Adrian Prantl <aprantl@apple.com> Debug info: Get rid of the VLA indirection hack in FastISel.
Use the DIVariable::isIndirect() flag set by the frontend instead of
guessing whether to set the machine location's indirection bit.
Paired commit with CFE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190961 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
65457b679ae240c1a37da82c5484dac478c47b6d 17-Sep-2013 Arnold Schwaighofer <aschwaighofer@apple.com> Costmodel: Add support for horizontal vector reductions

Upcoming SLP vectorization improvements will want to be able to estimate costs
of horizontal reductions. Add infrastructure to support this.

We model reductions as a series of (shufflevector,add) tuples ultimately
followed by an extractelement. For example, for an add-reduction of <4 x float>
we could generate the following sequence:

(v0, v1, v2, v3)
\ \ / /
\ \ /
+ +

(v0+v2, v1+v3, undef, undef)
\ /
((v0+v2) + (v1+v3), undef, undef)

%rdx.shuf = shufflevector <4 x float> %rdx, <4 x float> undef,
<4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
%bin.rdx = fadd <4 x float> %rdx, %rdx.shuf
%rdx.shuf7 = shufflevector <4 x float> %bin.rdx, <4 x float> undef,
<4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
%bin.rdx8 = fadd <4 x float> %bin.rdx, %rdx.shuf7
%r = extractelement <4 x float> %bin.rdx8, i32 0

This commit adds a cost model interface "getReductionCost(Opcode, Ty, Pairwise)"
that will allow clients to ask for the cost of such a reduction (as backends
might generate more efficient code than the cost of the individual instructions
summed up). This interface is excercised by the CostModel analysis pass which
looks for reduction patterns like the one above - starting at extractelements -
and if it sees a matching sequence will call the cost model interface.

We will also support a second form of pairwise reduction that is well supported
on common architectures (haddps, vpadd, faddp).

(v0, v1, v2, v3)
\ / \ /
(v0+v1, v2+v3, undef, undef)
\ /
((v0+v1)+(v2+v3), undef, undef, undef)

%rdx.shuf.0.0 = shufflevector <4 x float> %rdx, <4 x float> undef,
<4 x i32> <i32 0, i32 2 , i32 undef, i32 undef>
%rdx.shuf.0.1 = shufflevector <4 x float> %rdx, <4 x float> undef,
<4 x i32> <i32 1, i32 3, i32 undef, i32 undef>
%bin.rdx.0 = fadd <4 x float> %rdx.shuf.0.0, %rdx.shuf.0.1
%rdx.shuf.1.0 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef,
<4 x i32> <i32 0, i32 undef, i32 undef, i32 undef>
%rdx.shuf.1.1 = shufflevector <4 x float> %bin.rdx.0, <4 x float> undef,
<4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
%bin.rdx.1 = fadd <4 x float> %rdx.shuf.1.0, %rdx.shuf.1.1
%r = extractelement <4 x float> %bin.rdx.1, i32 0

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190876 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
496f02481dd9abdee85c61d88f07963ea27b9e38 17-Sep-2013 Serge Pavlov <sepavloff@gmail.com> Added documentation to getMemsetStores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
24e1b39a24ca7b8866a636498173f3959b561058 17-Sep-2013 Quentin Colombet <qcolombet@apple.com> [SelectionDAG] Teach the vector scalarizer about TRUNCATE.

When a truncate node defines a legal vector type but uses an illegal
vector type, the legalization process was splitting the vector until
<1 x vector> type, but then it was failing to scalarize the node because
it did not know how to handle TRUNCATE.

<rdar://problem/14989896>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190830 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
818833f27929d650b4323774cd3660860588f687 17-Sep-2013 Adrian Prantl <aprantl@apple.com> Debug info: Fix PR16736 and rdar://problem/14990587.
A DBG_VALUE is register-indirect iff the first operand is a register
_and_ the second operand is an immediate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190821 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveDebugVariables.cpp
egAllocFast.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
b06ea25b4c4cff341194279e01c08d23fa022378 17-Sep-2013 Jakub Staszak <kubastaszak@gmail.com> Use reference instead of copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190813 91177308-0d34-0410-b5e6-96231b3b80d8
hrinkWrapping.cpp
1e3037f0be430ef2339838bbdede11f45658bd82 16-Sep-2013 Peter Collingbourne <peter@pcc.me.uk> Implement function prefix data as an IR feature.

Previous discussion:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-July/063909.html

Differential Revision: http://llvm-reviews.chandlerc.com/D1191

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190773 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
94ee55d4b39d6506cf4e0f4e4b1c0b7fbbfeaed5 16-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> Replace some unnecessary vector copies with references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190770 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
77364b7a200682e84f75171f30f8a77005b87e94 15-Sep-2013 Hal Finkel <hfinkel@anl.gov> Prevent assert in CombinerGlobalAA with null values

DAGCombiner::isAlias can be called with SrcValue1 or SrcValue2 null, and we
can't use AA in this case (if we try, then the casting code in AA will assert).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190763 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0df68423f9567b3d3eafb3b26668f783b07f687f 13-Sep-2013 Quentin Colombet <qcolombet@apple.com> [Peephole] Rewrite copies to avoid cross register banks copies.

By definition copies across register banks are not coalescable. Still, it may be
possible to get rid of such a copy when the value is available in another
register of the same register file.
Consider the following example, where capital and lower letters denote different
register file:
b = copy A <-- cross-bank copy
...
C = copy b <-- cross-bank copy

This could have been optimized this way:
b = copy A <-- cross-bank copy
...
C = copy A <-- same-bank copy

Note: b and C's definitions may be in different basic blocks.

This patch adds a peephole optimization that looks through a chain of copies
leading to a cross-bank copy and reuses a source that is on the same register
file if available.

This solution could also be used to get rid of some copies (e.g., A could have
been used instead of C). However, we do not do so because:
- It may over constrain the coloring of the source register for coalescing.
- The register allocator may not be able to find a nice split point for the
longer live-range, leading to more spill.

<rdar://problem/14742333>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190713 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
8f1a9299de0333c8c310b7580ea63ba5b7a3c400 13-Sep-2013 Eric Christopher <echristo@gmail.com> Add initial support for handling gnu style pubnames accepted by some
versions of gold. This support is designed to allow gold to produce
gdb_index sections similar to the accelerator tables and consumable
by gdb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190649 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
5704d640abd96f8614ad4be555fcf1049c500bcd 13-Sep-2013 Eric Christopher <echristo@gmail.com> Reformat and hoist section grabbing to top level.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190648 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
715d98d657491b3fb8ea0e14643e9801b2f9628c 12-Sep-2013 Joey Gouly <joey.gouly@arm.com> Add an instruction deprecation feature to TableGen.

The 'Deprecated' class allows you to specify a SubtargetFeature that the
instruction is deprecated on.

The 'ComplexDeprecationPredicate' class allows you to define a custom
predicate that is called to check for deprecation.
For example:
ComplexDeprecationPredicate<"MCR">

would mean you would have to define the following function:
bool getMCRDeprecationInfo(MCInst &MI, MCSubtargetInfo &STI,
std::string &Info)

Which returns 'false' for not deprecated, and 'true' for deprecated
and store the warning message in 'Info'.

The MCTargetAsmParser constructor was chaned to take an extra argument of
the MCInstrInfo class, so out-of-tree targets will need to be changed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190598 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
9ec1a55a863f658292b19d7a3c167ba089134dff 12-Sep-2013 Hal Finkel <hfinkel@anl.gov> Fix crash in AggressiveAntiDepBreaker with empty CriticalPathSet

If no register classes are added to CriticalPathRCs, then the CriticalPathSet
bitmask will be empty. In that case, ExcludeRegs must remain NULL or else this
line will cause a segfault:

} else if ((ExcludeRegs != NULL) && ExcludeRegs->test(AntiDepReg)) {

I have no in-tree test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190584 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
6fc4f7e2b67f89913e6b94888577a09918187e7d 12-Sep-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Remove pointless assertion after r190376

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190565 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
995de6cddf74cdd7fb46b1ba53f4442df28be8ed 11-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug info: add more comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190544 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4f7e2c38e864d7eaeb407ac501478e9579624d1b 11-Sep-2013 Hal Finkel <hfinkel@anl.gov> Add getUnrollingPreferences to TTI

Allow targets to customize the default behavior of the generic loop unrolling
transformation. This will be used by the PowerPC backend when targeting the A2
core (which is in-order with a deep pipeline), and using more aggressive
defaults is important.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190542 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
55c06ae7afa3f862a6bb4a4441fe485c135f5b5e 11-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> Revert "Give internal classes hidden visibility."

It works with clang, but GCC has different rules so we can't make all of those
hidden. This reverts commit r190534.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190536 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.h
llocationOrder.h
ntiDepBreaker.h
smPrinter/DIE.h
smPrinter/DIEHash.h
smPrinter/DwarfAccelTable.h
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
ranchFolding.h
riticalAntiDepBreaker.h
nterferenceCache.h
iveDebugVariables.h
iveRangeCalc.h
rologEpilogInserter.h
egAllocBase.h
electionDAG/InstrEmitter.h
electionDAG/SDNodeDbgValue.h
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAGBuilder.h
pillPlacement.h
plitKit.h
15f387c93ef8d5c23f110143996c8b9b4a089864 11-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> Give internal classes hidden visibility.

Worth 100k on a linux/x86_64 Release+Asserts clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190534 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.h
llocationOrder.h
ntiDepBreaker.h
smPrinter/DIE.h
smPrinter/DIEHash.h
smPrinter/DwarfAccelTable.h
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
ranchFolding.h
riticalAntiDepBreaker.h
nterferenceCache.h
iveDebugVariables.h
iveRangeCalc.h
rologEpilogInserter.h
egAllocBase.h
electionDAG/InstrEmitter.h
electionDAG/SDNodeDbgValue.h
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAGBuilder.h
pillPlacement.h
plitKit.h
b79f576f5849e8bc38796753f6c9de9ec691401d 11-Sep-2013 Bill Wendling <isanbard@gmail.com> Simplify the checking of function attributes by using the simple methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190499 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
3b389cb74e13a5631c9650115aafd2af4580ce83 11-Sep-2013 Eli Friedman <eli.friedman@gmail.com> Rename variables for consistency.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190466 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ResourcePriorityQueue.cpp
ae43dac30037395cce2b54af0a02500985813183 11-Sep-2013 Eli Friedman <eli.friedman@gmail.com> Fix unused variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190448 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
electionDAG/ResourcePriorityQueue.cpp
21a6a5013d30d0515bc36da1ef49fa7c2e838f16 10-Sep-2013 Eric Christopher <echristo@gmail.com> Hoist section call out of loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190440 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fd2210a78dc621d3fb5c3613ff59b341041b3a4b 10-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: create scope children DIEs when the scope DIE is not null.

We try to create the scope children DIEs after we create the scope DIE. But
to avoid emitting empty lexical block DIE, we first check whether a scope
DIE is going to be null, then create the scope children if it is not null.
From the number of children, we decide whether to actually create the scope DIE.

This patch also removes an early exit which checks for a special condition.
It also removes deletion of un-used children DIEs that are generated
because we used to generate children DIEs before the scope DIE.

Deletion of un-used children DIEs may cause problem because we sometimes keep
created DIEs in a member variable of a CU.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190421 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
2c46deb1d07f4588ee70059cdd4c7145f81bc8e8 10-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: define a DIRef template.

Specialize the constructors for DIRef<DIScope> and DIRef<DIType> to make sure
the Value is indeed a scope ref and a type ref.

Use DIScopeRef for DIScope::getContext and DIType::getContext and use DITypeRef
for getContainingType and getClassType.

DIScope::generateRef now returns a DIScopeRef instead of a "Value *" for
readability and type safety.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190418 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c6c08508cab2fc4f52e9ab44dce272e240661e06 10-Sep-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Don't use getSetCCResultType for creating a vselect

The vselect mask isn't a setcc.

This breaks in the case when the result of getSetCCResultType
is larger than the vector operands

e.g. %tmp = select i1 %cmp <2 x i8> %a, <2 x i8> %b
when getSetCCResultType returns <2 x i32>, the assertion
that the (MaskTy.getSizeInBits() == Op1.getValueType().getSizeInBits())
is hit.

No test since I don't think I can hit this with any of the current
targets. The R600/SI implementation would break, since it returns a
vector of i1 for this, but it doesn't reach ExpandSELECT for other
reasons.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190376 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
fc7fd0992a9114ea8a04d51d03c5fa4cdc1b33bf 10-Sep-2013 Andrew Trick <atrick@apple.com> Enable -misched-cyclicpath by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190367 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
e72aba9c0ff5b19128f54b09a36d2f4c2a53b40b 10-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: move DIScope::getContext back from DwarfDebug.

This partially reverts r190330. DIScope::getContext now returns DIScopeRef
instead of DIScope. We construct a DIScopeRef from DIScope when we are
dealing with subprogram, lexical block or name space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190362 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
ee50a46026a8e131bd1b82df729d1c45f856d0ec 10-Sep-2013 Andrew Trick <atrick@apple.com> mi-sched: smooth out the cyclicpath heuristic.

Arnold's idea.

I generally try to avoid stateful heuristics because it can make
debugging harder. However, we need a way to prevent the latency
priority from dominating, and it somewhat makes sense to schedule
aggressively for latency only within an issue group.

Swift in particular likes this, and it doesn't hurt anyone else:
| Benchmarks/MiBench/consumer-lame | 10.39% |
| Benchmarks/Misc/himenobmtxpa | 9.63% |

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190360 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
3af4d250676623b88436b89212108eb4fff897d3 10-Sep-2013 Jack Carter <jack.carter@imgtec.com> white spaces and long lines

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190358 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
28b020d373a0706afc19c869ac4efce4a83e6090 09-Sep-2013 Eric Christopher <echristo@gmail.com> Always add global names. We're adding them in the rest of the code
as well as types.

No functional change as they're not emitted unless the option
is true anyhow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190346 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
574793250890a55103c53f5ffaf6933db1e2e388 09-Sep-2013 Eric Christopher <echristo@gmail.com> Rename for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190345 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
da11df0c22f5d0ba2e2be3ae4a7076c806233db8 09-Sep-2013 Bill Wendling <isanbard@gmail.com> Call generateCompactUnwindEncodings() right before we need to output the frame information.

There are more than one paths to where the frame information is emitted. Place
the call to generateCompactUnwindEncodings() into the method which outputs the
frame information, thus ensuring that the encoding is there for every path. This
involved threading the MCAsmBackend object through to this method.

<rdar://problem/13623355>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190335 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
2c9905a1f3bcf22cc2f93332cc8411d11798ba07 09-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Use DIScopeRef for DIType::getContext.

In DIBuilder, the context field of a TAG_member is updated to use the
scope reference. Verifier is updated accordingly.

DebugInfoFinder now needs to generate a type identifier map to have
access to the actual scope. Same applies for BreakpointPrinter.

processModule of DebugInfoFinder is called during initialization phase
of the verifier to make sure the type identifier map is constructed early
enough.

We are now able to unique a simple class as demonstrated by the added
testing case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190334 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
18eb245a2e5ec41b5da1367d5f7e7619532f7ceb 09-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: move DIScope::getContext to DwarfDebug.

DIScope::getContext is a wrapper function that calls the specific getContext
method on each subclass. When we switch DIType::getContext to return DIScopeRef
instead of DIScope, DIScope::getContext can no longer return a DIScope without
a type identifier map.

DIScope::getContext is only used by DwarfDebug, so we move it to DwarfDebug
to have easy access to the type identifier map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190330 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
db3a9e64f856e3a233a427da1f3969fd3a65a438 09-Sep-2013 Bob Wilson <bob.wilson@apple.com> Revert patches to add case-range support for PR1255.

The work on this project was left in an unfinished and inconsistent state.
Hopefully someone will eventually get a chance to implement this feature, but
in the meantime, it is better to put things back the way the were. I have
left support in the bitcode reader to handle the case-range bitcode format,
so that we do not lose bitcode compatibility with the llvm 3.3 release.

This reverts the following commits: 155464, 156374, 156377, 156613, 156704,
156757, 156804 156808, 156985, 157046, 157112, 157183, 157315, 157384, 157575,
157576, 157586, 157612, 157810, 157814, 157815, 157880, 157881, 157882, 157884,
157887, 157901, 158979, 157987, 157989, 158986, 158997, 159076, 159101, 159100,
159200, 159201, 159207, 159527, 159532, 159540, 159583, 159618, 159658, 159659,
159660, 159661, 159703, 159704, 160076, 167356, 172025, 186736

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190328 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
02d296759cd53f2d6081fd307c4d81cc41f2c9ed 09-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Move isSubprogramContext from DebugInfo to DwarfDebug.

This helper function needs the type identifier map when we switch
DIType::getContext to return DIScopeRef instead of DIScope.

Since isSubprogramContext is used by DwarfDebug only, We move it to DwarfDebug
to have easy access to the map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190325 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c573305bce147df68051a6dffef034c6210ab89c 09-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Rename DITypeRef to DIScopeRef.

A reference to a scope is more general than a reference to a type since
DIType is a subclass of DIScope.

A reference to a type can be either an identifier for the type or
the DIType itself, while a reference to a scope can be either an
identifier for the type (when the scope is indeed a type) or the
DIScope itself. A reference to a type and a reference to a scope
will be resolved in the same way. The only difference is in the
verifier when a field is a reference to a type (i.e. the containing
type field of a DICompositeType) or a field is a reference to a scope
(i.e. the context field of a DIType).

This is to get ready for switching DIType::getContext to return
DIScopeRef instead of DIScope.

Tighten up isTypeRef and isScopeRef to make sure the identifier is not
empty and the MDNode is DIType for TypeRef and DIScope for ScopeRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190322 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
54cf1413aca342753ab846d915c6a55d9c087bc6 09-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> [stackprotector] Modernize code with IRBuilder

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190317 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
b57d99694b87326a2eea26d76becf67bf5784b49 09-Sep-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Prevent generation of deprecated IT blocks on ARMv8 in Thumb mode.
IT blocks can only be one instruction lonf, and can only contain a subset of
the 16 instructions.

Patch by Artyom Skrobov!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190309 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
c3cee57f7d20f69a84fd88464ed8cf050e63c7ad 09-Sep-2013 Bill Wendling <isanbard@gmail.com> Generate compact unwind encoding from CFI directives.

We used to generate the compact unwind encoding from the machine
instructions. However, this had the problem that if the user used `-save-temps'
or compiled their hand-written `.s' file (with CFI directives), we wouldn't
generate the compact unwind encoding.

Move the algorithm that generates the compact unwind encoding into the
MCAsmBackend. This way we can generate the encoding whether the code is from a
`.ll' or `.s' file.

<rdar://problem/13623355>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190290 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
0e85f6e391990cc20be98263640b843edfa32bef 07-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Use identifier to reference DIType in containing type field of
a DISubprogram.

Verifier is updated accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190229 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
e42279cda481b48138d2119f4a4bbce7077f0a72 06-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Use identifier to reference DIType in containing type field of
a DICompositeType.

Verifier is updated accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190190 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
fb386db636d134b0b72cf0a37075906cf8f7248c 06-Sep-2013 Andrew Trick <atrick@apple.com> mi-sched: cleanup register pressure update, remove a FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190181 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
6bf0c6c53577485360247a527dd16aaa3297b93c 06-Sep-2013 Andrew Trick <atrick@apple.com> mi-sched: improve regpressure tracing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190180 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
fd30312c492ef2d627af2df48e6d4f5d03c456bc 06-Sep-2013 Andrew Trick <atrick@apple.com> mi-sched: print tree size in -view-misched-dags

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190179 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
1251bcccc1ab02b1953318c4b79fc6a590b57efe 06-Sep-2013 Andrew Trick <atrick@apple.com> mi-sched: register pressure update tracing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190178 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
f9c2fa8341d4b7fe64ccd7beb5696d4a9934f5e9 06-Sep-2013 Andrew Trick <atrick@apple.com> mi-sched: Reorder Cyclicpath (latency) and CriticalMax (pressure) heuristics.

The latency based scheduling could induce spills in some cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190177 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
38e61122f27a8ca4ef0578eaf6dc5242880d2918 06-Sep-2013 Andrew Trick <atrick@apple.com> Added MachineSchedPolicy.

Allow subtargets to customize the generic scheduling strategy.
This is convenient for targets that don't need to add new heuristics
by specializing the strategy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190176 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
b63db853500b3dcb46a96af3f2d5aec003e41d77 06-Sep-2013 Matthias Braun <matze@braunis.de> avoid unnecessary direct access to LiveInterval::ranges

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190170 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
egisterCoalescer.cpp
trongPHIElimination.cpp
1920156982643a1c5c28af6f4684580b516eb597 06-Sep-2013 Matthias Braun <matze@braunis.de> remove unused argument from LiveRanges::join()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190169 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
egisterCoalescer.cpp
2d5558cbaecfcaea72b80a725417dde6ed80ee04 06-Sep-2013 Matthias Braun <matze@braunis.de> remove pointless assert

The if above it ensures the property anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190168 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
c725865bbcfb935f3698f26b6608fdbd2b2d3fd4 06-Sep-2013 Matthias Braun <matze@braunis.de> fix comment

There's no 'B3' in the example.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190167 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
a5eeb9da054bd76b38e18bedb9015bbaf20605e0 06-Sep-2013 Tim Northover <tnorthover@apple.com> SelectionDAG: create correct BooleanContent constants

Occasionally DAGCombiner can spot that a SETCC operation is completely
redundant and reduce it to "all true" or "all false". If this happens to a
vector, the value produced has to take account of what a normal comparison
would have produced, which may be an all-1s bitmask.

The fix in SelectionDAG.cpp is tested, however, as far as I can see the code in
TargetLowering.cpp is possibly unreachable and almost certainly irrelevant when
triggered so there are no tests. However, I believe it's still clearly the
right change and may save someone else some hassle if it suddenly becomes
reachable. So I'm doing it anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190147 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
bc66071baa3153ba95d673b8084383835221eef6 05-Sep-2013 Manman Ren <manman.ren@gmail.com> Debug Info: Use identifier to reference DIType in base type field of
ptr_to_member.

We introduce a new class DITypeRef that represents a reference to a DIType.
It wraps around a Value*, which can be either an identifier in MDString
or an actual MDNode. The class has a helper function "resolve" that
finds the actual MDNode for a given DITypeRef.

We specialize getFieldAs to return a field that is a reference to a
DIType. To correctly access the base type field of ptr_to_member,
getClassType now calls getFieldAs<DITypeRef> to return a DITypeRef.

Also add a typedef for DITypeIdentifierMap and a helper
generateDITypeIdentifierMap in DebugInfo.h. In DwarfDebug.cpp, we keep
a DITypeIdentifierMap and call generateDITypeIdentifierMap to actually
populate the map.

Verifier is updated accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190081 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
577056f89c840537b059ea4cef8d2ae18513cda0 05-Sep-2013 Eric Christopher <echristo@gmail.com> Move accelerator table defines and constants to Dwarf.h since
we're proposing it for DWARF5.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190074 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
5b9544b526fb655a8abcbb2034206e1a25aa4690 05-Sep-2013 Eric Christopher <echristo@gmail.com> Reformat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190064 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
d4486ebd5f9b727fc73407b93a7d83aab7551179 05-Sep-2013 Andrew Trick <atrick@apple.com> mi-sched: Force bottom up scheduling for generic targets.

Fast register pressure tracking currently only takes effect during
bottom up scheduling. Forcing this is a bit faster and simpler for
targets that don't have many scheduling constraints and don't need
top-down scheduling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190014 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
efc47ec528c32f09fa32445f54ee966b462add0f 05-Sep-2013 Eric Christopher <echristo@gmail.com> Remove hack ensuring that darwin didn't produce dwarf > 3 for modules
without a limiting factor.

Update all testcases accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190002 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6509593cb64669d8d4416a83f1417f4e68632fa1 04-Sep-2013 Eric Christopher <echristo@gmail.com> Revert "Revert r189902 as the workaround shouldn't be necessary anymore."

Needs testcase updates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190000 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a42c7d5db12db0a2fe6ee26a65050d7f27f528bc 04-Sep-2013 Eric Christopher <echristo@gmail.com> Revert r189902 as the workaround shouldn't be necessary anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189999 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3d6e70c857ded2605699f7de1b18269f4fb390bf 04-Sep-2013 Andrew Trick <atrick@apple.com> comment typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189997 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
ba9ec8ce802b6b15a70db5faa805f6c12267328b 04-Sep-2013 Andrew Trick <atrick@apple.com> Remove dead subtree limit code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189995 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
da9f441854db4852118d0787583eb2be231c15d1 04-Sep-2013 Andrew Trick <atrick@apple.com> -view-misched-dags, better pruning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189994 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
ee5fd9cf102ef6b10b3df1202ef525c9ef38b127 04-Sep-2013 Andrew Trick <atrick@apple.com> mi-sched: DEBUG cleanup, call tracePick for unidirectional scheduling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189993 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
85d7f0be788e4c7659c0937b409dc278ef7d06b9 04-Sep-2013 Andrew Trick <atrick@apple.com> 80 columns

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189992 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
16bb45c5c8e918efa732fd7d0b31c0f31dc2a979 04-Sep-2013 Andrew Trick <atrick@apple.com> mi-sched: Suppress register pressure tracking when the scheduling window is too small.

If the instruction window is < NumRegs/2, pressure tracking is not
likely to be effective. The scheduler has to process a very large
number of tiny blocks. We want this to be fast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189991 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
d1d0d37a198df718b0fd1f838b7d9593b1636299 04-Sep-2013 Andrew Trick <atrick@apple.com> mi-sched: Load clustering is a bit to expensive to enable unconditionally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189990 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
00b5fa4c280a5e7b84142d73b0ce86fa13654f2a 04-Sep-2013 Andrew Trick <atrick@apple.com> mi-sched: Reuse an invalid HazardRecognizer to save compile time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189989 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
40b52bb8f2b4f63f6d99e347af0c48945f9cb4d2 04-Sep-2013 Andrew Trick <atrick@apple.com> mi-sched: bypass heuristic checks when regpressure tracking is disabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189988 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAGInstrs.cpp
42ebb3ad41813af292cfa681c1fe2aadd1008721 04-Sep-2013 Andrew Trick <atrick@apple.com> Added -misched-regpressure option.

Register pressure tracking is half the complexity of the
scheduler. It's useful to be able to turn it off for compile time and
performance comparisons.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189987 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
egisterPressure.cpp
4dc211ae399343312137f0391f5e7d235ab15f24 04-Sep-2013 Eric Christopher <echristo@gmail.com> Unify and clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189977 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
dc42d031fb5787733d6765d6fefc76d46a7a4c9b 04-Sep-2013 Michael Gottesman <mgottesman@apple.com> Revert "Revert "Remove the darwin gdb option, that version of gdb is now dead and the rest of the compatibility should be done on a dwarf-N level.""

This reverts commit r189913.

Talked with Eric on IRC. I am going to XFAIL the failing test since it
is using what Eric described as "the member hack" which was needed on
that old GDB.

Sorry for the noise!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189914 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
14ce9f1d253472b73689787c28808dd2ade6281d 04-Sep-2013 Michael Gottesman <mgottesman@apple.com> Revert "Remove the darwin gdb option, that version of gdb is now dead and the rest of the compatibility should be done on a dwarf-N level."

This reverts commit r189903.

This commit broke the phase 1 buildbot for a while.

http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/6684

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189913 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
0a69049b6232a2183de23867c1fb2e4fa38ee093 04-Sep-2013 Eric Christopher <echristo@gmail.com> Remove the darwin gdb option, that version of gdb is now dead and
the rest of the compatibility should be done on a dwarf-N level.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189903 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
04031a6c2266c32b658e412147334d553990cfd5 04-Sep-2013 Eric Christopher <echristo@gmail.com> Make the default dwarf version 3 for darwin when we can't find one
in the module. Add a FIXME with a comment about darwin's ld.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189902 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
800a8761285a239bb82f7d1883a8398815cd2d8f 03-Sep-2013 Eric Christopher <echristo@gmail.com> Add a hashing routine that handles hashing types. Add a test for
hashing the contents of DW_FORM_data1 on top of a type with attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189862 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
41627cf813afae89b23b0570bcd2f99a545f9eea 03-Sep-2013 Eric Christopher <echristo@gmail.com> Sentences end with periods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189861 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.h
bd18c8d0903b695bd503a45cf11901d48eea61bd 03-Sep-2013 Eric Christopher <echristo@gmail.com> Add the rest of the stock attributes to the attribute table.

This won't affect the kinds of hashes we test for as we actually
do hashing based on form and attribute. Change the fission-hash
testcase one last time to handle DW_AT_comp_dir.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189840 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
c94e7b50c36ce866772e269f1541f49cbf114d27 31-Aug-2013 Andrew Trick <atrick@apple.com> Fix my previous checkin to updatePressureDiffs.

There was one case that we could hit a DebugValue where I didn't think
to check. DebugValues are evil. No checkinable test case, sorry. It's
an obvious fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189717 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
846b31d74aa673a178f57f9d47f366d8ddb756d3 30-Aug-2013 Andrew Trick <atrick@apple.com> Use LiveRangeQuery for instruction-level liveness queries.

Remove redundant or bug-prone LiveInterval APIs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189685 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
egisterPressure.cpp
663bd9922776e5f7bc17dfc574efe3fe05ceb12c 30-Aug-2013 Andrew Trick <atrick@apple.com> mi-sched: update PressureDiffs on-the-fly for liveness.

This removes all expensive pressure tracking logic from the scheduling
critical path of node comparison.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189643 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
egisterPressure.cpp
cheduleDAGInstrs.cpp
1362dcb5899bc88f0e567dd10e2e9003a79ace21 30-Aug-2013 Andrew Trick <atrick@apple.com> Replace LiveInterval::killedAt with isKilledAtInstr.

Return true for LRGs that end at EarlyClobber or Register slots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189642 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
egisterPressure.cpp
da6fc15f0fb26ebbe42ab96e0d066bbd5bdbb72e 30-Aug-2013 Andrew Trick <atrick@apple.com> mi-sched: improve the generic register pressure comparison.

Only compare pressure within the same set. When multiple sets are
affected, we prioritize the most constrained set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189641 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
4c60b8a78d811a5b16ae45f6957933fb479bab58 30-Aug-2013 Andrew Trick <atrick@apple.com> mi-sched: Precompute a PressureDiff for each instruction, adjust for liveness later.

Created SUPressureDiffs array to hold the per node PDiff computed during DAG building.

Added a getUpwardPressureDelta API that will soon replace the old
one. Compute PressureDelta here from the precomputed PressureDiffs.

Updating for liveness will come next.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189640 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
egisterPressure.cpp
cheduleDAGInstrs.cpp
6dc6a89d73c24f20caabda4cdcd9279e88658d0b 30-Aug-2013 Andrew Trick <atrick@apple.com> comment typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189635 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
2612354594d286501348a4ca4b72eaf11de77070 30-Aug-2013 Eric Christopher <echristo@gmail.com> Don't bother emitting the pubtypes section on darwin since there aren't
any maintained consumers of it on that platform.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189631 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ab6cd837317872025b60495c3d34b4a4ef612690 30-Aug-2013 Eric Christopher <echristo@gmail.com> Reformat slightly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189630 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
851bb2c9cbbd3b1847def5ca7ea8dadf457298b5 29-Aug-2013 Andrew Trick <atrick@apple.com> Comment and revise the cyclic critical path code.

This should be much more clear now. It's still disabled pending testing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189597 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAGInstrs.cpp
f208398528efde82bc49f48d0fef0587c1f192bb 29-Aug-2013 Hal Finkel <hfinkel@anl.gov> Revert: r189565 - Add getUnrollingPreferences to TTI

Revert unintentional commit (of an unreviewed change).

Original commit message:

Add getUnrollingPreferences to TTI

Allow targets to customize the default behavior of the generic loop unrolling
transformation. This will be used by the PowerPC backend when targeting the A2
core (which is in-order with a deep pipeline), and using more aggressive
defaults is important.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189566 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
32f258b96a723b771eb44a2c0689b8bf4dd871ee 29-Aug-2013 Hal Finkel <hfinkel@anl.gov> Add getUnrollingPreferences to TTI

Allow targets to customize the default behavior of the generic loop unrolling
transformation. This will be used by the PowerPC backend when targeting the A2
core (which is in-order with a deep pipeline), and using more aggressive
defaults is important.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189565 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
253acef7a5ea2fbba7848d2257ae3cce2ea02ce0 29-Aug-2013 Hal Finkel <hfinkel@anl.gov> Use TargetSubtargetInfo::useAA() in DAGCombine

This uses the TargetSubtargetInfo::useAA() function to control the defaults of
the -combiner-alias-analysis and -combiner-global-alias-analysis options.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189564 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
738073c4aa474e27c9d3c991daf593bddce54718 29-Aug-2013 Hal Finkel <hfinkel@anl.gov> Add useAA() to TargetSubtargetInfo

There are several optional (off-by-default) features in CodeGen that can make
use of alias analysis. These features are important for generating code for
some kinds of cores (for example the (in-order) PPC A2 core). This adds a
useAA() function to TargetSubtargetInfo to allow these features to be enabled
by default on a per-subtarget basis.

Here is the first use of this function: To control the default of the
-enable-aa-sched-mi feature.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189563 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
2b884bcbce3ec76bd065d2dd9a6597f13e9fdd57 29-Aug-2013 Juergen Ributzka <juergen@apple.com> Fix a typo and coding style of a previous commit. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189526 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6b6345f0167fb9ddf60bdc51d616d7a9ae590442 28-Aug-2013 Eric Christopher <echristo@gmail.com> Remove support for the .debug_inlined section. No known software
in use supports it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189439 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c3e9457f6d66d1cc16fc37e39ed5fe13f835875c 28-Aug-2013 Eric Christopher <echristo@gmail.com> Add a TODO here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189428 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
7ced4fa25778d646b29e1fb92ef8de01d279e57a 28-Aug-2013 Eric Christopher <echristo@gmail.com> Add support for DW_FORM_dataN and DW_FORM_udata to the DIE hashing
algorithm. Update the split dwarf hashing testcase accordingly - this
should be the last time that the hash of an empty file changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189427 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
7b2ee399d9c1b2112962d29540c25b94fa98e8ed 28-Aug-2013 Eric Christopher <echristo@gmail.com> Use DW_FORM_sdata for signed constant values and udata on occasion
when we can. Migrate from using blocks when we're adding just a
single attribute and floating point values are an unsigned, not signed,
bag of bits.

Update all test cases accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189419 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
5d8c2e460cac05dedf3466d630995f1475317fc9 27-Aug-2013 Tim Northover <tnorthover@apple.com> DAGCombiner: make sure or/shl/srl really has zero high bits before forming bswap

We want to convert code like (or (srl N, 8), (shl N, 8)) into (srl (bswap N),
const), but this is only valid if the bits above 16 on the source pattern are
0, the checks we were doing on this were slightly wrong before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
15cfa585eb86328bb626d0375e1b71873a83beb9 27-Aug-2013 Owen Anderson <resistor@mac.com> Remove an over-zealous assertion. A pointer type could be illegal if the target is prepared to custom-legalize pointer operands. This assertion was evaluated before the target would have a chance to do so, making it impossible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189299 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
fdaf0308c8d2d58dc156e553fb11947a0a3dfafb 27-Aug-2013 Eric Christopher <echristo@gmail.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189296 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
30410d5993f3c99da9102ccf6f78a63f9f64f252 27-Aug-2013 Eric Christopher <echristo@gmail.com> Make the lifetime of the DICompileUnit we're constructing from the
MDNode more clear as just for a single argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a9b2c79e266a29aac47b2c38b218ee8d9b052c15 27-Aug-2013 Eric Christopher <echristo@gmail.com> Have the skeleton compile unit construction method take the CU it
is constructing from as an input and keep the same unique identifier.
We can use this to connect items which must stay in the .o file
(e.g. pubnames and pubtypes) to the skeleton cu rather than having
duplicate unique numbers for the sections and needing to do lookups
based on MDNode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189293 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
4c65ab79a7bc1c7121fcba738464266dd8efd053 27-Aug-2013 Eric Christopher <echristo@gmail.com> Remove duplicate set of CompilationDir.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189292 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7b87895a6c7307a0ee809659abdaefe4a48b6bc6 27-Aug-2013 Eric Christopher <echristo@gmail.com> Remove the language parameter and variable from the compile unit. We
can get it via the MDNode that's passed in. Save that instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189291 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
63ae7c9aeca10f1028bb7232672ccefb2343ba08 27-Aug-2013 Eric Christopher <echristo@gmail.com> Treat the pubtypes section similarly to the pubnames section and emit
it by default under linux or when we're trying to keep compatibility
with old gdb versions.

Fix testcase for option name change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189289 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
978046bd070fbd3b9359922611b3fd5d3fd7ab96 27-Aug-2013 Eric Christopher <echristo@gmail.com> Only emit the section sym if we're emitting the section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189288 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
03be5e5b6e2d604313df5b7758bffcf5b0bb0ef0 26-Aug-2013 Eric Christopher <echristo@gmail.com> Fix thinko.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189279 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
edd08f74289c6ba3b3f8e730e4ab825ef9bd6492 26-Aug-2013 Tom Stellard <thomas.stellard@amd.com> SelectionDAG: Remove unnecessary uses of TargetLowering::getPointerTy()

If we have a binary operation like ISD:ADD, we can set the result type
equal to the result type of one of its operands rather than using
TargetLowering::getPointerTy().

Also, any use of DAG.getIntPtrConstant(C) as an operand for a binary
operation can be replaced with:
DAG.getConstant(C, OtherOperand.getValueType());

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189227 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAGBuilder.cpp
c52565157d23c7b8a374b74044a5458ea67d6cb5 26-Aug-2013 Tom Stellard <thomas.stellard@amd.com> SelectionDAG: Use correct pointer size when splitting vector stores

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189224 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
da25cd3e6de8f21005590c2de49868f883cf2410 26-Aug-2013 Tom Stellard <thomas.stellard@amd.com> SelectionDAG: Use correct pointer size when lowering function arguments v2

This adds minimal support to the SelectionDAG for handling address spaces
with different pointer sizes. The SelectionDAG should now correctly
lower pointer function arguments to the correct size as well as generate
the correct code when lowering getelementptr.

This patch also updates the R600 DataLayout to use 32-bit pointers for
the local address space.

v2:
- Add more helper functions to TargetLoweringBase
- Use CHECK-LABEL for tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189221 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
argetLoweringBase.cpp
b31eebd3fd8384d4355dab1efbba6be339de70cd 25-Aug-2013 David Majnemer <david.majnemer@gmail.com> AsmPrinter: Get rid of llvm$workaround$fake$stub$

We currently emit labels with the prefix Lllvm$workaround$fake$stub$ if
the target's MCAsmInfo has getLinkOnceDirective() mapped to something
interesting. This was apparently a work around introduced in r31033 for
binutils that we don't need anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189187 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0b6962f4be35aca7054ff68ef9bbbb2e03617d31 24-Aug-2013 Benjamin Kramer <benny.kra@googlemail.com> Add a function object to compare the first or second component of a std::pair.

Replace instances of this scattered around the code base.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189169 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
electionDAG/ScheduleDAGSDNodes.cpp
4321d4e4a9b5786e990a9e731165f3ee3df6fa01 24-Aug-2013 Benjamin Kramer <benny.kra@googlemail.com> Simplify code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189168 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6bee6319c64d2c5dae98491f8a6ab65981708109 24-Aug-2013 Benjamin Kramer <benny.kra@googlemail.com> DwarfDebug: Delete orphaned children.

Leak found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189167 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
12d3dc73dc44acd8b11cca783b826ccbd66f44da 23-Aug-2013 Andrew Trick <atrick@apple.com> PrintVRegOrUnit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189124 91177308-0d34-0410-b5e6-96231b3b80d8
argetRegisterInfo.cpp
751c6d28780e9e852f71aff63de608cff6a146ec 23-Aug-2013 Andrew Trick <atrick@apple.com> Rename to RegPressure API parameters RegUnits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189123 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
6abb4ab8127e270477f1028cb089c0d0fe4be927 23-Aug-2013 Andrew Trick <atrick@apple.com> Simplify RegPressure helpers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189122 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
238bf5ada19ee411c1decff68e140966f7baf479 23-Aug-2013 Andrew Trick <atrick@apple.com> Add a convenient PSetIterator for visiting pressure sets affected by a register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189121 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
ea57433cee8bd59acaa99d148b45df92347cea68 23-Aug-2013 Andrew Trick <atrick@apple.com> Adds cyclic critical path computation and heuristics, temporarily disabled.

Estimate the cyclic critical path within a single block loop. If the
acyclic critical path is longer, then the loop will exhaust OOO
resources after some number of iterations. If lag between the acyclic
critical path and cyclic critical path is longer the the time it takes
to issue those loop iterations, then aggressively schedule for
latency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189120 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAGInstrs.cpp
99093638a024fc23609a323677e67bb1dc63ebe7 23-Aug-2013 Andrew Trick <atrick@apple.com> MI Sched: record local vreg uses.

This will be used to compute the cyclic critical path and to
update precomputed per-node pressure differences.
In the longer term, it could also be used to speed up LiveInterval
update by avoiding visiting all global vreg users.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189118 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
d2763f6ce62eaa497e944331668414e35f3712f3 23-Aug-2013 Andrew Trick <atrick@apple.com> mi-sched: Don't call MBB.size() in initSUnits. The driver already has instr count.

This fixes a pathological compile time problem with very large blocks
and lots of scheduling boundaries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189116 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
achineScheduler.cpp
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
a8a7099c1849fcbb4a68642a292fd0250aa46505 23-Aug-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> Turn MipsOptimizeMathLibCalls into a target-independent scalar transform

...so that it can be used for z too. Most of the code is the same.
The only real change is to use TargetTransformInfo to test when a sqrt
instruction is available.

The pass is opt-in because at the moment it only handles sqrt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189097 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
58a9b4388bcace0f332205f960c6c8705fb5a24b 23-Aug-2013 Michael Gottesman <mgottesman@apple.com> [stack protector] Work around an issue with the BMOVPCB_CALL instruction on ARM by disabling does not return on __stack_chk_fail.

This is to fix the bots while I look to see if there is something I can do here.

rdar://14811848

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189076 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
062cd9437ff0de45e321f8ddb04f876a4fd90e33 22-Aug-2013 Bill Wendling <isanbard@gmail.com> Check only if we have this attribute. If it's not an attribute, then it's assumed false.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189063 91177308-0d34-0410-b5e6-96231b3b80d8
argetOptionsImpl.cpp
021f3280fe791722c668cb96b02f473f2f76f925 22-Aug-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] When finding the split point to splice off the end of a parentmbb into a successmbb, include any DBG_VALUE MI.

Fix for PR16954.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188987 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d00968a7a52b23a0d9fc5c1c4b07aceb2cd15006 22-Aug-2013 Tom Stellard <thomas.stellard@amd.com> SelectionDAG: Make sure stores are always added to the LegalizedNodes list

When truncated vector stores were being custom lowered in
VectorLegalizer::LegalizeOp(), the old (illegal) and new (legal) node pair
was not being added to LegalizedNodes list. Instead of the legalized
result being passed to VectorLegalizer::TranslateLegalizeResult(),
the result was being passed back into VectorLegalizer::LegalizeOp(),
which ended up adding a (new, new) pair to the list instead.

This was causing an assertion failure when a custom lowered truncated
vector store was the last instruction a basic block and the VectorLegalizer
was unable to find it in the LegalizedNodes list when updating the
DAG root.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188953 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
915e936de270c3c57df1382b683001adc2c0d695 21-Aug-2013 Juergen Ributzka <juergen@apple.com> Teach BaseIndexOffset::match to identify base pointers in loops.

The small utility function that pattern matches Base + Index +
Offset patterns for loads and stores fails to recognize the base
pointer for loads/stores from/into an array at offset 0 inside a
loop. As a result DAGCombiner::MergeConsecutiveStores was not able
to merge all stores.

This commit fixes the issue by adding an additional pattern match
and also a test case.

Reviewer: Nadav

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188936 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d7d43dc435f24e611d9d8090f6ca80a4998efd31 21-Aug-2013 David Majnemer <david.majnemer@gmail.com> DebugInfo: Do not use the DWARF Version for the .debug_pubnames or .debug_pubtypes version field

Summary:
LLVM would generate DWARF with version 3 in the .debug_pubname and
.debug_pubtypes version fields. This would lead SGI dwarfdump to fail
parsing the DWARF with (in the instance of .debug_pubnames) would exit
with:
dwarfdump ERROR: dwarf_get_globals: DW_DLE_PUBNAMES_VERSION_ERROR (123)

This fixes PR16950.

Reviewers: echristo, dblaikie

Reviewed By: echristo

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1454

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188869 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8c20158fb0e1e5d747077f065eb0170c5af1fbfa 20-Aug-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> [SystemZ] Use SRST to optimize memchr

SystemZTargetLowering::emitStringWrapper() previously loaded the character
into R0 before the loop and made R0 live on entry. I'd forgotten that
allocatable registers weren't allowed to be live across blocks at this stage,
and it confused LiveVariables enough to cause a miscompilation of f3 in
memchr-02.ll.

This patch instead loads R0 in the loop and leaves LICM to hoist it
after RA. This is actually what I'd tried originally, but I went for
the manual optimisation after noticing that R0 often wasn't being hoisted.
This bug forced me to go back and look at why, now fixed as r188774.

We should also try to optimize null checks so that they test the CC result
of the SRST directly. The select between null and the SRST GPR result could
then usually be deleted as dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
9608ed1311ca15fc43ee09dabea97d12f32485a4 20-Aug-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> Fix overly pessimistic shortcut in post-RA MachineLICM

Post-RA LICM keeps three sets of registers: PhysRegDefs, PhysRegClobbers
and TermRegs. When it sees a definition of R it adds all aliases of R
to the corresponding set, so that when it needs to test for membership
it only needs to test a single register, rather than worrying about
aliases there too. E.g. the final candidate loop just has:

unsigned Def = Candidates[i].Def;
if (!PhysRegClobbers.test(Def) && ...) {

to test whether register Def is multiply defined.

However, there was also a shortcut in ProcessMI to make sure we didn't
add candidates if we already knew that they would fail the final test.
This shortcut was more pessimistic than the final one because it
checked whether _any alias_ of the defined register was multiply defined.
This is too conservative for targets that define register pairs.
E.g. on z, R0 and R1 are sometimes used as a pair, so there is a
128-bit register that aliases both R0 and R1. If a loop used
R0 and R1 independently, and the definition of R0 came first,
we would be able to hoist the R0 assignment (because that used
the final test quoted above) but not the R1 assignment (because
that meant we had two definitions of the paired R0/R1 register
and would fail the shortcut in ProcessMI).

This patch just uses the same check for the ProcessMI shortcut as
we use in the final candidate loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188774 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
ade3075030ddd6db370649993a6da5e21e73daab 20-Aug-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] Small cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188772 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
d4f478899e6229648f94c4aa70256986cdc6ee18 20-Aug-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] Small Bit of computation hoisting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188771 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
b99272a521ecffe8d021306713bd51fafc85721e 20-Aug-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] Added significantly longer comment to FindPotentialTailCall to make clear its relationship to llvm::isInTailCallPosition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188770 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
c02dbeb429f3a11f396c3915b638a9a525c97c62 20-Aug-2013 Michael Gottesman <mgottesman@apple.com> Removed trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188769 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
47d6e07a9be631c582d47d8187a9073619d1c158 20-Aug-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] Removed stale TODO.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188768 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
3480d1b84e0bdea91c08dcd931fe86b562971f3d 20-Aug-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] Added support for emitting the llvm intrinsic stack protector check.

rdar://13935163

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188766 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
9d6852cf98dd1e6a939b3469ea49ff7cbc15ad73 20-Aug-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] Refactor out the end of isInTailCallPosition into the function returnTypeIsEligibleForTailCall.

This allows me to use returnTypeIsEligibleForTailCall in the stack protector pass.

rdar://13935163

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188765 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
1a6de17273c58129880d8de8094ecc935721b1a1 20-Aug-2013 Michael Gottesman <mgottesman@apple.com> Remove unused variables that crept in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188761 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
657484f494edbac571ce2a91b8ac227e5011321d 20-Aug-2013 Michael Gottesman <mgottesman@apple.com> Teach selectiondag how to handle the stackprotectorcheck intrinsic.

Previously, generation of stack protectors was done exclusively in the
pre-SelectionDAG Codegen LLVM IR Pass "Stack Protector". This necessitated
splitting basic blocks at the IR level to create the success/failure basic
blocks in the tail of the basic block in question. As a result of this,
calls that would have qualified for the sibling call optimization were no
longer eligible for optimization since said calls were no longer right in
the "tail position" (i.e. the immediate predecessor of a ReturnInst
instruction).

Then it was noticed that since the sibling call optimization causes the
callee to reuse the caller's stack, if we could delay the generation of
the stack protector check until later in CodeGen after the sibling call
decision was made, we get both the tail call optimization and the stack
protector check!

A few goals in solving this problem were:

1. Preserve the architecture independence of stack protector generation.

2. Preserve the normal IR level stack protector check for platforms like
OpenBSD for which we support platform specific stack protector
generation.

The main problem that guided the present solution is that one can not
solve this problem in an architecture independent manner at the IR level
only. This is because:

1. The decision on whether or not to perform a sibling call on certain
platforms (for instance i386) requires lower level information
related to available registers that can not be known at the IR level.

2. Even if the previous point were not true, the decision on whether to
perform a tail call is done in LowerCallTo in SelectionDAG which
occurs after the Stack Protector Pass. As a result, one would need to
put the relevant callinst into the stack protector check success
basic block (where the return inst is placed) and then move it back
later at SelectionDAG/MI time before the stack protector check if the
tail call optimization failed. The MI level option was nixed
immediately since it would require platform specific pattern
matching. The SelectionDAG level option was nixed because
SelectionDAG only processes one IR level basic block at a time
implying one could not create a DAG Combine to move the callinst.

To get around this problem a few things were realized:

1. While one can not handle multiple IR level basic blocks at the
SelectionDAG Level, one can generate multiple machine basic blocks
for one IR level basic block. This is how we handle bit tests and
switches.

2. At the MI level, tail calls are represented via a special return
MIInst called "tcreturn". Thus if we know the basic block in which we
wish to insert the stack protector check, we get the correct behavior
by always inserting the stack protector check right before the return
statement. This is a "magical transformation" since no matter where
the stack protector check intrinsic is, we always insert the stack
protector check code at the end of the BB.

Given the aforementioned constraints, the following solution was devised:

1. On platforms that do not support SelectionDAG stack protector check
generation, allow for the normal IR level stack protector check
generation to continue.

2. On platforms that do support SelectionDAG stack protector check
generation:

a. Use the IR level stack protector pass to decide if a stack
protector is required/which BB we insert the stack protector check
in by reusing the logic already therein. If we wish to generate a
stack protector check in a basic block, we place a special IR
intrinsic called llvm.stackprotectorcheck right before the BB's
returninst or if there is a callinst that could potentially be
sibling call optimized, before the call inst.

b. Then when a BB with said intrinsic is processed, we codegen the BB
normally via SelectBasicBlock. In said process, when we visit the
stack protector check, we do not actually emit anything into the
BB. Instead, we just initialize the stack protector descriptor
class (which involves stashing information/creating the success
mbbb and the failure mbb if we have not created one for this
function yet) and export the guard variable that we are going to
compare.

c. After we finish selecting the basic block, in FinishBasicBlock if
the StackProtectorDescriptor attached to the SelectionDAGBuilder is
initialized, we first find a splice point in the parent basic block
before the terminator and then splice the terminator of said basic
block into the success basic block. Then we code-gen a new tail for
the parent basic block consisting of the two loads, the comparison,
and finally two branches to the success/failure basic blocks. We
conclude by code-gening the failure basic block if we have not
code-gened it already (all stack protector checks we generate in
the same function, use the same failure basic block).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188755 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
66d1fa6f4b443ac9f8bcea5d1f71a73ada733a42 20-Aug-2013 Hal Finkel <hfinkel@anl.gov> Add a llvm.copysign intrinsic

This adds a llvm.copysign intrinsic; We already have Libfunc recognition for
copysign (which is turned into the FCOPYSIGN SDAG node). In order to
autovectorize calls to copysign in the loop vectorizer, we need a corresponding
intrinsic as well.

In addition to the expected changes to the language reference, the loop
vectorizer, BasicTTI, and the SDAG builder (the intrinsic is transformed into
an FCOPYSIGN node, just like the function call), this also adds FCOPYSIGN to a
few lists in LegalizeVector{Ops,Types} so that vector copysigns can be
expanded.

In TargetLoweringBase::initActions, I've made the default action for FCOPYSIGN
be Expand for vector types. This seems correct for all in-tree targets, and I
think is the right thing to do because, previously, there was no way to generate
vector-values FCOPYSIGN nodes (and most targets don't specify an action for
vector-typed FCOPYSIGN).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188728 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAGBuilder.cpp
argetLoweringBase.cpp
05bae3bfe47b63976cfa63b4756d3e768dd9eebc 19-Aug-2013 Eric Christopher <echristo@gmail.com> Use less verbose code and update comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188711 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f04e4efcaa02012b7943b44c61b321a0fb5e1a72 19-Aug-2013 Eric Christopher <echristo@gmail.com> Turn on pubnames by default on linux.

Until gdb supports the new accelerator tables we should add the
pubnames section so that gdb_index can be generated from gold
at link time. On darwin we already emit the accelerator tables
and so don't need to worry about pubnames.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188708 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d345395ec97a303ffd420c3e761af7b9e3e4c338 19-Aug-2013 Paul Redmond <paul.redmond@intel.com> Improve the widening of integral binary vector operations

- split WidenVecRes_Binary into WidenVecRes_Binary and WidenVecRes_BinaryCanTrap
- WidenVecRes_BinaryCanTrap preserves the original behaviour for operations
that can trap
- WidenVecRes_Binary simply widens the operation and improves codegen for
3-element vectors by allowing widening and promotion on x86 (matches the
behaviour of unary and ternary operation widening)
- use WidenVecRes_Binary for operations on integers.

Reviewed by: nrotem



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188699 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
a0e735ee16f439675c1842e47ba3149aa226bdc0 19-Aug-2013 Hal Finkel <hfinkel@anl.gov> Add ExpandFloatOp_FCOPYSIGN to handle ppcf128-related expansions

We had previously been asserting when faced with a FCOPYSIGN f64, ppcf128 node
because there was no way to expand the FCOPYSIGN node. Because ppcf128 is the
sum of two doubles, and the first double must have the larger magnitude, we
can take the sign from the first double. As a result, in addition to fixing the
crash, this is also an optimization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188655 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
2883fd4df4bba4bb57b984bcea5fa896d435a662 19-Aug-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: don't emit zero-length names for parameters

We check this in many/all other cases, just missed this one it seems.
Perhaps it'd be worth unifying this so we never emit zero-length
DW_AT_names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188649 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
b49860ef030cb2dba0386278ee8737eecc4e7272 17-Aug-2013 Jim Grosbach <grosbach@apple.com> ARM: Fix more fast-isel verifier failures.

Teach the generic instruction selection helper functions to constrain
the register classes of their input operands. For non-physical register
references, the generic code needs to be careful not to mess that up
when replacing references to result registers. As the comment indicates
for MachineRegisterInfo::replaceRegWith(), it's important to call
constrainRegClass() first.

rdar://12594152

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188593 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
692062f18023979c0f8d5a155c14cf1f1616a2b0 16-Aug-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Allow the addition of other (such as static data) members to a record type after construction

Plus a type cleanup & minor fix to enumerate members of declarations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188577 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
19262ee0725a09b7c621a3d2eb66ba1513ae932a 16-Aug-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> [SystemZ] Use SRST to implement strlen and strnlen

It would also make sense to use it for memchr; I'm working on that now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188547 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
4fc7355a21e1fa838406e15459aaf54a58fcf909 16-Aug-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> [SystemZ] Use MVST to implement strcpy and stpcpy


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
e1b2af731e2a45344a7c502232f66c55cd746da0 16-Aug-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> [SystemZ] Use CLST to implement strcmp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188544 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
6a079fef4fad3e6c2e07c9e1d0776e20a0b05b1e 16-Aug-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> [SystemZ] Fix handling of 64-bit memcmp results

Generalize r188163 to cope with return types other than MVT::i32, just
as the existing visitMemCmpCall code did. I've split this out into a
subroutine so that it can be used for other upcoming patches.

I also noticed that I'd used the wrong API to record the out chain.
It's a load that uses DAG.getRoot() rather than getRoot(), so the out
chain should go on PendingLoads. I don't have a testcase for that because
we don't do any interesting scheduling on z yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188540 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
873e392ffd6701f6724e4c2a7accd0a4e1f1e0a1 15-Aug-2013 Bill Wendling <isanbard@gmail.com> Make a few more things const.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188484 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7d938adacc9a625b09dd1b4c0c0df0247a1b1ed2 15-Aug-2013 Bill Wendling <isanbard@gmail.com> Use a reference instead of making an unnecessary copy. Also use 'const'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188483 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0ff1190888f5b24f64a196392c452800447186d8 15-Aug-2013 Craig Topper <craig.topper@gmail.com> Replace getValueType().getSimpleVT() with getSimpleValueType().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188442 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
e742d687369f79702894b6cf302e1f222c5d7432 15-Aug-2013 Mark Lacey <mark.lacey@apple.com> Auto-compute live intervals on demand.

When new virtual registers are created during splitting/spilling, defer
creation of the live interval until we need to use the live interval.

Along with the recent commits to notify LiveRangeEdit when new virtual
registers are created, this makes it possible for functions like
TargetInstrInfo::loadRegFromStackSlot() and
TargetInstrInfo::storeRegToStackSlot() to create multiple virtual
registers as part of the process of generating loads/stores for
different register classes, and then have the live intervals for those
new registers computed when they are needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188437 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveIntervalAnalysis.cpp
iveRangeEdit.cpp
HIElimination.cpp
piller.cpp
plitKit.cpp
trongPHIElimination.cpp
03fe68e0a9c0fdd196f62899cb44b6f9a56dd7c8 15-Aug-2013 Mark Lacey <mark.lacey@apple.com> Notify LiveRangeEdit of new virtual registers.

Add a delegate class to MachineRegisterInfo with a single virtual
function, MRI_NoteNewVirtualRegister(). Update LiveRangeEdit to inherit
from this delegate class and override the definition of the callback
with an implementation that tracks the newly created virtual registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188435 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
achineRegisterInfo.cpp
1feb5854aeeda897e9318c8193d187673c8576b8 15-Aug-2013 Mark Lacey <mark.lacey@apple.com> Track new virtual registers by register number.

Track new virtual registers by register number, rather than by the live
interval created for them. This is the first step in separating the
creation of new virtual registers and new live intervals. Eventually
live intervals will be created and populated on demand after the virtual
registers have been created and used in instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188434 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
iveDebugVariables.h
iveRangeEdit.cpp
egAllocBase.cpp
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
plitKit.cpp
cbb5c73942b62e693d9233907720138dd4f40f26 15-Aug-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Prefer references over pointers, pass by const reference for a type that will grow in the future

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188422 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
1c6d387dc90fba589f8effb17c72a39f966f87df 14-Aug-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unnecessary parameter to RenumberValues.

Patch by Matthias Braun!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188393 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveRangeEdit.cpp
plitKit.cpp
2aeef00d681bf4010d234949043fe0beb29547e2 14-Aug-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Improve misleading comment.

Patch by Matthias Braun!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188391 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
15d737b855dc91c4e9143a655ce6c25ac565b6ec 14-Aug-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove declaration of nonexistant function.

Patch by Matthias Braun!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188390 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeCalc.h
be6a376b95d03e4e58f10ed50c3eee2f593c9ccc 14-Aug-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> LiveIntervalUnion is not used in RegAllocBase.

Patch by Matthias Braun!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188389 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
51a0280d296405cb1fdb268e5387867e0db2e46e 13-Aug-2013 Jim Grosbach <grosbach@apple.com> DAG: Combine (and (setne X, 0), (setne X, -1)) -> (setuge (add X, 1), 2)

A common idiom is to use zero and all-ones as sentinal values and to
check for both in a single conditional ("x != 0 && x != (unsigned)-1").
That generates code, for i32, like:
testl %edi, %edi
setne %al
cmpl $-1, %edi
setne %cl
andb %al, %cl

With this transform, we generate the simpler:
incl %edi
cmpl $1, %edi
seta %al

Similar improvements for other integer sizes and on other platforms. In
general, combining the two setcc instructions into one is better.

rdar://14689217

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188315 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3add0679d24a00c4a585809c6ce54486f6a458f5 13-Aug-2013 Michael Gottesman <mgottesman@apple.com> Update makeLibCall to return both the call and the chain associated with the libcall instead of just the call. This allows us to specify libcalls that return void.

LowerCallTo returns a pair with the return value of the call as the first
element and the chain associated with the return value as the second element. If
we lower a call that has a void return value, LowerCallTo returns an SDValue
with a NULL SDNode and the chain for the call. Thus makeLibCall by just
returning the first value makes it impossible for you to set up the chain so
that the call is not eliminated as dead code.

I also updated all references to makeLibCall to reflect the new return type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/TargetLowering.cpp
46f0b6f10a6d50ba929f64cc3412bc1c35864a63 13-Aug-2013 Carlo Kok <ck@remobjects.com> Output DW_AT_stmt_list dwarf debug info as DW_FORM_sec_offset instead of DW_FORM_data4 as it is a section offset (fixes the coff/dwarf debug info statement locations)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188297 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e05a304e5af754e4f8b1f1a35e22ebf35f072995 13-Aug-2013 Carlo Kok <ck@remobjects.com> For COFF only: dwarf debug info output a label reference as a section relative item only when it's one of dw_from strp, sec_offset, ref_addr or op_call_ref instead of going by size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188296 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
15ab9f4aaa0bebe50c1367963c409d929bede030 13-Aug-2013 Evgeniy Stepanov <eugeni.stepanov@gmail.com> Pass DIEHash::collectAttributes output argument by-pointer instead of by-value.

Before this, collectAttributes() was operating on a local object.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188254 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
6aa9315353574c000c5f2aa0edd34067e94b8c79 13-Aug-2013 David Majnemer <david.majnemer@gmail.com> [-cxx-abi microsoft] Stick zero initialized symbols into the .bss section for COFF

Summary:
We need to do two things:

- Initialize BSSSection in MCObjectFileInfo::InitCOFFMCObjectFileInfo
- Teach TargetLoweringObjectFileCOFF::SelectSectionForGlobal what to do
with it

This fixes PR16861.

Reviewers: rnk

Reviewed By: rnk

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1361

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188244 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
0710bfa8667ea08ede15bf4f801f25418b4cefa0 13-Aug-2013 Eric Christopher <echristo@gmail.com> Add the start of DIE hashing for DWARF4 type units and split dwarf
CUs.

Currently only hashes the name of CUs and the names of any children,
but it's an obvious first step to show the framework. The testcase
should continue to be correct, however, as it's an empty TU.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188243 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
smPrinter/DwarfDebug.cpp
dd0cd3c4f468b55651bf33240667881bbed8d04c 13-Aug-2013 Eric Christopher <echristo@gmail.com> Reflow comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188233 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
11de8539cb5d4c5f33b39aabcd38d65b05c176a7 13-Aug-2013 Eric Christopher <echristo@gmail.com> Remove empty constructor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188232 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.h
b0a50ade8b59816324783733e9ac8eb2aa7e73d6 12-Aug-2013 Michael Gottesman <mgottesman@apple.com> Fixed SelectionDAGBuilder.h C++ filetype declaration to use the canonical C++ instead of c++.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.h
8711b767b4a04eebc23ad1490891c1f8dd2539ad 12-Aug-2013 Michael Gottesman <mgottesman@apple.com> Fixed another place in CodeGen where we had a typo in our editor C++ filetype declaration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188202 91177308-0d34-0410-b5e6-96231b3b80d8
HIEliminationUtils.h
a8b107e9e0379f6fbe1a22ba0654a7ff895be9f3 12-Aug-2013 Michael Gottesman <mgottesman@apple.com> [branchfolding] Fix typo in C++ editor declaration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188201 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.h
f962c02b80cc8b21c8ece92ab5dd67455a945361 12-Aug-2013 Eric Christopher <echristo@gmail.com> Move the addition of the dwo_id as late as possible after everything
has been finalized except for sizes and offsets. Update test accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188199 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
15b2782ccf141930cc98507a1cb1d501fbfd4000 12-Aug-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] Add in the stackprotector libcall.

We support this libcall on all platforms except for OpenBSD (See
lib/Codegen/StackProtector.cpp).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188193 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringBase.cpp
ac168b8bc8773a083a10902f64e4ae57a925aee4 12-Aug-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> [SystemZ] Use CLC and IPM to implement memcmp

For now this is restricted to fixed-length comparisons with a length
in the range [1, 256], as for memcpy() and MVC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188163 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6a4e44f0de6e59d4458e3795c765a9001ba1b87f 12-Aug-2013 Tim Northover <tnorthover@apple.com> Allow compatible extension attributes for tail calls

If the tail-callee and caller give the same bits via the same signext/zeroext
attribute then a tail-call should be allowed, since the extension has already
been done by the callee.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188159 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
236e389be4bb7f65e78bd378143b67f401f05338 09-Aug-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] Simplify SP Pass so that we emit different fail basic blocks for each fail condition.

This patch decouples the stack protector pass so that we can support stack
protector implementations that do not use the IR level generated stack protector
fail basic block.

No codesize increase is caused by this change since the MI level tail merge pass
properly merges together the fail condition blocks (see the updated test).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188105 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
b0e8d37240835c68357be061de5f2e5fb69dd7ac 09-Aug-2013 Benjamin Kramer <benny.kra@googlemail.com> Make helper static and fix formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188074 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
ad445a60d0d899d235f75d8b4e01c5f75cdf4f23 09-Aug-2013 Craig Topper <craig.topper@gmail.com> Change asserts at the top of getVectorShuffle to check that LHS and RHS have the same type as the result.

Previously the asserts were only checking that RHS and LHS were the same type and had the same element type as the result. All downstream code for ISD::VECTOR_SHUFFLE requires the types to be the same.

Also removed one unnecessary check of matched element counts that was present in the code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188051 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3d7f79a02e143cfcbc85ea2091f2797285a9db84 09-Aug-2013 Hal Finkel <hfinkel@anl.gov> Set ISD::FROUND to Expand by default for all types

For most libm ISD nodes, TargetLoweringBase::initActions sets the default
scalar-type action to Expand, and leaves the vector-type action default as
Legal. This is not appropriate for the new ISD::FROUND node (which no backend
but PowerPC handles explicitly).

Fixes PR16842.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188048 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringBase.cpp
b8b2a03117d7fed88c3311b58c0f5660ee9eee19 09-Aug-2013 Eric Christopher <echristo@gmail.com> Update the CMake build files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188030 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
0d27ca145fff7d71ca2da5d356925a1df6f533ca 09-Aug-2013 Eric Christopher <echristo@gmail.com> Move hash computation code into a separate class and file.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188028 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIEHash.cpp
smPrinter/DIEHash.h
smPrinter/DwarfDebug.cpp
9b19dfc2e003e33892be2d80ad535d18f24c53d9 08-Aug-2013 Arnold Schwaighofer <aschwaighofer@apple.com> Revert "Reapply r185872 now that the address sanitizer has been changed to support this."

This reverts commit r187939. It broke an O0 build of a spec benchmark.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188012 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
76ef79f410853a431c820cb5d0ee11cd66d4c90d 08-Aug-2013 Eric Christopher <echristo@gmail.com> For DW_TAG_template_type_parameter the actual passed in type could
be void and therefore not have a type entry. Only add the type if
it is non-void and provide a testcase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187966 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
eee2a11ee38307ea3b0bbd43c33e5fad182f0951 08-Aug-2013 Craig Topper <craig.topper@gmail.com> Remove AllUndef check from one of the loops in getVectorShuffle. It was already handled by the 'AllLHS && AllRHS' check after the previous loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187965 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
37c107b9b57aab9a13cde0d1db41b66565941f9d 08-Aug-2013 Eric Christopher <echristo@gmail.com> The conversion to bool is fine here, no need to check isType.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187964 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
dc1363f5af47542a602c80e726749bc06d8ef3f8 08-Aug-2013 Eric Christopher <echristo@gmail.com> Make sure that if we're going to attempt to add a type to a DIE that
the type exists.

Fix up cases where we weren't checking for optional types and add
an assert to addType to make sure we catch this in the future.

Fix up a testcase that was using the tag for DW_TAG_array_type
when it meant DW_TAG_enumeration_type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187963 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
afdd1f8a851349e2b3cdc6d441043ac3f4cdb9b9 08-Aug-2013 Eric Christopher <echristo@gmail.com> Change variable name and reflow formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187962 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
01d22aaa78b831ad4837f928e0554be7e65addaa 08-Aug-2013 Craig Topper <craig.topper@gmail.com> Optimize mask generation for one of the DAG combiner shufflevector cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187961 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9706d43b56e16eb3029314e02c499305284e99f1 08-Aug-2013 David Majnemer <david.majnemer@gmail.com> Revert "coff also doesn't have a ReadOnlySection yet, (!)"

This reverts commit r77814.

We were sticking global constants in the .data section instead of in the
.rdata section when emitting for COFF.

This fixes PR16831.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187956 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
a1eacd020f3f7fe7f959ad44f206f71055454c45 08-Aug-2013 Eric Christopher <echristo@gmail.com> Reflow for loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187954 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
31667626106048c07866d996e667a3a10010ef4b 08-Aug-2013 Eric Christopher <echristo@gmail.com> Be more rigorous about the sizes of forms and attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187953 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d3a951026462713a377c0fe616bf512de59a56bc 08-Aug-2013 Bill Wendling <isanbard@gmail.com> Reapply r185872 now that the address sanitizer has been changed to support this.

Original commit message:

Stop emitting weak symbols into the "coal" sections.

The Mach-O linker has been able to support the weak-def bit on any symbol for
quite a while now. The compiler however continued to place these symbols into a
"coal" section, which required the linker to map them back to the base section
name.

Replace the sections like this:

__TEXT/__textcoal_nt instead use __TEXT/__text
__TEXT/__const_coal instead use __TEXT/__const
__DATA/__datacoal_nt instead use __DATA/__data

<rdar://problem/14265330>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187939 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
41418d17cced656f91038b2482bc9d173b4974b0 08-Aug-2013 Hal Finkel <hfinkel@anl.gov> Add ISD::FROUND for libm round()

All libm floating-point rounding functions, except for round(), had their own
ISD nodes. Recent PowerPC cores have an instruction for round(), and so here I'm
adding ISD::FROUND so that round() can be custom lowered as well.

For the most part, this is straightforward. I've added an intrinsic
and a matching ISD node just like those for nearbyint() and friends. The
SelectionDAG pattern I've named frnd (because ISD::FP_ROUND has already claimed
fround).

This will be used by the PowerPC backend in a follow-up commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187926 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGDumper.cpp
argetLoweringBase.cpp
fab2daa4a1127ecb217abe2b07c1769122b6fee1 08-Aug-2013 Stephen Hines <srhines@google.com> Merge commit '10251753b6897adcd22cc981c0cc42f348c109de' into merge-20130807

Conflicts:
lib/Archive/ArchiveReader.cpp
lib/Support/Unix/PathV2.inc

Change-Id: I29d8c1e321a4a380b6013f00bac6a8e4b593cc4e
10251753b6897adcd22cc981c0cc42f348c109de 07-Aug-2013 Eric Christopher <echristo@gmail.com> Using the integrated assembler we'd fail to change section to the
.tbss section for zerofill thread locals. Make sure we do this
before emitting the zerofills.

Fixes PR15972.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187913 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cc47c120e42ca8e8b88995786fb4bcbdca604762 07-Aug-2013 Andrew Trick <atrick@apple.com> Confusing comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187895 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
f76e118cf879a90145aebbdc39fdd7feb9bf3e51 07-Aug-2013 Eric Christopher <echristo@gmail.com> Remove some parens. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187872 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b7669139e6309679acbe16ca26f1b1a2fdd91268 07-Aug-2013 Eric Christopher <echristo@gmail.com> Add a way to grab a particular attribute out of a DIE.
Use it when we're looking for a string in particular. Update comments
as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187844 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
028f3478a510ef0855abc891237882b3c6123671 07-Aug-2013 Eric Christopher <echristo@gmail.com> Move somewhat messy conditional out of line.
No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187843 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2d66d4cf42022239bfc9cd260a7b924400139cb5 07-Aug-2013 Arnold Schwaighofer <aschwaighofer@apple.com> LoopVectorize: Allow vectorization of loops with lifetime markers

Patch by Marc Jessome!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187825 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
d113448c1dd5f40522c3c02db96e87a9eb59eaf4 06-Aug-2013 Tim Northover <tnorthover@apple.com> Refactor isInTailCallPosition handling

This change came about primarily because of two issues in the existing code.
Niether of:

define i64 @test1(i64 %val) {
%in = trunc i64 %val to i32
tail call i32 @ret32(i32 returned %in)
ret i64 %val
}

define i64 @test2(i64 %val) {
tail call i32 @ret32(i32 returned undef)
ret i32 42
}

should be tail calls, and the function sameNoopInput is responsible. The main
problem is that it is completely symmetric in the "tail call" and "ret" value,
but in reality different things are allowed on each side.

For these cases:
1. Any truncation should lead to a larger value being generated by "tail call"
than needed by "ret".
2. Undef should only be allowed as a source for ret, not as a result of the
call.

Along the way I noticed that a mismatch between what this function treats as a
valid truncation and what the backends see can lead to invalid calls as well
(see x86-32 test case).

This patch refactors the code so that instead of being based primarily on
values which it recurses into when necessary, it starts by inspecting the type
and considers each fundamental slot that the backend will see in turn. For
example, given a pathological function that returned {{}, {{}, i32, {}}, i32}
we would consider each "real" i32 in turn, and ask if it passes through
unchanged. This is much closer to what the backend sees as a result of
ComputeValueVTs.

Aside from the bug fixes, this eliminates the recursion that's going on and, I
believe, makes the bulk of the code significantly easier to understand. The
trade-off is the nasty iterators needed to find the real types inside a
returned value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187787 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
2e363350f5b3a5df6a92b5afe55ee2375e06740a 06-Aug-2013 NAKAMURA Takumi <geek4civic@gmail.com> AsmPrinter/CMakeLists.txt: Add explicit dependency to intrinsics_gen here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187778 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
4c5be13890f723d78a92d4c96006f9102c4580a0 06-Aug-2013 Eric Christopher <echristo@gmail.com> Recommit previous cleanup with a fix for c++98 ambiguity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187752 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
425b76c2314ff7ee7ad507011bdda1988ae481ef 06-Aug-2013 Tom Stellard <thomas.stellard@amd.com> TargetLowering: Add getVectorIdxTy() function v2

This virtual function can be implemented by targets to specify the type
to use for the index operand of INSERT_VECTOR_ELT, EXTRACT_VECTOR_ELT,
INSERT_SUBVECTOR, EXTRACT_SUBVECTOR. The default implementation returns
the result from TargetLowering::getPointerTy()

The previous code was using TargetLowering::getPointerTy() for vector
indices, because this is guaranteed to be legal on all targets. However,
using TargetLowering::getPointerTy() can be a problem for targets with
pointer sizes that differ across address spaces. On such targets,
when vectors need to be loaded or stored to an address space other than the
default 'zero' address space (which is the address space assumed by
TargetLowering::getPointerTy()), having an index that
is a different size than the pointer can lead to inefficient
pointer calculations, (e.g. 64-bit adds for a 32-bit address space).

There is no intended functionality change with this patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187748 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
de5cb6b24925c8d3113f02e94d2c16cfed69c47d 06-Aug-2013 Eric Christopher <echristo@gmail.com> Revert "Use existing builtin hashing functions to make this routine more"

This reverts commit r187745.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187747 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c222f671099ae5cc354a22078eeb405b5e02a91b 06-Aug-2013 Eric Christopher <echristo@gmail.com> Use existing builtin hashing functions to make this routine more
simple.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187745 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b30347e64e0bd2904a39cd72631b91900f46d601 05-Aug-2013 Eric Christopher <echristo@gmail.com> Change parent hashing algorithm to be non-recursive and elaborate
greatly on many comments in the code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187742 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f8e16c6f5a3a0d2cc6f7ae6dae0a8f55a89cfb2f 05-Aug-2013 Benjamin Kramer <benny.kra@googlemail.com> Don't leak passes if added outside of the area determined by Started/Stopped flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187722 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
fdabd9f391c1c32c8800d1a07b03604b4a00ef3b 02-Aug-2013 Carlo Kok <ck@remobjects.com> Bugfix for making the DWARF debug strings and labels to code emitted as secrel32 instead of long opcodes (only for coff). This makes them debuggable with GDB (with fix for 64bits msvc)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187656 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ee1d7db74b24f941dd0334f5ca3db7ab48f65ede 02-Aug-2013 NAKAMURA Takumi <geek4civic@gmail.com> Revert r187597, "Bugfix for making the DWARF debug strings and labels to code emitted as secrel32 instead of long opcodes (only for coff). This makes them debuggable with GDB."

It broke x86_64-win32 builder in llvm/test/DebugInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187642 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
61fc8d670f1e991804c2ab753e567981e60962cb 01-Aug-2013 Bill Wendling <isanbard@gmail.com> Use function attributes to indicate that we don't want to realign the stack.

Function attributes are the future! So just query whether we want to realign the
stack directly from the function instead of through a random target options
structure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187618 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
c8b93557da150e051c273701652a2db328708708 01-Aug-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Emit definitions for types with no members.

The absence of members was a poor/incorrect proxy for "is definition".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187607 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
5b25082ddb88a3fdedcd3841d5f397402fcd3be4 01-Aug-2013 Carlo Kok <ck@remobjects.com> Bugfix for making the DWARF debug strings and labels to code emitted as secrel32 instead of long opcodes (only for coff). This makes them debuggable with GDB.

fixes Bug 16249 - LLVM generates broken debug info on Windows

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187597 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1a54c57cf654e001c078c7064123d30e6c03e349 31-Jul-2013 Eric Christopher <echristo@gmail.com> Fix crashing on invalid inline asm with matching constraints.

For a testcase like the following:

typedef unsigned long uint64_t;

typedef struct {
uint64_t lo;
uint64_t hi;
} blob128_t;

void add_128_to_128(const blob128_t *in, blob128_t *res) {
asm ("PAND %1, %0" : "+Q"(*res) : "Q"(*in));
}

where we'll fail to allocate the register for the output constraint,
our matching input constraint will not find a register to match,
and could try to search past the end of the current operands array.

On the idea that we'd like to attempt to keep compilation going
to find more errors in the module, change the error cases when
we're visiting inline asm IR to return immediately and avoid
trying to create a node in the DAG. This leaves us with only
a single error message per inline asm instruction, but allows us
to safely keep going in the general case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187470 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b0bee810e7f980ccb4c0ee56aed948716a51d0ab 31-Jul-2013 Eric Christopher <echristo@gmail.com> Reflow this to be easier to read.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187459 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c0173e6f9f0de4497cd9b52b4f2269a57846f2ac 30-Jul-2013 Andrew Trick <atrick@apple.com> Down-scale slot index distance to save bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187438 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
d71efffdcffc4204e75238f940df41fb24979a7d 30-Jul-2013 Andrew Trick <atrick@apple.com> MI Sched: Track live-thru registers.

When registers must be live throughout the scheduling region, increase
the limit for the register class. Once we exceed the original limit,
they will be spilled, and there's no point further reducing pressure.

This isn't a perfect heuristics but avoids a situation where the
scheduler could become trapped by trying to achieve the impossible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187436 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
egisterPressure.cpp
1e46fcd9891897f4fef8d8404214a7c9b6db158b 30-Jul-2013 Andrew Trick <atrick@apple.com> MI Sched fix: assert "Disconnected LRG within the scheduling region."

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187435 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
75c9433b49b1e4e2d7e61249c3cd0e3ce910d5c8 30-Jul-2013 Quentin Colombet <qcolombet@apple.com> [DAGCombiner] insert_vector_elt: Avoid building a vector twice.

This patch prevents the following combine when the input vector is used more
than once.
insert_vector_elt (build_vector elt0, ..., eltN), NewEltIdx, idx
=>
build_vector elt0, ..., NewEltIdx, ..., eltN

The reasons are:
- Building a vector may be expensive, so try to reuse the existing part of a
vector instead of creating a new one (think big vectors).
- elt0 to eltN now have two users instead of one. This may prevent some other
optimizations.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187396 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
86aa03d5f991959299821ba45d476e2c51427139 30-Jul-2013 Eric Christopher <echristo@gmail.com> Fix a truly egregious thinko in anonymous namespace check,
update testcase to make sure we generate debug info for walrus
by adding a non-trivial constructor and verify that we don't
emit an ODR signature for the type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187393 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
944aa2b784c727f5d4dca1a1a5347af8519ae6f2 30-Jul-2013 Eric Christopher <echristo@gmail.com> Make sure we don't emit an ODR hash for types with no name and make
sure the comments for each testcase are a bit easier to distinguish.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187392 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
be48204a7b80917aff0bc659c75571b28fed2f24 30-Jul-2013 Eric Christopher <echristo@gmail.com> Elaborate a bit on the type unit and ODR conditional code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187385 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fdbea5107b5a8249421fd5e603a31f40f05ea25f 29-Jul-2013 Nico Rieck <nico.rieck@gmail.com> Use proper section suffix for COFF weak symbols

32-bit symbols have "_" as global prefix, but when forming the name of
COMDAT sections this prefix is ignored. The current behavior assumes that
this prefix is always present which is not the case for 64-bit and names
are truncated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187356 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
1faea8f0869a173c5952b59fd17718cf42111416 27-Jul-2013 Benjamin Kramer <benny.kra@googlemail.com> DwarfDebug: MD5 is always little endian, bswap on big endian platforms.

This makes LLVM emit the same signature regardless of host and target endianess.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187304 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
05497cc965b59dff8a8170c5cbbcef3dff251262 27-Jul-2013 Chandler Carruth <chandlerc@gmail.com> Fix a memory leak in the debug emission by simply not allocating memory.
There doesn't appear to be any reason to put this variable on the heap.
I'm suspicious of the LexicalScope above that we stuff in a map and then
delete afterward, but I'm just trying to get the valgrind bot clean.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187301 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
81e480463d8bb57776d03cebfd083762909023f1 27-Jul-2013 Nick Lewycky <nicholas@mxc.ca> Reimplement isPotentiallyReachable to make nocapture deduction much stronger.
Adds unit tests for it too.

Split BasicBlockUtils into an analysis-half and a transforms-half, and put the
analysis bits into a new Analysis/CFG.{h,cpp}. Promote isPotentiallyReachable
into llvm::isPotentiallyReachable and move it into Analysis/CFG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187283 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
57e6b2d1f3de0bf459e96f7038e692d624f7e580 27-Jul-2013 Tom Stellard <thomas.stellard@amd.com> SimplifyCFG: Use parallel-and and parallel-or mode to consolidate branch conditions

Merge consecutive if-regions if they contain identical statements.
Both transformations reduce number of branches. The transformation
is guarded by a target-hook, and is currently enabled only for +R600,
but the correctness has been tested on X86 target using a variety of
CPU benchmarks.

Patch by: Mei Ye

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187278 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
0be31910e08bd70e35293d7f85c797071326c02c 26-Jul-2013 Eric Christopher <echristo@gmail.com> Remove addLetterToHash, no functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187245 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3dee575b8dfe9c3d89f581e51dd11ddd08c43cd6 26-Jul-2013 Eric Christopher <echristo@gmail.com> Add preliminary support for hashing DIEs and breaking them into
type units.

Initially this support is used in the computation of an ODR checker
for C++. For now we're attaching it to the DIE, but in the future
it will be attached to the type unit.

This also starts breaking out types into the separation for type
units, but without actually splitting the DIEs.

In preparation for hashing the DIEs this adds a DIEString type
that contains a StringRef with the string contained at the label.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187213 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
320185fa5f5838b3892962f6e91083e9729cd946 26-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> Add a target legalize hook for SplitVectorOperand (again)

CustomLowerNode was not being called during SplitVectorOperand,
meaning custom legalization could not be used by targets.

This also adds a test case for NVPTX that depends on this custom
legalization.

Differential Revision: http://llvm-reviews.chandlerc.com/D1195

Attempt to fix the buildbots by making the X86 test I just added platform independent

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187202 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
c735c1c2aed2cbaeb61296f4269535b5d13d8b0a 26-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Revert "Add a target legalize hook for SplitVectorOperand"

This reverts commit 187198. It broke the bots.

The soft float test probably needs a -triple because of name differences.
On the hard float test I am getting a "roundss $1, %xmm0, %xmm0", instead of
"vroundss $1, %xmm0, %xmm0, %xmm0".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187201 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
5a24ed951b7f5e553a7e4e1415da5be247db443e 26-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> Add a target legalize hook for SplitVectorOperand

CustomLowerNode was not being called during SplitVectorOperand,
meaning custom legalization could not be used by targets.

This also adds a test case for NVPTX that depends on this custom
legalization.

Differential Revision: http://llvm-reviews.chandlerc.com/D1195

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187198 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
bef4c3e069a66c8b2d5871468cb57978f44ddc54 25-Jul-2013 Andrew Trick <atrick@apple.com> RegAllocGreedy comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187141 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
8adae96fd905daa8835b6fde5e74e25d818c7471 25-Jul-2013 Andrew Trick <atrick@apple.com> Evict local live ranges if they can be reassigned.

The previous change to local live range allocation also suppressed
eviction of local ranges. In rare cases, this could result in more
expensive register choices. This commit actually revives a feature
that I added long ago: check if live ranges can be reassigned before
eviction. But now it only happens in rare cases of evicting a local
live range because another local live range wants a cheaper register.

The benefit is improved code size for some benchmarks on x86 and armv7.

I measured no significant compile time increase and performance
changes are noise.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187140 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
6ea2b9608a38e9b53d208ff85051e8e3ed53192c 25-Jul-2013 Andrew Trick <atrick@apple.com> Allocate local registers in order for optimal coloring.

Also avoid locals evicting locals just because they want a cheaper register.

Problem: MI Sched knows exactly how many registers we have and assumes
they can be colored. In cases where we have large blocks, usually from
unrolled loops, greedy coloring fails. This is a source of
"regressions" from the MI Scheduler on x86. I noticed this issue on
x86 where we have long chains of two-address defs in the same live
range. It's easy to see this in matrix multiplication benchmarks like
IRSmk and even the unit test misched-matmul.ll.

A fundamental difference between the LLVM register allocator and
conventional graph coloring is that in our model a live range can't
discover its neighbors, it can only verify its neighbors. That's why
we initially went for greedy coloring and added eviction to deal with
the hard cases. However, for singly defined and two-address live
ranges, we can optimally color without visiting neighbors simply by
processing the live ranges in instruction order.

Other beneficial side effects:

It is much easier to understand and debug regalloc for large blocks
when the live ranges are allocated in order. Yes, global allocation is
still very confusing, but it's nice to be able to comprehend what
happened locally.

Heuristics could be added to bias register assignment based on
instruction locality (think late register pairing, banks...).

Intuituvely this will make some test cases that are on the threshold
of register pressure more stable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187139 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
4c9d299d80f367a7fa1e97084613565a5956532f 25-Jul-2013 Adrian Prantl <aprantl@apple.com> typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187135 91177308-0d34-0410-b5e6-96231b3b80d8
exicalScopes.cpp
13372886a6d387c8847143744f26790a250f4360 25-Jul-2013 Andrew Trick <atrick@apple.com> MI Sched: Register pressure heuristics.

Consider which set is being increased or decreased before comparing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187110 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
4b43ed53b6b4aec95d7c7003e70cb74ac58886e7 25-Jul-2013 Andrew Trick <atrick@apple.com> MI Sched: track register pressure by importance of the set, not weight of the units.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187109 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
5dca61397878a7207986455b42fa2117fbf78000 25-Jul-2013 Andrew Trick <atrick@apple.com> Dump LIS before regalloc. MI sched changes them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187107 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
egAllocGreedy.cpp
f245ae5a4a78d5a02b3b9e2dae819077a56d81e7 25-Jul-2013 Bill Wendling <isanbard@gmail.com> Replace the "NoFramePointerElimNonLeaf" target option with a function attribute.

There's no need to specify a flag to omit frame pointer elimination on non-leaf
nodes...(Honestly, I can't parse that option out.) Use the function attribute
stuff instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187093 91177308-0d34-0410-b5e6-96231b3b80d8
argetOptionsImpl.cpp
e644b7743bafaf5fc7091f8bf0accee720ade3ab 24-Jul-2013 Quentin Colombet <qcolombet@apple.com> Fix a bug in IfConverter with nested predicates.

Prior to this patch, IfConverter may widen the cases where a sequence of
instructions were executed because of the way it uses nested predicates. This
result in incorrect execution.

For instance, Let A be a basic block that flows conditionally into B and B be a
predicated block.
B can be predicated with A.BrToBPredicate into A iff B.Predicate is less
"permissive" than A.BrToBPredicate, i.e., iff A.BrToBPredicate subsumes
B.Predicate.

The IfConverter was checking the opposite: B.Predicate subsumes
A.BrToBPredicate.

<rdar://problem/14379453>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187071 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
1f67c63cb23ba5d405452d72bb8892df6b7ccd4f 24-Jul-2013 Tom Stellard <thomas.stellard@amd.com> DAGCombiner: Pass the correct type to TargetLowering::isF(Abs|Neg)Free

This commit also implements these functions for R600 and removes a test
case that was relying on the buggy behavior.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187007 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6e61e0ba086f7c01f0966f7def824102ecedaf09 24-Jul-2013 Eric Christopher <echristo@gmail.com> Reformat options.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186994 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9cb1685158f690d80a02819fff9ea2aed2feae87 22-Jul-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] Changed isNoopBitcast/sameNoopInput to take TargetLoweringBase instead of TargetLowering.

Both functions only use functionality from TargetLoweringBase.

rdar://13935163

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186874 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
c03d5ec32041892734324f4dc635e7644aebd672 22-Jul-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] Refactored ssp prologue creation code into its own helper function.

No functionality change.

rdar://13935163

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186868 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
0dcba2fadb990ba2298ba43d76372c754b240cee 22-Jul-2013 Bill Wendling <isanbard@gmail.com> Recommit r186217 with testcase fix:

Use the function attributes to pass along the stack protector buffer size.

Now that we have robust function attributes, don't use a command line option to
specify the stack protecto buffer size.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186863 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
fa7399518817c456cdedc08475a8fc9bd1e6a900 22-Jul-2013 Eric Christopher <echristo@gmail.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186851 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
6db0dea22585a1b7577f24a97e60769e65e0a342 22-Jul-2013 Michael Gottesman <mgottesman@apple.com> Added missing - in the header of PrologEpilogInserter.h so that editors properly realize it is a c++ header and not a c header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186801 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.h
86dc6f9a7953f45d9c4791b0cb6cdceef8ca00ee 19-Jul-2013 Alexey Samsonov <samsonov@google.com> Fix uninitialized memory read found by MemorySanitizer: always set output parameter of ConvergingScheduler::SchedBoundary::getOtherResourceCount

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186658 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
4e3898056e1aaa8eaaf829cda578651667878843 19-Jul-2013 Andrew Trick <atrick@apple.com> MI Sched: Update the way resources are tracked so the current heuristics make more sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186632 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
3b5c6eaa2a3512ef98095ff537588360a6268630 17-Jul-2013 Michael Gottesman <mgottesman@apple.com> Add -*- C++ -*- to InstrEmitter.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186527 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.h
8de25f031d8a8c63e0107f7fd0ac4af6b8ab600c 17-Jul-2013 Craig Topper <craig.topper@gmail.com> Make constant string pointer into an array to remove a pointer lookup for every access.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186482 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.cpp
egAllocBase.h
c8cfaa1625a72aa3660a268dae753748cfed67d0 17-Jul-2013 Manman Ren <mren@apple.com> Add getModuleFlag(StringRef Key) to query a module flag given Key.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186470 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c1b49b56d4132efa2e06deb8f23508d0de4c8800 16-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a wrapper for open.

This centralizes the handling of O_BINARY and opens the way for hiding more
differences (like how open behaves with directories).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186447 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
03ef600623704e6dbf6ef0322062395e7b70bcd2 16-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove floats from live range splitting costs.

These floats all represented block frequencies anyway, so just use the
BlockFrequency class directly.

Some floating point computations remain in tryLocalSplit(). They are
estimating spill weights which are still floats.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186435 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
pillPlacement.h
6d9fe79afe3a325fb05165758a20470475aca8e6 16-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Reapply r185393.

Original commit message:

Remove floating point computations from SpillPlacement.cpp.

Patch by Benjamin Kramer!

Use the BlockFrequency class instead of floats in the Hopfield network
computations. This rescales the node Bias field from a [-2;2] float
range to two block frequencies BiasN and BiasP pulling in opposite
directions. This construct has a more predictable behavior when block
frequencies saturate.

The per-node scaling factors are no longer necessary, assuming the block
frequencies around a bundle are consistent.

This patch can cause the register allocator to make different spilling
decisions. The differences should be small.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186434 91177308-0d34-0410-b5e6-96231b3b80d8
pillPlacement.cpp
pillPlacement.h
4172a8abbabea2359d91bb07101166565127d798 16-Jul-2013 Craig Topper <craig.topper@gmail.com> Add 'const' qualifiers to static const char* variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186371 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
519127f758fc4515adb06d52a4c2c1ae1a968879 16-Jul-2013 Manman Ren <mren@apple.com> PEI: Support for non-zero SPAdj at beginning of a basic block.

We can have a FrameSetup in one basic block and the matching FrameDestroy
in a different basic block when we have struct byval. In that case, SPAdj
is not zero at beginning of the basic block.

Modify PEI to correctly set SPAdj at beginning of each basic block using
DFS traversal. We used to assume SPAdj is 0 at beginning of each basic block.

PEI had an assert SPAdjCount || SPAdj == 0.
If we have a Destroy <n> followed by a Setup <m>, PEI will assert failure.
We can add an extra condition to make sure the pairs are matched:
The pairs start with a FrameSetup.
But since we are doing a much better job in the verifier, this patch removes
the check in PEI.

PR16393


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186364 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
7310b75c8b6cc0f73d114dc0beccbb96a6942547 15-Jul-2013 Manman Ren <mren@apple.com> Machine Verifier: verify FrameSetup and FrameDestroy

1> on every path through the CFG, a FrameSetup <n> is always followed by a
FrameDestroy <n> and a FrameDestroy is always followed by a FrameSetup.
2> stack adjustments are identical on all CFG edges to a merge point.
3> frame is destroyed at end of a return block.

PR16393


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186350 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
d1654a769c06d20595398565de055b5ab3ede1f9 15-Jul-2013 Hal Finkel <hfinkel@anl.gov> Remove invalid assert in DAGTypeLegalizer::RemapValue

There is a comment at the top of DAGTypeLegalizer::PerformExpensiveChecks
which, in part, says:

// Note that these invariants may not hold momentarily when processing a node:
// the node being processed may be put in a map before being marked Processed.

Unfortunately, this assert would be valid only if the above-mentioned invariant
held unconditionally. This was causing llc to assert when, in fact,
everything was fine.

Thanks to Richard Sandiford for investigating this issue!

Fixes PR16562.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186338 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
3c70fcf02b367f517e93c1bd4ce237966383ebf8 15-Jul-2013 Craig Topper <craig.topper@gmail.com> Add 'const' qualifier to some arrays.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186312 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
4d138ba0438225630bcd1700b3d07e81c315acea 15-Jul-2013 Eric Christopher <echristo@gmail.com> Clarify comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186297 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
010dbfdf9357f7db9dd93af35d6454919f7988f9 14-Jul-2013 Eric Christopher <echristo@gmail.com> Collapse temporary variable into call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186295 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
83d63f8a4dca45d1bba13710c26b4173ace58a65 14-Jul-2013 Tobias Grosser <grosser@fim.uni-passau.de> Fix build by replacing '>>' with '> >'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186276 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
a0ec3f9b7b826b9b40b80199923b664bad808cce 14-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186274 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
achineCSE.cpp
achineSSAUpdater.cpp
achineSink.cpp
rologEpilogInserter.h
egAllocFast.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
hrinkWrapping.cpp
tackSlotColoring.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
6c64fba6336a00e56d2428c45400c406b586f7f7 13-Jul-2013 Craig Topper <craig.topper@gmail.com> Pass SmallVector by const reference instead of by value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186243 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
12c74dc2c2ee306f60fb39a9b2a43000e23addcc 13-Jul-2013 Chandler Carruth <chandlerc@gmail.com> Revert commit r186217 -- this is breaking bots:

http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/4328

Original commit log:
Use the function attributes to pass along the stack protector buffer
size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186234 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
8a50013cc23810aa3e1ac8da66764fbb2d96147e 13-Jul-2013 Bill Wendling <isanbard@gmail.com> Use the function attributes to pass along the stack protector buffer size.

Now that we have robust function attributes, don't use a command line option to
specify the stack protecto buffer size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186217 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
c0a11edba6ea46c782672ab3fb4e4ab3dc267a22 12-Jul-2013 Arnold Schwaighofer <aschwaighofer@apple.com> TargetTransformInfo: address calculation parameter for gather/scather

Address calculation for gather/scather in vectorized code can incur a
significant cost making vectorization unbeneficial. Add infrastructure to add
cost.
Tests and cost model for targets will be in follow-up commits.

radar://14351991

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186187 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
da07e9df843015f8c306ed7863dbb8c8055fd85f 12-Jul-2013 Manman Ren <mren@apple.com> PEI: refactor replaceFrameIndices(MF) to call replaceFrameIndices(BB).

replaceFrameIndices(MF) will iterate over the BBs and call
replaceFrameIndices(BB). No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186141 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
9e639e8fd95488cb4c8ef2f7f3a41919acb29ac4 11-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186098 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveVariables.cpp
achineLICM.cpp
6cf88c985023bf76d6160a68bc75489465ac15b0 11-Jul-2013 Hal Finkel <hfinkel@anl.gov> Initialize AsmPrinter::MF in the constructor

MF is normally initialized in AsmPrinter::SetupMachineFunction, but if the file
contains only globals (no functions), then we need this to be initialized
because, when encountering an error, lowerConstant() references it.

This should fix the non-deterministic failures of
test/CodeGen/X86/nonconst-static-iv.ll, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186068 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
838a7fb1a3bc514f062a44565f6680b7aeee6a87 11-Jul-2013 Hal Finkel <hfinkel@anl.gov> RegScavenger should not exclude undef uses

When computing currently-live registers, the register scavenger excludes undef
uses. As a result, undef uses are ignored when computing the restore points of
registers spilled into the emergency slots. While the register scavenger
normally excludes from consideration, when scavenging, registers used by the
current instruction, we need to not exclude undef uses. Otherwise, we might end
up requiring more emergency spill slots than we have (in the case where the
undef use *is* the currently-spilled register).

Another bug found by llvm-stress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186067 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
75d13065fda4b470f272311520f5dfe6c11460ce 10-Jul-2013 Stephen Lin <stephenwlin@gmail.com> Remove trailing whitespac


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186032 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
43ae5e85f829df883dd364c0b9612bbe90f3ad97 10-Jul-2013 Adrian Prantl <aprantl@apple.com> Use the appropriate unsigned int type for the offset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186015 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
4759f26c31d5544c5e1c13edb8ab013be9a95338 10-Jul-2013 Adrian Prantl <aprantl@apple.com> Safeguard DBG_VALUE handling. Unbreaks the ASAN buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186014 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
45ff709caf46d9f472c9229493853dec27477935 10-Jul-2013 Adrian Prantl <aprantl@apple.com> Un-break the buildbot by tweaking the indirection flag.
Pulled in a testcase from the debuginfo-test suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185993 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
893ae83f421c20cf34622b355c5aaba32b2c019a 10-Jul-2013 Adrian Prantl <aprantl@apple.com> Document a known limitation of the status quo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
61c91d5d7c3b40837e5512b53b15b3e3a65833fa 10-Jul-2013 Eric Christopher <echristo@gmail.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185984 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
b2754919ca52316755f5ce70f53db9966bee42b5 09-Jul-2013 Adrian Prantl <aprantl@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185971 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
3517640443f0b5224e2a6414c246ac60016ee9d4 09-Jul-2013 Adrian Prantl <aprantl@apple.com> Reapply an improved version of r180816/180817.

Change the informal convention of DBG_VALUE machine instructions so that
we can express a register-indirect address with an offset of 0.
The old convention was that a DBG_VALUE is a register-indirect value if
the offset (operand 1) is nonzero. The new convention is that a DBG_VALUE
is register-indirect if the first operand is a register and the second
operand is an immediate. For plain register values the combination reg,
reg is used. MachineInstrBuilder::BuildMI knows how to build the new
DBG_VALUES.

rdar://problem/13658587

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185966 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
iveDebugVariables.cpp
egAllocFast.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
b9c8c40acbe120ebf44d2a81382ceee100bcd331 09-Jul-2013 Hal Finkel <hfinkel@anl.gov> WidenVecRes_BUILD_VECTOR must use the first operand's type

Because integer BUILD_VECTOR operands may have a larger type than the result's
vector element type, and all operands must have the same type, when widening a
BUILD_VECTOR node by adding UNDEFs, we cannot use the vector element type, but
rather must use the type of the existing operands.

Another bug found by llvm-stress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185960 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
e54885af9b54bfc7436a928a48d3db1ef88a2a70 09-Jul-2013 Stephen Lin <stephenwlin@gmail.com> AArch64/PowerPC/SystemZ/X86: This patch fixes the interface, usage, and all
in-tree implementations of TargetLoweringBase::isFMAFasterThanMulAndAdd in
order to resolve the following issues with fmuladd (i.e. optional FMA)
intrinsics:

1. On X86(-64) targets, ISD::FMA nodes are formed when lowering fmuladd
intrinsics even if the subtarget does not support FMA instructions, leading
to laughably bad code generation in some situations.

2. On AArch64 targets, ISD::FMA nodes are formed for operations on fp128,
resulting in a call to a software fp128 FMA implementation.

3. On PowerPC targets, FMAs are not generated from fmuladd intrinsics on types
like v2f32, v8f32, v4f64, etc., even though they promote, split, scalarize,
etc. to types that support hardware FMAs.

The function has also been slightly renamed for consistency and to force a
merge/build conflict for any out-of-tree target implementing it. To resolve,
see comments and fixed in-tree examples.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185956 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGBuilder.cpp
bd6f1f6896275e04ce46c9ef82fd96e2e6c125dd 09-Jul-2013 Hal Finkel <hfinkel@anl.gov> DAGCombine tryFoldToZero cannot create illegal types after type legalization

When folding sub x, x (and other similar constructs), where x is a vector, the
result is a vector of zeros. After type legalization, make sure that the input
zero elements have a legal type. This type may be larger than the result's
vector element type.

This was another bug found by llvm-stress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185949 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9467b3e0ac593571a205041c129ed5ae11bf9d1f 09-Jul-2013 Alexander Potapenko <glider@google.com> Revert r185872 - "Stop emitting weak symbols into the "coal" sections"

This patch broke `make check-asan` on Mac, causing ld warnings like the following one:

ld: warning: direct access in __GLOBAL__I_a to global weak symbol
___asan_mapping_scale means the weak symbol cannot be overridden at
runtime. This was likely caused by different translation units being
compiled with different visibility settings.

The resulting test binaries crashed with incorrect ASan warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185923 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
b49401533082fa0e8625c7cbaa0813db6c4c9bd5 09-Jul-2013 Stephen Lin <stephenwlin@gmail.com> Style fixes: remove unnecessary braces for one-statement if blocks, no else after return, etc. No funcionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185893 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8722e25715f9c56a1f2a03587211f2b0d98b330d 08-Jul-2013 Bill Wendling <isanbard@gmail.com> Stop emitting weak symbols into the "coal" sections.

The Mach-O linker has been able to support the weak-def bit on any symbol for
quite a while now. The compiler however continued to place these symbols into a
"coal" section, which required the linker to map them back to the base section
name.

Replace the sections like this:

__TEXT/__textcoal_nt instead use __TEXT/__text
__TEXT/__const_coal instead use __TEXT/__const
__DATA/__datacoal_nt instead use __DATA/__data

<rdar://problem/14265330>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185872 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
cced21285126ec09ecb021e353b54d47073cddf1 08-Jul-2013 Eric Christopher <echristo@gmail.com> Update comment to avoid mentioning DbgValues which is an instance
variable later in the class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185866 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
d03d2b243a1c3b32a19ed4f387ac9d66febf8c2c 08-Jul-2013 Manman Ren <mren@apple.com> Debug Info: clean up usage of Verify.

No functionality change. It should suffice to check the type of a debug info
metadata, instead of calling Verify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185847 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
66f464ee266b31bb02058c49a5abe3a6b77f080b 08-Jul-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Correct comment & re-format a nearby loop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185844 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5ce4091a68936b94c1f8858a101e61e65f71a23b 08-Jul-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Simplify Address Pool index handling.

Since the pool indexes are necessarily sequential and contiguous, just
insert things in the right place rather than having to sort the sequence
after the fact.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185842 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6c75160b875799a9303879e11022edf4ba44c3f9 08-Jul-2013 Hal Finkel <hfinkel@anl.gov> Improve the comment from r185794 (re: PromoteIntRes_BUILD_VECTOR)

In response to Duncan's review, I believe that the original comment was not as
clear as it could be. Hopefully, this is better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
63e7a38c8980d70197ecdb9ba54b79b87c7b064d 08-Jul-2013 Hal Finkel <hfinkel@anl.gov> Fix PromoteIntRes_BUILD_VECTOR crash with i1 vectors

This fixes a bug (found by llvm-stress) in
DAGTypeLegalizer::PromoteIntRes_BUILD_VECTOR where it assumed that the result
type would always be larger than the original operands. This is not always
true, however, with boolean vectors. For example, promoting a node of type v8i1
(where the operands will be of type i32, the type to which i1 is promoted) will
yield a node with a result vector element type of i16 (and operands of type
i32). As a result, we cannot blindly assume that we can ANY_EXTEND the operands
to the result type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185794 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
113d32cea868bd1749b4cdc8d1e52d9dccb8b5a2 08-Jul-2013 Kai Nacke <kai.nacke@redstar.de> Revert: Emit personality function and Dwarf EH data for Win64 SEH.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185788 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Win64Exception.cpp
04b84c2f92b8c9cf863853eca33f47f9fbd80fd1 08-Jul-2013 Hal Finkel <hfinkel@anl.gov> Add the nearbyint -> FNEARBYINT mapping to BasicTargetTransformInfo

This fixes an oversight that Intrinsic::nearbyint was not being mapped to
ISD::FNEARBYINT (thus fixing the over-optimistic cost we were assigning to
nearbyint calls for some targets).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185783 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
155615d7dc4e4fbfd3b7273720a76356468edf46 08-Jul-2013 Stephen Lin <stephenwlin@gmail.com> Remove trailing whitespace from SelectionDAG/*.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185780 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
09f8ca3986cbe89d897765926462476f345a25d0 06-Jul-2013 Stephen Lin <stephenwlin@gmail.com> SelectionDAGBuilder: style fixes (add space between end parentheses and open brace)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
28bb04453d82bd680e84cd2617ce94f633dc3249 06-Jul-2013 Kai Nacke <kai.nacke@redstar.de> Emit personality function and Dwarf EH data for Win64 SEH.

Obviously the personality function should be emitted as language handler
instead of the hard coded _GCC_specific_handler. The language specific
data must be placed after the unwind information therefore it must not
be emitted into a separate section.

Reviewed by Charles Davis and Nico Rieck.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185761 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Win64Exception.cpp
f4eeab452ad4093986359c78a57321df12df99b0 06-Jul-2013 Benjamin Kramer <benny.kra@googlemail.com> DAGCombiner: Don't drop extension behavior when shrinking a load when unsafe.

ReduceLoadWidth unconditionally drops extensions from loads. Limit it to the
case when all of the bits the extension would otherwise produce are dropped by
the shrink. It would be possible to shrink the load in more cases by merging
the extensions, but this isn't trivial and a very rare case. I left a TODO for
that case.

Fixes PR16551.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185755 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e5a81a130f26b0b2651ad6a22e3748703b11cb46 06-Jul-2013 Tim Northover <tnorthover@apple.com> Stop putting operations after a tail call.

This prevents the emission of DAG-generated vreg definitions after a
tail call be dropping them entirely (on the grounds that nothing could
use them anyway, and they interfere with O0 CodeGen).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185754 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
80646283796b20c6a1b7d8eb69ce6f0478d54383 06-Jul-2013 Nico Rieck <nico.rieck@gmail.com> MC: Implement COFF .linkonce directive

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185753 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
202eb7b18e220205ec86a03ddf18f2066c70ab15 06-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Use modern API to avoid exposing LiveInterval internals.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185733 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
1f2415efc3e9f0eb9d50367979d9c8dd6d784658 06-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove dead function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185731 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
71804149a3a6f6c081b874869b27fafe7d3288ce 05-Jul-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> [SystemZ] Remove no-op MVCs

The stack coloring pass has code to delete stores and loads that become
trivially dead after coloring. Extend it to cope with single instructions
that copy from one frame index to another.

The testcase happens to show an example of this kicking in at the moment.
It did occur in Real Code too though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185705 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
5f1c7e5eac78349acfd6be1f9f03ccef3ba51d59 05-Jul-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> Fix double renaming bug in stack coloring pass

The stack coloring pass renumbered frame indexes with a loop of the form:

for each frame index FI
for each instruction I that uses FI
for each use of FI in I
rename FI to FI'

This caused problems if an instruction used two frame indexes F0 and F1
and if F0 was renamed to F1 and F1 to F2. The first time we visited the
instruction we changed F0 to F1, then we changed both F1s to F2.

In other words, the problem was that SSRefs recorded which instructions
used an FI, but not which MachineOperands and MachineMemOperands within
that instruction used it.

This is easily fixed for MachineOperands by walking the instructions
once and processing each operand in turn. There's already a loop to
do that for dead store elimination, so it seemed more efficient to
fuse the two at the block level.

MachineMemOperands are more tricky because they can be shared between
instructions. The patch handles them by making SSRefs an array of
MachineMemOperands rather than an array of MachineInstrs. We might end
up processing the same MachineMemOperand twice, but that's OK because
we always know from the SSRefs index what the original frame index was.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185703 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
7271ac2c0318043688ddc8686dd23777dca62c59 05-Jul-2013 Richard Sandiford <rsandifo@linux.vnet.ibm.com> [SystemZ] Clean up register scavenging code

SystemZ wants normal register scavenging slots, as close to the stack or
frame pointer as possible. The only reason it was using custom code was
because PrologEpilogInserter assumed an x86-like layout, where the frame
pointer is at the opposite end of the frame from the stack pointer.
This meant that when frame pointer elimination was disabled,
the slots ended up being as close as possible to the incoming
stack pointer, which is the opposite of what we want on SystemZ.

This patch adds a new knob to say which layout is used and converts
SystemZ to use target-independent scavenging slots. It's one of the pieces
needed to support frame-to-frame MVCs, where two slots might be required.

The ABI requires us to allocate 160 bytes for calls, so one approach
would be to use that area as temporary spill space instead. It would need
some surgery to make sure that the slot isn't live across a call though.

I stuck to the "isFPCloseToIncomingSP - ..." style comment on the
"do what the surrounding code does" principle. The FP case is already
covered by several Systemz/frame-* tests, which fail without the
PrologueEpilogueInserter change, so no new ones are needed.

No behavioural change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185696 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
b6566aee3037f2d6e6837a93e0f766972179ed74 05-Jul-2013 Benjamin Kramer <benny.kra@googlemail.com> Simplify code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185689 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
25746ddd66651bdad159444d0331b7df4dc22842 04-Jul-2013 Nico Rieck <nico.rieck@gmail.com> Initialize object file info before output streamer

r179494 switched to using the object file info to retrieve the default text
section for some MC streamers. It is possible that initializing an MC
streamer can request sections before the object file info is initialized
when the AutoInitSections flag is set on the streamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185670 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f349a6e9e6ee0b589c403e0c5785266da121d05c 04-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the EXCEPTIONADDR, EHSELECTION, and LSDAADDR ISD opcodes.

These exception-related opcodes are not used any longer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185625 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGDumper.cpp
1ab111ed01457887a8dece6fb36336aff41cc703 04-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185618 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
918b7c82f8f53241a5bb354931abfe53634bfc4c 04-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify landing pad lowering.

Stop using the ISD::EXCEPTIONADDR and ISD::EHSELECTION when lowering
landing pad arguments. These nodes were previously legalized into
CopyFromReg nodes, but that never worked properly because the
CopyFromReg node weren't guaranteed to be scheduled at the top of the
basic block.

This meant the exception pointer and selector registers could be
clobbered before being copied to a virtual register.

This patch copies the two physical registers to virtual registers at
the beginning of the basic block, and lowers the landingpad instruction
directly to two CopyFromReg nodes reading the *virtual* registers. This
is safe because virtual registers don't get clobbered.

A future patch will remove the ISD::EXCEPTIONADDR and ISD::EHSELECTION
nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185617 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
ef22e0e0b583e727f01ae70d51a143172eb31814 04-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> FastISel can only apend to basic blocks.

Compute the insertion point from the end of the basic block instead of
skipping labels from the front.

This caused failures in landing pads when live-in copies where inserted
before instruction selection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185616 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c982e14458ab098dcc08da5a3e8a88f07018dfbd 04-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Live-in copies go *after* EH_LABELs.

This will soon be tested by exception handling working at all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185615 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
c93822901aef17aaf8bb1303f27b47025fd1d582 04-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r185595-185596 which broke buildbots.

Revert "Simplify landing pad lowering."
Revert "Remove the EXCEPTIONADDR, EHSELECTION, and LSDAADDR ISD opcodes."

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185600 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGDumper.cpp
electionDAG/SelectionDAGISel.cpp
62204220e1dc2dc21256adf765728ae257b33eac 04-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the EXCEPTIONADDR, EHSELECTION, and LSDAADDR ISD opcodes.

These exception-related opcodes are not used any longer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185596 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGDumper.cpp
9c0e9217325db888331c23ad7c332c09d64b02d4 04-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify landing pad lowering.

Stop using the ISD::EXCEPTIONADDR and ISD::EHSELECTION when lowering
landing pad arguments. These nodes were previously legalized into
CopyFromReg nodes, but that never worked properly because the
CopyFromReg node weren't guaranteed to be scheduled at the top of the
basic block.

This meant the exception pointer and selector registers could be
clobbered before being copied to a virtual register.

This patch copies the two physical registers to virtual registers at
the beginning of the basic block, and lowers the landingpad instruction
directly to two CopyFromReg nodes reading the *virtual* registers. This
is safe because virtual registers don't get clobbered.

A future patch will remove the ISD::EXCEPTIONADDR and ISD::EHSELECTION
nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185595 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
f64765244512250b28b1fbe290b1b26d17e41dd4 04-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineBasicBlock::addLiveIn().

This function adds a live-in physical register to an MBB and ensures
that it is copied to a virtual register immediately.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185594 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
7c2f3e8944717239b6031ebc778de4547e1449e2 04-Jul-2013 Eric Christopher <echristo@gmail.com> Hoist all of the Entry.getLoc() calls int a single variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185589 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0d0782ae9325033176d1a9fc0912217b5c580cb5 04-Jul-2013 Eric Christopher <echristo@gmail.com> Make DotDebugLocEntry a class, reorder the members along with comments
for them and update all uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185588 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
4e976457eb2e777dcd515a7b82e62161552a2466 03-Jul-2013 Eric Christopher <echristo@gmail.com> Elaborate on comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185586 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3a1812d1fea48cac278afbc6bd5593e6bb07e2a4 03-Jul-2013 Eric Christopher <echristo@gmail.com> Add names to the header file since they help in documenting the API
(and for consistency).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185585 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
08ebdc73de5e3396bc17b928ad16af523837e660 03-Jul-2013 Eric Christopher <echristo@gmail.com> Move typedefs inside the class that they belong to.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185573 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
52f5a65f847c9eb2a80f4de0e5f21e711c4a7af4 03-Jul-2013 Eric Christopher <echristo@gmail.com> Remove unused field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185523 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
6af85aec4a8fe01c6b534ef1120822fe792d1cb6 03-Jul-2013 Eric Christopher <echristo@gmail.com> Constify a few functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185520 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
32bdf82b9fbe88687be160863a6d221fe692c58b 03-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl::const_iterator instead of SmallVector to avoid specifying the vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185514 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
78477ffdfd63ddf1ba22d9d2121c8f6ed9f9efa1 03-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl instead of SmallVector as method argument to avoid specifying vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185513 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
f22fd3f7b557a967b1edc1fa9ae770006a39e97c 03-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl instead of SmallVector for iterators and references to avoid specifying the vector size unnecessarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185512 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
xecutionDepsFix.cpp
iveVariables.cpp
achineSink.cpp
asses.cpp
rologEpilogInserter.cpp
egisterScavenging.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
tackColoring.cpp
tackSlotColoring.cpp
40c744ee33e5a13466de2fff4e9c355b6ce0b999 03-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185509 91177308-0d34-0410-b5e6-96231b3b80d8
exicalScopes.cpp
01eb99af2f2196241801b12f8ad841a2db346472 03-Jul-2013 Craig Topper <craig.topper@gmail.com> Introduce some typedefs for DenseMaps containing SmallVectors so the vector size doesn't have to repeated when creating iterators for the DenseMap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185508 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9f4c37915fbf11d16ed609ac016595387860ac3a 03-Jul-2013 Craig Topper <craig.topper@gmail.com> Return SmallVectorImpl& instead of SmallVector& in a couple places to avoid having to specify the vector size in multiple places.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185507 91177308-0d34-0410-b5e6-96231b3b80d8
exicalScopes.cpp
9f43ac6cd3bfd10afb77614766b5c874cb5c6073 03-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl& instead of SmallVector& to avoid needlessly respecifying the small vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185505 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2d785dbace6986f09a110ccb5b5cd65932b6b732 03-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185504 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e717713547f1b1b61315cf1bed775ede3d231a4e 03-Jul-2013 Eric Christopher <echristo@gmail.com> Avoid doing a lot of computation when we have multiple ranges and
avoid adding information for the debug_inlined section when it isn't
going to be emitted anyhow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185500 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f53d643bd9f9e0d13214f78274fc021d6c03765d 03-Jul-2013 Eric Christopher <echristo@gmail.com> Move iterator to where it's used and update comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185498 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c9c17a8e4f7d11061fef4e644ba870c2fb47118b 03-Jul-2013 Eric Christopher <echristo@gmail.com> Move instance variable before experimental section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185497 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
aa30a0cf9b646b533c60254bf8113fe5e163afd3 03-Jul-2013 Eric Christopher <echristo@gmail.com> Fix typo to make grep for DW_AT_comp_dir work without case-insensitive
grep.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185496 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
015343eb7ca02f8f31117889f46e0badc7eb9aba 03-Jul-2013 Eric Christopher <echristo@gmail.com> Remove unnecessary forward declare.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185495 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
da965defb86fdc9430d40c291e770a6219698de6 03-Jul-2013 Eric Christopher <echristo@gmail.com> Add a helpful comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185492 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e4721495b68d770a529b6e1c6cc33655db29c0e2 03-Jul-2013 Eric Christopher <echristo@gmail.com> addConstantValue, addConstantFPValue never returned anything but
true, so remove the return value and propagate accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185490 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
0e6783feed2f0f572a002bda38707fcd3267916d 03-Jul-2013 Manman Ren <mren@apple.com> Debug Info: use module flag to set up Dwarf version.

Correctly handles ref_addr depending on the Dwarf version. Emit Dwarf with
version from module flag.

TODO: turn on/off features depending on the Dwarf version.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185484 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d3b98530c55ab695ab02426a804ee0ca09f890b6 02-Jul-2013 Eric Christopher <echristo@gmail.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185480 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
716a94f0c96d6bef575cd286bafb2cc507adc6b0 02-Jul-2013 Ulrich Weigand <ulrich.weigand@de.ibm.com> [DebugInfo] Allow getDebugThreadLocalSymbol to return MCExpr

This allows getDebugThreadLocalSymbol to return a generic MCExpr
instead of just a MCSymbolRefExpr.

This is in preparation for supporting debug info for TLS variables
on PowerPC, where we need to describe the variable location using
a more complex expression than just MCSymbolRefExpr.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185460 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
18dbe5029f36a5a5d583295daa4ef6d6f5474c25 02-Jul-2013 Ulrich Weigand <ulrich.weigand@de.ibm.com> [DebugInfo] Hold generic MCExpr in AddrPool

This changes the AddrPool infrastructure to enable it to hold
generic MCExpr expressions, not just MCSymbolRefExpr.

This is in preparation for supporting debug info for TLS variables
on PowerPC, where we need to describe the variable location using
a more complex expression than just MCSymbolRefExpr.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185459 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1f8aacd6afdc30b4d1cf1da3bf5e41c7874f89be 02-Jul-2013 Ulrich Weigand <ulrich.weigand@de.ibm.com> [DebugInfo] Introduce DIEExpr variant of DIEValue to hold MCExpr values

This partially reverts r185202 and restores DIELabel to hold plain
MCSymbol references. Instead, we add a new subclass DIEExpr of
DIEValue that can hold generic MCExpr references.

This is in preparation for supporting debug info for TLS variables
on PowerPC, where we need to describe the variable location using
a more complex expression than just MCSymbolRefExpr.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185458 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
92879a8cb1490c90bf952a17a110dc45063832b0 02-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert (most of) r185393 and r185395.

"Remove floating point computations form SpillPlacement.cpp."

These commits caused test failures in lencod on clang-native-arm-lnt.

I suspect these changes are only exposing an existing issue, but
reverting anyway to keep the bots passing while we investigate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185447 91177308-0d34-0410-b5e6-96231b3b80d8
pillPlacement.cpp
pillPlacement.h
a3863ea2dacafc925a8272ebf9884fc64bef686c 02-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove address spaces from MC.

This is dead code since PIC16 was removed in 2010. The result was an odd mix,
where some parts would carefully pass it along and others would assert it was
zero (most of the object streamer for example).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185436 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
5bce67a95feb136389ca630cc5dd6a81e97ff1eb 02-Jul-2013 Tim Northover <tnorthover@apple.com> DAGCombiner: fix use-counting issue when forming zextload

DAGCombiner was counting all uses of a load node when considering whether it's
worth combining into a zextload. Really, it wants to ignore the chain and just
count real uses.

rdar://problem/13896307

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8fed05ec1ba90c688d71323fe8a1c3070adf58cf 02-Jul-2013 David Blaikie <dblaikie@gmail.com> PR14728: DebugInfo: TLS variables with -gsplit-dwarf

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185398 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
7babb052a68a35a7b21906280e67f06502846f9d 02-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Tweak some comments that referred to the old bias computations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185395 91177308-0d34-0410-b5e6-96231b3b80d8
pillPlacement.cpp
74d2a3e1a014b93e9037a7b04e85dc92bfb54fa7 02-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove floating point computations form SpillPlacement.cpp.

Patch by Benjamin Kramer!

Use the BlockFrequency class instead of floats in the Hopfield network
computations. This rescales the node Bias field from a [-2;2] float
range to two block frequencies BiasN and BiasP pulling in opposite
directions. This construct has a more predictable behavior when block
frequencies saturate.

The per-node scaling factors are no longer necessary, assuming the block
frequencies around a bundle are consistent.

This patch can cause the register allocator to make different spilling
decisions. The differences should be small.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185393 91177308-0d34-0410-b5e6-96231b3b80d8
pillPlacement.cpp
pillPlacement.h
a35ae962918258207f9092ccbdf4fffa1f2c70f1 01-Jul-2013 David Blaikie <dblaikie@gmail.com> PR16493: DebugInfo with TLS on PPC crashing due to invalid relocation

Restrict the current TLS support to X86 ELF for now. Test that we don't
produce it on PPC & we can flesh that test case out with the right thing
once someone implements it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185389 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
781f5b3953a6ffcf878cebecf1f121a237eff5ba 01-Jul-2013 Lang Hames <lhames@gmail.com> Make PBQP require/preserve MachineLoopInfo - the spiller requires it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185378 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
f807a6ee3a6c7365ffdf07510767b13a5a7df93c 01-Jul-2013 Cameron Zwarich <zwarich@apple.com> Fix the build after r185363. Use llvm::next instead of raw next.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185367 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
03fae50cfa5631349fbd47f4c232fc78f5b3b8af 01-Jul-2013 Cameron Zwarich <zwarich@apple.com> Fix PR16508.

When phis get lowered, destination copies are inserted using an iterator that is
determined once for all phis in the block, which BuildMI interprets as a request
to insert an instruction directly before the iterator. In the case of a cyclic
phi, source copies may also be inserted directly before this iterator, which can
cause source copies to be inserted before destination copies. The fix is to keep
an iterator to the last phi and then advance it while lowering each phi in order
to insert destination copies directly after the phis.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185363 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
48b4d4f6474ace31c05507f3988c55de9601cc5b 01-Jul-2013 Michael Gottesman <mgottesman@apple.com> Added c++ mode selector to head of SelectionDAGBuilder.h so editors open it in c++ mode instead of c mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.h
04d5613162fb39649ab6a1e645864574d4836511 29-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> misched: Compress pairs returned by getUnderlyingObjectsForInstr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185266 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
59eaa3874663f80ce111a4781b8f1db82995210c 28-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: PR14728: TLS support

Based on GCC's output for TLS variables (OP_constNu, x@dtpoff,
OP_lo_user), this implements debug info support for TLS in ELF. Verified
that this output is correct/sufficient on Linux (using gold - if you're
using binutils-ld, you'll need something with the fix for
http://sourceware.org/bugzilla/show_bug.cgi?id=15685 in it).

Support on non-ELF is sort of "arbitrary" at the moment - if Apple folks
want to discuss (or just go ahead & implement) how this should work in
MachO, etc, I'm open.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185203 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
argetLoweringObjectFileImpl.cpp
95e72c90e4e2ee64e12d898f6495e796ebcadaf8 28-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Pass MCSymbolRefExprs for labels instead of MCSymbols

This is a precursor to adding debug info support for TLS which requires
non-default relocations applied to TLS symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185202 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
1ca79907ef144358f16bb8abea849e806ca31134 28-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Revise r185189 to avoid subtle 'unsigned += bool'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185190 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1c736322a25d3a6fe4623daab7052e8b9d297223 28-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Simplify the AddressPool representation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185189 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
321d83ba9e6e4e99700dcfb96fdcebe758e51905 28-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: constify the AddressPool MCSymbol pointers

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185188 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
dfccd9ee98cd6590bd82fa6edf24d510d953a2a0 28-Jun-2013 Lang Hames <lhames@gmail.com> Add missing case to switch statement - DAGTypeLegalizer::ExpandIntegerResult
should expand ATOMIC_CMP_SWAP nodes the same way that it does for ATOMIC_SWAP.

Since ATOMIC_LOADs on some targets (e.g. older ARM variants) get legalized to
ATOMIC_CMP_SWAPs, the missing case had been causing i64 atomic loads to crash
during isel.

<rdar://problem/14074644>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185186 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
cbafae6d33031a72ba8219c28cb0e852511f79a3 28-Jun-2013 Manman Ren <mren@apple.com> Debug Info: clean up usage of Verify.

No functionality change.
It should suffice to check the type of a debug info metadata, instead of
calling Verify. For cases where we know the type of a DI metadata, use
assert.

Also update testing cases to make them conform to the format of DI classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185135 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGDumper.cpp
88d93a7cc4546439c82490db20c71b4b702dcc7a 27-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185072 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
d8026708ef9c1ebb326426d207cf79cba7ff09b3 26-Jun-2013 Elena Demikhovsky <elena.demikhovsky@intel.com> Fixed a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184933 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
87070fe1073b1e95748d987af0810d02aac43603 26-Jun-2013 Elena Demikhovsky <elena.demikhovsky@intel.com> Optimized integer vector multiplication operation by replacing it with shift/xor/sub when it is possible. Fixed a bug in SDIV, where the const operand is not a splat constant vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184931 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2560e242c87b205143ca5e0e87a216e06f51a434 25-Jun-2013 Manman Ren <mren@apple.com> Remove unused code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184866 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
75b51621540c23ddfc1e9ef6b4dc803453d9d122 25-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> BlockFrequency: Bump up the entry frequency a bit.

This is a band-aid to fix the most severe regressions we're seeing from basing
spill decisions on block frequencies, until we have a better solution.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184835 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockFrequencyInfo.cpp
fdfc81f142b3870c757bb9f06e440e843cb3a57f 25-Jun-2013 Eric Christopher <echristo@gmail.com> 80-column and tab character fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184792 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/DwarfDebug.cpp
afbe0e266cc3bcb6dcb318166f4a2f998cefd9b1 24-Jun-2013 Eric Christopher <echristo@gmail.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184788 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
f61dbc15750f0b1a9a089ac91e6f5e7235335c25 24-Jun-2013 Eric Christopher <echristo@gmail.com> Use const references instead of pointers to references that are
never modified. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184781 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
f7b5e016363b664461f33a4a391b27bea637209d 24-Jun-2013 Andrew Trick <atrick@apple.com> Fix tail merging to assign the (more) correct BasicBlock when splitting.

This makes it possible to write unit tests that are less susceptible
to minor code motion, particularly copy placement. block-placement.ll
covers this case with -pre-RA-sched=source which will soon be
default. One incorrectly named block is already fixed, but without
this fix, enabling new coalescing and scheduling would cause more
failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184680 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
fe2e66a6dab6162fb10ed2d576cd122f34d2626f 23-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: PR14404: Avoid truncating 64 bit values into 32 bits for ULEB128/SLEB128 generation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184669 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
e88939cfebbc98133553c6fc03a52b8fb1adbb70 22-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Support (using GNU extensions) for template template parameters and parameter packs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184643 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
5b3fca50a08865f0db55fc92ad1c037a04e12177 22-Jun-2013 Chad Rosier <mcrosier@apple.com> The getRegForInlineAsmConstraint function should only accept MVT value types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184642 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
529616299f109f58e2a8217a1a760ba961266459 22-Jun-2013 Andrew Trick <atrick@apple.com> Prevent LiveRangeEdit from deleting bundled instructions.

We have no targets on trunk that bundle before regalloc. However, we
have been advertising regalloc as bundle safe for use with out-of-tree
targets. We need to at least contain the parts of the code that are
still unsafe.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184620 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
1948910e3186d31bc0d213ecd0d7e87bb2c2760d 22-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Don't lose unreferenced non-trivial by-value parameters

A FastISel optimization was causing us to emit no information for such
parameters & when they go missing we end up emitting a different
function type. By avoiding that shortcut we not only get types correct
(very important) but also location information (handy) - even if it's
only live at the start of a function & may be clobbered later.

Reviewed/discussion by Evan Cheng & Dan Gohman.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
2da863984bdd0123fa53ab3f5439d239a5a9e419 21-Jun-2013 Michael Liao <michael.liao@intel.com> Fix PR16360

When (srl (anyextend x), c) is folded into (anyextend (srl x, c)), the
high bits are not cleared. Add 'and' to clear off them.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184575 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c12c880998a0be9de2d20f7855029ef743570a06 21-Jun-2013 Andrew Trick <atrick@apple.com> Update physreg live intervals during remat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184574 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
c6bae79adb6a58be629804d058abb5613e561b5a 21-Jun-2013 Andrew Trick <atrick@apple.com> Added -precompute-phys-liveness for testing LiveIntervals updates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184573 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
03dca5e4b6c41e1e7fa4edad3d7ff8d5f6de7008 21-Jun-2013 Andrew Trick <atrick@apple.com> Handle more cases in LiveRangeEdit::eliminateDeadDefs.

Live intervals for dead physregs may be created during coalescing. We
need to update these in the event that their instruction goes away.

crash.ll is the unit test that catches it when MI sched is enabled on
X86.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184572 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
f1f99f394f367845c4f4528d4d2bce42e65a5f50 21-Jun-2013 Andrew Trick <atrick@apple.com> Refactor LiveRangeEdit::eliminateDeadDefs.

I want to add logic to handle more cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184571 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
005622ffae7e6386c27a65a8789bb8d0d773f5d8 21-Jun-2013 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184570 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
ff197dfcf9ac50a62d21e0c30644e09ca3bb92f5 21-Jun-2013 Andrew Trick <atrick@apple.com> Fix a -join-globalcopies bug; handle undef operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184569 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
0db6df0d963a8eee763fd878a72c3153501491c0 21-Jun-2013 Andrew Trick <atrick@apple.com> Modify the -join-globalcopies option (off by default).

Always coalesce in forward order to propagate rematerialization.
I'm fixing this option so I can enable it by default soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184568 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
b5f906b98fe5c05c491c6cf2ec30fcf206b60b27 21-Jun-2013 Andrew Trick <atrick@apple.com> Make rematerialization in the coalescer less sensitive to LRG order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184567 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
3bf23304ee80946409626cf64282a76c13a44352 21-Jun-2013 Andrew Trick <atrick@apple.com> MI-Sched: cleanup DEBUG output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184565 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
1f8b48ab3262bd5623ecbda7b0c024884e8169d3 21-Jun-2013 Andrew Trick <atrick@apple.com> MI-Sched: Adjust regpressure limits for reserved regs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184564 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
egisterClassInfo.cpp
egisterPressure.cpp
4532c280f540de22c83ca2525f1a9a7722b4d7e3 20-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: don't use location lists when the location covers the whole function anyway

Fix up three tests - one that was relying on abbreviation number,
another relying on a location list in this case (& testing raw asm,
changed that to use dwarfdump on the debug_info now that that's where
the location is), and another which was added in r184368 - exposing a
bug in that fix that is exposed when we emit the location inline rather
than through a location list. Fix that bug while I'm here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184387 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
228546b8cb53686f1cc8859ec39bbb11f5c15e90 20-Jun-2013 Bill Wendling <isanbard@gmail.com> This is now a duplicate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184376 91177308-0d34-0410-b5e6-96231b3b80d8
argetOptionsImpl.cpp
59aa54073848645cd20c828dfb1088127c541b36 20-Jun-2013 Bill Wendling <isanbard@gmail.com> Make the comparison operators non-member functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184373 91177308-0d34-0410-b5e6-96231b3b80d8
argetOptionsImpl.cpp
0159ae4295720c5ce8fc770ddb5fed67e90b8d3a 19-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: PR14763/r183329 correct the location of indirect parameters

We had been papering over a problem with location info for non-trivial
types passed by value by emitting their type as references (this caused
the debugger to interpret the location information correctly, but broke
the type of the function). r183329 corrected the type information but
lead to the debugger interpreting the pointer parameter as the value -
the debug info describing the location needed an extra dereference.

Use a new flag in DIVariable to add the extra indirection (either by
promoting an existing DW_OP_reg (parameter passed in a register) to
DW_OP_breg + 0 or by adding DW_OP_deref to an existing DW_OP_breg + n
(parameter passed on the stack).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184368 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
ba54bca472a15d0657e1b88776f7069042b60b4e 19-Jun-2013 Bill Wendling <isanbard@gmail.com> Access the TargetLoweringInfo from the TargetMachine object instead of caching it. The TLI may change between functions. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184360 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
f9fd58a44bbc7d9371ce39eb20eec16b0f1f7395 19-Jun-2013 Bill Wendling <isanbard@gmail.com> Access the TargetLoweringInfo from the TargetMachine object instead of caching it. The TLI may change between functions. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184352 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
ea44281d5da5096de50ce1cb358ff0c6f20e1a2a 19-Jun-2013 Bill Wendling <isanbard@gmail.com> Access the TargetLoweringInfo from the TargetMachine object instead of caching it. The TLI may change between functions. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184349 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
warfEHPrepare.cpp
LVMTargetMachine.cpp
asses.cpp
jLjEHPrepare.cpp
tackProtector.cpp
d626d33246c897a10d40e01b8658fa05c36b1e5f 19-Jun-2013 Bill Wendling <isanbard@gmail.com> Don't cache the TLI object since we have access to it through TargetMachine already.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184346 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
a3fb49cd851cd3b593fc653dc3ba4434c2e1232f 18-Jun-2013 Quentin Colombet <qcolombet@apple.com> During SelectionDAG building explicitly set a node to constant zero when the
value is zero.
This allows optmizations to kick in more easily.
Fix some test cases so that they remain meaningful (i.e., not completely dead
coded) when optimizations apply.

<rdar://problem/14096009> superfluous multiply by high part of zero-extended
value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184222 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
88f34b50d4ee5bab82822ec5ae1d8be8385ca8d6 18-Jun-2013 Timur Iskhodzhanov <timurrrr@google.com> Hopefully fix the MSVS build after r184105

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184178 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
99cb622041a0839c7dfcf0263c5102a305a0fdb5 18-Jun-2013 Bill Wendling <isanbard@gmail.com> Use pointers to the MCAsmInfo and MCRegInfo.

Someone may want to do something crazy, like replace these objects if they
change or something.

No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184175 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineModuleInfo.cpp
4ca0ddaefa2bdea4803cd768e543904f575acdb6 18-Jun-2013 Bill Wendling <isanbard@gmail.com> Simplify some of the code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184172 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
71b9d94d6ba2933df0f7936c44cdb344336d46ef 17-Jun-2013 Andrew Trick <atrick@apple.com> MI-Sched: handle ReadAdvance latencies as used by Swift.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184135 91177308-0d34-0410-b5e6-96231b3b80d8
argetSchedule.cpp
a626f5072e6b3433392cc2be454727c7bb5e83b8 17-Jun-2013 Andrew Trick <atrick@apple.com> Give RegMax higher priority.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184133 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
f8e6d313410bcdd25d4ca9360790684e5a2021b8 17-Jun-2013 Andrew Trick <atrick@apple.com> Remove compareRPDelta.

A complex, expensive heuristic with little value in the current design.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184132 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
e0f6046241ae9bc2f6325142abdfd9cdb9032bab 17-Jun-2013 Andrew Trick <atrick@apple.com> MI Sched: fix a typo in RegPressure heuristics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184131 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
07023fef3acd0d17af099f580d8d254e9d45eb87 17-Jun-2013 Andrew Trick <atrick@apple.com> MI-Sched: Remove another heuristic that is sensitive to queue order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184130 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
e52d502f040fe60587772d40c9f498c10e2cfbdc 17-Jun-2013 Andrew Trick <atrick@apple.com> MI-Sched: Track multiple candidates with the same priority level.

This eliminates the MultiPressure scheduling "reason". It was
sensitive to queue order. We don't like being sensitive to queue
order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184129 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
d10fa8b1caf010fe4943ae5526c2c3b921339f72 17-Jun-2013 Bill Wendling <isanbard@gmail.com> Directly access objects which may change during compilation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184121 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineRegisterInfo.cpp
4eed756153b84c211114a3e9186bf0cb55d4b394 17-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> Switch spill weights from a basic loop depth estimation to BlockFrequencyInfo.

The main advantages here are way better heuristics, taking into account not
just loop depth but also __builtin_expect and other static heuristics and will
eventually learn how to use profile info. Most of the work in this patch is
pushing the MachineBlockFrequencyInfo analysis into the right places.

This is good for a 5% speedup on zlib's deflate (x86_64), there were some very
unfortunate spilling decisions in its hottest loop in longest_match(). Other
benchmarks I tried were mostly neutral.

This changes register allocation in subtle ways, update the tests for it.
2012-02-20-MachineCPBug.ll was deleted as it's very fragile and the instruction
it looked for was gone already (but the FileCheck pattern picked up unrelated
stuff).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184105 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
nlineSpiller.cpp
iveIntervalAnalysis.cpp
iveRangeEdit.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
pillPlacement.cpp
plitKit.cpp
plitKit.h
tackSlotColoring.cpp
0187e7a9ba5c50b4559e0c2e0afceb6d5cd32190 16-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: remove target-specific Frame Index handling for DBG_VALUE MachineInstrs

Frame index handling is now target-agnostic, so delete the target hooks
for creation & asm printing of target-specific addressing in DBG_VALUEs
and any related functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184067 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6d9dbd5526e3161db884fc4fe99c278bb59ccc19 16-Jun-2013 David Blaikie <dblaikie@gmail.com> Debug Info: Simplify Frame Index handling in DBG_VALUE Machine Instructions

Rather than using the full power of target-specific addressing modes in
DBG_VALUEs with Frame Indicies, simply use Frame Index + Offset. This
reduces the complexity of debug info handling down to two
representations of values (reg+offset and frame index+offset) rather
than three or four.

Ideally we could ensure that frame indicies had been eliminated by the
time we reached an assembly or dwarf generation, but I haven't spent the
time to figure out where the FIs are leaking through into that & whether
there's a good place to convert them. Some FI+offset=>reg+offset
conversion is done (see PrologEpilogInserter, for example) which is
necessary for some SelectionDAG assumptions about registers, I believe,
but it might be possible to make this a more thorough conversion &
ensure there are no remaining FIs no matter how instruction selection
is performed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184066 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
nlineSpiller.cpp
iveDebugVariables.cpp
rologEpilogInserter.cpp
egAllocFast.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
f14b44c71b3a58c3aef8e277dd3817cb216b5661 15-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: print DBG_VALUE MachineInstrs with [] for deref and drop the offset when it's zero

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184045 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
aaaae516470f20a76950f434695b64c40a44e5de 15-Jun-2013 Andrew Trick <atrick@apple.com> Missing NDEBUGs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184039 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
fa989e7d432d170b3f92cbd87e2610b03babaea7 15-Jun-2013 Andrew Trick <atrick@apple.com> MI-Sched: heuristics using the new latency and machine model.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184038 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
b86a0cdb674549d8493043331cecd9cbf53b80da 15-Jun-2013 Andrew Trick <atrick@apple.com> Machine Model: Add MicroOpBufferSize and resource BufferSize.

Replace the ill-defined MinLatency and ILPWindow properties with
with straightforward buffer sizes:
MCSchedMode::MicroOpBufferSize
MCProcResourceDesc::BufferSize

These can be used to more precisely model instruction execution if desired.

Disabled some misched tests temporarily. They'll be reenabled in a few commits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184032 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
achineTraceMetrics.cpp
cheduleDAGInstrs.cpp
argetInstrInfo.cpp
argetSchedule.cpp
bacb24975d7a8a6ccff0e16057a581b3831c4c7d 15-Jun-2013 Andrew Trick <atrick@apple.com> MI-Sched: Rename IssueCount to CurrMOps.

"Counts" refer to scaled resource counts within a region. CurrMOps is
simply the number of micro-ops to be issue in the current cycle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184031 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
63a8d824b0046439558777b039435b16e7b937ea 15-Jun-2013 Andrew Trick <atrick@apple.com> MI-Sched: Remove the temporary EnableCopyConstrain flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184030 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
2c465a35516ee453e2a759fa11ac86cdb95ec901 15-Jun-2013 Andrew Trick <atrick@apple.com> MI-Sched: added tracking of dependent latency for better heuristics.

Heuristics compare the critical path in the scheduled code, called
ExpectedLatency, with the latency of instructions remaining to be
scheduled. There are two ways to look at remaining latency:

(1) Dependent latency includes the latency between unscheduled and
scheduled instructions.

(2) Independent latency is simply the height (bottom-up) or depth
(top-down) of instructions currently in the ready Q.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184029 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
eda39a9d691c4168cc8d1d0c0d03631281886ff1 15-Jun-2013 Andrew Trick <atrick@apple.com> MI-Sched: DEBUG: print critical resource.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184028 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
7e6d620336d75c75086905184c451c6a2a21d6a3 15-Jun-2013 Stephen Lin <stephenwlin@gmail.com> SelectionDAG: slightly refactor DAGCombiner::visitSELECT_CC to avoid redudant checks...

This doesn't really effect performance due to all the relevant calls being transparent but is clearer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184027 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
702ff96ff3157e0761d206cca2dc0a4c3e7c13a9 15-Jun-2013 David Blaikie <dblaikie@gmail.com> Debug Info: Don't print the display name and colon prefix for DEBUG_VALUE comments if the display name is empty

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184026 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b05e4778f0871cbb02f61e4d55ad7375738a1d01 15-Jun-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Introduce getSelect usage and use more getSelectCC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184012 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
a553bede23578dbf5233a28b1e67183d0911096c 14-Jun-2013 Stephen Lin <stephenwlin@gmail.com> SelectionDAG: minor fix to order of operands in comments to match the code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184008 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
89dbe9744255864445b1c9f9a613ae333d3f79c8 14-Jun-2013 Tim Northover <tnorthover@apple.com> Mark rematerialized super/sub registers as dead.

When we're rematerializing into a not-quite-right register we already add the
real definition as an imp-def, but we should also be marking the "official"
register as dead, since nothing else is going to use it as a result of this
remat.

Not doing this can affect pressure tracking.

rdar://problem/14158833

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184002 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
38103d1012cb8a51da8866134886a0a8f35f4e30 14-Jun-2013 Stephen Lin <stephenwlin@gmail.com> SelectionDAG: Fix incorrect condition checks in some cases of folding FADD/FMUL combinations; also improve accuracy of comments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183993 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8a0d41e1a649c32e1f0e22c6c201a2e0d8463e30 14-Jun-2013 Derek Schuff <dschuff@google.com> Make PrologEpilogInserter save/restore all callee saved registers
in functions which call __builtin_unwind_init()

__builtin_unwind_init() is an undocumented gcc intrinsic which has this effect,
and is used in libgcc_eh.

Goes part of the way toward fixing PR8541.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183984 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
38084db681d99a7b167328cf5420c20f88036d1b 14-Jun-2013 Jakub Staszak <kubastaszak@gmail.com> Move #include from .h to .cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183960 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
e5682816b7151b17331b0368c2c7bf19f6e3d661 13-Jun-2013 Dan Gohman <dan433584@gmail.com> Print ConstantPool entries initialized to Values with WriteAsOperand instead of
operator<< so that functions are printed as just their name instead of as their
entire definition, which is excessively verbose in this context.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183871 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
1878f9a7874b1ff569d745c0269f49d3daf7203d 12-Jun-2013 Stephen Hines <srhines@google.com> Merge commit '100fbdd06be7590b23c4707a98cd605bdb519498' into merge_20130612
1d1862958cf644def478efed355f577855f3ba57 12-Jun-2013 Eric Christopher <echristo@gmail.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183807 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
f0aefa858c1e3bc4585336846175869b5575bbdf 11-Jun-2013 Eric Christopher <echristo@gmail.com> Remove a few fixmes, the only work we're doing is getting the string
to return and this is done all over.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183704 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
0fbaa378737e94afba25e88363b2c4d6b7208995 11-Jun-2013 Eric Christopher <echristo@gmail.com> Fix up comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183703 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
175a7809c82ff7f97f962510576bc7bbd5708c1b 10-Jun-2013 Eric Christopher <echristo@gmail.com> Remove unused function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183698 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
d32d7a541ad874c8951d5348abe7d40d841db9c9 10-Jun-2013 Eric Christopher <echristo@gmail.com> IndentCount is only used within NDEBUG code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183695 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
a2f8d37fb791d197e7b0b8e6edfa6535f6b21602 09-Jun-2013 David Majnemer <david.majnemer@gmail.com> TargetLowering: Clean up method description comments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183623 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
c0cc28301a7fa71ae895dd637058e0624f6bd399 08-Jun-2013 Quentin Colombet <qcolombet@apple.com> Reapply r183552. This time, use a standard type for the option to avoid template
instantiation issue with non-standard type.

Add a backend option to warn on a given stack size limit.
Option: -mllvm -warn-stack-size=<limit>
Output (if limit is exceeded):
warning: Stack size limit exceeded (<actual size>) in <functionName>.

The longer term plan is to hook that to a clang warning.
PR:4072
<rdar://problem/13987214>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183595 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
95f24fbe4c0609ab30bbdb98c6d5c2155b35a584 08-Jun-2013 Quentin Colombet <qcolombet@apple.com> Revert commits related to stack warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183579 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
9a6b9bffa53bfa5e1a8373b31b2ddfa7b6bd7b30 07-Jun-2013 Quentin Colombet <qcolombet@apple.com> Add a backend option to warn on a given stack size limit.
Option: -mllvm -warn-stack-size=<limit>
Output (if limit is exceeded):
warning: Stack size limit exceeded (<actual size>) in <functionName>.

The longer term plan is to hook that to a clang warning.
PR:4072
<rdar://problem/13987214>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183552 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
fcca6c690cc86123f175582772cb1554cc7e8d81 07-Jun-2013 Quentin Colombet <qcolombet@apple.com> Teach AsmPrinter how to print odd constants.

Fix an assertion when the compiler encounters big constants whose bit width is
not a multiple of 64-bits.
Although clang would never generate something like this, the backend should be
able to handle any legal IR.

<rdar://problem/13363576>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183544 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
62ed8d3e35d25853e32db946a0a60da0bbf862e1 07-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Support OpenBSD's native frame protection conventions.

OpenBSD's stack smashing protection differs slightly from other
platforms:

1. The smash handler function is "__stack_smash_handler(const char
*funcname)" instead of "__stack_chk_fail(void)".

2. There's a hidden "long __guard_local" object that gets linked
into each executable and DSO.

Patch by Matthew Dempsky.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183533 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
f4a66d2005f585737cfe5e7dbe133fe9e9ec0b83 07-Jun-2013 Duncan Sands <baldrick@free.fr> Correct wrong register in this example, pointed out by Baoshan Pang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183495 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
babfebb4e804dbce12c7133860609aa8a2da48fd 07-Jun-2013 David Blaikie <dblaikie@gmail.com> Fix break in r183446 - helps to increment the iterator in a loop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183454 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b20fdff6fe3ec55c75362f6ce14c91b1c9b016c7 06-Jun-2013 David Blaikie <dblaikie@gmail.com> Debug Info: simplify parameter ordering preservation

Seems we emit the parameter ordering number (spuriously named 'arg
number') in the debug info, so there's no need to search through the
variable list to figure out the parameter ordering. This implementation
does 'always' do the work, even in non-optimized debug info (the
previous implementation checked the existence of the 'variables' list on
the subprogram which is only present in optimized builds).

No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183446 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6a2e7ac0b6647a409394e58b385e579ea62b5cba 06-Jun-2013 Bill Wendling <isanbard@gmail.com> Cache the TargetLowering info object as a pointer.

Caching it as a pointer allows us to reset it if the TargetMachine object
changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ResourcePriorityQueue.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
384ceb8446bebe4425e65d1035256eee3b4cfa6d 06-Jun-2013 Bill Wendling <isanbard@gmail.com> Don't cache the TargetLoweringInfo object inside of the FunctionLowering object.

The TargetLoweringInfo object is owned by the TargetMachine. In the future, the
TargetMachine object may change, which may also change the TargetLoweringInfo
object.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGISel.cpp
08368387a450dc2b5681000e2728ec702a8f1197 06-Jun-2013 Bill Wendling <isanbard@gmail.com> Add space to assert message.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183346 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
032d62487c888fe1ce500dfe9e22ae76efbe18e5 05-Jun-2013 David Blaikie <dblaikie@gmail.com> PR15662: Optimized debug info produces out of order function parameters

When a function is inlined we lazily construct the variables
representing the function's parameters. After that, we add any remaining
unused parameters.

If the function doesn't use all the parameters, or uses them out of
order, then the DWARF would produce them in that order, producing a
parameter order that doesn't match the source.

This fix causes us to always keep the arg variables at the start of the
variable list & in the original order from the source.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183297 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
45c75443394b92a8ba8e2474a393039feb5b7d78 04-Jun-2013 Shuxin Yang <shuxin.llvm@gmail.com> Fix a defect in code-layout pass, improving Benchmarks/Olden/em3d/em3d by about 30%
(4.58s vs 3.2s on an oldish Mac Tower).

The corresponding src is excerpted bellow. The lopp accounts for about 90% of execution time.
--------------------
cat -n test-suite/MultiSource/Benchmarks/Olden/em3d/make_graph.c
90
91 for (k=0; k<j; k++)
92 if (other_node == cur_node->to_nodes[k]) break;

The defective layout is sketched bellow, where the two branches need to swap.
------------------------------------------------------------------------
L:
...
if (cond) goto out-of-loop
goto L

While this code sequence is defective, I don't understand why it incurs 1/3 of
execution time. CPU-event-profiling indicates the poor laoyout dose not increase
in br-misprediction; it dosen't increase stall cycle at all, and it dosen't
prevent the CPU detect the loop (i.e. Loop-Stream-Detector seems to be working fine
as well)...

The root cause of the problem is that the layout pass calls AnalyzeBranch()
with basic-block which is not updated to reflect its current layout.

rdar://13966341


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183174 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
7c2b4be2a718b994298803dd09e81e49a016ffb2 01-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> Move getRealLinkageName to a common place and remove all the duplicates of it.

Also simplify code a bit while there. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183076 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
813419ed5a1712ec5b75f157c103e875400f5cc6 01-Jun-2013 Eric Christopher <echristo@gmail.com> Const-ify some printing and dumping code for DIEValues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183057 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
06f5ebc5a1604b01689cf2d482dd05f956538af6 31-May-2013 Quentin Colombet <qcolombet@apple.com> Loop Strength Reduce: Scaling factor cost.

Account for the cost of scaling factor in Loop Strength Reduce when rating the
formulae. This uses a target hook.

The default implementation of the hook is: if the addressing mode is legal, the
scaling factor is free.

<rdar://problem/13806271>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183045 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
52aaf6a4a9a32e4493f7cb01eb2c19dc5f795932 31-May-2013 Kai Nacke <kai.nacke@redstar.de> Remove useless code from transitioning to new EH scheme

Removes all uses of the variable UsesNewEH. Simply return false in case that no
resume instructions were found.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183016 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
d01fb9e212d989ff14e84a332c5b18f8a23d4b35 30-May-2013 Tim Northover <tnorthover@apple.com> Fix rematerialization into physical registers.

r182872 introduced a bug in how the register-coalescer's rematerialization
handled defining a physical register. It relied on the output of the
coalescer's setRegisters method to determine whether the replacement
instruction needed an implicit-def. However, this value isn't necessarily the
same as the CopyMI's actual destination register which is what the rest of the
basic-block expects us to be defining.

The commit changes the rematerializer to use the actual register attached to
CopyMI in its decision.

This will be tested soon by an X86 patch which moves everything to using
MOV32r0 instead of other sizes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182925 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
d2df98f3aad701512c6f14579a24672a49df1150 30-May-2013 Eric Christopher <echristo@gmail.com> Rename variable to be more descriptive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182903 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5592ba4775964ab5e15a4603249e6beadfa5ce7a 30-May-2013 Eric Christopher <echristo@gmail.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182902 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
6e0b2a0cb0d398f175a5294bf0ad5488c714e8c2 30-May-2013 Andrew Trick <atrick@apple.com> Order CALLSEQ_START and CALLSEQ_END nodes.

Fixes PR16146: gdb.base__call-ar-st.exp fails after
pre-RA-sched=source fixes.

Patch by Xiaoyi Guo!

This also fixes an unsupported dbg.value test case. Codegen was
previously incorrect but the test was passing by luck.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182885 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cc5a882c96af6e36bc029b7ff69f62f94e2d041d 29-May-2013 Bill Wendling <isanbard@gmail.com> Don't reach into the middle of TargetMachine and cache one of its ivars.
Not only does this break encapsulation, it's gross.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182876 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
aae0fa998af0f65221d7b98630162be6d88f05dc 29-May-2013 Tim Northover <tnorthover@apple.com> Teach ReMaterialization to be more cunning about subregisters

This allows rematerialization during register coalescing to handle
more cases involving operations like SUBREG_TO_REG which might need to
be rematerialized using sub-register indices.

For example, code like:
v1(GPR64):sub_32 = MOVZ something
v2(GPR64) = COPY v1(GPR64)
should be convertable to:
v2(GPR64):sub_32 = MOVZ something

but previously we just gave up in places like this

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182872 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
742671bf8e422aadcf3b7697a8844b9eb6f566f2 29-May-2013 Manman Ren <mren@apple.com> LTO+Debug Info: revert r182791.

Since the testing case uses ref_addr, which requires version 3+ to work,
we will solve the dwarf version issue first.

This patch also causes failures in one of the bots. I will update the patch
accordingly in my next attempt.

rdar://13926659


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182867 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9174fd77e5e299fa3b1357a85ad82173217270b7 28-May-2013 Manman Ren <mren@apple.com> LTO+Debug Info: correctly emit inlined_subroutine when the inlined callee is
from a different CU.

We used to print out an error message and fail to generate inlined_subroutine.

If we use ref_addr in the generated DWARF, the DWARF version should be 3 or
above.
rdar://13926659


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182791 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
520b6e3fa5c9c01ed66e70c925e78d518504a983 28-May-2013 Benjamin Kramer <benny.kra@googlemail.com> Simplify code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
e4fae84b0b13bd5d66cf619fd2108dbb6064395d 28-May-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove double semicolons.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182778 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
b704d23062aa78b00999b75dcdcb628d4d84ee3f 27-May-2013 Preston Gurd <preston.gurd@intel.com> Convert sqrt functions into sqrt instructions when -ffast-math is in effect.

When -ffast-math is in effect (on Linux, at least), clang defines
__FINITE_MATH_ONLY__ > 0 when including <math.h>. This causes the
preprocessor to include <bits/math-finite.h>, which renames the sqrt functions.
For instance, "sqrt" is renamed as "__sqrt_finite".

This patch adds the 3 new names in such a way that they will be treated
as equivalent to their respective original names.





git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182739 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9edb37feb5984b25494651ee4307fd2284d3538b 26-May-2013 Andrew Trick <atrick@apple.com> Fix PR16143: Insert DEBUG_VALUE before terminator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182717 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
dd0fb018a7cd2214c7bc5c6c767f626f99b47ba9 25-May-2013 Andrew Trick <atrick@apple.com> Track IR ordering of SelectionDAG nodes 3/4.

Remove the old IR ordering mechanism and switch to new one. Fix unit
test failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182704 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/SDNodeOrdering.h
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
ac6d9bec671252dd1e596fa71180ff6b39d06b5d 25-May-2013 Andrew Trick <atrick@apple.com> Track IR ordering of SelectionDAG nodes 2/4.

Change SelectionDAG::getXXXNode() interfaces as well as call sites of
these functions to pass in SDLoc instead of DebugLoc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGDumper.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
ea5db0c315f1ab8ee3be52e0e765c32d3efff024 25-May-2013 Andrew Trick <atrick@apple.com> Track IR ordering of SelectionDAG nodes 1/4.

Use a field in the SelectionDAGNode object to track its IR ordering.
This adds fields and utility classes without changing existing
interfaces or functionality.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
c6af2432c802d241c8fffbe0371c023e6c58844e 25-May-2013 Michael J. Spencer <bigcheesegs@gmail.com> Replace Count{Leading,Trailing}Zeros_{32,64} with count{Leading,Trailing}Zeros.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182680 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGBuilder.cpp
argetRegisterInfo.cpp
e0b59774cba9eb89ffba114635f3a1fa075910b1 23-May-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR16110: Handle DBG_VALUE in ConnectedVNInfoEqClasses::Distribute().

Now that the LiveDebugVariables pass is running *after* register
coalescing, the ConnectedVNInfoEqClasses class needs to deal with
DBG_VALUE instructions.

This only comes up when rematerialization during coalescing causes the
remaining live range of a virtual register to separate into two
connected components.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182592 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
2db14ba90cf5696414e909468001a2f6c8f8f780 23-May-2013 Benjamin Kramer <benny.kra@googlemail.com> InlineSpiller: Store bucket pointers instead of iterators.

Lets us use a SetVector instead of an explicit set + vector combination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182586 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
3d33184d9da02fb699827249e0631106252f72fa 23-May-2013 David Blaikie <dblaikie@gmail.com> Solidify the assumption that a DW_TAG_subprogram's type is a DW_TAG_subroutine_type

There were bits & pieces of code lying around that may've given the
impression that debug info metadata supported the possibility that a
subprogram's type could be specified by a non-subroutine type describing
the return type of a void function. This support was incomplete &
unnecessary. Asserts & API have been changed to make the desired usage
more clear.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182532 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
62c320a755ac27ac2b7f64e927892249e0f486e0 23-May-2013 Chad Rosier <mcrosier@apple.com> Simplify logic now that r182490 is in place. No functional change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182531 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ranchFolding.cpp
riticalAntiDepBreaker.cpp
eadMachineInstructionElim.cpp
fConversion.cpp
achineCopyPropagation.cpp
achineVerifier.cpp
ostRASchedulerList.cpp
egisterScavenging.cpp
b018bab0b85c7b77ab7111946ea4b82bb6153a5c 23-May-2013 Chad Rosier <mcrosier@apple.com> Simplify logic now that r182490 is in place. No functional change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182527 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5cc3c989fc4295103ee46a2697e82dc1c4453545 23-May-2013 Chad Rosier <mcrosier@apple.com> Simplify logic now that r182490 is in place. No functional change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182526 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
5da4e4f3b10148e811de82ec57b3f82c15411a81 22-May-2013 Adrian Prantl <aprantl@apple.com> Unify formatting of debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182495 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
c2b7f5fa511420b99dd8238ab4ba769a6a6015a5 21-May-2013 Justin Holewinski <jholewinski@nvidia.com> Drop @llvm.annotation and @llvm.ptr.annotation intrinsics during codegen.

The intrinsic calls are dropped, but the annotated value is propagated.

Fixes PR 15253

Original patch by Zeng Bin!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182387 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuilder.cpp
f19b8b018be4b0478f741bf35287db3488fda8d6 21-May-2013 Benjamin Kramer <benny.kra@googlemail.com> DAGCombine: Avoid an edge case where it tried to create an i0 type for (x & 0) == 0.

Fixes PR16083.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
01cb18ea08aeb76726750914b1283c633b5a2d74 21-May-2013 Manman Ren <mren@apple.com> Dwarf: use a single line table to generate assembly when .loc is used.

This is to fix PR15408 where an undefined symbol Lline_table_start1 is used.
Since we do not generate the debug_line section when .loc is used,
Lline_table_start1 is not emitted and we can't refer to it when calculating
at_stmt_list for a compile unit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182344 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7b72cc7782716f469eb1b0963423a5b414215705 21-May-2013 David Blaikie <dblaikie@gmail.com> PR14606: Debug Info for namespace aliases/DW_TAG_imported_module

This resolves the last of the PR14606 failures in the GDB 7.5 test
suite by implementing an optional name field for
DW_TAG_imported_modules/DIImportedEntities and using that to implement
C++ namespace aliases (eg: "namespace X = Y;").

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182328 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3b1040c703c5e76b85b4431f4c84ccc4aa9f8508 20-May-2013 Bill Wendling <isanbard@gmail.com> The DWARF EH pass doesn't need the TargetMachine, only the TargetLoweringBase like the other EH passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182321 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
asses.cpp
07418cde47c328f382144acd1972fabcf1529d11 20-May-2013 Bill Wendling <isanbard@gmail.com> No need to store the TargetMachine variable in this class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182317 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
225ed7069caae9ece32d8bd3d15c6e41e21cc04b 18-May-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Add LLVMContext argument to getSetCCResultType

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
argetLoweringBase.cpp
9aa8fdfddb7a01f52d887176823dfc4e3f9a81a1 17-May-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Replace redundant code

Use EVT::changeExtendedVectorElementTypeToInteger instead of doing the
same thing that it does

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
63f3ca5da75a614c603c04757edeaac123879d39 17-May-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Add missing -*- C++ -*- to headers

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
df68803890ecae2e8cfabdaa9122cb2ccbf5b89c 17-May-2013 Adrian Prantl <aprantl@apple.com> Generate debug info for by-value struct args even if they are not used.
radar://problem/13865940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182062 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6b67ffd68bb2e555b1b512a809f3c82c68f3debe 16-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove addFrameMove.

Now that we have good testing, remove addFrameMove and create cfi
instructions directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182052 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
8401ed21aa7c8ca022aad4b83fc9c63c0b824720 16-May-2013 Benjamin Kramer <benny.kra@googlemail.com> DAGCombine: Also shrink eq compares where the constant is exactly as large as the smaller type.

if ((x & 255) == 255)

before: movzbl %al, %eax
cmpl $255, %eax

after: cmpb $-1, %al

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182038 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
997fa623fc14122153c58ddda8c90aa30f192cc8 16-May-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Add TargetRegisterInfo::getCoveringLanes().

This lane mask provides information about which register lanes
completely cover super-registers. See the block comment before
getCoveringLanes().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182034 91177308-0d34-0410-b5e6-96231b3b80d8
argetRegisterInfo.cpp
71da6755c8b0a7444be5531798556c00f4dad101 15-May-2013 Hal Finkel <hfinkel@anl.gov> Fix legalization of SETCC with promoted integer intrinsics

If the input operands to SETCC are promoted, we need to make sure that we
either use the promoted form of both operands (or neither); a mixture is not
allowed. This can happen, for example, if a target has a custom promoted
i1-returning intrinsic (where i1 is not a legal type). In this case, we need to
use the promoted form of both operands.

This change only augments the behavior of the existing logic in the case where
the input types (which may or may not have already been legalized) disagree,
and should not affect existing target code because this case would otherwise
cause an assert in the SETCC operand promotion code.

This will be covered by (essentially all of the) tests for the new PPCCTRLoops
infrastructure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
c22cdb7203e4aad8e6491487f224efff7a3e58c0 15-May-2013 Derek Schuff <dschuff@google.com> Fix miscompile due to StackColoring incorrectly merging stack slots (PR15707)

IR optimisation passes can result in a basic block that contains:

llvm.lifetime.start(%buf)
...
llvm.lifetime.end(%buf)
...
llvm.lifetime.start(%buf)

Before this change, calculateLiveIntervals() was ignoring the second
lifetime.start() and was regarding %buf as being dead from the
lifetime.end() through to the end of the basic block. This can cause
StackColoring to incorrectly merge %buf with another stack slot.

Fix by removing the incorrect Starts[pos].isValid() and
Finishes[pos].isValid() checks.

Just doing:
Starts[pos] = Indexes->getMBBStartIdx(MBB);
Finishes[pos] = Indexes->getMBBEndIdx(MBB);
unconditionally would be enough to fix the bug, but it causes some
test failures due to stack slots not being merged when they were
before. So, in order to keep the existing tests passing, treat LiveIn
and LiveOut separately rather than approximating the live ranges by
merging LiveIn and LiveOut.

This fixes PR15707.
Patch by Mark Seaborn.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181922 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
453f4f01302f00651aae2fc7658f6e23a2beadb0 15-May-2013 David Blaikie <dblaikie@gmail.com> Use only explicit bool conversion operators

BitVector/SmallBitVector::reference::operator bool remain implicit since
they model more exactly a bool, rather than something else that can be
boolean tested.

The most common (non-buggy) case are where such objects are used as
return expressions in bool-returning functions or as boolean function
arguments. In those cases I've used (& added if necessary) a named
function to provide the equivalent (or sometimes negative, depending on
convenient wording) test.

One behavior change (YAMLParser) was made, though no test case is
included as I'm not sure how to reach that code path. Essentially any
comparison of llvm::yaml::document_iterators would be invalid if neither
iterator was at the end.

This helped uncover a couple of bugs in Clang - test cases provided for
those in a separate commit along with similar changes to `operator bool`
instances in Clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181868 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
4d7f2ce93860bb587412c0d5bb572e7bdf7eaa96 14-May-2013 Eric Christopher <echristo@gmail.com> Make getCompileUnit non-const and return the current DIE if it
happens to be a compile unit. Noticed on inspection and tested
via calling on a newly created compile unit. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181835 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
e4642bc096984c12c1ef129137e17fad61201118 14-May-2013 Kai Nacke <kai.nacke@redstar.de> Add bitcast to store of personality function.

The personality function is user defined and may have an arbitrary result type.
The code assumes always i8*. This results in an assertion failure if a different
type is used. A bitcast to i8* is added to prevent this failure.

Reviewed by: Renato Golin, Bob Wilson

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181802 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
dd29df06fa72de9e370cdd9d8e32ac5437a578c7 14-May-2013 Akira Hatanaka <ahatanaka@mips.com> StackColoring: don't clear an instruction's mem operand if the underlying
object is a PseudoSourceValue and PseudoSourceValue::isConstant returns true (i.e.,
points to memory that has a constant value).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181751 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
17a692e7f196c15118e69d7012d110aa00a362ba 14-May-2013 David Blaikie <dblaikie@gmail.com> Assert that DIEEntries are constructed with non-null DIEs

This just brings a crash a little further forward from DWARF emission to
DIE construction to make errors easier to diagnose.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181748 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
a753ff72b2dfcd9c09451a124373e0a8ed1a1d47 13-May-2013 Bob Wilson <bob.wilson@apple.com> Remove redundant variable introduced by r181682.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181721 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3778c04b2e3bc879cb7f175ba4d42f23fb9cef76 13-May-2013 Hao Liu <Hao.Liu@arm.com> Fix PR15950 A bug in DAG Combiner about undef mask

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181682 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4a971705bc6030dc2e4338b3cd5cffa2e0f88b7b 13-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the MachineMove class.

It was just a less powerful and more confusing version of
MCCFIInstruction. A side effect is that, since MCCFIInstruction uses
dwarf register numbers, calls to getDwarfRegNum are pushed out, which
should allow further simplifications.

I left the MachineModuleInfo::addFrameMove interface unchanged since
this patch was already fairly big.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181680 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfException.h
LVMTargetMachine.cpp
achineModuleInfo.cpp
03406c4f15b3bf0522763fe848cd40f9598b74e8 11-May-2013 Benjamin Kramer <benny.kra@googlemail.com> StringRefize some debug accel table bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181663 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
smPrinter/DwarfDebug.cpp
d84ccfaf50c7843f31ffc74a8a8e33f779453d6e 11-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Change getFrameMoves to return a const reference.

To add a frame now there is a dedicated addFrameMove which also takes
care of constructing the move itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181657 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
baf81af7591dedb2587bf8e439e07a97dbe454f9 11-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove more dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181656 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
4de9d72883eebe4e86bffdaad89483dfe822e2a5 10-May-2013 David Blaikie <dblaikie@gmail.com> PR14492: Debug Info: Support for values of non-integer non-type template parameters.

This is only tested for global variables at the moment (& includes tests
for the unnamed parameter case, since apparently this entire function
was completely untested previously)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181632 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
768ebcdf631baa1b18dc65a5983a237b307a99c2 10-May-2013 Benjamin Kramer <benny.kra@googlemail.com> DAGCombiner: Generate a correct constant for vector types when folding (xor (and)) into (and (not)).

PR15948.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181597 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
58dcd200b7f0ea01160b6159e0363cc96b1b83d9 10-May-2013 Owen Anderson <resistor@mac.com> Teach SelectionDAG to constant fold all-constant FMA nodes the same way that it constant folds FADD, FMUL, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181555 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c496875f0c205ffadcec8060e1170e1c58e4eb55 09-May-2013 Eric Christopher <echristo@gmail.com> Revert "Make sure debug info contains linkage names (DW_AT_MIPS_linkage_name)"
temporarily while investigating gdb.cp/templates.exp.

This reverts commit r181471.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181496 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
cc55d4528c9ff3a2e0b148fd311be8d912ad22f4 08-May-2013 Eric Christopher <echristo@gmail.com> Make sure debug info contains linkage names (DW_AT_MIPS_linkage_name)
for constructors and destructors since the original declaration given
by the AT_specification both won't and can't.

Patch by Yacine Belkadi, I've cleaned up the testcases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181471 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
363160a6be82df343fa60aa09d9d8f8f44605529 08-May-2013 David Majnemer <david.majnemer@gmail.com> DAGCombiner: Simplify inverted bit tests

Fold (xor (and x, y), y) -> (and (not x), y)

This removes an opportunity for a constant to appear twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181395 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
aa76a93cd35abd922b66825bb4e3e0b6e14ccfd5 08-May-2013 David Blaikie <dblaikie@gmail.com> Debug Info: Support DW_TAG_imported_declaration

This provides basic functionality for imported declarations. For
subprograms and types some amount of lazy construction is supported (so
the definition of a function can proceed the using declaration), but it
still doesn't handle declared-but-not-defined functions (since we don't
generally emit function declarations).

Variable support is really rudimentary at the moment - simply looking up
the existing definition with no support for out of order (declaration,
imported_module, then definition).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181392 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d1221e377d8e37e41539ed9f36b60b4cd48b6988 08-May-2013 David Blaikie <dblaikie@gmail.com> Finish renaming constructImportedModuleDIE to constructImportedEntityDIE

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181391 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9c57ad2381488b7cde7e3eb459d2ce3e447e93b7 08-May-2013 Eric Christopher <echristo@gmail.com> Pass the MDNode in and do the insertion at compile unit creation time
instead of relying upon an extra call to finish initializing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181383 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
1db3d0820f8057dd03ade1585bfa5f2bf53cfe33 08-May-2013 Eric Christopher <echristo@gmail.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181378 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
20d9e41ddb3f531267680819b5cac4cac1c6b231 07-May-2013 David Blaikie <dblaikie@gmail.com> Rename DIImportedModule to DIImportedEntity and allow imported declarations

DIBuilder::createImportedDeclaration isn't fully plumbed through (note,
lacking in AsmPrinter/DwarfDebug support) but this seemed like a
sufficiently useful division of code to make the subsequent patch(es)
easier to follow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181364 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
e4496548155ba6606f107fbdc10ea17e58fd3401 07-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove exception handling support from the old JIT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181354 91177308-0d34-0410-b5e6-96231b3b80d8
argetOptionsImpl.cpp
798925bac73b9320e7b32001478921910ac781d2 07-May-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix vselect when getSetCCResultType returns a different type from the operands

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
498c91e341ff8cff835b053c25a76fe7c21b06a9 07-May-2013 David Blaikie <dblaikie@gmail.com> Debug Info: Fix for break due to r181271

Apparently we didn't keep an association of Compile Unit metadata nodes
to DIEs so looking up that parental context failed & thus caused no
DW_TAG_imported_modules to be emitted at the CU scope. Fix this by
adding the mapping & sure up the test case to verify this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181339 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
664fbee9c888c7cd1e7ba7943e9cce96a104ea5e 07-May-2013 Timur Iskhodzhanov <timurrrr@google.com> Fix the VS2010 build broken by r181271

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181296 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9dbeb69a345d12b15571769cfacf1d5e1a7ce378 03-May-2013 Stephen Hines <srhines@google.com> Update LLVM for merge to r180947.

Change-Id: Ic9e7daa7ef3789298c49a7b308af92115f5d682d
ndroid.mk
smPrinter/Android.mk
d2e0f7ee15e3df5317f804d9355c2b714e30b5c9 07-May-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Support imported modules in lexical blocks

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181271 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
30cb836a20259babf0cce7bd898bc70e4a8f5454 06-May-2013 Eric Christopher <echristo@gmail.com> Remove unnecessary instance variable and rework logic accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181227 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
3bf2bcd96ce03a83967d9f256d23455e0e2ccefd 06-May-2013 Eric Christopher <echristo@gmail.com> Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181226 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
2720248ae5b0201a7bdba57f3625869b578f2a5d 06-May-2013 Michael Kuperstein <michael.m.kuperstein@intel.com> Fix slightly too aggressive conact_vector optimization.
(Would sometimes optimize away conacts used to extend a vector with undef values)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181186 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9a28cc14a9bc52072649f63308c2a66c9eebe0d1 05-May-2013 Evan Cheng <evan.cheng@apple.com> Teach if-converter to avoid removing BBs whose addresses are takne. rdar://13782395

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181160 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
e210df20d3b69beaa3e83a6088b6bafb9f00bcfe 05-May-2013 Benjamin Kramer <benny.kra@googlemail.com> InlineSpiller: Remove quadratic behavior.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181149 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
46abfcf4187432da728cbe452c32143da077e07f 05-May-2013 Stepan Dyatkovskiy <stpworld@narod.ru> For ARM backend, fixed "byval" attribute support.
Now even the small structures could be passed within byval (small enough
to be stored in GPRs).
In regression tests next function prototypes are checked:

PR15293:
%artz = type { i32 }
define void @foo(%artz* byval %s)
define void @foo2(%artz* byval %s, i32 %p, %artz* byval %s2)
foo: "s" stored in R0
foo2: "s" stored in R0, "s2" stored in R2.

Next AAPCS rules are checked:
5.5 Parameters Passing, C.4 and C.5,
"ParamSize" is parameter size in 32bit words:
-- NSAA != 0, NCRN < R4 and NCRN+ParamSize > R4.
Parameter should be sent to the stack; NCRN := R4.
-- NSAA != 0, and NCRN < R4, NCRN+ParamSize < R4.
Parameter stored in GPRs; NCRN += ParamSize.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181148 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
5c332dbd30d9398ed25b30c3080506f7b8e92290 05-May-2013 Dmitri Gribenko <gribozavr@gmail.com> Add ArrayRef constructor from None, and do the cleanups that this constructor enables

Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181138 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
hrinkWrapping.cpp
38578c4919ea18ceb27e29988b2d857afe6215bf 03-May-2013 Stephen Hines <srhines@google.com> Merge remote-tracking branch 'upstream/master' into merge-20130502

Conflicts:
lib/Support/Unix/Signals.inc
unittests/Transforms/Utils/Cloning.cpp

Change-Id: I027581a4390ec3ce4cd8d33da8b5f4c0c7d372c8
d4201b6e76bad9cb3fb8a20e3c04555d97deb0fd 02-May-2013 Evan Cheng <evan.cheng@apple.com> TiedTo flag can now be placed on implicit operands. isTwoAddrUse() should look
at all of the operands. Previously it was skipping over implicit operands which
cause infinite looping when the two-address pass try to reschedule a
two-address instruction below the kill of tied operand.

I'm unable to come up with a reasonably sized test case.
rdar://13747577


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180906 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
f18a32eb128513239b516cd055baf9415d05f24f 02-May-2013 Bill Wendling <isanbard@gmail.com> Revert r180737. The companion patch was reverted, and this is not relevant right now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180889 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
40be1e85665d10f5444186f0e7106e368dd735b8 01-May-2013 Filip Pizlo <fpizlo@apple.com> This patch breaks up Wrap.h so that it does not have to include all of
the things, and renames it to CBindingWrapping.h. I also moved
CBindingWrapping.h into Support/.

This new file just contains the macros for defining different wrap/unwrap
methods.

The calls to those macros, as well as any custom wrap/unwrap definitions
(like for array of Values for example), are put into corresponding C++
headers.

Doing this required some #include surgery, since some .cpp files relied
on the fact that including Wrap.h implicitly caused the inclusion of a
bunch of other things.

This also now means that the C++ headers will include their corresponding
C API headers; for example Value.h must include llvm-c/Core.h. I think
this is harmless, since the C API headers contain just external function
declarations and some C types, so I don't believe there should be any
nasty dependency issues here.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180881 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
f0b0755b6ea0b5c55bbf51ddd29439c01c7102e5 01-May-2013 Chad Rosier <mcrosier@apple.com> [inline asm] Return an undef SDValue of the expected value type, rather than
report a fatal error. This allows us to continue processing the translation
unit. Test case to come on the clang side because we need an inline asm
diagnostics handler in place.
rdar://13446483

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180873 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b2ed5fac0693e949ffdbf45266f5d53839211b63 01-May-2013 Nadav Rotem <nrotem@apple.com> Optimize away nop CONCAT_VECTOR nodes.

Optimize CONCAT_VECTOR nodes that merge EXTRACT_SUBVECTOR values that extract from the same vector.

rdar://13402653
PR15866



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180871 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3484da9479a4daff3efc7febe004e1f4d69b3b4a 01-May-2013 Stephen Lin <stephenwlin@gmail.com> Only pass 'returned' to target-specific lowering code when the value of entire register is guaranteed to be preserved.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180825 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/SelectionDAGBuilder.cpp
86a87d9ba1faf153e0e6eaddfd3e95595c83bcb1 01-May-2013 Adrian Prantl <aprantl@apple.com> Temporarily revert "Change the informal convention of DBG_VALUE so that we can express a"
because it breaks some buildbots.

This reverts commit 180816.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180819 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
iveDebugVariables.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
a2b56692c8b824b8cc4a0927bb555f3718e9bee8 01-May-2013 Adrian Prantl <aprantl@apple.com> Change the informal convention of DBG_VALUE so that we can express a
register-indirect address with an offset of 0.
It used to be that a DBG_VALUE is a register-indirect value if the offset
(operand 1) is nonzero. The new convention is that a DBG_VALUE is
register-indirect if the first operand is a register and the second
operand is an immediate. For plain registers use the combination reg, reg.

rdar://problem/13658587

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180816 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
iveDebugVariables.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
f13fc1b23ad40407d0ee4fd0ee807a40261d639e 01-May-2013 Andrew Trick <atrick@apple.com> MI Sched: revert a minor heuristic that snuck in with -misched-vcopy.

I'll fix the heuristic in a general way in a follow-up commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180815 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
db31bd31d62b5b85dddd5fbecae1a04a02201adc 30-Apr-2013 Hal Finkel <hfinkel@anl.gov> LocalStackSlotAllocation improvements

First, taking advantage of the fact that the virtual base registers are allocated in order of the local frame offsets, remove the quadratic register-searching behavior. Because of the ordering, we only need to check the last virtual base register created.

Second, store the frame index in the FrameRef structure, and get the frame index and the local offset from this structure at the top of the loop iteration. This allows us to de-nest the loops in insertFrameReferenceRegisters (and I think makes the code cleaner). I also moved the needsFrameBaseReg check into the first loop over instructions so that we don't bother pushing FrameRefs for instructions that don't want a virtual base register anyway.

Lastly, and this is the only functionality change, avoid the creation of single-use virtual base registers. These are currently not useful because, in general, they end up replacing what would be one r+r instruction with an add and a r+i instruction. Committing this removes the XFAIL in CodeGen/PowerPC/2007-09-07-LoadStoreIdxForms.ll

Jim has okayed this off-list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180799 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
fa2eac54e690928592a2bd6c1f8ee0f9b1923d5e 30-Apr-2013 Bill Wendling <isanbard@gmail.com> Emit the TLS initialization function pointers into the correct section.

The `llvm.tls_init_funcs' (created by the front-end) holds pointers to the TLS
initialization functions. These need to be placed into the correct section so
that they are run before `main()'.

<rdar://problem/13733006>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180737 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3aa5394e5bbf267824e9d789ec8b1c27b85a8671 27-Apr-2013 Andrew Trick <atrick@apple.com> Generalize the MachineTraceMetrics public API.

Naturally, we should be able to pass in extra instructions, not just
extra blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180667 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
00297bad0d7458b5bcdfce3d3301957b0539b070 27-Apr-2013 Eric Christopher <echristo@gmail.com> Use the target triple from the target machine rather than the module
to determine whether or not we're on a darwin platform for debug code
emitting.

Solves the problem of a module with no triple on the command line
and no triple in the module using non-gdb ok features on darwin. Fix
up the member-pointers test to check the correct things for cross
platform (DW_FORM_flag is a good prefix).

Unfortunately no testcase because I have no ideas how to test something
without a triple and without a triple in the module yet check
precisely on two platforms. Ideas welcome.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180660 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
13131e62fc9a523b3cc8ad98cc9def97ff89391a 26-Apr-2013 Adrian Prantl <aprantl@apple.com> Cleanup and document MachineLocation.
Clarify documentation and API to make the difference between register and
register-indirect addressed locations more explicit. Put in a comment
to point out that with the current implementation we cannot specify
a register-indirect location with offset 0 (a breg 0 in DWARF).
No functionality change intended.

rdar://problem/13658587

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180641 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
f1d9fe9d04ce93f6d5dcebbd2cb6a07414d7a029 26-Apr-2013 Bill Wendling <isanbard@gmail.com> Micro-optimization

TLVs probably won't be as common as the other types of variables. Check for them
last before defaulting to "DATA".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180631 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
730a570c8c1b84f650ae92bacd61c88cfef9c6a4 26-Apr-2013 Silviu Baranga <silviu.baranga@arm.com> Re-write the address propagation code for pre-indexed loads/stores to take into account some previously misssed cases (PRE_DEC addressing mode, the offset and base address are swapped, etc). This should fix PR15581.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180609 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6242fda42ad13eebc908e744426ae7bc8cf8d1c3 26-Apr-2013 Benjamin Kramer <benny.kra@googlemail.com> DAGCombiner: Canonicalize vector integer abs in the same way we do it for scalars.

This already helps SSE2 x86 a lot because it lacks an efficient way to
represent a vector select. The long term goal is to enable the backend to match
a canonicalized pattern into a single instruction (e.g. vabs or pabs).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180597 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4b5581530393e647d559360f8c6f229c05aca94f 25-Apr-2013 Reid Kleckner <reid@kleckner.net> [mc-coff] Forward Linker Option flags into the .drectve section

Summary:
This is modelled on the Mach-O linker options implementation and should
support a Clang implementation of #pragma comment(lib/linker).

Reviewers: rafael

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D724

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180569 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
02066838b5cdf17277267e79ffbc9459a58cdd59 25-Apr-2013 Silviu Baranga <silviu.baranga@arm.com> Fix constant folding for one lane vector types. Constant folding one lane vector types not returns a vector instead of a scalar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a264a20277a4699cdc44092767228b76234016d9 25-Apr-2013 Andrew Trick <atrick@apple.com> Fix for r180193 - MI Sched: eliminate local vreg.

Fixes PR15838. Need to check for blocks with nothing but dbg.value.

I'm not sure how to force this situation with a unit test. I tried to
reduce the test case in PR15838 (1k lines of metadata) but gave up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180227 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
2871ba90a3d3544fa1f136c7d4efbb619298d6e8 25-Apr-2013 Chad Rosier <mcrosier@apple.com> [inline asm] Fix a crasher for an invalid value type/register class.
rdar://13731657


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180226 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e38afe1e335084134f7830ba6f2208e2ddde59b4 24-Apr-2013 Andrew Trick <atrick@apple.com> MI Sched: eliminate local vreg copies.

For now, we just reschedule instructions that use the copied vregs and
let regalloc elliminate it. I would really like to eliminate the
copies on-the-fly during scheduling, but we need a complete
implementation of repairIntervalsInRange() first.

The general strategy is for the register coalescer to eliminate as
many global copies as possible and shrink live ranges to be
extended-basic-block local. The coalescer should not have to worry
about resolving local copies (e.g. it shouldn't attemp to reorder
instructions). The scheduler is a much better place to deal with local
interference. The coalescer side of this equation needs work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180193 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
e2326ad2c00fe3e8e21dbf312f1987ba92308733 24-Apr-2013 Andrew Trick <atrick@apple.com> Register Coalescing: add a flag to disable rescheduling.

When MachineScheduler is enabled, this functionality can be
removed. Until then, provide a way to disable it for test cases and
designing MachineScheduler heuristics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180192 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
811a372d4fbf505e3d5db3b1d18f1109de47e0a7 24-Apr-2013 Andrew Trick <atrick@apple.com> MI Sched: regpressure tracing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180191 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
13367123a8682de6db3feee6c9b9a7cc19e4ae9c 24-Apr-2013 Eric Christopher <echristo@gmail.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180186 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ed5707baf9be36c0d06c278f589b6c55db8b96c0 23-Apr-2013 Owen Anderson <resistor@mac.com> DAGCombine should not aggressively fold SEXT(VSETCC(...)) into a wider VSETCC without first checking the target's vector boolean contents.
This exposed an issue with PowerPC AltiVec where it appears it was setting the wrong vector boolean contents. The included change
fixes the PowerPC tests, and was OK'd by Hal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180129 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
13aba14eb5c643234f5d756b94f30afb28f8cd5d 23-Apr-2013 Stephen Lin <stephenwlin@gmail.com> Add some constraints to use of 'returned':

1) Disallow 'returned' on parameter that is also 'sret' (no sensible semantics, as far as I can tell).
2) Conservatively disallow tail calls through 'returned' parameters that also are 'zext' or 'sext' (for consistency with treatment of other zero-extending and sign-extending operations in tail call position detection...can be revised later to handle situations that can be determined to be safe).

This is a new attribute that is not yet used, so there is no impact.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180118 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
9a0e12a6ed7db1bf49e4676932427e91ae4eb9be 23-Apr-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Remove unused DwarfSectionOffsetDirective string

The value isn't actually used, and setting it emits a COFF specific
directive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180064 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
3e39731e88f2d4f597cebc74388fd6650ca4f604 23-Apr-2013 Eric Christopher <echristo@gmail.com> Move C++ code out of the C headers and into either C++ headers
or the C++ files themselves. This enables people to use
just a C compiler to interoperate with LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180063 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
2ad047e04dd4c19defade4799834efacb0024551 22-Apr-2013 Eli Bendersky <eliben@google.com> Optimize MachineBasicBlock::getSymbol by caching the symbol. Since the symbol
name computation is expensive, this helps save about 25% of the time spent in
this function.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180049 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
cde25b435a907e7741da0c0d18953850936277c4 22-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Clarify that llvm.used can contain aliases.

Also add a check for llvm.used in the verifier and simplify clients now that
they can assume they have a ConstantArray.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180019 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineModuleInfo.cpp
1b0cd2f2a69c2ee6dd82e5445728f1b93aef4f47 22-Apr-2013 Eric Christopher <echristo@gmail.com> Tidy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180000 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6c3bb94445305f8ee0be6d3c9457a411bf22b3eb 22-Apr-2013 Eric Christopher <echristo@gmail.com> Update comment. Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179999 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
c462db6d66e683fb837c03d661483106a869a407 22-Apr-2013 David Blaikie <dblaikie@gmail.com> Revert "Revert "PR14606: debug info imported_module support""

This reverts commit r179840 with a fix to test/DebugInfo/two-cus-from-same-file.ll

I'm not sure why that test only failed on ARM & MIPS and not X86 Linux, even
though the debug info was clearly invalid on all of them, but this ought to fix
it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179996 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0cb1019e9cd41237408eae09623eb9a34a4cbe0c 22-Apr-2013 Jim Grosbach <grosbach@apple.com> Legalize vector truncates by parts rather than just splitting.

Rather than just splitting the input type and hoping for the best, apply
a bit more cleverness. Just splitting the types until the source is
legal often leads to an illegal result time, which is then widened and a
scalarization step is introduced which leads to truly horrible code
generation. With the loop vectorizer, these sorts of operations are much
more common, and so it's worth extra effort to do them well.

Add a legalization hook for the operands of a TRUNCATE node, which will
be encountered after the result type has been legalized, but if the
operand type is still illegal. If simple splitting of both types
ends up with the result type of each half still being legal, just
do that (v16i16 -> v16i8 on ARM, for example). If, however, that would
result in an illegal result type (v8i32 -> v8i8 on ARM, for example),
we can get more clever with power-two vectors. Specifically,
split the input type, but also widen the result element size, then
concatenate the halves and truncate again. For example on ARM,
To perform a "%res = v8i8 trunc v8i32 %in" we transform to:
%inlo = v4i32 extract_subvector %in, 0
%inhi = v4i32 extract_subvector %in, 4
%lo16 = v4i16 trunc v4i32 %inlo
%hi16 = v4i16 trunc v4i32 %inhi
%in16 = v8i16 concat_vectors v4i16 %lo16, v4i16 %hi16
%res = v8i8 trunc v8i16 %in16

This allows instruction selection to generate three VMOVN instructions
instead of a sequences of moves, stores and loads.

Update the ARMTargetTransformInfo to take this improved legalization
into account.

Consider the simplified IR:

define <16 x i8> @test1(<16 x i32>* %ap) {
%a = load <16 x i32>* %ap
%tmp = trunc <16 x i32> %a to <16 x i8>
ret <16 x i8> %tmp
}

define <8 x i8> @test2(<8 x i32>* %ap) {
%a = load <8 x i32>* %ap
%tmp = trunc <8 x i32> %a to <8 x i8>
ret <8 x i8> %tmp
}

Previously, we would generate the truly hideous:
.syntax unified
.section __TEXT,__text,regular,pure_instructions
.globl _test1
.align 2
_test1: @ @test1
@ BB#0:
push {r7}
mov r7, sp
sub sp, sp, #20
bic sp, sp, #7
add r1, r0, #48
add r2, r0, #32
vld1.64 {d24, d25}, [r0:128]
vld1.64 {d16, d17}, [r1:128]
vld1.64 {d18, d19}, [r2:128]
add r1, r0, #16
vmovn.i32 d22, q8
vld1.64 {d16, d17}, [r1:128]
vmovn.i32 d20, q9
vmovn.i32 d18, q12
vmov.u16 r0, d22[3]
strb r0, [sp, #15]
vmov.u16 r0, d22[2]
strb r0, [sp, #14]
vmov.u16 r0, d22[1]
strb r0, [sp, #13]
vmov.u16 r0, d22[0]
vmovn.i32 d16, q8
strb r0, [sp, #12]
vmov.u16 r0, d20[3]
strb r0, [sp, #11]
vmov.u16 r0, d20[2]
strb r0, [sp, #10]
vmov.u16 r0, d20[1]
strb r0, [sp, #9]
vmov.u16 r0, d20[0]
strb r0, [sp, #8]
vmov.u16 r0, d18[3]
strb r0, [sp, #3]
vmov.u16 r0, d18[2]
strb r0, [sp, #2]
vmov.u16 r0, d18[1]
strb r0, [sp, #1]
vmov.u16 r0, d18[0]
strb r0, [sp]
vmov.u16 r0, d16[3]
strb r0, [sp, #7]
vmov.u16 r0, d16[2]
strb r0, [sp, #6]
vmov.u16 r0, d16[1]
strb r0, [sp, #5]
vmov.u16 r0, d16[0]
strb r0, [sp, #4]
vldmia sp, {d16, d17}
vmov r0, r1, d16
vmov r2, r3, d17
mov sp, r7
pop {r7}
bx lr

.globl _test2
.align 2
_test2: @ @test2
@ BB#0:
push {r7}
mov r7, sp
sub sp, sp, #12
bic sp, sp, #7
vld1.64 {d16, d17}, [r0:128]
add r0, r0, #16
vld1.64 {d20, d21}, [r0:128]
vmovn.i32 d18, q8
vmov.u16 r0, d18[3]
vmovn.i32 d16, q10
strb r0, [sp, #3]
vmov.u16 r0, d18[2]
strb r0, [sp, #2]
vmov.u16 r0, d18[1]
strb r0, [sp, #1]
vmov.u16 r0, d18[0]
strb r0, [sp]
vmov.u16 r0, d16[3]
strb r0, [sp, #7]
vmov.u16 r0, d16[2]
strb r0, [sp, #6]
vmov.u16 r0, d16[1]
strb r0, [sp, #5]
vmov.u16 r0, d16[0]
strb r0, [sp, #4]
ldm sp, {r0, r1}
mov sp, r7
pop {r7}
bx lr

Now, however, we generate the much more straightforward:
.syntax unified
.section __TEXT,__text,regular,pure_instructions
.globl _test1
.align 2
_test1: @ @test1
@ BB#0:
add r1, r0, #48
add r2, r0, #32
vld1.64 {d20, d21}, [r0:128]
vld1.64 {d16, d17}, [r1:128]
add r1, r0, #16
vld1.64 {d18, d19}, [r2:128]
vld1.64 {d22, d23}, [r1:128]
vmovn.i32 d17, q8
vmovn.i32 d16, q9
vmovn.i32 d18, q10
vmovn.i32 d19, q11
vmovn.i16 d17, q8
vmovn.i16 d16, q9
vmov r0, r1, d16
vmov r2, r3, d17
bx lr

.globl _test2
.align 2
_test2: @ @test2
@ BB#0:
vld1.64 {d16, d17}, [r0:128]
add r0, r0, #16
vld1.64 {d18, d19}, [r0:128]
vmovn.i32 d16, q8
vmovn.i32 d17, q9
vmovn.i16 d16, q8
vmov r0, r1, d16
bx lr

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179989 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
1e48093df8971ba188d943d71eb7cdb1fb65aa42 21-Apr-2013 Jim Grosbach <grosbach@apple.com> Tidy up comment grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179986 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
8b71994fde0f0fcdf7a8260dc773fb7376b1231f 20-Apr-2013 Tim Northover <Tim.Northover@arm.com> Remove unused ShouldFoldAtomicFences flag.

I think it's almost impossible to fold atomic fences profitably under
LLVM/C++11 semantics. As a result, this is now unused and just
cluttering up the target interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179940 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringBase.cpp
6265d5c91a18b2fb6499eb581c488315880c044d 20-Apr-2013 Tim Northover <Tim.Northover@arm.com> Remove unused MEMBARRIER DAG node; it's been replaced by ATOMIC_FENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179939 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAGDumper.cpp
456ca048af35163b9f52187e92a23ee0a9f059e8 20-Apr-2013 Stephen Lin <stephenwlin@gmail.com> Add CodeGen support for functions that always return arguments via a new parameter attribute 'returned', which is taken advantage of in target-independent tail call opportunity detection and in ARM call lowering (when placed on an integral first parameter).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179925 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/SelectionDAGBuilder.cpp
5c34e08b9fff9d4df2421e4f41ff15b85f638dd1 20-Apr-2013 Stephen Lin <stephenwlin@gmail.com> Allow tail call opportunity detection through nested and/or multiple iterations of extractelement/insertelement indirection


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179924 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
462123f66159a8c7ff34b87cb269955252be3ec0 20-Apr-2013 Eli Bendersky <eliben@google.com> Simplify the code in FastISel::tryToFoldLoad, add an assertion and fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179908 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
75299e3a95c0cfcade8515c603e7802351a11bee 20-Apr-2013 Eli Bendersky <eliben@google.com> Move TryToFoldFastISelLoad to FastISel, where it belongs. In general, I'm
trying to move as much FastISel logic as possible out of the main path in
SelectionDAGISel - intermixing them just adds confusion.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179902 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
2a8bea7a8eba9bfa05dcc7a87e9152a0043841b2 20-Apr-2013 Michael Liao <michael.liao@intel.com> ArrayRefize getMachineNode(). No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179901 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
a58d67af29d38fa37c94f59af37db9df75f349be 19-Apr-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an MRI::verifyUseLists() function.

This checks the sanity of the register use lists in the MI intermediate
representation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179895 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
achineVerifier.cpp
03494e05e8aa1b919b5a8a6277d7ffec5d1bfbb5 19-Apr-2013 Eli Bendersky <eliben@google.com> Use dbgs() consistently for -debug printouts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179894 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
41201ed06fa4fb246f5a7e9e2b62168814eca6ff 19-Apr-2013 Eric Christopher <echristo@gmail.com> Revert "PR14606: debug info imported_module support"

This reverts commit r179836 as it seems to have caused test failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179840 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
bcb81360a26cba066fae3acbe25b8ac161af6881 19-Apr-2013 David Blaikie <dblaikie@gmail.com> PR14606: debug info imported_module support

Adding another CU-wide list, in this case of imported_modules (since they
should be relatively rare, it seemed better to add a list where each element
had a "context" value, rather than add a (usually empty) list to every scope).
This takes care of DW_TAG_imported_module, but to fully address PR14606 we'll
need to expand this to cover DW_TAG_imported_declaration too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179836 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
5bd0767a040eae0d8f153c46238849e64e166018 19-Apr-2013 Eli Bendersky <eliben@google.com> Add some more stats for fast isel vs. SelectionDAG, w.r.t lowering function
arguments in entry BBs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
df39be6cb4eb44011db3d3e86f8fe463f81ce127 17-Apr-2013 Peter Collingbourne <peter@pcc.me.uk> Add support for subsections to the ELF assembler. Fixes PR8717.

Differential Revision: http://llvm-reviews.chandlerc.com/D598

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179725 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
604b3573f955d61ba87215c25ba2f52477c71ecc 15-Apr-2013 Andy Gibbs <andyg1001@hotmail.co.uk> Replace uses of the deprecated std::auto_ptr with OwningPtr.

This is a rework of the broken parts in r179373 which were subsequently reverted in r179374 due to incompatibility with C++98 compilers. This version should be ok under C++98.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179520 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
420820056d42c93ea64cd86a95848bf4e0040670 14-Apr-2013 Nadav Rotem <nrotem@apple.com> Document the decision to assume that the cost of floats is twice as much as integers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179478 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
baedcd79773919f2a7c7c4dcdc37f49a807a73f3 13-Apr-2013 Andrew Trick <atrick@apple.com> MI-Sched: DEBUG formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179452 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
6a22dba4854a8b3d7427f8493f663c1b52df4477 13-Apr-2013 Andrew Trick <atrick@apple.com> MI-Sched cleanup. If an instruction has no valid sched class, do not attempt to check for a variant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179451 91177308-0d34-0410-b5e6-96231b3b80d8
argetSchedule.cpp
4392f0f407fe4e2a9ec53b2560a1cbf86357c190 13-Apr-2013 Andrew Trick <atrick@apple.com> MI-Sched: schedule physreg copies.

The register allocator expects minimal physreg live ranges. Schedule
physreg copies accordingly. This is slightly tricky when they occur in
the middle of the scheduling region. For now, this is handled by
rescheduling the copy when its associated instruction is
scheduled. Eventually we may instead bundle them, but only if we can
preserve the bundles as parallel copies during regalloc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179449 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAGInstrs.cpp
9eb366acba65b5779d2129db3a6fb6a0414572d4 12-Apr-2013 Nadav Rotem <nrotem@apple.com> CostModel: increase the default cost of supported floating point operations from 1 to two. Fixed a few tests that changes because now the cost of one insert + a vector operation on two doubles is lower than two scalar operations on doubles.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179413 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
3389e10d675f7723d3ab24deda60dfba568b42c0 12-Apr-2013 Benjamin Kramer <benny.kra@googlemail.com> Revert broken pieces of r179373.

You can't copy an OwningPtr, and move semantics aren't available in C++98.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179374 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
200241e4de11981523b3d14f3acab6129efed701 12-Apr-2013 Andy Gibbs <andyg1001@hotmail.co.uk> Replace uses of the deprecated std::auto_ptr with OwningPtr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179373 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
33a47d66e9f9126017d051bfba35cb9be6609b3e 12-Apr-2013 Nadav Rotem <nrotem@apple.com> Don't disable block layout when forcing block alignment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179355 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
07706e5506fb1bf494667e9fd16795b6c0b4d0fb 12-Apr-2013 Nadav Rotem <nrotem@apple.com> Add a flag to align all basic blocks in the function.

When debugging performance regressions we often ask ourselves if the regression
that we see is due to poor isel/sched/ra or due to some micro-architetural
problem. When comparing two code sequences one good way to rule out front-end
bottlenecks (and other the issues) is to force code alignment. This pass adds
a flag that forces the alignment of all of the basic blocks in the program.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179353 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
fdca22129033ff830a8a9574f0e24a49caedfa96 11-Apr-2013 Benjamin Kramer <benny.kra@googlemail.com> Add braces around || in && to pacify GCC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179275 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
9af7014019c971368d541870b108aef1f12a24ba 11-Apr-2013 Hal Finkel <hfinkel@anl.gov> Manually remove successors in if conversion when CopyAndPredicateBlock is used

In the simple and triangle if-conversion cases, when CopyAndPredicateBlock is
used because the to-be-predicated block has other predecessors, we need to
explicitly remove the old copied block from the successors list. Normally if
conversion relies on TII->AnalyzeBranch combined with BB->CorrectExtraCFGEdges
to cleanup the successors list, but if the predicated block contained an
un-analyzable branch (such as a now-predicated return), then this will fail.

These extra successors were causing a problem on PPC because it was causing
later passes (such as PPCEarlyReturm) to leave dead return-only basic blocks in
the code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179227 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
5ed028385c39f3de4570fa6f77c734d968d26902 10-Apr-2013 Andrew Trick <atrick@apple.com> Generalize the PassConfig API and remove addFinalizeRegAlloc().

The target hooks are getting out of hand. What does it mean to run
before or after regalloc anyway? Allowing either Pass* or AnalysisID
pass identification should make it much easier for targets to use the
substitutePass and insertPass APIs, and create less need for badly
named target hooks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179140 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
e0828ec6027e43724a7c5c76a3409344198dac71 09-Apr-2013 Eric Christopher <echristo@gmail.com> The .dwo section shouldn't contain the unrelocated values (and
therefore not at all) of the pc or statement list. We also don't
need to emit the compilation dir so save so space and time
and don't bother.

Fix up the testcase accordingly and verify that we don't emit
the attributes or the items that they use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179114 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6fac1fbf30e41d33506b5bc66aa480ac7de7531d 09-Apr-2013 Benjamin Kramer <benny.kra@googlemail.com> DAGCombiner: Fold a shuffle on CONCAT_VECTORS into a new CONCAT_VECTORS if possible.

This pattern occurs in SROA output due to the way vector arguments are lowered
on ARM.

The testcase from PR15525 now compiles into this, which is better than the code
we got with the old scalarrepl:
_Store:
ldr.w r9, [sp]
vmov d17, r3, r9
vmov d16, r1, r2
vst1.8 {d16, d17}, [r0]
bx lr

Differential Revision: http://llvm-reviews.chandlerc.com/D647

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179106 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9a9e73b47d139ecb6bfc3c934352ab7c7ee9af44 07-Apr-2013 Eric Christopher <echristo@gmail.com> DW_FORM_sec_offset should be a relocation on platforms that use
a relocation across sections. Do this for DW_AT_stmt list in the
skeleton CU and check the relocations in the debug_info section.

Add a FIXME for multiple CUs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178969 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6e01dcbb7306514f11834f1e8d7d642013ea349b 06-Apr-2013 Nadav Rotem <nrotem@apple.com> typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178949 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
5044a9395a6f19c37989d877a7cbbe21dd84c5b7 06-Apr-2013 Manman Ren <mren@apple.com> Dwarf: use utostr on CUID to append to SmallString.

We used to do "SmallString += CUID", which is incorrect, since CUID will
be truncated to a char.

rdar://problem/13573833


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178941 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2e80991a7712d51f7637513703fc896f93eea252 06-Apr-2013 Hal Finkel <hfinkel@anl.gov> Reapply r178845 with fix - Fix bug in PEI's virtual-register scavenging

This fixes PEI as previously described, but correctly handles the case where
the instruction defining the virtual register to be scavenged is the first in
the block. Arnold provided me with a bugpoint-reduced test case, but even that
seems too large to use as a regression test. If I'm successful in cleaning it
up then I'll commit that as well.

Original commit message:

This change fixes a bug that I introduced in r178058. After a register is
scavenged using one of the available spills slots the instruction defining the
virtual register needs to be moved to after the spill code. The scavenger has
already processed the defining instruction so that registers killed by that
instruction are available for definition in that same instruction. Unfortunately,
after this, the scavenger needs to iterate through the spill code and then
visit, again, the instruction that defines the now-scavenged register. In order
to avoid confusion, the register scavenger needs the ability to 'back up'
through the spill code so that it can again process the instructions in the
appropriate order. Prior to this fix, once the scavenger reached the
just-moved instruction, it would assert if it killed any registers because,
having already processed the instruction, it believed they were undefined.

Unfortunately, I don't yet have a small test case. Thanks to Pranav Bhandarkar
for diagnosing the problem and testing this fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178919 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
13bbe1f52e8d57151e2730db49094e1c62a4c793 05-Apr-2013 Bill Wendling <isanbard@gmail.com> Use the target options specified on a function to reset the back-end.

During LTO, the target options on functions within the same Module may
change. This would necessitate resetting some of the back-end. Do this for X86,
because it's a Friday afternoon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178917 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringBase.cpp
argetOptionsImpl.cpp
b6cfeb63f8192724362565567a4cb4aa642baa1d 05-Apr-2013 Hal Finkel <hfinkel@anl.gov> Revert r178845 - Fix bug in PEI's virtual-register scavenging

Reverting because this breaks one of the LTO builders. Original commit message:

This change fixes a bug that I introduced in r178058. After a register is
scavenged using one of the available spills slots the instruction defining the
virtual register needs to be moved to after the spill code. The scavenger has
already processed the defining instruction so that registers killed by that
instruction are available for definition in that same instruction. Unfortunately,
after this, the scavenger needs to iterate through the spill code and then
visit, again, the instruction that defines the now-scavenged register. In order
to avoid confusion, the register scavenger needs the ability to 'back up'
through the spill code so that it can again process the instructions in the
appropriate order. Prior to this fix, once the scavenger reached the
just-moved instruction, it would assert if it killed any registers because,
having already processed the instruction, it believed they were undefined.

Unfortunately, I don't yet have a small test case. Thanks to Pranav Bhandarkar
for diagnosing the problem and testing this fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178916 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
afe2f43e4ea0a514413bc742fc03ef5c675ae86a 05-Apr-2013 Hal Finkel <hfinkel@anl.gov> Fix bug in PEI's virtual-register scavenging

This change fixes a bug that I introduced in r178058. After a register is
scavenged using one of the available spills slots the instruction defining the
virtual register needs to be moved to after the spill code. The scavenger has
already processed the defining instruction so that registers killed by that
instruction are available for definition in that same instruction. Unfortunately,
after this, the scavenger needs to iterate through the spill code and then
visit, again, the instruction that defines the now-scavenged register. In order
to avoid confusion, the register scavenger needs the ability to 'back up'
through the spill code so that it can again process the instructions in the
appropriate order. Prior to this fix, once the scavenger reached the
just-moved instruction, it would assert if it killed any registers because,
having already processed the instruction, it believed they were undefined.

Unfortunately, I don't yet have a small test case. Thanks to Pranav Bhandarkar
for diagnosing the problem and testing this fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178845 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
614dacc9102ed3bf3fe4c985b5bc12857a26bae2 05-Apr-2013 Andrew Trick <atrick@apple.com> RegisterPressure heuristics currently require signed comparisons.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178823 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
2182977ff2cc8ff1259e3a2c3528651496d818d4 05-Apr-2013 Andrew Trick <atrick@apple.com> Disable DFSResult for ConvergingScheduler.

For now, just save the compile time since the ConvergingScheduler
heuristics don't use this analysis. We'll probably enable it later
after compile-time investigation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178822 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
11189f7a014c04a1fe4366ec4bf9a6187d98986a 05-Apr-2013 Andrew Trick <atrick@apple.com> MachineScheduler: format DEBUG output.

I'm getting more serious about tuning and enabling on x86/ARM. Start
by making the trace readable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178821 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
6bf4f676413b8f7d97aaff289997aab344180957 05-Apr-2013 Arnold Schwaighofer <aschwaighofer@apple.com> CostModel: Add parameter to instruction cost to further classify operand values

On certain architectures we can support efficient vectorized version of
instructions if the operand value is uniform (splat) or a constant scalar.
An example of this is a vector shift on x86.

We can efficiently support

for (i = 0 ; i < ; i += 4)
w[0:3] = v[0:3] << <2, 2, 2, 2>

but not

for (i = 0; i < ; i += 4)
w[0:3] = v[0:3] << x[0:3]

This patch adds a parameter to getArithmeticInstrCost to further qualify operand
values as uniform or uniform constant.

Targets can then choose to return a different cost for instructions with such
operand values.

A follow-up commit will test this feature on x86.

radar://13576547

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178807 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
624a93ee47fd05adbad4ea22b50c554ca23ac0ef 05-Apr-2013 Manman Ren <mren@apple.com> Debug Info: revert 178722 for now.

There is a difference for FORM_ref_addr between DWARF 2 and DWARF 3+.
Since Eric is against guarding DWARF 2 ref_addr with DarwinGDBCompat, we are
still in discussion on how to handle this.

The correct solution is to update our header to say version 4 instead of version
2 and update tool chains as well.

rdar://problem/13559431


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178806 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
2e892e4e27ecb6b1af757796841db5ff18df99a9 05-Apr-2013 Adrian Prantl <aprantl@apple.com> typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178804 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
5622eaeffef44dd09a1dd061299d6c02d9ad4099 04-Apr-2013 Eli Bendersky <eliben@google.com> Formatting


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178771 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
e3d75ee2a1c8ea11fd01fc49055d08f2da7f5668 04-Apr-2013 Manman Ren <mren@apple.com> Debug Info: according to DWARF 2, FORM_ref_addr the same size as an address on
the target system.

It was hard-coded to 4 bytes before. I can't get llvm to generate a
ref_addr on a reasonably sized testing case.

rdar://problem/13559431


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178722 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
cd7a1558edd0bdae770c57b82b32291e54e014b2 03-Apr-2013 Bill Schmidt <wschmidt@linux.vnet.ibm.com> Fix PR15632: No support for ppcf128 floating-point remainder on PowerPC.

For this we need to use a libcall. Previously LLVM didn't implement
libcall support for frem, so I've added it in the usual
straightforward manner. A test case from the bug report is included.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178639 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
0c5cdc5c6e12aea4f68d267b4c279f0d01389c1a 03-Apr-2013 Eric Christopher <echristo@gmail.com> Fix grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178624 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
3dcb538661317926e90c7a21cec92c7d871f13b9 03-Apr-2013 Eric Christopher <echristo@gmail.com> Remove ZeroOrMore from the option description. We don't need it here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178623 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2ccdbc6675fd5bafb6da65dfca850b6e2587f9f3 03-Apr-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow MachineTraceMetrics to be used when the model has no resources.

It it still possible to extract information from itineraries, for
example.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178582 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
achineTraceMetrics.cpp
423d6744123e4886f9f79f6273fa345b9cce51a8 02-Apr-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't attempt MTM heuristics without a scheduling model present.

This should fix the PPC buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178558 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
8396e130427999c57422e52af3913eb8182847e5 02-Apr-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Count processor resources individually in MachineTraceMetrics.

The new instruction scheduling models provide information about the
number of cycles consumed on each processor resource. This makes it
possible to estimate ILP more accurately than simply counting
instructions / issue width.

The functions getResourceDepth() and getResourceLength() now identify
the limiting processor resource, and return a cycle count based on that.

This gives more precise resource information, particularly in traces
that use one resource a lot more than others.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178553 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
e737018a86fa3da37f74ec1757603f933efcf5aa 02-Apr-2013 Arnold Schwaighofer <aschwaighofer@apple.com> DAGCombiner: Merge store/loads when we have extload/truncstores

This is helps on architectures where i8,i16 are not legal but we have byte, and
short loads/stores. Allowing us to merge copies like the one below on ARM.

copy(char *a, char *b, int n) {
do {
int t0 = a[0];
int t1 = a[1];
b[0] = t0;
b[1] = t1;

radar://13536387

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f28a29b776b7dc2b97d09c75d69494f862c216b3 01-Apr-2013 Arnold Schwaighofer <aschwaighofer@apple.com> Merge load/store sequences with adresses: base + index + offset

We would also like to merge sequences that involve a variable index like in the
example below.

int index = *idx++
int i0 = c[index+0];
int i1 = c[index+1];
b[0] = i0;
b[1] = i1;

By extending the parsing of the base pointer to handle dags that contain a
base, index, and offset we can handle examples like the one above.

The dag for the code above will look something like:

(load (i64 add (i64 copyfromreg %c)
(i64 signextend (i8 load %index))))

(load (i64 add (i64 copyfromreg %c)
(i64 signextend (i32 add (i32 signextend (i8 load %index))
(i32 1)))))

The code that parses the tree ignores the intermediate sign extensions. However,
if there is a sign extension it needs to be on all indexes.

(load (i64 add (i64 copyfromreg %c)
(i64 signextend (add (i8 load %index)
(i8 1))))
vs

(load (i64 add (i64 copyfromreg %c)
(i64 signextend (i32 add (i32 signextend (i8 load %index))
(i32 1)))))
radar://13536387

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178483 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0b68b758bbb6718fc67423109eeb9df64c711a37 30-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> DAGCombine: visitXOR can replace a node without returning it, bail out in that case.

Fixes the crash reported in PR15608.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178429 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f7cef7081b2e09b48d47263e391db2390dddf5e8 30-Mar-2013 Eric Christopher <echristo@gmail.com> Use SmallVectorImpl instead of SmallVector at the uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178386 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
2df938ad713140c352b2d81b49490e337c018891 29-Mar-2013 Eric Christopher <echristo@gmail.com> Use 12 as the magic number for our abbreviation data and our
die values. A lot of DIEs have 10 attributes in C++ code (example
clang), none had more than 12. Seems like a good default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178366 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
c126c3232a7c6c2e2a2ec9477252f1372b14f728 29-Mar-2013 Eric Christopher <echristo@gmail.com> Move the construction of the skeleton compile unit after the
entire original compile unit has been constructed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178365 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
74a4533a4290b7c6f1fe04a30ca13ec25c529e0a 29-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove the old CodePlacementOpt pass.

It was superseded by MachineBlockPlacement and disabled by default since LLVM 3.1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178349 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
odePlacementOpt.cpp
asses.cpp
argetLoweringBase.cpp
975ee54731476ff6541fc42f6a8cd706f3d33f58 29-Mar-2013 Nadav Rotem <nrotem@apple.com> Fix a typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178346 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
7ae3bb83c278e991940d022b7b48d996da408abf 29-Mar-2013 Chad Rosier <mcrosier@apple.com> [fast-isel] Add a preemptive fix for the case where we fail to materialize an
immediate in a register. I don't believe this should ever fail, but I see no
harm in trying to make this code bullet proof.

I've added an assert to ensure my assumtion is correct. If the assertion fires
something is wrong and we should fix it, rather then just silently fall back to
SelectionDAG isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
26998ee794e9b6f9b0bc27d1e273b6b78afce57d 27-Mar-2013 Hal Finkel <hfinkel@anl.gov> Fix target-customized spilling in the register scavenger

This is a follow-up to r178073 (which should actually make target-customized
spilling work again).

I still don't have a regression test for this (but it would be good to have
one; Thumb 1 and Mips16 use this callback as well).

Patch by Richard Sandiford.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178137 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
df23a60fa6ce053511388e1bccca5900757e1aac 26-Mar-2013 Hal Finkel <hfinkel@anl.gov> Fix the register scavenger for targets that provide custom spilling

As pointed out by Richard Sandiford, my recent updates to the register
scavenger broke targets that use custom spilling (because the new code assumed
that if there were no valid spill slots, than spilling would be impossible).

I don't have a test case, but it should be possible to create one for Thumb 1,
Mips 16, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178073 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
8846129f6eb58982a2cac22306c8c9b586084475 26-Mar-2013 Hal Finkel <hfinkel@anl.gov> Update PEI's virtual-register-based scavenging to support multiple simultaneous mappings

The previous algorithm could not deal properly with scavenging multiple virtual
registers because it kept only one live virtual -> physical mapping (and
iterated through operands in order). Now we don't maintain a current mapping,
but rather use replaceRegWith to completely remove the virtual register as
soon as the mapping is established.

In order to allow the register scavenger to return a physical register killed
by an instruction for definition by that same instruction, we now call
RS->forward(I) prior to eliminating virtual registers defined in I. This
requires a minor update to forward to ignore virtual registers.

These new features will be tested in forthcoming commits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178058 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
b4f98ea1213c866f39aa5b341ec0116f9c2335d7 26-Mar-2013 Michael Liao <michael.liao@intel.com> Enhance folding of (extract_subvec (insert_subvec V1, V2, IIdx), EIdx)

- Handle the case where the result of 'insert_subvect' is bitcasted
before 'extract_subvec'. This removes the redundant insertf128/extractf128
pair on unaligned 256-bit vector load/store on vectors of non 64-bit integer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177945 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1cd1d02141788b212e185d190b4c358e47cc74b4 25-Mar-2013 Shuxin Yang <shuxin.llvm@gmail.com> Disable some unsafe-fp-math DAG-combine transformation after legalization.
For instance, following transformation will be disabled:
x + x + x => 3.0f * x;

The problem of these transformations is that it introduces a FP constant, which
following Instruction-Selection pass cannot handle.

Reviewed by Nadav, thanks a lot!

rdar://13445387


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177933 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
57d76078ae8ecd16b995cc6a9f9bc57bdde4a20e 25-Mar-2013 Eric Christopher <echristo@gmail.com> Couple more sets of tidying.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177920 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
259021a5621fd3837db79934ea5880cb846bfc44 25-Mar-2013 Eric Christopher <echristo@gmail.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177898 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
6a19f7b9de706f6ce895580a8e55996f3f9162e7 25-Mar-2013 Duncan Sands <baldrick@free.fr> Teach cmake about the new Erlang GC files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177869 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
477de3a7859104d7c41a36628169e13e524e980a 25-Mar-2013 Yiannis Tsiouris <gtsiour@softlab.ntua.gr> Add a GC plugin for Erlang

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177867 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ErlangGCPrinter.cpp
rlangGC.cpp
7834c7143384bfde38e39e01158546304ca4f0c2 23-Mar-2013 Owen Anderson <resistor@mac.com> Remove the type legality check from the SelectionDAGBuilder when it lowers @llvm.fmuladd to ISD::FMA nodes.
Performing this check unilaterally prevented us from generating FMAs when the incoming IR contained illegal vector types which would eventually be legalized to underlying types that *did* support FMA.
For example, an @llvm.fmuladd on an OpenCL float16 should become a sequence of float4 FMAs, not float4 fmul+fadd's.

NOTE: Because we still call the target-specific profitability hook, individual targets can reinstate the old behavior, if desired, by simply performing the legality check inside their callback hook. They can also perform more sophisticated legality checks, if, for example, some illegal vector types can be productively implemented as FMAs, but not others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177820 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
0e8fc6f87a5e0173c0c3ab1cfe4ca611bdee6aca 23-Mar-2013 Hal Finkel <hfinkel@anl.gov> Fix comparison of mixed signedness

177774 broke the lld-x86_64-darwin11 builder; error:
error: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned long')
for (SI = 0; SI < Scavenged.size(); ++SI)
~~ ^ ~~~~~~~~~~~~~~~~

Fix this by making SI also unsigned.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177780 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
dc3beb90178fc316f63790812b22201884eaa017 23-Mar-2013 Hal Finkel <hfinkel@anl.gov> Allow the register scavenger to spill multiple registers

This patch lets the register scavenger make use of multiple spill slots in
order to guarantee that it will be able to provide multiple registers
simultaneously.

To support this, the RS's API has changed slightly: setScavengingFrameIndex /
getScavengingFrameIndex have been replaced by addScavengingFrameIndex /
isScavengingFrameIndex / getScavengingFrameIndices.

In forthcoming commits, the PowerPC backend will use this capability in order
to implement the spilling of condition registers, and some special-purpose
registers, without relying on r0 being reserved. In some cases, spilling these
registers requires two GPRs: one for addressing and one to hold the value being
transferred.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177774 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
9b294d4056f47bac5985de89c847aa1a04d38bf0 22-Mar-2013 Hal Finkel <hfinkel@anl.gov> Remove ScavengedRC from RegisterScavenging

ScavengedRC was a dead private variable (set, but not otherwise used). No
functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177708 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
26c417bb588a3e5f9957cf5ba2a034b92513ec15 21-Mar-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix missing std::. Not sure how this compiles for anyone else.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177620 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
93c1fd49d2ca49447e092c4c1c4d5de1005e9e71 21-Mar-2013 Justin Holewinski <jholewinski@nvidia.com> Make variable name more explicit and eliminate redundant lookup in SDNodeOrdering

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177600 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeOrdering.h
7745175be32cd54e4aa6c9cce6f642f59a34a80f 20-Mar-2013 Nadav Rotem <nrotem@apple.com> When computing the demanded bits of Load SDNodes, make sure that we are looking at the loaded-value operand and not the ptr result (in case of pre-inc loads).
rdar://13348420



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177596 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
61aba54f2c0f432179dfaa758bdb2bf1b9929814 20-Mar-2013 Christian Konig <christian.koenig@amd.com> Revert "pre-RA-sched: fix TargetOpcode usage"

This reverts commit 06091513c283c863296f01cc7c2e86b56bb50d02.

The code is obviously wrong, but the trivial fix causes
inefficient code generation on X86. Somebody with more
knowledge of the code needs to take a look here.

Signed-off-by: Christian König <christian.koenig@amd.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177529 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
fa963a885c074b3b0d6cc2466036297c476f7103 20-Mar-2013 Justin Holewinski <jholewinski@nvidia.com> Move SDNode order propagation to SDNodeOrdering, which also fixes a missed
case of order propagation during isel.

Thanks Owen for the suggestion!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177525 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SDNodeOrdering.h
electionDAG/SelectionDAGISel.cpp
06091513c283c863296f01cc7c2e86b56bb50d02 20-Mar-2013 Christian Konig <christian.koenig@amd.com> pre-RA-sched: fix TargetOpcode usage

TargetOpcodes need to be treaded as Machine- and not ISD-Opcodes.

Signed-off-by: Christian König <christian.koenig@amd.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177518 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d73dc544f5e37e6d58befc71e57da3c132804543 20-Mar-2013 Justin Holewinski <jholewinski@nvidia.com> Propagate DAG node ordering during type legalization and instruction selection

A node's ordering is only propagated during legalization if (a) the new node does
not have an ordering (is not a CSE'd node), or (b) the new node has an ordering
that is higher than the node being legalized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAGISel.cpp
2d4629c5d7dcc6582fa7b85a517744f1a3654eba 19-Mar-2013 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge_2013_03_18
f31034db8c12197d00b3e356e1d2a702c2339d49 19-Mar-2013 Jakub Staszak <kubastaszak@gmail.com> Move #include of BitVector from .h to .cpp file.
Also remove unneeded #include and forward declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177357 91177308-0d34-0410-b5e6-96231b3b80d8
pillPlacement.cpp
c2248b0e7895446cccf934b57c6aa3aa712e20d1 19-Mar-2013 Jakub Staszak <kubastaszak@gmail.com> Add some constantness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177356 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
a12c674ee579685e982db008f546681a10cc49a6 18-Mar-2013 Hans Wennborg <hans@hanshq.net> Fix integer comparison in DIEInteger::BestForm.

The always-true "(int)Int == (signed)Int" comparison was found
while experimenting with a potential new Clang warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177290 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
87294b65475ffd4238396dba77d4bbf038b22c4e 18-Mar-2013 Anton Korobeynikov <asl@math.spbu.ru> Windows TLS: Section name prefix to ensure correct order
The linker sorts the .tls$<xyz> sections by name, and we need
to make sure any extra sections we produce (e.g. for weak globals)
always end up between .tls$AAA and .tls$ZZZ, even if the name
starts with e.g. an underscore.

Patch by David Nadlinger!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177256 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
51f6747b23bf7c85e90f816bf9bfae3a1d4fd058 16-Mar-2013 Andrew Trick <atrick@apple.com> Change the default latency for implicit defs.

Implicit defs are not currently positional and not modeled by the
per-operand machine model. Unfortunately, we treat defs that are part
of the architectural instruction description, like flags, the same as
other implicit defs. Really, they should have a fixed MachineInstr
layout and probably shouldn't be "implicit" at all.

For now, we'll change the default latency to be the max operand
latency. That will give flag setting operands full latency for x86
folded loads. Other kinds of "fake" implicit defs don't occur prior to
regalloc anyway, and we would like them to go away postRegAlloc as
well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177227 91177308-0d34-0410-b5e6-96231b3b80d8
argetSchedule.cpp
0cc52c67dbc2e073e3f7f34e05e3e7cd17ba9745 14-Mar-2013 Hal Finkel <hfinkel@anl.gov> Move estimateStackSize from ARM into MachineFrameInfo

This is a generic function (derived from PEI); moving it into
MachineFrameInfo eliminates a current redundancy between the ARM and AArch64
backends, and will allow it to be used by the PowerPC target code.

No functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177111 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
3080d23fde4981835d8a7faf46c152441fadb11f 14-Mar-2013 Hal Finkel <hfinkel@anl.gov> Provide the register scavenger to processFunctionBeforeFrameFinalized

Add the current PEI register scavenger as a parameter to the
processFunctionBeforeFrameFinalized callback.

This change is necessary in order to allow the PowerPC target code to
set the register scavenger frame index after the save-area offset
adjustments performed by processFunctionBeforeFrameFinalized. Only
after these adjustments have been made is it possible to estimate
the size of the stack frame.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177108 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
4cb1f5f4064f2eec1420dc30bf32ac54bd40e222 13-Mar-2013 Bill Wendling <isanbard@gmail.com> Reset some of the target options which affect code generation.

This doesn't reset all of the target options within the TargetOptions
object. This is because some of those are ABI-specific and must be determined if
it's okay to change those on the fly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176986 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4945246327db36405447bc67c14bf26aaeb120e4 13-Mar-2013 Stephen Hines <srhines@google.com> Fix ifdef-related differences from upstream LLVM.

Change-Id: I207500ca8b24afaa976077771cacb20d28a8a31a
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
4c6f895205993b2e724a6025a34d0601135e8b18 13-Mar-2013 Manman Ren <mren@apple.com> No functionality change. Use unreachable in getCUOffset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176963 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b1e052aa1b9e52d12831f86a1ee0fcf0c4030f1b 13-Mar-2013 Manman Ren <mren@apple.com> No functionality change. Use unreachable in getCompileUnit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176962 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
e8a3cc68782cc5d43d7b8e24c4afa94448905349 13-Mar-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Check register classes also when changing them.

We have the same assertion in createVirtualRegister.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176959 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
bc3e96f17bb278358cd3976f35b87591a392f5af 12-Mar-2013 Manman Ren <mren@apple.com> Debug Info: use DW_FORM_ref_addr instead of DW_FORM_ref4 if the referenced DIE
belongs to a different compile unit.

DW_FORM_ref_addr should be used for cross compile-unit reference.

When compiling a large application, we got a dwarfdump verification error where
abstract_origin points to nowhere.

This error can't be reproduced on any testing case in MultiSource.
We may have other cases where we use DW_FORM_ref4 unconditionally.

rdar://problem/13370501


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176882 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1a5c0510ecb029b7e5d04249cdd4e50b97bf1c3f 12-Mar-2013 Richard Relph <Richard.Relph@amd.com> Avoid generating ISD::SELECT for vector operands to SIGN_EXTEND

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176881 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c0ec8a4f4db3c579dfc8c219dc39014f34260b42 12-Mar-2013 David Blaikie <dblaikie@gmail.com> Remove support for versioned debug info.

Versioned debug info support has been a burden to maintain & also compromised
current debug info verification by causing test cases testing old debug info to
remain rather than being updated to the latest. It also makes it hard to add or
change the metadata schema by requiring various backwards-compatibility in the
DI* hierarchy.

So it's being removed in preparation for new changes to the schema to tidy up
old/unnecessary fields and add new fields needed for new debug info (well, new
to LLVM at least).

The more surprising part of this is the changes to DI*::Verify - this became
necessary due to the changes to AsmWriter. AsmWriter was relying on the version
test to decide which bits of metadata were actually debug info when printing
the comment annotations. Without the version information the tag numbers were
too common & it would print debug info on random metadata that happened to
start with an integer that matched a tag number. Instead this change makes the
Verify functions more precise (just adding "number of operands" checks - not
type checking those operands yet) & relies on that to decide which metadata is
debug info metadata.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176838 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
33cdfe9f1943418604be5c800800394ae809fc4c 11-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Fix a crasher newly introduced in r176659/r176649, where fast-isel tries to
lower an expect intrinsic that is a constant expression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176830 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
760fa5dc8022dcf6982969c26ef566dfbeea979c 10-Mar-2013 Jakub Staszak <kubastaszak@gmail.com> Cleanup #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176787 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
24babfd2346a663fa694fcfe4eb69822268035c4 09-Mar-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove wrong and unnecessary assertion.

PHIs are allowed to have multiple operand pairs per predecessor, and
this code works just fine when it happens.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176734 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
fa785cb22d50c657eb08c762d627cd6aa96982f3 08-Mar-2013 Jan Wen Voung <jvoung@google.com> Disable statistics on Release builds and move tests that depend on -stats.

Summary:
Statistics are still available in Release+Asserts (any +Asserts builds),
and stats can also be turned on with LLVM_ENABLE_STATS.

Move some of the FastISel stats that were moved under DEBUG()
back out of DEBUG(), since stats are disabled across the board now.

Many tests depend on grepping "-stats" output. Move those into
a orig_dir/Stats/. so that they can be marked as unsupported
when building without statistics.

Differential Revision: http://llvm-reviews.chandlerc.com/D486

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176733 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
778ef97c76af82ef9e312529e6bd9d71d3c040ae 08-Mar-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Rewrite the physreg part of findLastUseBefore().

To find the last use of a register unit, start from the bottom and scan
upwards until a user is found.

<rdar://problem/13353090>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176706 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7a58099f0a4c9503f400f6b81590a5f6b73d4b97 08-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove default from fully covered switch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
03abf2f2aa77ddd23b74e431005bf773ce1cf0aa 08-Mar-2013 Tom Stellard <thomas.stellard@amd.com> LegalizeDAG: Respect the result of TLI.getBooleanContents() when expanding SETCC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176695 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3ef5383b3537a420c5e2ab3e657c378e5185549d 08-Mar-2013 Tom Stellard <thomas.stellard@amd.com> DAGCombiner: Use correct value type for checking legality of BR_CC v3

LegalizeDAG.cpp uses the value of the comparison operands when checking
the legality of BR_CC, so DAGCombiner should do the same.

v2:
- Expand more BR_CC value types for NVPTX

v3:
- Expand correct BR_CC value types for Hexagon, Mips, and XCore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176694 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fff2d3aed9d50780d9d07859b03120dcd712d96e 08-Mar-2013 Andrew Trick <atrick@apple.com> Add -verify-misched option.

This verifies live intervals both before and after scheduling. It's
useful for anyone hacking on live interval update.

Note that we don't yet pass verification all the time. We don't yet
handle updating nonallocatable live intervals perfectly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176685 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
e36b47e17be0e3289890f33fe8aaecfc231d83a0 08-Mar-2013 Bill Wendling <isanbard@gmail.com> Revert r176154 in favor of a better approach.

Code generation makes some basic assumptions about the IR it's been given. In
particular, if there is only one 'invoke' in the function, then that invoke
won't be going away. However, with the advent of the `llvm.donothing' intrinsic,
those invokes may go away. If all of them go away, the landing pad no longer has
any users. This confuses the back-end, which asserts.

This happens with SjLj exceptions, because that's the model that modifies the IR
based on there being invokes, etc. in the function.

Remove any invokes of `llvm.donothing' during SjLj EH preparation. This will
give us a CFG that the back-end won't be confused about. If all of the invokes
in a function are removed, then the SjLj EH prepare pass won't insert the bogus
code the relies upon the invokes being there.
<rdar://problem/13228754&13316637>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
jLjEHPrepare.cpp
c9efaeb53b5b4b325fdb45767eacd7970ee629c5 08-Mar-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a getPassName() method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176669 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
6ffcd5efe15156e2a71bd1a33f5f8e27de894ea3 08-Mar-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename isEarlierInSameTrace to isUsefulDominator.

In very rare cases caused by irreducible control flow, the dominating
block can have the same trace head without actually being part of the
trace.

As long as such a dominator still has valid instruction depths, it is OK
to use it for computing instruction depths.

Rename the function to avoid lying, and add a check that instruction
depths are computed for the dominator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176668 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
4fde76db466a749200af555b0f400af873111767 07-Mar-2013 Chad Rosier <mcrosier@apple.com> [fast-isel] Seriously, add support for the expect intrinsic.
rdar://13370942

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176659 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
33947b4391458ed3ba2d7e7c741968325cbffa1d 07-Mar-2013 Chad Rosier <mcrosier@apple.com> [fast-isel] Add support for the expect intrinsic.
rdar://13370942

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176649 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3853f74aba301ef08b699bac2fa8e53230714a58 07-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> ArrayRefize some code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176648 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
877fcf52d17f1cadc38112ca988cdd4e666bac24 07-Mar-2013 Andrew Trick <atrick@apple.com> pre-RA-sched debug-only fix

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176638 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
ccd38f4efb7f1a4457234d95e30fec5bcc738700 07-Mar-2013 Andrew Trick <atrick@apple.com> pre-RA-sched assertion fix. This bug was exposed by r176037.

rdar:13370002 [pre-RA-sched] assertion: released too many times

I tracked this down to an earlier hack that is no longer applicable
and interfered with normal scheduler logic. With the changes in
r176037, it was causing an instruction to be scheduled multiple times.

I have an external test case that I tried hard to reduce and
failed. I can't even reproduce with llc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
4d895455fe1bcc0bbfe1a0f18c01246694f64a9c 07-Mar-2013 Nadav Rotem <nrotem@apple.com> No need to go through int64 and APInt when generating a new constant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176615 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
34fd0d2b93edb3ddefe5c5766073273f86b23b78 07-Mar-2013 Jim Grosbach <grosbach@apple.com> SDAG: Handle scalarizing an extend of a <1 x iN> vector.

Just scalarize the element and rebuild a vector of the result type
from that.

rdar://13281568

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176614 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
3de61b4c0144748e4b9157e2c22fe4ea685981a2 07-Mar-2013 Manman Ren <mren@apple.com> Debug Info: store the files and directories for each compile unit.

We now emit a line table for each compile unit. To reduce the prologue size
of each line table, the files and directories used by each compile unit are
stored in std::map<unsigned, std::vector< > > instead of std::vector< >.

The prologue for a lto'ed image can be as big as 93K. Duplicating 93K for each
compile unit causes a huge increase of debug info. With this patch, each
prologue will only emit the files required by the compile unit.

rdar://problem/13342023


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176605 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
2123c1c0de9e6006dfffe9123b4b992703202e3e 06-Mar-2013 Stephen Hines <srhines@google.com> Update build rules for LLVM merge to version 176139.

Change-Id: Ibb71ad9a6a2ed05dbf87f249ac42b1355e3fa41a
ndroid.mk
5adb136be579e8fff3734461580cb34d1d2983b8 06-Mar-2013 Stephen Hines <srhines@google.com> Merge commit 'b3201c5cf1e183d840f7c99ff779d57f1549d8e5' into merge_20130226

Conflicts:
include/llvm/Support/ELF.h
lib/Support/DeltaAlgorithm.cpp

Change-Id: I24a4fbce62eb39d924efee3c687b55e1e17b30cd
69d37fa6351d5fe2a97ea24a2d0d667a92f14a9c 05-Mar-2013 Bill Wendling <isanbard@gmail.com> Remove unused #includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176467 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
asses.cpp
rologEpilogInserter.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
egisterCoalescer.cpp
tackProtector.cpp
argetLoweringObjectFileImpl.cpp
woAddressInstructionPass.cpp
b804a1b1783e99ec12a093767027269a373189d3 02-Mar-2013 Eli Bendersky <eliben@google.com> Remove duplicate line and move another closer to its actual use


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176391 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c3c3810f514af7e08f84ef76b0c304ec264ee021 01-Mar-2013 Akira Hatanaka <ahatanaka@mips.com> Set properties for f128 type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
argetLoweringBase.cpp
7590022f4079dcd956b99e2f10a028f2158ece53 01-Mar-2013 Chad Rosier <mcrosier@apple.com> Generate an error message instead of asserting or segfaulting when we can't
handle indirect register inputs.
rdar://13322011

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176367 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a6b20ced765b67a85d9219d0c8547fc9c133e14f 01-Mar-2013 Michael Liao <michael.liao@intel.com> Fix PR10475

- ISD::SHL/SRL/SRA must have either both scalar or both vector operands
but TLI.getShiftAmountTy() so far only return scalar type. As a
result, backend logic assuming that breaks.
- Rename the original TLI.getShiftAmountTy() to
TLI.getScalarShiftAmountTy() and re-define TLI.getShiftAmountTy() to
return target-specificed scalar type or the same vector type as the
1st operand.
- Fix most TICG logic assuming TLI.getShiftAmountTy() a simple scalar
type.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
argetLoweringBase.cpp
838038d3e16d0c319c94fec246d1141b27e0046a 01-Mar-2013 Andrew Trick <atrick@apple.com> Scheduler diagnostics. Print the register name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176316 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
bf32b7f8446334b4a8fab0cc4153ed02046271b2 01-Mar-2013 Andrew Trick <atrick@apple.com> Instructions schedulers should report correct height/depth.

We avoided computing DAG height/depth during Node printing because it
shouldn't depend on an otherwise valid DAG. But this has become far
too annoying for the common case of a valid DAG where we want to see
valid values. If doing the computation on-the-fly turns out to be a
problem in practice, then I'll add a mode to the diagnostics to only
force it when we're likely to have a valid DAG, otherwise explicitly
print INVALID instead of bogus numbers. For now, just go for it all
the time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176314 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
6437d38a0deb0cd51607dd624a70d093ae347156 01-Mar-2013 Eli Bendersky <eliben@google.com> A small refactoring + adding comments.

SelectionDAGIsel::LowerArguments needs a function, not a basic block. So it
makes sense to pass it the function instead of extracting a basic-block from
the function and then tossing it. This is also more self-documenting (functions
have arguments, BBs don't).

In addition, added comments to a couple of Select* methods.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
8611d4449a77ca05e808823bc966573a85da00cb 28-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Cost model support for lowered math builtins.

We make the cost for calling libm functions extremely high as emitting the
calls is expensive and causes spills (on x86) so performance suffers. We still
vectorize important calls like ceilf and friends on SSE4.1. and fabs.

Differential Revision: http://llvm-reviews.chandlerc.com/D466

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176287 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
0a4da5f0fe70d0da620e504863f24881a5f9f7cb 28-Feb-2013 Eli Bendersky <eliben@google.com> Put some per-instruction statistics of fast isel under NDEBUG, together with
other per-instruction statistics.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a8ada25afdb74a1cc53c183348ad9a424501dc96 28-Feb-2013 Eric Christopher <echristo@gmail.com> Remove unnecessary check against isGlobalVariable. We check it
a few lines above.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176224 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
8d45a98eb14338428155be70681a42dccc03a5ce 28-Feb-2013 Eric Christopher <echristo@gmail.com> Rework comment slightly and fix a few typos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176223 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
f686cfb33b232db5f9a671ddaf1265b42c7180d5 28-Feb-2013 Eric Christopher <echristo@gmail.com> Remove unnecessary cast to void.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176222 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
21a08a1189df7922de3a89432cf896ed681db5d5 28-Feb-2013 Manman Ren <mren@apple.com> Debug Info: for static member variables, always put AT_MIPS_linkage_name to the
definition DIE (TAG_variable), and put AT_MIPS_linkage_name to TAG_member when
DarwinGDBCompat is true.

Darwin GDB needs AT_MIPS_linkage_name at both places to work.

Follow-up patch to r176143.
rdar://problem/13291234


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176220 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
139f50a1a8d985bd950d88cef54a7ee560de9cb9 27-Feb-2013 Nadav Rotem <nrotem@apple.com> Silence the unused variable warning.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176218 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
07cd932c93fc3d552763f3eddced138bffdd9bd9 27-Feb-2013 Nadav Rotem <nrotem@apple.com> The FastISEL should be fast. But when we record statistics we use atomic operations to increment the counters.
This patch disables the counters on non-debug builds. This reduces the runtime of SelectionDAGISel::SelectCodeCommon by ~5%.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176214 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7dbd34b199be8d053240a67cc1e81a04096af1c2 27-Feb-2013 Michael Ilseman <milseman@apple.com> Reverted: r176136 - Have a way for a target to opt-out of target-independent fast isel

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5e5974f51ad079a3ed890ca8be1d3f50150320ad 27-Feb-2013 Manman Ren <mren@apple.com> SelectionDAG: If llvm.donothing has a landingpad, we should clear
CurrentCallSite to avoid an assertion failure:
assert(MMI.getCurrentCallSite() == 0 && "Overlapping call sites!");

rdar://problem/13228754


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176154 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
06df83c25a7b07b3a19a40bd680c0a205bcc0b9a 27-Feb-2013 Manman Ren <mren@apple.com> Debug Info: for static member variables, add AT_MIPS_linkage_name to the
definition DIE, to make old GDB happy.

We have a regression for old GDB when Clang uses DW_TAG_member to declare
static members inside a class, instead of DW_TAG_variable. This patch will fix
this regression.

rdar://problem/13291234


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176143 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
bdc98d3510c1b3d32679ed3188becdc6d6dfd545 27-Feb-2013 Michael Ilseman <milseman@apple.com> Have a way for a target to opt-out of target-independent fast isel

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176136 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d61c840fcda18675c131bf86bb6d4498fcb6c272 26-Feb-2013 Manman Ren <mren@apple.com> Revert r176120 as it caused a failure at static-member.cpp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176129 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
6fe26103d71263124e3cc56c0a349cb1391208a1 26-Feb-2013 Manman Ren <mren@apple.com> Debug Info: for static member variables, move AT_MIPS_linkage_name from
TAG_member inside a class to the specification DIE.

Having AT_MIPS_linkage_name on TAG_member caused old gdb (GNU 6.3.50) to
error out. Also gcc 4.7 has AT_MIPS_linkage_name on the specification DIE.

rdar://problem/13291234


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176120 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
ffa1dbadaf73d5b80a2bdf421c16cba29aea80a3 25-Feb-2013 Chad Rosier <mcrosier@apple.com> Fix wording.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176055 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fd3417d288c22673ec6d76dc4695989bb544373f 25-Feb-2013 Chad Rosier <mcrosier@apple.com> [fast-isel] Add X86FastIsel::FastLowerArguments to handle functions with 6 or
fewer scalar integer (i32 or i64) arguments. It completely eliminates the need
for SDISel for trivial functions.

Also, add the new llc -fast-isel-abort-args option, which is similar to
-fast-isel-abort option, but for formal argument lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176052 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
029f4fd2ff539ed143b83c140349df2c064965d2 25-Feb-2013 Andrew Trick <atrick@apple.com> pre-RA-sched fix: only reevaluate physreg interferences when necessary.

Fixes rdar:13279013: scheduler was blowing up on select instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176037 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
50e75bfc29269def44981ab5f109334d95f55007 25-Feb-2013 Matt Beaumont-Gay <matthewbg@google.com> 'Hexadecimal' has two 'a's and only one 'i'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176031 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7e6ffac9ab0af2a54036c978822ad40492246622 25-Feb-2013 Chandler Carruth <chandlerc@gmail.com> Fix spelling noticed by Duncan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176023 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
af23f8e403d68e3f96eb5eb63e50e3aec4ea01c9 25-Feb-2013 Chandler Carruth <chandlerc@gmail.com> Fix the root cause of PR15348 by correctly handling alignment 0 on
memory intrinsics in the SDAG builder.

When alignment is zero, the lang ref says that *no* alignment
assumptions can be made. This is the exact opposite of the internal API
contracts of the DAG where alignment 0 indicates that the alignment can
be made to be anything desired.

There is another, more explicit alignment that is better suited for the
role of "no alignment at all": an alignment of 1. Map the intrinsic
alignment to this early so that we don't end up generating aligned DAGs.

It is really terrifying that we've never seen this before, but we
suddenly started generating a large number of alignment 0 memcpys due to
the new code to do memcpy-based copying of POD class members. That patch
contains a bug that rounds bitfield alignments down when they are the
first field. This can in turn produce zero alignments.

This fixes weird crashes I've seen in library users of LLVM on 32-bit
hosts, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176022 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
cc6137e30b40ddf3cdbbb6ebbe01e5b5c76da2e2 24-Feb-2013 Cameron Zwarich <zwarich@apple.com> Add a use of an otherwise unused variable to remove a warning in non-Asserts
builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175981 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
eb1b7254cf1ce480c423c2ae0ff1b68c6ada6180 24-Feb-2013 Cameron Zwarich <zwarich@apple.com> TwoAddressInstructionPass::tryInstructionTransform() only potentially returns
true when shouldOnlyCommute is false, so we can remove code that checks
otherwise.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175980 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
c5a6349ae84309534e0ade8c7c7ddada808e7729 24-Feb-2013 Cameron Zwarich <zwarich@apple.com> TwoAddrInstructionPass::tryInstructionTransform() has a case where it calls
itself recursively with a new instruction that has not been finalized, in order
to determine whether to keep the instruction. On 'make check' and test-suite the
only cases where the recursive invocation made any transformations were simple
instruction commutations, so I am restricting the recursive invocation to do
only this.

The other cases wouldn't work correctly when updating LiveIntervals, since the
new instructions don't have slot indices and LiveIntervals hasn't yet been
updated. If the other transformations were actually triggering in any test case
it would be possible to support it with a lot of effort, but since they don't
it's not worth it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175979 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
1ea93c79bc8b044935f867b334668623c587f5a8 24-Feb-2013 Cameron Zwarich <zwarich@apple.com> TargetInstrInfo::commuteInstruction() doesn't actually return a new instruction
unless it was requested to with an optional parameter that defaults to false, so
we don't need to handle that case in TwoAddressInstructionPass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175974 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
79f5ab1931e5abf6e9c304db25e50d592dd8f5b8 23-Feb-2013 Cameron Zwarich <zwarich@apple.com> Make some fixes for LiveInterval repair with debug info. Debug value
MachineInstrs don't have a slot index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175961 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
lotIndexes.cpp
b4bd022731b28a80f59818870cc7df5d4771d793 23-Feb-2013 Cameron Zwarich <zwarich@apple.com> Fix a bug with the LiveIntervals updating in the two-address pass found by
running ASCI_Purple/SMG2000 in the test-suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175957 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4c57942608094a74543920b7c809e442fa90dd72 23-Feb-2013 Cameron Zwarich <zwarich@apple.com> Make TwoAddressInstructionPass::sink3AddrInstruction() LiveIntervals-aware.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175956 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
80885e524ffceaba5ed237338a10f807895e9f8e 23-Feb-2013 Cameron Zwarich <zwarich@apple.com> Make rescheduleMIBelowKill() and rescheduleKillAboveMI() LiveIntervals-aware in
TwoAddressInstructionPass. The code in rescheduleMIBelowKill() is a bit tricky,
since multiple instructions need to be moved down, one-at-a-time, in reverse
order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175955 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
3ce51a970fd545c1ef45f580c84b64d764fb9a64 23-Feb-2013 Eric Christopher <echristo@gmail.com> Use getSplitDebugFilename when constructing the skeleton cu and
update testcase accordingly to give the correct name to the cu.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175934 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d99a5a3ab4d47c6532bcf17a01677b1730599057 23-Feb-2013 Nadav Rotem <nrotem@apple.com> SelectionDAG compile time improvement.

One of the phases of SelectionDAG is LegalizeVectors. We don't need to sort the DAG and copy nodes around if there are no vector ops.

Speeds up the compilation time of SelectionDAG on a big scalar workload by ~8%.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175929 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
b704ffbb46cae716dc51bd8e6ba425c0a4949a47 22-Feb-2013 Pete Cooper <peter_cooper@apple.com> Fix isa<> check which could never be true.

It was incorrectly checking a Function* being an IntrinsicInst* which
isn't possible. It should always have been checking the CallInst* instead.

Added test case for x86 which ensures we only get one constant load.
It was 2 before this change.

rdar://problem/13267920

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175853 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a931a12e04b856421977c86d94789cd8b47d6ad3 21-Feb-2013 Cameron Zwarich <zwarich@apple.com> Stop relying on physical register kill flags in isKilled() in the two-address
pass. One of the callers of isKilled() can cope with overapproximation of kills
and the other can't, so I added a flag to indicate this.

In theory this could pessimize code slightly, but in practice most physical
register uses are kills, and most important kills of physical registers are the
only uses of that register prior to register allocation, so we can recognize
them as kills even without kill flags.

This is relevant because LiveIntervals gets rid of all kill flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175821 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b489e29976afed1a015eecd00c5726fe565b038c 21-Feb-2013 Lang Hames <lhames@gmail.com> Re-apply r175688, with the changes suggested by Jakob in PR15320.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175809 91177308-0d34-0410-b5e6-96231b3b80d8
xpandPostRAPseudos.cpp
700ed80d3da5e98e05ceb90e9bfb66058581a6db 21-Feb-2013 Eli Bendersky <eliben@google.com> Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo
to TargetFrameLowering, where it belongs. Incidentally, this allows us
to delete some duplicated (and slightly different!) code in TRI.

There are potentially other layering problems that can be cleaned up
as a result, or in a similar manner.

The refactoring was OK'd by Anton Korobeynikov on llvmdev.

Note: this touches the target interfaces, so out-of-tree targets may
be affected.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175788 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
601158a18e325879b224bd1979d824407ed98bc7 21-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Make RAFast::UsedInInstr indexed by register units.

This fixes some problems with too conservative checking where we were
marking all aliases of a register as used, and then also checking all
aliases when allocating a register.

<rdar://problem/13249625>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175782 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
f6c80bde655c1f08f7a42a55150727b0a7fad65d 21-Feb-2013 Lang Hames <lhames@gmail.com> Revert r175688 - It broke a test case (see PR15320).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175765 91177308-0d34-0410-b5e6-96231b3b80d8
xpandPostRAPseudos.cpp
f31bd0f7d92fdab64a478ccf6497e887d454d4af 21-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> DAGCombiner: Make the post-legalize vector op optimization more aggressive.

A legal BUILD_VECTOR goes in and gets constant folded into another legal
BUILD_VECTOR so we don't lose any legality here. The problematic PPC
optimization that made this check necessary was fixed recently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175759 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
197a60a66612ab274a734066962a10126a11fb53 21-Feb-2013 Cameron Zwarich <zwarich@apple.com> Don't rely on the isDead() MachineOperand flag when updating LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175732 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
a566d63b61f2a29e89696abba1729ac53b9843e6 21-Feb-2013 Cameron Zwarich <zwarich@apple.com> Use getInterval() instead of getOrCreateInterval().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175731 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
17cec5a68523fe346fb752b1661cc8e640dd520b 21-Feb-2013 Cameron Zwarich <zwarich@apple.com> Make another kill check LiveIntervals-aware.

This brings the number of remaining failures in 'make check' without
LiveVariables down to 39, with 1 unexpectedly passing test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175727 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
3a9805f26ead8746cb56645cb909a7b64d165b83 21-Feb-2013 Cameron Zwarich <zwarich@apple.com> Split part of isKilled() into a separate function for use elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175726 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
214df4285a974c61450477cbcf5c4a196d574a6a 21-Feb-2013 Cameron Zwarich <zwarich@apple.com> Update isKilledAt in TwoAddressInstructionPass.cpp to use LiveIntervals when
available.

With this commit there are no longer any assertion or verifier failures when
running 'make check' without LiveVariables. There are still 56 failing tests
with codegen differences and 1 unexpectedly passing test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175719 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
9bd7c3cc1306b6b2abc472d1e6ca2f7d0f3f3fbb 21-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't allocate memory in LiveInterval::join().

Rewrite value numbers directly in the 'Other' LiveInterval which is
moribund anyway. This avoids allocating the OtherAssignments vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175690 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
100c93c850911a33a4de59103beafd204d9fd150 21-Feb-2013 Lang Hames <lhames@gmail.com> Kill of TransferDeadFlag - Dead copies and subreg-to-reg instructions should
just be turned into kills on the spot.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175688 91177308-0d34-0410-b5e6-96231b3b80d8
xpandPostRAPseudos.cpp
beda6ab879e35b6f7d998da980b30e3844d3bbeb 21-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Copy single reaching defs directly into the LiveInterval.

When findReachingDefs() finds that only one value can reach the basic
block, just copy the work list of visited blocks directly into the live
interval.

Sort the block list and use a LiveRangeUpdater to make the bulk add
fast.

When multiple reaching defs are found, transfer the work list to the
updateSSA() work list as before. Also use LiveRangeUpdater in
updateLiveIns() following updateSSA().

This makes live interval analysis more than 3x faster on one huge test
case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175685 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeCalc.cpp
iveRangeCalc.h
6189288766d9cf2e1cf82c1b41655e33754da83b 20-Feb-2013 Cameron Zwarich <zwarich@apple.com> Only use LiveIntervals in TwoAddressInstructionPass, not a mix of Liveintervals
and SlotIndexes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175674 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
c5b6135fb55362f5c052625043ebf3286f799f86 20-Feb-2013 Cameron Zwarich <zwarich@apple.com> Find anchoring end points for repairIntervalsInRange and repairIndexesInRange
automatically.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175673 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
lotIndexes.cpp
woAddressInstructionPass.cpp
0e827ebc783ded58c11aeb0d66bed43e214de2de 20-Feb-2013 Cameron Zwarich <zwarich@apple.com> Make repairIntervalsInRange() more robust. There are now no longer any liveness-
related failures when running 'make check' without LiveVariables with the
verifier enabled. Some of the remaining failures elsewhere may still be fallout
from incorrect updating of LiveIntervals or the few missing cases left in the
two-address pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175672 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c46e2df74cf75a33742f57d2b4d6c6fcf73bced9 20-Feb-2013 Arnold Schwaighofer <aschwaighofer@apple.com> DAGCombiner: Fold pointless truncate, bitcast, buildvector series

(2xi32) (truncate ((2xi64) bitcast (buildvector i32 a, i32 x, i32 b, i32 y)))
can be folded into a (2xi32) (buildvector i32 a, i32 b).

Such a DAG would cause uneccessary vdup instructions followed by vmovn
instructions.

We generate this code on ARM NEON for a setcc olt, 2xf64, 2xf64. For example, in
the vectorized version of the code below.

double A[N];
double B[N];

void test_double_compare_to_double() {
int i;
for(i=0;i<N;i++)
A[i] = (double)(A[i] < B[i]);
}

radar://13191881

Fixes bug 15283.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175670 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3450f800aa65c91f0496816ba6061a422a74c1fe 20-Feb-2013 Jim Grosbach <grosbach@apple.com> Update TargetLowering ivars for name policy.

http://llvm.org/docs/CodingStandards.html#name-types-functions-variables-and-enumerators-properly

ivars should be camel-case and start with an upper-case letter. A few in
TargetLowering were starting with a lower-case letter.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175667 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringBase.cpp
d983d4c6ed5ef69ca2d2e07350cc346245f35b87 20-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Use LiveRangeUpdater instead of mergeIntervalRanges.

Performance is the same, but LiveRangeUpdater has a more flexible
interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175645 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
1a41f32546019340f27a6f3854f3a73163a25dfe 20-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a LiveRangeUpdater class.

Adding new segments to large LiveIntervals can be expensive because the
LiveRange objects after the insertion point may need to be moved left or
right. This can cause quadratic behavior when adding a large number of
segments to a live range.

The LiveRangeUpdater class allows the LIveInterval to be in a temporary
invalid state while segments are being added. It maintains an internal
gap in the LiveInterval when it is shrinking, and it has a spill area
for new segments when the LiveInterval is growing.

The behavior is similar to the existing mergeIntervalRanges() function,
except it allocates less memory for the spill area, and the algorithm is
turned inside out so the loop is driven by the clients.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175644 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
eedff3547de6428798d0bd62c40fba3f93820922 20-Feb-2013 Michael Liao <michael.liao@intel.com> Fix PR15267

- When extloading from a vector with non-byte-addressable element, e.g.
<4 x i1>, the current logic breaks. Extend the current logic to
fix the case where the element type is not byte-addressable by loading
all bytes, bit-extracting/packing each element.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175642 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
ad4da0fc321230261b4d0387f0ec216eb8aa50ca 20-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Move the SplatByte helper to APInt and generalize it a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175621 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
fdf45175a8444c421c03627c139777d1de48e516 20-Feb-2013 David Blaikie <dblaikie@gmail.com> Fully qualify llvm::next to avoid ambiguity when building as C++11.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175608 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
woAddressInstructionPass.cpp
9030fc22dd73684901ecb749c9688e289bd1a777 20-Feb-2013 Cameron Zwarich <zwarich@apple.com> Add support to the two-address pass for updating LiveIntervals in many of the
common transformations. This includes updating repairIntervalsInRange() to
handle more cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175604 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
woAddressInstructionPass.cpp
6cf93d740a600024f2de924614a4d4d0dc1cb852 20-Feb-2013 Cameron Zwarich <zwarich@apple.com> Move the computation of the IsEarlyClobber flag into its own loop, since the
correct value is needed in every iteration of the loop for updating
LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175603 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
349cf349987a65be89078913e34126898bcdd138 20-Feb-2013 Cameron Zwarich <zwarich@apple.com> Add SlotIndexes::repairIndexesInRange(), which repairs SlotIndexes after adding
and removing instructions. The implementation seems more complicated than it
needs to be, but I couldn't find something simpler that dealt with all of the
corner cases.

Also add a call to repairIndexesInRange() from repairIntervalsInRange().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175601 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
lotIndexes.cpp
767e04307f70cad9e2ba46b3812504ee1d8c1721 20-Feb-2013 Cameron Zwarich <zwarich@apple.com> Remove verification after PHIElimination when using LiveIntervals, and move it
after the two-address pass. The remaining problems in 'make check' are occurring
later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175598 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
woAddressInstructionPass.cpp
2650a82cc4166237f698e3bbc315739e43180431 20-Feb-2013 Cameron Zwarich <zwarich@apple.com> Avoid recomputing an inserted instruction's SlotIndex.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175597 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
4f659eccafe34efea2a4ba6e57ad09977e9157c2 20-Feb-2013 Cameron Zwarich <zwarich@apple.com> Add preservation of SlotIndexes to PHIElimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175596 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
751bc8d4c9ee4298449fed264571ffc162852e06 20-Feb-2013 Jakub Staszak <kubastaszak@gmail.com> Fix #includes, so we include only what we really need.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175581 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.h
da5f1ed6406442735fbb4421f8a22bc8a41d4c57 19-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Assert that the target provided hints are in the allocation order.

Target implementations of getRegAllocationHints() should use the
provided allocation order, and they can never return hints outside the
order. This is already documented in TargetRegisterInfo.h.

<rdar://problem/13240556>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175540 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.cpp
063337309e71683fc57c049c10d03d4f8a2ce356 19-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Fix GCMetadaPrinter::finishAssembly not executed, patch by Yiannis Tsiouris.

Due to the execution order of doFinalization functions, the GC information were
deleted before AsmPrinter::doFinalization was executed. Thus, the
GCMetadataPrinter::finishAssembly was never called.

The patch fixes that by moving the code of the GCInfoDeleter::doFinalization to
Printer::doFinalization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175528 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
LVMTargetMachine.cpp
261abf5f4011e5b1e8949d7404190a4f4eaff8d8 19-Feb-2013 Craig Topper <craig.topper@gmail.com> More const correcting of stack coloring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175490 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
04fbcb59432c085bb284501dcea9693f435a417b 19-Feb-2013 Craig Topper <craig.topper@gmail.com> Const-correct the stack coloring code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175488 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
cede03886712e18b697f9ec91311d4a8df60c734 19-Feb-2013 Craig Topper <craig.topper@gmail.com> Avoid extra DenseMap lookups in StackColoring::calculateLocalLiveness.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175487 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
cbc6d797054a2bf2a641031f270d38804a6f2295 19-Feb-2013 Craig Topper <craig.topper@gmail.com> Make the dump() function const and reduce the number of hash lookups it performs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175485 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
252d798fc302ed78bc4b11e66a2382015a25c6e0 19-Feb-2013 Craig Topper <craig.topper@gmail.com> Use a reference into the BlockLiveness DenseMap to avoid repeated hash lookups in collectMarkers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175484 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
98fbe27ac8f0766ea94b89b8c03418131b72bea4 18-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Support for HiPE-compatible code emission, patch by Yiannis Tsiouris.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175457 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
b875acda987650d1d734b8bc6e76283950529f84 18-Feb-2013 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Remove a redundant call to the setHasMSInlineAsm function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175456 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3ef669c7175f959c39b7652f10c2b6ed9d8f83ae 18-Feb-2013 NAKAMURA Takumi <geek4civic@gmail.com> [ms-inline asm] Fix undefined behavior to reset hasMSInlineAsm in advance of SelectAllBasicBlocks().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175422 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
680c98f6323dde0eae566710ea49497e16499653 17-Feb-2013 Cameron Zwarich <zwarich@apple.com> Remove use of reverse iterators in repairIntervalsInRange(). While they were
arguably better than forward iterators for this use case, they are confusing and
there are some implementation problems with reverse iterators and MI bundles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175393 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
7324d4e593ee2611ee6b272c03b15541fe2df62e 17-Feb-2013 Cameron Zwarich <zwarich@apple.com> Use ArrayRef instead of a reference to a SmallVectorImpl.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175385 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
0c222835982bae5e4831e16090f6ce594ef541a6 17-Feb-2013 Cameron Zwarich <zwarich@apple.com> Fix a conversion from a forward iterator to a reverse iterator in
MachineBasicBlock::SplitCriticalEdge. Since this is an iterator rather than
an instr_iterator, the isBundled() check only passes if getFirstTerminator()
returned end() and the garbage memory happens to lean that way.

Multiple successors can be present without any terminator instructions in the
case of exception handling with a fallthrough.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175383 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
f0b2535344e8c9e2912da78010918a44c5a18cab 17-Feb-2013 Cameron Zwarich <zwarich@apple.com> Add support for updating the LiveIntervals of registers used by 'exotic'
terminators that actually have register uses when splitting critical edges.

This commit also introduces a method repairIntervalsInRange() on LiveIntervals,
which allows for repairing LiveIntervals in a small range after an arbitrary
target hook modifies, inserts, and removes instructions. It's pretty limited
right now, but I hope to extend it to support all of the things that are done
by the convertToThreeAddress() target hooks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175382 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
eb4774a972af4bdd36d8795625c8c5d96ca507d1 16-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Replace erase loop with std::remove_if.

This avoids unnecessary copies. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175367 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
81474e98e10565e2ee0ad257ddc9469217520711 16-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Replace loop with std::find.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175366 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
631dd86804c3e74652d555b82ffe2f4750c81d68 16-Feb-2013 Jakub Staszak <kubastaszak@gmail.com> LegalizeDAG.cpp doesn't need DenseMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175365 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b717a5084722a5cad843444a8b1b4bf53f1c6325 16-Feb-2013 Jakub Staszak <kubastaszak@gmail.com> Use const reference instead of vector object when passing an argument to
updateScheduledPressure method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175362 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
b56606274d43c7a3e01b18a08d1115fbf2889996 16-Feb-2013 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Do not omit the frame pointer if we have ms-inline assembly.

If the frame pointer is omitted, and any stack changes occur in the inline
assembly, e.g.: "pusha", then any C local variable or C argument references
will be incorrect.

I pass no judgement on anyone who would do such a thing. ;)
rdar://13218191

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175334 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
789cb5df9ca61f8a3794a4fbde7cc020fd00a02a 15-Feb-2013 Bill Wendling <isanbard@gmail.com> Use the 'target-features' and 'target-cpu' attributes to reset the subtarget features.

If two functions require different features (e.g., `-mno-sse' vs. `-msse') then
we want to honor that, especially during LTO. We can do that by resetting the
subtarget's features depending upon the 'target-feature' attribute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175314 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
86cdbc9c29a572d422815f55fd89ff7510d1e3e8 15-Feb-2013 Paul Redmond <paul.redmond@intel.com> enable SDISel sincos optimization for GNU environments

- add sincos to runtime library if target triple environment is GNU
- added canCombineSinCosLibcall() which checks that sincos is in the RTL and
if the environment is GNU then unsafe fpmath is enabled (required to
preserve errno)
- extended sincos-opt lit test

Reviewed by: Hal Finkel


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175283 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
argetLoweringBase.cpp
74b3c8da4800c7e8ba8f019879db29738ecc5f74 15-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Make helpers static. Add missing include so LLVMInitializeObjCARCOpts gets C linkage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175264 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
6cc4b8d1eb2adf547807044e0a97f3a255733784 14-Feb-2013 Nadav Rotem <nrotem@apple.com> Dont merge consecutive loads/stores into vectors when noimplicitfloat is used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175190 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
39125d9a3a319b6dfd1fba639cd7df2fa1465a8e 14-Feb-2013 Owen Anderson <resistor@mac.com> Add some legality checks for SETCC before introducing it in the DAG combiner post-operand legalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175149 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1f258a6d53b29f6dfb60436da4aa76e996644d84 14-Feb-2013 Cameron Zwarich <zwarich@apple.com> RegisterCoalescer::reMaterializeTrivialDef() can constrain the destination
register class to match the defining instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175130 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
1d4673228143965fafbcb679417f5a9be53d0a2a 14-Feb-2013 Cameron Zwarich <zwarich@apple.com> Fix RegisterCoalescer::rematerializeTrivialDef() so that it works on flipped
CoalescerPairs. Also, make it take a CoalescerPair directly like other methods
of RegisterCoalescer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175123 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
c5f147459b1704e25df4ff888729dd5d22d73381 14-Feb-2013 Cameron Zwarich <zwarich@apple.com> Fix some issues with rematerialization in RegisterCoalescer when the destination
of the copy is a subregister def. The current code assumes that it can do a full
def of the destination register, but it is not checking that the def operand is
read-undef. It also doesn't clear the subregister index of the destination in
the new instruction to reflect the full subregister def.

These issues were found running 'make check' with my next commit that enables
rematerialization in more cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175122 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
f098620095727dd2a823a94a3a8d47108361ad83 13-Feb-2013 Manman Ren <mren@apple.com> Clean up LDV, no functionality change.

Remove dead functions: renameRegister
Move private member variables from LDV to Impl
Remove ssp/uwtable from testing case


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175072 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
iveDebugVariables.h
ecb8c2ba6029f02b01b20b110cc1b3b3ea2e1f1c 13-Feb-2013 Andrew Trick <atrick@apple.com> MIsched: HazardRecognizers are created for each DAG. Free them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175067 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
b3cecdfcf9a0b736d3c0f6f5abffb41ecda3577c 13-Feb-2013 Eric Christopher <echristo@gmail.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175024 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
4be3853fd0a0e3b37a27afe05327e638e680c463 13-Feb-2013 Manman Ren <mren@apple.com> Debug Info: LiveDebugVarible can remove DBG_VALUEs, make sure we emit them back.

RegisterCoalescer used to depend on LiveDebugVariable. LDV removes DBG_VALUEs
without emitting them at the end.

We fix this by removing LDV from RegisterCoalescer. Also add an assertion to
make sure we call emitDebugValues if DBG_VALUEs are removed at
runOnMachineFunction.

rdar://problem/13183203
Reviewed by Andy & Jakob


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175023 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
iveDebugVariables.h
egisterCoalescer.cpp
87d0b9ed1462705dd9bf1cb7f67d0bf03af776c8 12-Feb-2013 Guy Benyei <guy.benyei@intel.com> Add static cast to unsigned char whenever a character classification function is called with a signed char argument, in order to avoid assertions in Windows Debug configuration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175006 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
argetInstrInfo.cpp
c5ef7eee3c412b0f334e395b0cf7c363200c2f79 12-Feb-2013 Krzysztof Parzyszek <kparzysz@codeaurora.org> Allow optionally generating pubnames section in DWARF info. Introduce
option "generate-dwarf-pubnames" to control it, set to "false" by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174981 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
91231a6dc7c10e05934f2cf141a2d66b604a528f 12-Feb-2013 Sergei Larin <slarin@codeaurora.org> Equal treatment of labels and other terminators in MI DAG construction.

MI sched DAG construction allows targets to include terminators into scheduling DAG.
Extend this functionality to labels as well.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174977 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
5c97450df748819381daa4c4d400c39b0d7378ae 12-Feb-2013 Paul Redmond <paul.redmond@intel.com> PR14562 - Truncation of left shift became undef

DAGCombiner::ReduceLoadWidth was converting (trunc i32 (shl i64 v, 32))
into (shl i32 v, 32) into undef. To prevent this, check the shift count
against the final result size.

Patch by: Kevin Schoedel
Reviewed by: Nadav Rotem


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174972 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4930e7266b7643410cfbbed5ef6e4d3b19178918 12-Feb-2013 Cameron Zwarich <zwarich@apple.com> Don't consider definitions by other PHIs live-in when trimming a PHI source's
live range after inserting a copy at the end of a block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174945 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
8d49134eeaa36953410c2fba65f7237fb3f079e7 12-Feb-2013 Cameron Zwarich <zwarich@apple.com> Fix indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174944 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
5758a711f4e593d1daff3bae0fa9d694e5980719 12-Feb-2013 Cameron Zwarich <zwarich@apple.com> Add a hidden option to PHIElimination to split all critical edges. This is
particularly useful for catching issues with architectures that have exotic
terminators like MIPS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174938 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
dd58fa4869f9bff909720aaa428487a20fab1391 12-Feb-2013 Cameron Zwarich <zwarich@apple.com> Add blocks to the LiveIntervalAnalysis RegMaskBlocks array when splitting
a critical edge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174936 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
dbf10c4349bb746e6120ff1195c1ce7e21bebf93 12-Feb-2013 Cameron Zwarich <zwarich@apple.com> Fix the updating of LiveIntervals after splitting a critical edge. PHI operand
live ranges should always be extended, and the only successor that should be
considered for extension of other ranges is the target of the split edge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174935 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
b0fde6dc029a33945bfeea7082a03940f664943c 12-Feb-2013 Pete Cooper <peter_cooper@apple.com> Check type for legality before forming a select from loads.

Sorry for the lack of a test case. I tried writing one for i386 as i know selects are illegal on this target, but they are actually considered legal by isel and expanded later.

I can't see any targets to trigger this, but checking for the legality of a node before forming it is general goodness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8597c14e9b32259cc7cfd752d95fd71e7aaba0ec 11-Feb-2013 Cameron Zwarich <zwarich@apple.com> Add support for updating LiveIntervals to MachineBasicBlock::SplitCriticalEdge().
This is currently a bit hairier than it needs to be, since depending on where the
split block resides the end ListEntry of the split block may be the end ListEntry
of the original block or a new entry. Some changes to the SlotIndexes updating
should make it possible to eliminate the two cases here.

This also isn't as optimized as it could be. In the future Liveinterval should
probably get a flag that indicates whether the LiveInterval is within a single
basic block. We could ignore all such intervals when splitting an edge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174870 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
HIElimination.cpp
cbe3f5e1622b5f809bc04d61da125801e4658a73 11-Feb-2013 Cameron Zwarich <zwarich@apple.com> Update SlotIndexes after updateTerminator() possibly removes instructions. I am
really trying to avoid piping SlotIndexes through to RemoveBranch() and friends.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174869 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
f64c889cc94417322b0ff8ad1c61939183bf3c38 11-Feb-2013 Bob Wilson <bob.wilson@apple.com> Revert "Rename LLVMContext diagnostic handler types and functions."

This reverts my commit 171047. Now that I've removed my misguided attempt to
support backend warnings, these diagnostics are only about inline assembly.
It would take quite a bit more work to generalize them properly, so I'm
just reverting this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174860 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
092e5e75661fdd5d54a748fb00fab59d21031268 11-Feb-2013 Evan Cheng <evan.cheng@apple.com> Currently, codegen may spent some time in SDISel passes even if an entire
function is successfully handled by fast-isel. That's because function
arguments are *always* handled by SDISel. Introduce FastLowerArguments to
allow each target to provide hook to handle formal argument lowering.

As a proof-of-concept, add ARMFastIsel::FastLowerArguments to handle
functions with 4 or fewer scalar integer (i8, i16, or i32) arguments. It
completely eliminates the need for SDISel for trivial functions.

rdar://13163905


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174855 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
5f352cc6e49d714bd5c14c952aa5c394fc9897bf 11-Feb-2013 Evan Cheng <evan.cheng@apple.com> Remove unnecessary code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174854 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f5844a75154e73a2302767eeecf3b3401e157bb3 11-Feb-2013 Cameron Zwarich <zwarich@apple.com> Fix the unused but nearly correct method SlotIndexes::insertMBBInMaps() and add
support for updating SlotIndexes to MachineBasicBlock::SplitCriticalEdge(). This
calls renumberIndexes() every time; it should be improved to only renumber
locally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174851 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
36f54480f83d47404aceea5d41f8f6b95da2d00b 11-Feb-2013 Cameron Zwarich <zwarich@apple.com> Abstract the liveness checking in PHIElimination::SplitPHIEdges() to support
both LiveVariables and LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174850 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
b7cfac32f32f17e64a5addfdb833702160650f14 10-Feb-2013 Cameron Zwarich <zwarich@apple.com> Add support for updating LiveIntervals to PHIElimination. If LiveIntervals are
present, it currently verifies them with the MachineVerifier, and this passed
all of the test cases in 'make check' (when accounting for existing verifier
errors). There were some assertion failures in the two-address pass, but they
also happened on code without phis and look like they are caused by different
kill flags from LiveIntervals.

The only part that doesn't work is the critical edge splitting heuristic,
because there isn't currently an efficient way to update LiveIntervals after
splitting an edge. I'll probably start by implementing the slow fallback and
test that it works before tackling the fast path for single-block ranges. The
existing code that updates LiveVariables is fairly slow as it is.

There isn't a command-line option for enabling this; instead, just edit
PHIElimination.cpp to require LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174831 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
d7c7a686ac18f8f3c035d158d8b713077be83ea4 10-Feb-2013 Cameron Zwarich <zwarich@apple.com> Fix a typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174830 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
02513c05c6333e2f7418b1327eded162b2791828 10-Feb-2013 Cameron Zwarich <zwarich@apple.com> Remove ancient references to 'atomic' phis in PHIElimination that don't really
make sense anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174829 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
fe0fd35d5339467fedd59f0cf5bdadb163a8d766 10-Feb-2013 Cameron Zwarich <zwarich@apple.com> Make LiveVariables an instance variable of PHIElimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174828 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
7dcb23a0522eb23c3a50f6c8249f10ccdf214993 09-Feb-2013 Jakub Staszak <kubastaszak@gmail.com> Remove unneeded "TargetMachine.h" #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174817 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.cpp
smPrinter/ARMException.cpp
smPrinter/DwarfException.cpp
smPrinter/Win64Exception.cpp
argetRegisterInfo.cpp
f2d89ff5c82c78f6160a9a8611c525771fdd2033 09-Feb-2013 Manman Ren <mren@apple.com> Dwarf: do not use line_table_start in at_stmt_list since we do not always emit
line table entries in assembly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174785 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ec7b25d753867f43e2fbd00e58daf75e29783bd4 09-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the old liveness algorithm.

This is part of the plan to delete LiveVariables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174783 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ea871523ecaa99a8fd7f12b5f57e2ee19743362d 09-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Turn on -new-live-intervals by default.

This uses a liveness algorithm that does not depend on data from the
LiveVariables analysis, it is the first step towards removing
LiveVariables completely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174774 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
58446916b71c4ff79962081ea7c4df078c388b0e 08-Feb-2013 Bob Wilson <bob.wilson@apple.com> Revert "Add LLVMContext::emitWarning methods and use them. <rdar://problem/12867368>"

This reverts r171041. This was a nice idea that didn't work out well.
Clang warnings need to be associated with warning groups so that they can
be selectively disabled, promoted to errors, etc. This simplistic patch didn't
allow for that. Enhancing it to provide some way for the backend to specify
a front-end warning type seems like overkill for the few uses of this, at
least for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174748 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
089a5f8a8c5e24f996dd41419de2c7bc7b42ea29 08-Feb-2013 Hal Finkel <hfinkel@anl.gov> DAGCombiner: Constant folding around pre-increment loads/stores

Previously, even when a pre-increment load or store was generated,
we often needed to keep a copy of the original base register for use
with other offsets. If all of these offsets are constants (including
the offset which was combined into the addressing mode), then this is
clearly unnecessary. This change adjusts these other offsets to use the
new incremented address.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174746 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8f637adbd383afc2defb5d3f75433b6f2c25d527 08-Feb-2013 Bob Wilson <bob.wilson@apple.com> Revert 172027 and 174336. Remove diagnostics about over-aligned stack objects.

Aside from the question of whether we report a warning or an error when we
can't satisfy a requested stack object alignment, the current implementation
of this is not good. We're not providing any source location in the diagnostics
and the current warning is not connected to any warning group so you can't
control it. We could improve the source location somewhat, but we can do a
much better job if this check is implemented in the front-end, so let's do that
instead. <rdar://problem/13127907>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174741 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
fb55a8fd7c38aa09d9c243d48a8a72d890f36a3d 08-Feb-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Address computation in vector mem ops not free

Adds a function to target transform info to query for the cost of address
computation. The cost model analysis pass now also queries this interface.
The code in LoopVectorize adds the cost of address computation as part of the
memory instruction cost calculation. Only there, we know whether the instruction
will be scalarized or not.
Increase the penality for inserting in to D registers on swift. This becomes
necessary because we now always assume that address computation has a cost and
three is a closer value to the architecture.

radar://13097204

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174713 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
7a0103c30d2f423c78527aeeeebc7915e3bc9ee9 07-Feb-2013 Eric Christopher <echristo@gmail.com> "Clean up" line section symbol emission by emitting the section
syms before constructing the compile units so we're not emitting
section references to sections not there already.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174663 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
01776a5a9480243f95fff50c96e3f35fad41e4cb 06-Feb-2013 Eric Christopher <echristo@gmail.com> Clean up multiple skeleton compile units if we have multiple compile
units coming in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174548 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
231b83d8fd3ce86fb5cd154d50dd3f920ca0d71f 06-Feb-2013 Eric Christopher <echristo@gmail.com> Remove some dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174547 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
607acd66f400045919b1067432927a53484eaec1 06-Feb-2013 Evan Cheng <evan.cheng@apple.com> Tweak check to avoid integer overflow (for insanely large alignments)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9c5861fdbd5e30df55cb7cd9a0edda8d92494100 06-Feb-2013 Manman Ren <mren@apple.com> Attempt to recover gdb bot after r174445.

Failure: undefined symbol 'Lline_table_start0'.
Root-cause: we use a symbol subtraction to calculate at_stmt_list, but
the line table entries are not dumped in the assembly.
Fix: use zero instead of a symbol subtraction for Compile Unit 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174479 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
43213cf1ac05b4198fcf9fa85d7da85477daafd1 05-Feb-2013 Manman Ren <mren@apple.com> Dwarf: support for LTO where a single object file can have multiple line tables

We generate one line table for each compilation unit in the object file.
Reviewed by Eric and Kevin.

rdar://problem/13067005


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174445 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b48783b09127136c98cc6b0399be757728504e56 05-Feb-2013 Owen Anderson <resistor@mac.com> Reapply r174343, with a fix for a scary DAG combine bug where it failed to differentiate between the alignment of the
base point of a load, and the overall alignment of the load. This caused infinite loops in DAG combine with the
original application of this patch.

ORIGINAL COMMIT LOG:
When the target-independent DAGCombiner inferred a higher alignment for a load,
it would replace the load with one with the higher alignment. However, it did
not place the new load in the worklist, which prevented later DAG combines in
the same phase (for example, target-specific combines) from ever seeing it.

This patch corrects that oversight, and updates some tests whose output changed
due to slightly different DAGCombine outputs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174431 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e6dc59891fc53d65b3f6d19772d26e23e0cc1cac 05-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove liveout lists from MachineRegisterInfo.

All targets are now adding return value registers as implicit uses on
return instructions, and there is no longer a need for the live out
lists.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174417 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
achineRegisterInfo.cpp
b45e4deb102d47602f5b941da7f412ecc9a867e9 05-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove special-casing of return blocks for liveness.

Now that return value registers are return instruction uses, there is no
need for special treatment of return blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174416 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
riticalAntiDepBreaker.cpp
eadMachineInstructionElim.cpp
iveVariables.cpp
ostRASchedulerList.cpp
egAllocFast.cpp
eb260b252749470654ef0655aa1d1334a4c0d983 05-Feb-2013 NAKAMURA Takumi <geek4civic@gmail.com> Revert r174343, "When the target-independent DAGCombiner inferred a higher alignment for a load,"

It caused hangups in compiling clang/lib/Parse/ParseDecl.cpp and clang/lib/Driver/Tools.cpp in stage2 on some hosts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174374 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
31fb5dafce280ddcc945e2136d11e5c69a3d3493 05-Feb-2013 Eric Christopher <echristo@gmail.com> Construct a skeleton cu for each compile unit in the module, not just
for the first compile unit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174352 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
208cc6f48975320da1a71cf7f7eff497f4f43b75 05-Feb-2013 Eric Christopher <echristo@gmail.com> Add support for emitting a stub DW_AT_GNU_dwo_id as part of the
DWARF5 split dwarf proposal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174350 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
429f7ef0c116c0504052b9a6655ef4d973177e9d 05-Feb-2013 Owen Anderson <resistor@mac.com> When the target-independent DAGCombiner inferred a higher alignment for a load,
it would replace the load with one with the higher alignment. However, it did
not place the new load in the worklist, which prevented later DAG combines in
the same phase (for example, target-specific combines) from ever seeing it.

This patch corrects that oversight, and updates some tests whose output changed
due to slightly different DAGCombine outputs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174343 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
91b978e15774039f991cf91048dc4cc74726744b 05-Feb-2013 Manman Ren <mren@apple.com> [Stack Alignment] emit warning instead of a hard error

Per discussion in rdar://13127907, we should emit a hard error only if
people write code where the requested alignment is larger than achievable
and assumes the low bits are zeros. A warning should be good enough when
we are not sure if the source code assumes the low bits are zeros.

rdar://13127907


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174336 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
4969310052f45b1e2e5d21735e38641a20be0e21 04-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> SelectionDAG: Teach FoldConstantArithmetic how to deal with vectors.

This required disabling a PowerPC optimization that did the following:
input:
x = BUILD_VECTOR <i32 16, i32 16, i32 16, i32 16>
lowered to:
tmp = BUILD_VECTOR <i32 8, i32 8, i32 8, i32 8>
x = ADD tmp, tmp

The add now gets folded immediately and we're back at the BUILD_VECTOR we
started from. I don't see a way to fix this currently so I left it disabled
for now.

Fix some trivially foldable X86 tests too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174325 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
98b93e5a94f69f6c7b12152a98455f501db1895d 02-Feb-2013 Shuxin Yang <shuxin.llvm@gmail.com> rdar://13126763

Fix a bug in DAGCombine. The symptom is mistakenly optimizing expression
"x + x*x" into "x * 3.0".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174239 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7650d9b893b83b6261d1bbc892464aa9d61cc23f 02-Feb-2013 Manman Ren <mren@apple.com> Correct indentation for dumping LexicalScope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174237 91177308-0d34-0410-b5e6-96231b3b80d8
exicalScopes.cpp
945e828003b746f6bbe86390940cf1433d18b0a1 02-Feb-2013 Manman Ren <mren@apple.com> [Dwarf] avoid emitting multiple AT_const_value for static memebers.

Testing case is reduced from MultiSource/BenchMarks/Prolangs-C++/deriv1.

rdar://problem/13071590


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174235 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
5882e566a560691bef3eb817f6390ee93242b6a6 01-Feb-2013 Nadav Rotem <nrotem@apple.com> Fix errant fallthrough in the generation of the lifetime markers.
Found by Alexander Kornienko.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174207 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
5fb7947ed16a57a9c0b71ac70905454d82d25696 01-Feb-2013 Chad Rosier <mcrosier@apple.com> Use a continue to simplify loop and reduce indentation. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174198 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
3ab115ce8f5262608630d67c28707dbd24361d03 31-Jan-2013 Chad Rosier <mcrosier@apple.com> Add braces, so my head doesn't explode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174088 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
2d95e43fd877f81f419485baed3bd559de55e4c4 31-Jan-2013 Lang Hames <lhames@gmail.com> When lowering memcpys to loads and stores, make sure we don't promote alignments
past the natural stack alignment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174085 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8b15d74434dfde5ea9227b985c2c934f62bf03a7 31-Jan-2013 Manman Ren <mren@apple.com> [Dwarf] early exit to avoid creating dangling DIEs

We used to create children DIEs for a scope, then check whether ScopeDIE is
null. If ScopeDIE is null, the children DIEs will be dangling. Other DIEs can
link to those dangling DIEs, which are not emitted at all, causing dwarf error.

The current testing case is 4k lines, from MultiSource/BenchMark/McCat/09-vor.

rdar://problem/13071959


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174084 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
108fb3202af6f500073cdbb7be32c25d7a273a2e 31-Jan-2013 Chad Rosier <mcrosier@apple.com> [PEI] Pass the frame index operand number to the eliminateFrameIndex function.
Each target implementation was needlessly recomputing the index.
Part of rdar://13076458

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174083 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
f662a59b8b031bd43e43e0282b58bef920f0793d 29-Jan-2013 Weiming Zhao <weimingz@codeaurora.org> Add a special handling case for untyped CopyFromReg node in GetCostForDef() of ScheduleDAGRRList


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173833 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
aaf2e639ecf2e5a1647e6d59ef53dc76da0a6102 29-Jan-2013 David Blaikie <dblaikie@gmail.com> Support artificial parameters in function types.

Provides the functionality for Clang change r172911 - I just had this still
lying around.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173820 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
f1af1feeee0f0ec797410762c006211f9c1e2a0f 29-Jan-2013 Edwin Vane <edwin.vane@intel.com> Fixing warnings revealed by gcc release build

Fixed set-but-not-used warnings.

Reviewer: gribozavr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173810 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
4c6a2ba4e01ef75837bb39808a3935bd8687ce67 29-Jan-2013 Andrew Trick <atrick@apple.com> MIsched: cleanup code. Use isBoundaryNode().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173775 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
8688a58c53b46d2dda9bf50dafd5195790a7ed58 29-Jan-2013 Evan Cheng <evan.cheng@apple.com> Teach SDISel to combine fsin / fcos into a fsincos node if the following
conditions are met:
1. They share the same operand and are in the same BB.
2. Both outputs are used.
3. The target has a native instruction that maps to ISD::FSINCOS node or
the target provides a sincos library call.

Implemented the generic optimization in sdisel and enabled it for
Mac OSX. Also added an additional optimization for x86_64 Mac OSX by
using an alternative entry point __sincos_stret which returns the two
results in xmm0 / xmm1.

rdar://13087969
PR13204


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173755 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGDumper.cpp
argetLoweringBase.cpp
5ff776bfde2dd5d993e51f8f78904ce331b5528c 28-Jan-2013 Bill Schmidt <wschmidt@linux.vnet.ibm.com> This patch addresses bug 15031.

The common code in the post-RA scheduler to break anti-dependencies on the
critical path contained a flaw. In the reported case, an anti-dependency
between the overlapping registers %X4 and %R4 exists:

%X29<def> = OR8 %X4, %X4
%R4<def>, %X3<def,dead,tied3> = LBZU 1, %X3<kill,tied1>

The unpatched code breaks the dependency by replacing %R4 and its uses
with %R3, the first register on the available list. However, %R3 and
%X3 overlap, so this creates two overlapping definitions on the same
instruction.

The fix is straightforward, preventing selection of a register that
overlaps any other defined register on the same instruction.

The test case is reduced from the bug report, and verifies that we no
longer produce "lbzu 3, 1(3)" when breaking this anti-dependency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173706 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
498703bcfb274f3911a1fdbfb818b526338249ad 28-Jan-2013 Eric Christopher <echristo@gmail.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173698 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
24c4898973a074713201fb9351d302b9f7733e92 28-Jan-2013 Michael Gottesman <mgottesman@apple.com> Extracted ObjCARC.cpp into its own library libLLVMObjCARCOpts in preparation for refactoring the ARC Optimizer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173647 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
0fef46f50e116e9aa0811ba8eb605d82ab64faed 27-Jan-2013 Benjamin Kramer <benny.kra@googlemail.com> Legalizer: Reword comment again, per Duncan's suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173625 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
022688c260f472b4befcd974a6c907c6830f308e 27-Jan-2013 Benjamin Kramer <benny.kra@googlemail.com> Legalizer: Add an assert and tweak a comment to clarify the assumptions this code makes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
914f8c4825140a97219e94b815beb2bc77395d10 27-Jan-2013 Benjamin Kramer <benny.kra@googlemail.com> When the legalizer is splitting vector shifts, the result may not have the right shift amount type.

Fix that by adding a cast to the shift expander. This came up with vector shifts
on sse-less X86 CPUs.

<2 x i64> = shl <2 x i64> <2 x i64>
-> i64,i64 = shl i64 i64; shl i64 i64
-> i32,i32,i32,i32 = shl_parts i32 i32 i64; shl_parts i32 i32 i64

Now we cast the last two i64s to the right type. Fixes the crash in PR14668.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173615 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
b74564a15ac6bfa85c9597bed842b686be1a1a62 25-Jan-2013 Jakub Staszak <kubastaszak@gmail.com> Use const reference instead of vector copying.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173497 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
ea387fc3b8cf12c3c6ad218b81eca156e8173bba 25-Jan-2013 Preston Gurd <preston.gurd@intel.com> This patch aims to reduce compile time in LegalizeTypes by using SmallDenseMap,
with an initial number of elements, instead of DenseMap, which has
zero initial elements, in order to avoid the copying of elements
when the size changes and to avoid allocating space every time
LegalizeTypes is run. This patch will not affect the memory footprint,
because DenseMap will increase the element size to 64
when the first element is added.

Patch by Wan Xiaofei.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173448 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorOps.cpp
c855423ff2a18e2168324ac5902cfe862cd4b54f 25-Jan-2013 Andrew Trick <atrick@apple.com> MIsched: Print block name. No functionality.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173433 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
3084979ff27f48487c7421536144c41a36cae997 25-Jan-2013 Andrew Trick <atrick@apple.com> MachineScheduler support for viewGraph.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173432 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
c6ada8e5f38168f13830e448f2b9e2d8e3eac72b 25-Jan-2013 Andrew Trick <atrick@apple.com> ScheduleDAG: colorize the DOT graph and improve formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173431 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
cheduleDAGInstrs.cpp
cheduleDAGPrinter.cpp
a5a73ad15905c18843a8312bb3f20f5c501744de 25-Jan-2013 Andrew Trick <atrick@apple.com> ScheduleDAG: Added isBoundaryNode to conveniently detect a common corner case.

This fixes DAG subtree analysis at the boundary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173427 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
988d06b0e574d8e50b043fd74dbf91c1dc403542 25-Jan-2013 Andrew Trick <atrick@apple.com> SchedDFS: Complete support for nested subtrees.

Maintain separate per-node and per-tree book-keeping.
Track all instructions above a DAG node including nested subtrees.
Seperately track instructions within a subtree.
Record subtree parents.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173426 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
4e1fb1894048455d49d62543b3f83672b27b0000 25-Jan-2013 Andrew Trick <atrick@apple.com> MIsched: Improve the interface to SchedDFS analysis (subtrees).

Allow the strategy to select SchedDFS. Allow the results of SchedDFS
to affect initialization of the scheduler state.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173425 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAGInstrs.cpp
bfb8223e2b2a55c3ac6c73be0ac99bbce17cb097 25-Jan-2013 Andrew Trick <atrick@apple.com> SchedDFS: Initial support for nested subtrees.

This is mostly refactoring, along with adding an instruction count
within the subtrees and ensuring we only look at data edges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173420 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
178f7d08a41f2e9432b96cd27f0c8ea42fa0ac9e 25-Jan-2013 Andrew Trick <atrick@apple.com> MISched: Add SchedDFSResult to ScheduleDAGMI to formalize the
interface and allow other strategies to select it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173413 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
b12a77199245a72c24dadbc039ed263d68d8e91a 25-Jan-2013 Andrew Trick <atrick@apple.com> SchedDFS: Refactor and tweak the subtree selection criteria.

For sanity, create a root when NumDataSuccs >= 4. Splitting large
subtrees will no longer be detrimental after my next checkin to handle
nested tree. A magic number of 4 is fine because single subtrees
seldom rejoin more than this. It makes subtrees easier to visualize
and heuristics more sane.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173399 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
dd4fc446b52cf9e617846c77e2c46e827f1d533e 25-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid creating duplicate CFG edges in the IfConversion pass.

Patch by Stefan Hepp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173395 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
db4170697f866dc8620946c77828ef0804996c3d 24-Jan-2013 Andrew Trick <atrick@apple.com> MachineScheduler: enable biasCriticalPath for all DAGs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173318 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
66658dd9a1ffe00a5f6e0afca7afb16ec6704ed3 24-Jan-2013 Andrew Trick <atrick@apple.com> MIsched: Added biasCriticalPath.

Allow schedulers to order DAG edges by critical path. This makes
DFS-based heuristics more stable and effective.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173317 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
e4957fb9b77a4fbdf711b9e5a722d107d86ccc50 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Add the heuristic to differentiate SSPStrong from SSPRequired.

The requirements of the strong heuristic are:

* A Protector is required for functions which contain an array, regardless of
type or length.

* A Protector is required for functions which contain a structure/union which
contains an array, regardless of type or length. Note, there is no limit to
the depth of nesting.

* A protector is required when the address of a local variable (i.e., stack
based variable) is exposed. (E.g., such as through a local whose address is
taken as part of the RHS of an assignment or a local whose address is taken as
part of a function argument.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173231 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
114baee1fa017daefad2339c77b45b9ca3d79a41 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Add the IR attribute 'sspstrong'.

SSPStrong applies a heuristic to insert stack protectors in these situations:

* A Protector is required for functions which contain an array, regardless of
type or length.

* A Protector is required for functions which contain a structure/union which
contains an array, regardless of type or length. Note, there is no limit to
the depth of nesting.

* A protector is required when the address of a local variable (i.e., stack
based variable) is exposed. (E.g., such as through a local whose address is
taken as part of the RHS of an assignment or a local whose address is taken as
part of a function argument.)

This patch implements the SSPString attribute to be equivalent to
SSPRequired. This will change in a subsequent patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173230 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
0a29cb045444c13160e90fe7942a9d7c720185ed 22-Jan-2013 Tim Northover <Tim.Northover@arm.com> Make APFloat constructor require explicit semantics.

Previously we tried to infer it from the bit width size, with an added
IsIEEE argument for the PPC/IEEE 128-bit case, which had a default
value. This default value allowed bugs to creep in, where it was
inappropriate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173138 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
3aef70314b053a1df4f85ca4a6f3890d06ebbdd6 09-Jan-2013 Stephen Hines <srhines@google.com> Update LLVM for merge to r171905.

Android.mk
lib/Analysis/Android.mk
lib/CodeGen/Android.mk
lib/CodeGen/MachineScheduler.cpp - specify std::pop_heap()
lib/IR/Android.mk - new from lib/VMCore
lib/MC/Android.mk
lib/MC/MCAssembler.cpp - put back pointer param (from reference).
lib/Support/DeltaAlgorithm.cpp - iterator -> const_iterator !
lib/TableGen/Android.mk
lib/Target/ARM/ARMJITInfo.cpp - Removed unused legacy JIT changes
lib/Target/ARM/Android.mk
lib/Target/ARM/AsmParser/Android.mk
lib/Target/ARM/Disassembler/Android.mk
lib/Target/ARM/MCTargetDesc/Android.mk
lib/Target/Android.mk
lib/Target/Mips/Android.mk
lib/Target/Mips/Disassembler/Android.mk
lib/Target/Mips/MCTargetDesc/Android.mk
lib/Target/X86/Android.mk
lib/Target/X86/AsmParser/Android.mk
lib/Target/X86/Disassembler/Android.mk
lib/Transforms/IPO/Android.mk
lib/Transforms/Instrumentation/Android.mk
lib/Transforms/Scalar/Android.mk
lib/Transforms/Utils/Android.mk
lib/Transforms/Vectorize/Android.mk
lib/VMCore/Android.mk - moved to lib/IR
llvm-gen-intrinsics.mk - new Intrinsics.td location
utils/TableGen/Android.mk

Change-Id: Ifebdb1716c372fd917a844c44be9d10df66434b0
ndroid.mk
achineScheduler.cpp
059800f9e3fee2852672f846d91a2da14da7783a 21-Jan-2013 Stephen Hines <srhines@google.com> Merge remote-tracking branch 'upstream/master' into merge-llvm

Conflicts:
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
lib/MC/MCAssembler.cpp
lib/Support/Atomic.cpp
lib/Support/Memory.cpp
lib/Target/ARM/ARMJITInfo.cpp

Change-Id: Ib339baf88df5b04870c8df1bedcfe1f877ccab8d
afe77f33b2a361ed0d001596dcdde0e16d57abee 21-Jan-2013 Michael Ilseman <milseman@apple.com> Introduce a new data structure, the SparseMultiSet, and changes to the MI scheduler to use it.

A SparseMultiSet adds multiset behavior to SparseSet, while retaining SparseSet's desirable properties. Essentially, SparseMultiSet provides multiset behavior by storing its dense data in doubly linked lists that are inlined into the dense vector. This allows it to provide good data locality as well as vector-like constant-time clear() and fast constant time find(), insert(), and erase(). It also allows SparseMultiSet to have a builtin recycler rather than keeping SparseSet's behavior of always swapping upon removal, which allows it to preserve more iterators. It's often a better alternative to a SparseSet of a growable container or vector-of-vector.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173064 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
0c8607ba6a21578996a7532b9390afba13bd2087 20-Jan-2013 Nadav Rotem <nrotem@apple.com> Revert 172708.

The optimization handles esoteric cases but adds a lot of complexity both to the X86 backend and to other backends.
This optimization disables an important canonicalization of chains of SEXT nodes and makes SEXT and ZEXT asymmetrical.
Disabling the canonicalization of consecutive SEXT nodes into a single node disables other DAG optimizations that assume
that there is only one SEXT node. The AVX mask optimizations is one example. Additionally this optimization does not update the cost model.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172968 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
14268416720155d63f190a6143ee40b3b850e409 20-Jan-2013 David Blaikie <dblaikie@gmail.com> The last of PR14471 - emission of constant floats

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172941 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
0969ddf601c7cf9da2b01fe227005951c6af0cac 18-Jan-2013 Eric Christopher <echristo@gmail.com> Split out DW_OP_addr for the split debug info DWARF5 proposal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172857 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
1b0c54f1c5dd61e56cb7cbc435fcb3319cff628f 18-Jan-2013 Bill Wendling <isanbard@gmail.com> Use AttributeSet accessor methods instead of Attribute accessor methods.

Further encapsulation of the Attribute object. Don't allow direct access to the
Attribute object as an aggregate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172853 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
1a17bd21ff64968817dedb6cd2b7c809cee90804 18-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove unused parameter. Also use the AttributeSet query methods instead of the Attribute query methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172852 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/SelectionDAGBuilder.cpp
6d49b680be6e24b547e6910c2b64914913915084 18-Jan-2013 Daniel Dunbar <daniel@zuster.org> [MC/Mach-O] Implement integrated assembler support for linker options.
- Also, fixup syntax errors in LangRef and missing newline in the MCAsmStreamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172837 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
6c327f92a562d9d280bdbc3bde3c0ce269a4c65c 17-Jan-2013 Elena Demikhovsky <elena.demikhovsky@intel.com> Optimization for the following SIGN_EXTEND pairs:
v8i8 -> v8i64,
v8i8 -> v8i32,
v4i8 -> v4i64,
v4i16 -> v4i64
for AVX and AVX2.

Bug 14865.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172708 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
446b88fb81e14f5fa6f98ca924c83edc856cade7 17-Jan-2013 Eric Christopher <echristo@gmail.com> Fix the assembly and dissassembly of DW_FORM_sec_offset. Found this by
changing both the string of the dwo_name to be correct and the type of
the statement list.

Testcases all around.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172699 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
d96c72a14cf327af98cbc7d3491f7a2248f5137d 17-Jan-2013 Eric Christopher <echristo@gmail.com> Add the DW_AT_GNU_addr_base for the skeleton cu. Add support for
emitting the dwarf32 version of DW_FORM_sec_offset and correct
disassembler support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172698 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
5ed625c3cff2511469e9b3c5131c29fd89ddd482 17-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Move MachineTraceMetrics.h into include/llvm/CodeGen.

Let targets use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172688 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
achineTraceMetrics.cpp
achineTraceMetrics.h
tackColoring.cpp
02c6325a4592fefebc837b677eaf87dc532ecb7c 17-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Provide a place for targets to insert ILP optimization passes.

Move the early if-conversion pass into this group.

ILP optimizations usually need to find the right balance between
register pressure and ILP using the MachineTraceMetrics analysis to
identify critical paths and estimate other costs. Such passes should run
together so they can share dominator tree and loop info analyses.

Besides if-conversion, future passes to run here here could include
expression height reduction and ARM's MLxExpansion pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172687 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
6b6061f01171bd3d4e32022efa45428d4f9941ee 16-Jan-2013 Eric Christopher <echristo@gmail.com> Define metadata interfaces for describing a static data member
of a class. Emit static data member declarations and definitions
through correctly.

Part of PR14471.

Patch by Paul Robinson!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172590 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
72f7bfbf0e02bb11d3e7cca1f9598c5f9d9fa2ca 16-Jan-2013 Eric Christopher <echristo@gmail.com> Split address information for DWARF5 split dwarf proposal. This involves
using the DW_FORM_GNU_addr_index and a separate .debug_addr section which
stays in the executable and is fully linked.

Sneak in two other small changes:

a) Print out the debug_str_offsets.dwo section.
b) Change form we're expecting the entries in the debug_str_offsets.dwo
section to take from ULEB128 to U32.

Add tests for all of this in the fission-cu.ll test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172578 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
89e88e30bff4a5f4303dc9e44d3faa89b81af5a8 14-Jan-2013 Bill Schmidt <wschmidt@linux.vnet.ibm.com> This patch addresses an incorrect transformation in the DAG combiner.

The included test case is derived from one of the GCC compatibility tests.
The problem arises after the selection DAG has been converted to type-legalized
form. The combiner first sees a 64-bit load that can be converted into a
pre-increment form. The original load feeds into a SRL that isolates the
upper 32 bits of the loaded doubleword. This looks like an opportunity for
DAGCombiner::ReduceLoadWidth() to replace the 64-bit load with a 32-bit load.

However, this transformation is not valid, as the replacement load is not
a pre-increment load. The pre-increment load produces an extra result,
which feeds a subsequent add instruction. The replacement load only has
one result value, and this value is propagated to all uses of the pre-
increment load, including the add. Because the add is looking for the
second result value as its operand, it ends up attempting to add a constant
to a token chain, resulting in a crash.

So the patch simply disables this transformation for any load with more than
two result values.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172480 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4dc478308f0de13d9ce20915193ac8c3318c5bd6 12-Jan-2013 Benjamin Kramer <benny.kra@googlemail.com> When lowering an inreg sext first shift left, then right arithmetically.

Shifting right two times will only yield zero. Should fix
SingleSource/UnitTests/SignlessTypes/factor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172322 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
6d6132986d2ef14bbf9d76f5acbf2a0bace32d69 12-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Limit the search space in RAGreedy::tryEvict().

When tryEvict() is looking for a cheaper register in the allocation
order, skip the tail of too expensive registers when possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172281 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.h
egAllocGreedy.cpp
c7a275245f501e2f68a55af05c75bc9b6b50ec84 12-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Precompute some information about register costs.

Remember the minimum cost of the registers in an allocation order and
the number of registers at the end of the allocation order that have the
same cost per use.

This information can be used to limit the search space for
RAGreedy::tryEvict() when looking for a cheaper register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172280 91177308-0d34-0410-b5e6-96231b3b80d8
egisterClassInfo.cpp
66de2af815f97e484c1940ff157ffbb809931b20 11-Jan-2013 Nadav Rotem <nrotem@apple.com> PPC: Implement efficient lowering of sign_extend_inreg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172269 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
8ecd3be1f3687222bfed627219844557024fcec1 11-Jan-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove some accidentaly duplicated code. This needs urgent cleanup :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172248 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
69e42dbd006c0afb732067ece7327988b1e24c01 11-Jan-2013 Benjamin Kramer <benny.kra@googlemail.com> Split TargetLowering into a CodeGen and a SelectionDAG part.

This fixes some of the cycles between libCodeGen and libSelectionDAG. It's still
a complete mess but as long as the edges consist of virtual call it doesn't
cause breakage. BasicTTI did static calls and thus broke some build
configurations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172246 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
MakeLists.txt
warfEHPrepare.cpp
fConversion.cpp
achineBlockPlacement.cpp
achineLICM.cpp
electionDAG/TargetLowering.cpp
jLjEHPrepare.cpp
tackProtector.cpp
argetLoweringBase.cpp
3e40d927a775994d8f4c2d30695be69c248fa16c 11-Jan-2013 Nadav Rotem <nrotem@apple.com> ARM Cost Model: Modify the target independent cost model to ask
the target if it supports the different CAST types. We didn't do this
on X86 because of the different register sizes and types, but on ARM
this makes sense.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172245 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
fffe3634933471ee9805412ffa221080c9e9e8fd 11-Jan-2013 Eric Christopher <echristo@gmail.com> For inline asm:

- recognize string "{memory}" in the MI generation
- mark as mayload/maystore when there's a memory clobber constraint.

PR14859.

Patch by Krzysztof Parzyszek

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172228 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
eed4e0193ff04ba27bfb6d0d4201505f03d99a7c 11-Jan-2013 Andrew Trick <atrick@apple.com> Follow-up typo correction from building the wrong branch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172224 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
e9ccacd376b2a271434e739f0b7d468cc691723b 11-Jan-2013 Andrew Trick <atrick@apple.com> Fix typo from r170452. Affects -enable-misched heuristics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172223 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
5f2801bd653f82927ddd7612cb149e78a8509ed4 11-Jan-2013 Tim Northover <Tim.Northover@arm.com> Simplify writing floating types to assembly.

This removes previous special cases for each floating-point type in favour of a
shared codepath.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172189 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4ff23d09fa49d4ad68b4613114a743771df21df3 10-Jan-2013 Evan Cheng <evan.cheng@apple.com> PR14896: Handle memcpy from constant string where the memcpy size is larger than the string size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
81bfd711de84310232354dcc971b8ec45206716a 10-Jan-2013 Jakub Staszak <kubastaszak@gmail.com> Remove unneeded includes from FunctionLoweringInfo.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172123 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
4aebce83212d7271454c8767085645fe11054b44 10-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow hasProperty() to be called on bundle-internal instructions.

When calling hasProperty() on an instruction inside a bundle, it should
always behave as if IgnoreBundle was passed, and just return properties
for the current instruction.

Only attempt to aggregate bundle properties whan asked about the bundle
header.

The assertion fires on existing ARM test cases without this fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172082 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b11f05043465bceae4853a3bd2c01d7d664cc5e3 10-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Support headerless bundles in MachineInstr::hasProperty().

This function can still work without a BUNDLE header instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172029 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
86441169da23959c81d8648c3dfdc7a0bb8d2225 10-Jan-2013 Manman Ren <mren@apple.com> Stack Alignment: throw error if we can't satisfy the minimal alignment
requirement when creating stack objects in MachineFrameInfo.

Add CreateStackObjectWithMinAlign to throw error when the minimal alignment
can't be achieved and to clamp the alignment when the preferred alignment
can't be achieved. Same is true for CreateVariableSizedObject.
Will not emit error in CreateSpillStackObject or CreateStackObject.

As long as callers of CreateStackObject do not assume the object will be
aligned at the requested alignment, we should not have miscompile since
later optimizations which look at the object's alignment will have the correct
information.

rdar://12713765


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172027 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
14925e6b885f8bd8cf448627386d412831f4bf1b 09-Jan-2013 Nadav Rotem <nrotem@apple.com> ARM Cost model: Use the size of vector registers and widest vectorizable instruction to determine the max vectorization factor.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172010 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
78ec0255d9ab184af7799c14d93879e5f21b9007 09-Jan-2013 Evan Cheng <evan.cheng@apple.com> Fix a DAG combine bug visitBRCOND() is transforming br(xor(x, y)) to br(x != y).
It cahced XOR's operands before calling visitXOR() but failed to update the
operands when visitXOR changed the XOR node.

rdar://12968664


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171999 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ebed123c5c2d10bb2aceb272f25644f685ebcd09 09-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't print bundle flags.

The bundle flags are used by MachineBasicBlock::print(), they don't need
to clutter up individual MachineInstrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171986 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
25377c8c6dafd094f17833f2c37daff0b77a16fc 09-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't require BUNDLE headers in MachineInstr::getBundleSize().

It is possible to build MI bundles that don't begin with a BUNDLE
header. Add support for such bundles, counting all instructions inside
the bundle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171985 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
12cd49ae1d3c8f45f3e41b6cce681b667b99ef07 09-Jan-2013 Sergei Larin <slarin@codeaurora.org> Fix a typo in MachineInstr::unbundleFromSucc() method.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171983 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
2c8cf4b404e549482f593f62f9e27e0bab4a8b3f 09-Jan-2013 Tim Northover <Tim.Northover@arm.com> Refactor to expose RTLIB calls to targets.

fp128 is almost but not quite completely illegal as a type on AArch64. As a
result it needs to have a register class (for argument passing mainly), but all
operations need to be lowered to runtime calls. Currently there's no way for
targets to do this (without duplicating code), as the relevant functions are
hidden in SelectionDAG. This patch changes that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
1ced208be9cab0f994c5df9000da36bc313b2507 09-Jan-2013 Eric Christopher <echristo@gmail.com> Last in the series of removing unnecessary '0' arguments for
address space. Reordered the EmitULEB128IntValue arguments to
make this easier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171949 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfDebug.cpp
smPrinter/OcamlGCPrinter.cpp
47579cf390c42e0577519e0a2b6044baece9df00 09-Jan-2013 Andrew Trick <atrick@apple.com> MIsched: add an ILP window property to machine model.

This was an experimental option, but needs to be defined
per-target. e.g. PPC A2 needs to aggressively hide latency.

I converted some in-order scheduling tests to A2. Hal is working on
more test cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171946 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
68ca56285f9b6e82eb16ff8ea02a301f2c489fae 09-Jan-2013 Eric Christopher <echristo@gmail.com> These functions have default arguments of 0 for the last arg. Use
them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171933 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/OcamlGCPrinter.cpp
ca1dd05c3c12e857614ae6837f90894396225dd6 09-Jan-2013 Eric Christopher <echristo@gmail.com> These functions have default arguments of 0 for the last arg. Use
them and add one where it seemed obvious that we wanted one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171932 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
83be7b0dd3ae9a3cb22d36ae4c1775972553b94b 09-Jan-2013 Nadav Rotem <nrotem@apple.com> Cost Model: Move the 'max unroll factor' variable to the TTI and add initial Cost Model support on ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171928 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
b6714227eda5d499f7667fc865f931126a8dc488 08-Jan-2013 Eric Christopher <echristo@gmail.com> Move the string pools down into the units. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171905 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
24d315dc053e8130593a8053bd6dc0245632f5f3 08-Jan-2013 Tim Northover <Tim.Northover@arm.com> Add fp128 rtlib function names to LLVM

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171867 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
90f011e0baa68ea02b80e8b913f7120537ce05aa 08-Jan-2013 Tim Northover <Tim.Northover@arm.com> Allow the asm printer to print fp128 values properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171866 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
40b2c32475572d33ede7cf202f2d49cab9b43bb4 08-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Sink a function that refers to the SelectionDAG into that library in the
one file where it is called as a static function. Nuke the declaration
and the definition in lib/CodeGen, along with the include of
SelectionDAG.h from this file.

There is no dependency edge from lib/CodeGen to
lib/CodeGen/SelectionDAG, so it isn't valid for a routine in lib/CodeGen
to reference the DAG. There is a dependency from
lib/CodeGen/SelectionDAG on lib/CodeGen. This breaks one violation of
this layering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171842 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/LegalizeDAG.cpp
9a1e0e252a7ede548acaac98cf304d4bb135fb97 08-Jan-2013 Eric Christopher <echristo@gmail.com> Remove the llvm-local DW_TAG_vector_type tag and add a test to
make sure that vector types do work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171833 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
682106050979f0d48fcf17338c99e91672352789 08-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Pack MachineOperand bitfields better.

Previously, 4 bits were unused.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171814 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b2c79f2f630ed3e7da31ff8adb3014fb0ab47412 08-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Pack MachineInstr fields better.

This shrinks MachineInstr to 64 bytes (from 72).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171813 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ff34845f78ec5c20ccd8b5ec715d505eba9f66af 07-Jan-2013 Eric Christopher <echristo@gmail.com> Whitespace and 80-col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171803 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
3cc42205600b2d3865efd1585d79663c41e048f1 07-Jan-2013 Eric Christopher <echristo@gmail.com> Add more comments to what's going on here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171780 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
dd8e9f395e881972b320d947de88102a0be04b70 07-Jan-2013 Eric Christopher <echristo@gmail.com> Add support for separating strings for the split debug info DWARF5
proposal. This leaves the strings in the skeleton die as strp,
but in all dwo files they're accessed now via DW_FORM_GNU_str_index.

Add support for dumping these sections and modify the fission-cu.ll
testcase to have the correct strings and form. Fix a small bug
in the fixed form sizes routine that involved out of array accesses
for the table and add a FIXME in the extractFast routine to fix
this up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171779 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
56d433dffe02e14cafaab44d2628e20dc0bf26fe 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Sink AddrMode back into TargetLowering, removing one of the most
peculiar headers under include/llvm.

This struct still doesn't make a lot of sense, but it makes more sense
down in TargetLowering than it did before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171739 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
electionDAG/DAGCombiner.cpp
e4ba75f43e2ab1480d119d2d4eb878256274e0fb 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Switch the SCEV expander and LoopStrengthReduce to use
TargetTransformInfo rather than TargetLowering, removing one of the
primary instances of the layering violation of Transforms depending
directly on Target.

This is a really big deal because LSR used to be a "special" pass that
could only be tested fully using llc and by looking at the full output
of it. It also couldn't run with any other loop passes because it had to
be created by the backend. No longer is this true. LSR is now just
a normal pass and we should probably lift the creation of LSR out of
lib/CodeGen/Passes.cpp and into the PassManagerBuilder. =] I've not done
this, or updated all of the tests to use opt and a triple, because
I suspect someone more familiar with LSR would do a better job. This
change should be essentially without functional impact for normal
compilations, and only change behvaior of targetless compilations.

The conversion required changing all of the LSR code to refer to the TTI
interfaces, which fortunately are very similar to TargetLowering's
interfaces. However, it also allowed us to *always* expect to have some
implementation around. I've pushed that simplification through the pass,
and leveraged it to simplify code somewhat. It required some test
updates for one of two things: either we used to skip some checks
altogether but now we get the default "no" answer for them, or we used
to have no information about the target and now we do have some.

I've also started the process of removing AddrMode, as the TTI interface
doesn't use it any longer. In some cases this simplifies code, and in
others it adds some complexity, but I think it's not a bad tradeoff even
there. Subsequent patches will try to clean this up even further and use
other (more appropriate) abstractions.

Yet again, almost all of the formatting changes brought to you by
clang-format. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171735 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
62fdfb5fa7efdfd61339e4abe6fd87e60e939e58 07-Jan-2013 David Blaikie <dblaikie@gmail.com> PR14759: Debug info support for C++ member pointers.

This works fine with GDB for member variable pointers, but GDB's support for
member function pointers seems to be quite unrelated to
DW_TAG_ptr_to_member_type. (see GDB bug 14998 for details)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171698 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
be04929f7fd76a921540e9901f24563e51dc1219 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move TargetTransformInfo to live under the Analysis library. This no
longer would violate any dependency layering and it is in fact an
analysis. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171686 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
aeef83c6afa1e18d1cf9d359cc678ca0ad556175 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Switch TargetTransformInfo from an immutable analysis pass that requires
a TargetMachine to construct (and thus isn't always available), to an
analysis group that supports layered implementations much like
AliasAnalysis does. This is a pretty massive change, with a few parts
that I was unable to easily separate (sorry), so I'll walk through it.

The first step of this conversion was to make TargetTransformInfo an
analysis group, and to sink the nonce implementations in
ScalarTargetTransformInfo and VectorTargetTranformInfo into
a NoTargetTransformInfo pass. This allows other passes to add a hard
requirement on TTI, and assume they will always get at least on
implementation.

The TargetTransformInfo analysis group leverages the delegation chaining
trick that AliasAnalysis uses, where the base class for the analysis
group delegates to the previous analysis *pass*, allowing all but tho
NoFoo analysis passes to only implement the parts of the interfaces they
support. It also introduces a new trick where each pass in the group
retains a pointer to the top-most pass that has been initialized. This
allows passes to implement one API in terms of another API and benefit
when some other pass above them in the stack has more precise results
for the second API.

The second step of this conversion is to create a pass that implements
the TargetTransformInfo analysis using the target-independent
abstractions in the code generator. This replaces the
ScalarTargetTransformImpl and VectorTargetTransformImpl classes in
lib/Target with a single pass in lib/CodeGen called
BasicTargetTransformInfo. This class actually provides most of the TTI
functionality, basing it upon the TargetLowering abstraction and other
information in the target independent code generator.

The third step of the conversion adds support to all TargetMachines to
register custom analysis passes. This allows building those passes with
access to TargetLowering or other target-specific classes, and it also
allows each target to customize the set of analysis passes desired in
the pass manager. The baseline LLVMTargetMachine implements this
interface to add the BasicTTI pass to the pass manager, and all of the
tools that want to support target-aware TTI passes call this routine on
whatever target machine they end up with to add the appropriate passes.

The fourth step of the conversion created target-specific TTI analysis
passes for the X86 and ARM backends. These passes contain the custom
logic that was previously in their extensions of the
ScalarTargetTransformInfo and VectorTargetTransformInfo interfaces.
I separated them into their own file, as now all of the interface bits
are private and they just expose a function to create the pass itself.
Then I extended these target machines to set up a custom set of analysis
passes, first adding BasicTTI as a fallback, and then adding their
customized TTI implementations.

The fourth step required logic that was shared between the target
independent layer and the specific targets to move to a different
interface, as they no longer derive from each other. As a consequence,
a helper functions were added to TargetLowering representing the common
logic needed both in the target implementation and the codegen
implementation of the TTI pass. While technically this is the only
change that could have been committed separately, it would have been
a nightmare to extract.

The final step of the conversion was just to delete all the old
boilerplate. This got rid of the ScalarTargetTransformInfo and
VectorTargetTransformInfo classes, all of the support in all of the
targets for producing instances of them, and all of the support in the
tools for manually constructing a pass based around them.

Now that TTI is a relatively normal analysis group, two things become
straightforward. First, we can sink it into lib/Analysis which is a more
natural layer for it to live. Second, clients of this interface can
depend on it *always* being available which will simplify their code and
behavior. These (and other) simplifications will follow in subsequent
commits, this one is clearly big enough.

Finally, I'm very aware that much of the comments and documentation
needs to be updated. As soon as I had this working, and plausibly well
commented, I wanted to get it committed and in front of the build bots.
I'll be doing a few passes over documentation later if it sticks.

Commits to update DragonEgg and Clang will be made presently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171681 91177308-0d34-0410-b5e6-96231b3b80d8
asicTargetTransformInfo.cpp
MakeLists.txt
odeGen.cpp
LVMTargetMachine.cpp
electionDAG/TargetLowering.cpp
e4b4edd72ae596ac8d1fdbc6e77f61e331f6775d 05-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Funnel the actual TargetTransformInfo pass from the SelectionDAGISel
pass into the SelectionDAG itself rather than snooping on the
implementation of that pass as exposed by the TargetMachine. This
removes the last direct client of the ScalarTargetTransformInfo class
outside of the TTI pass implementation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171625 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
00ece1b846536cb2ba4efefa6e6194c7030e4c63 05-Jan-2013 David Blaikie <dblaikie@gmail.com> Emit DW_TAG_formal_parameter for unnamed parameters.

This change essentially reverts r87069 which came without a test case. It
causes no regressions in the GDB 7.5 test suite & fixes 25 xfails (commit
to the test suite to follow). If anyone can present a test case that
demonstrates why this check is necessary I'd be happy to account for it in one
way or another.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171609 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
84be3d5a73313eb19f2f9e0512153cd2e6f46c54 05-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't call destructors on MachineInstr and MachineOperand.

The series of patches leading up to this one makes llc -O0 run 8% faster.

When deallocating a MachineFunction, there is no need to visit all
MachineInstr and MachineOperand objects to deallocate them. All their
memory come from a BumpPtrAllocator that is about to be purged, and they
have empty destructors anyway.

This only applies when deallocating the MachineFunction.
DeleteMachineInstr() should still be used to recycle MI memory during
the codegen passes.

Remove the LeakDetector support for MachineInstr. I've never seen it
used before, and now it definitely doesn't work. With this patch, leaked
MachineInstrs would be much less of a problem since all of their memory
will be reclaimed by ~MachineFunction().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171599 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
achineRegisterInfo.cpp
f1d015f3429f611c423f943c75f86e6823810dc3 05-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Use ArrayRecycler for MachineInstr operand lists.

Instead of an std::vector<MachineOperand>, use MachineOperand arrays
from an ArrayRecycler living in MachineFunction.

This has several advantages:

- MachineInstr now has a trivial destructor, making it possible to
delete them in batches when destroying MachineFunction. This will be
enabled in a later patch.

- Bypassing malloc() and free() can be faster, depending on the system
library.

- MachineInstr objects and their operands are allocated from the same
BumpPtrAllocator, so they will usually be next to each other in
memory, providing better locality of reference.

- Reduce MachineInstr footprint. A std::vector is 24 bytes, the new
operand array representation only uses 8+4+1 bytes in MachineInstr.

- Better control over operand array reallocations. In the old
representation, the use-def chains would be reordered whenever a
std::vector reached its capacity. The new implementation never changes
the use-def chain order.

Note that some decisions in the code generator depend on the use-def
chain orders, so this patch may cause different assembly to be produced
in a few cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171598 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
bced5cd924e47818d67e33b3ae1550ab96fc239a 05-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineRegisterInfo::moveOperands().

This function works like memmove() for MachineOperands, except it also
updates any use-def chains containing the moved operands.

The use-def chains are updated without affecting the order of operands
in the list. That isn't possible when using the
removeRegOperandFromUseList() and addRegOperandToUseList() functions.

Callers to follow soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171597 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
73a853f05c913f6127e93cf0df3ba6398bcfc213 04-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Move an assertion so it doesn't dereference end().

The R600 target has test cases that exercises this code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171538 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrBundle.cpp
8cab6edf4fa46d9bd06ff3ce0e1dd4557be58b65 04-Jan-2013 Eric Christopher <echristo@gmail.com> Add a name for the anonymous type we're creating for subrange
types and a FIXME for what we should be doing. Should solve the
immediacy of PR12069 where our debug info is crashing another
tool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171536 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
b9d1005e96681b5c8cc1ed959fa129de62933020 04-Jan-2013 Pedro Artigas <partigas@apple.com> small fixes to enable the reuse of the pass manager across multiple modules


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171475 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
251ed7f3e59a857dd92bda1ba4f9305f33deb67b 03-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR14732 by handling all kinds of IMPLICIT_DEF live ranges.

Most IMPLICIT_DEF instructions are removed by the ProcessImplicitDefs
pass, and a few are reinserted by PHIElimination when a PHI argument is
<undef>.

RegisterCoalescer was assuming that all IMPLICIT_DEF live ranges look
like those created by PHIElimination, and that their live range never
leaves the basic block.

The PR14732 test case does tricks with PHI nodes that causes a longer
IMPLICIT_DEF live range to appear. This happens very rarely, but
RegisterCoalescer should be able to handle it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171435 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
d40758b24ebab5777131533d9369e707fc852594 02-Jan-2013 Tom Stellard <thomas.stellard@amd.com> DAGCombiner: Avoid generating illegal vector INT_TO_FP nodes

DAGCombiner::reduceBuildVecConvertToConvertBuildVec() was making two
mistakes:

1. It was checking the legality of scalar INT_TO_FP nodes and then generating
vector nodes.

2. It was passing the result value type to
TargetLoweringInfo::getOperationAction() when it should have been
passing the value type of the first operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171420 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0b8c9a80f20772c3793201ab5b251d3520b9cea3 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move all of the header files which are involved in modelling the LLVM IR
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.

There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.

The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.

I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).

I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
smPrinter/ARMException.cpp
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/DIE.cpp
smPrinter/DwarfCFIException.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/OcamlGCPrinter.cpp
smPrinter/Win64Exception.cpp
ranchFolding.cpp
allingConvLower.cpp
warfEHPrepare.cpp
CMetadata.cpp
CStrategy.cpp
ntrinsicLowering.cpp
exicalScopes.cpp
iveDebugVariables.cpp
iveIntervalAnalysis.cpp
ocalStackSlotAllocation.cpp
achineBasicBlock.cpp
achineBranchProbabilityInfo.cpp
achineFunction.cpp
achineFunctionPass.cpp
achineInstr.cpp
achineModuleInfo.cpp
achineVerifier.cpp
ptimizePHIs.cpp
HIElimination.cpp
rologEpilogInserter.cpp
seudoSourceValue.cpp
egAllocFast.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
cheduleDAGInstrs.cpp
cheduleDAGPrinter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGVLIW.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGDumper.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
tackColoring.cpp
tackProtector.cpp
tackSlotColoring.cpp
ailDuplication.cpp
argetLoweringObjectFileImpl.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
58a2cbef4aac9ee7d530dfb690c78d6fc11a2371 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Resort the #include lines in include/... and lib/... with the
utils/sort_includes.py script.

Most of these are updating the new R600 target and fixing up a few
regressions that have creeped in since the last time I sorted the
includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171362 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6eb7a4270bc411342f459bc574f8fe4ef5eeff28 30-Dec-2012 Hal Finkel <hfinkel@anl.gov> Support ppcf128 in SelectionDAG::getConstantFP

Fixes pr14751.

Patch by Kai; Thanks!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171261 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
98281a20503896349bd152e2dfe87435d3a6aada 30-Dec-2012 Nuno Lopes <nunoplopes@sapo.pt> convert a bunch of callers from DataLayout::getIndexedOffset() to GEP::accumulateConstantOffset().
The later API is nicer than the former, and is correct regarding wrap-around offsets (if anyone cares).
There are a few more places left with duplicated code, which I'll remove soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171259 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8b62abdd7b9c8fc5d78dad86093f4afdfeba949d 30-Dec-2012 Bill Wendling <isanbard@gmail.com> Remove the Function::getRetAttributes method in favor of using the AttributeSet accessor method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171256 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
39cd0c8e477255a7296b2bd1dc67193f8d38c003 30-Dec-2012 Bill Wendling <isanbard@gmail.com> Remove Function::getParamAttributes and use the AttributeSet accessor methods instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
831737d329a727f53a1fb0572f7b7a8127208881 30-Dec-2012 Bill Wendling <isanbard@gmail.com> Remove the Function::getFnAttributes method in favor of using the AttributeSet
directly.

This is in preparation for removing the use of the 'Attribute' class as a
collection of attributes. That will shift to the AttributeSet class instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171253 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
odePlacementOpt.cpp
achineBlockPlacement.cpp
achineFunction.cpp
rologEpilogInserter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
tackProtector.cpp
ailDuplication.cpp
444b4bf5c84c80833ff283244de0885124091a13 27-Dec-2012 Nadav Rotem <nrotem@apple.com> Refactor DAGCombinerInfo. Change the different booleans that indicate if we are before or after different runs of DAGCo, with the CombineLevel enum.
Also, added a new API for checking if we are running before or after the LegalizeVectorOps phase.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171142 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
64f824c9d181c8ee78cba5b00fa7be0e5a0900a5 27-Dec-2012 Eric Christopher <echristo@gmail.com> For the dwarf5 split debug info code split out the string section
per compile unit/skeleton compile unit. Update tests accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171133 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
04de315694d441de4dbdf52b3ff41b2fe6803646 25-Dec-2012 Bob Wilson <bob.wilson@apple.com> Rename LLVMContext diagnostic handler types and functions.

These are now generally used for all diagnostics from the backend, not just
for inline assembly, so this drops the "InlineAsm" from the names. No
functional change. (I've left aliases for the old names but only for long
enough to let me switch over clang to use the new ones.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171047 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
a0be09f511c68a88ee95b73c8f0ebd78156a559e 24-Dec-2012 Bob Wilson <bob.wilson@apple.com> Add LLVMContext::emitWarning methods and use them. <rdar://problem/12867368>

When the backend is used from clang, it should produce proper diagnostics
instead of just printing messages to errs(). Other clients may also want to
register their own error handlers with the LLVMContext, and the same handler
should work for warnings in the same way as the existing emitError methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171041 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
037435d114f77d96417ec0151443056accb0c050 22-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove a special case that doesn't seem necessary any longer.

Back when this exception was added, it was skipping a lot more code, but
now it just looks like a premature optimization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170989 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
021e3b6444e9179751002db7b20de96455e03171 22-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use getNumOperands() instead of Operands.size().

The representation of the Operands array is going to change soon so it
can be allocated from a BumpPtrAllocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170988 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
38b06020dbd804f01ee3802779a52c05cffdf87d 21-Dec-2012 Roman Divacky <rdivacky@freebsd.org> Remove duplicate includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170902 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
hrinkWrapping.cpp
tackColoring.cpp
ab37b2c4bb23ab80f92429b59d812ed491c14ea6 21-Dec-2012 Evan Cheng <evan.cheng@apple.com> Add targets to skip running the GC passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170836 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
56706db45bbc7be0c087451ca9f1d258324df4b2 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Require the two-argument MI::addOperand(MF, MO) for dangling instructions.

Instructions that are inserted in a basic block can still be decorated
with addOperand(MO).

Make the two-argument addOperand() function contain the actual
implementation. This function will now always have a valid MF reference
that it can use for memory allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170798 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
be06aacaa9a270384599bbfa850b967e9996b9fb 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an MF argument to MI::copyImplicitOps().

This function is often used to decorate dangling instructions, so a
context reference is required to allocate memory for the operands.

Also add a corresponding MachineInstrBuilder method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170797 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9500e5d07ac9b94c8fed74150e444778a0dcb036 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use two-arg addOperand(MF, MO) internally in MachineInstr when possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170796 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
72c1655e0af6c87ffe687bed1f4ed263b1165c06 20-Dec-2012 Eric Christopher <echristo@gmail.com> Whitespace and 80-column cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170771 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
2e5d870b384f7cc20ba040e827d54fa473f60800 20-Dec-2012 Eric Christopher <echristo@gmail.com> Start splitting out the debug string section handling by moving it
into the DwarfUnits class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170770 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
54c1902919b502d7b549f9e967e8d9b6921fabf9 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove two dead functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170766 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
5d3cfa6d1f6d3069893d50af39511cbf5576be91 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use MachineInstrBuilder for PHI nodes in SelectionDAGISel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170716 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7f6ece8a93021fb42a5f2e42507c9b2681e32f32 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use MachineInstrBuilder in InstrEmitter.

This is supposed to be a mechanical change with no functional effects.

InstrEmitter can generate all types of MachineOperands which revealed
that MachineInstrBuilder was missing a few methods, added by this patch.

Besides providing a context pointer to MI::addOperand(),
MachineInstrBuilder seems like a better fit for this code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
7b79b9862c9e6fc31ec072acb09171fd6ec7b0e0 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use MachineInstrBuilder in a few CodeGen passes.

This automatically passes a context pointer to MI->addOperand().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170711 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
achineSSAUpdater.cpp
ostRASchedulerList.cpp
egAllocFast.cpp
ailDuplication.cpp
99d8e76d44bcf72aef1a90df545c302172006768 20-Dec-2012 Bob Wilson <bob.wilson@apple.com> Do not introduce vector operations in functions marked with noimplicitfloat.

<rdar://problem/12879313>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
344df79cc073032cfc35cd00406907d67b537087 19-Dec-2012 Dmitri Gribenko <gribozavr@gmail.com> Add a missing 'else'. Found by grep '} if'

No testcase because it is apparently not so trivial to construct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170595 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
6eebe47060eec7e3a4ae95d4b4835869108f9c07 19-Dec-2012 Eric Christopher <echristo@gmail.com> Split out abbreviations for the skeleton info from the rest of
the abbreviations. Part of implementing split dwarf.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170589 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
37a942cd52725b1d390989a8267a764b42fcb5d3 19-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the explicit MachineInstrBuilder(MI) constructor.

Use the version that also takes an MF reference instead.

It would technically be possible to extract an MF reference from the MI
as MI->getParent()->getParent(), but that would not work for MIs that
are not inserted into any basic block.

Given the reasonably small number of places this constructor was used at
all, I preferred the compile time check to a run time assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170588 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
c698d3a2a40f0909d16cbe857685f0f22cb9ae43 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change AsmOperandInfo::ConstraintVT to MVT, instead of EVT.

Accordingly, add MVT::getVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170550 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
b9e12e519e01078663941ddfbecccf1432c1120c 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Split the usage of 'EVT PartVT' into 'MVT PartVT' and 'EVT PartEVT'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170540 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8963fecc86def73634dabf7545322287aa6ae9f8 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change RegVT in BitTestBlock and RegsForValue, to contain MVTs,
instead of EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170538 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
e5c65911a659e49320d214bf0702793ad37b5ed5 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getTypeForExtArgOrReturn to take and return
MVTs, instead of EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170537 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
ee211d2b8da98a549f7c68401aba866fa2a0eee2 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change a parameter of TargetLowering::getVectorTypeBreakdown to MVT,
from EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170536 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
dfcf33a287d1756721f1f735af687595ce2f5a21 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::RegisterTypeForVT to contain MVTs, instead of
EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170535 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
ff01277841b824128c74cdb66f74d8082d75e3f6 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::TransformToType to contain MVTs, instead of
EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170534 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
0340557fb830e3669c4c48a2cd99d7703bdda452 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::findRepresentativeClass to take an MVT, instead
of EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170532 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
319bb399233d3ee67233aa29235c8ad2148fb77d 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getTypeToPromoteTo to take and return MVTs,
instead of EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170529 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorOps.cpp
fdbeb057b8a844b641f323fd27a61ffcb32b43da 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::isCondCodeLegal to take an MVT, instead of EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170524 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
9c5ab9355e00686e120e12952908ea8ad981d776 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getCondCodeAction to take an MVT, instead of
EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170522 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
88ef514cc63c3f22f78eaf4dd295d349b4070819 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getTruncStoreAction to take MVTs, instead of EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170510 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorOps.cpp
4b977312c7a9c078211de83771b40a1561deb047 19-Dec-2012 Elena Demikhovsky <elena.demikhovsky@intel.com> Optimized load + SIGN_EXTEND patterns in the X86 backend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170506 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bf5a2c6a39f2a98a83f5fb668b8b35156b693471 19-Dec-2012 Nadav Rotem <nrotem@apple.com> After reducing the size of an operation in the DAG we zero-extend the reduced
bitwidth op back to the original size. If we reduce ANDs then this can cause
an endless loop. This patch changes the ZEXT to ANY_EXTEND if the demanded bits
are equal or smaller than the size of the reduced operation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170505 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
034b94b17006f51722886b0f2283fb6fb19aca1f 19-Dec-2012 Bill Wendling <isanbard@gmail.com> Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170502 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.h
ranchFolding.cpp
odePlacementOpt.cpp
achineBlockPlacement.cpp
achineFunction.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
tackProtector.cpp
ailDuplication.cpp
85022561f9c78446bbc5f745cd9b58f4e5dc92ec 19-Dec-2012 Craig Topper <craig.topper@gmail.com> Remove more of 'else's after 'returns'. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170497 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
a1b3c03777f33665d6a70607610ee80e47a40c63 19-Dec-2012 Craig Topper <craig.topper@gmail.com> Remove a bunch of 'else's after 'returns'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170496 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
40b4a81ab007c11c2d4227b4f6a949720ba2adff 19-Dec-2012 Craig Topper <craig.topper@gmail.com> Teach SimplifySetCC that comparing AssertZext i1 against a constant 1 can be rewritten as a compare against a constant 0 with the opposite condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170495 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
2e4b639790a166e55a0bf14fac54ca6ce583e459 19-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use bidirectional bundle flags to simplify important functions.

The bundle_iterator::operator++ function now doesn't need to dig out the
basic block and check against end(). It can use the isBundledWithSucc()
flag to find the last bundled instruction safely.

Similarly, MachineInstr::isBundled() no longer needs to look at
iterators etc. It only has to look at flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170473 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
582abddeee6bd49762d562d3e641a4e290d464be 19-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify bundle flag consistency when setting them.

Now that the bundle flag aware APIs are all in place, it is possible to
continuously verify the flag consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170465 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9466bdebb7a239c0f469ae5c9aa1b94d2e2700f9 18-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify bundle flags for consistency in MachineVerifier.

The new bidirectional bundle flags are redundant, so inadvertent bundle
tearing can be detected in the machine code verifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170463 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
bd7b36e780f99b808f8e334e26f3dae1bc7e8175 18-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't allow the automatically updated MI flags to be set directly.

The bundle-related MI flags need to be kept in sync with the neighboring
instructions. Don't allow the bulk flag-setting setFlags() function to
change them.

Also don't copy MI flags when cloning an instruction. The clone's bundle
flags will be set when it is explicitly inserted into a bundle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170459 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9b04104a5e9fb51b24b7aeb55912d319802049b2 18-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Tighten up the splice() API for bundled instructions.

Remove the instr_iterator versions of the splice() functions. It doesn't
seem useful to be able to splice sequences of instructions that don't
consist of full bundles.

The normal splice functions that take MBB::iterator arguments are not
changed, and they can move whole bundles around without any problems.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170456 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
04f52e1300f4eff5b5e5280fbf032f571854a539 18-Dec-2012 Andrew Trick <atrick@apple.com> MISched: add dependence to ExitSU to model live-out latency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170454 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
e3eddaec4a173c7b9c56aff455d74e4fb2f95daf 18-Dec-2012 Andrew Trick <atrick@apple.com> MISched: Cleanup, redundant statement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170453 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
44fd0bcc40e04cf9aaaf0f33744ae4decbb656c3 18-Dec-2012 Andrew Trick <atrick@apple.com> MISched: Heuristics, compare latency more precisely. It matters more for some targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170452 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
9c676c2941343aa5c3f933eb0dd97b22cca3d6f4 18-Dec-2012 Andrew Trick <atrick@apple.com> MISched: Remove SchedRemainder::IsResourceLimited. I don't know how to compute it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170451 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
d453960f92993600c56e5b4c004cadca9d4f7dc8 18-Dec-2012 Andrew Trick <atrick@apple.com> MISched: cleanup, use the proper iterator type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170450 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
071966f6bf2a535b318995cfa5d0f5b641fb4e14 18-Dec-2012 Andrew Trick <atrick@apple.com> MISched: minor improvement, initialize remaining resources before the first scheduling decision.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170449 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
edc3503ca5a4ab9133dd825dce4abd46bc4a3e08 18-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Tighten the insert() API for bundled instructions.

The normal insert() function takes an MBB::iterator position, and
inserts a stand-alone MachineInstr as before.

The insert() function that takes an MBB::instr_iterator position can
insert instructions inside a bundle, and will now update the bundle
flags correctly when that happens.

When the insert position is between two bundles, it is unclear whether
the instruction should be appended to the previous bundle, prepended to
the next bundle, or stand on its own. The MBB::insert() function doesn't
bundle the instruction in that case, use the MIBundleBuilder class for
that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170437 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
ca2dd36c395f5ead63572d45a2106b9d34d8ca90 18-Dec-2012 Hal Finkel <hfinkel@anl.gov> Check multiple register classes for inline asm tied registers

A register can be associated with several distinct register classes.
For example, on PPC, the floating point registers are each associated with
both F4RC (which holds f32) and F8RC (which holds f64). As a result, this code
would fail when provided with a floating point register and an f64 operand
because it would happen to find the register in the F4RC class first and
return that. From the F4RC class, SDAG would extract f32 as the register
type and then assert because of the invalid implied conversion between
the f64 value and the f32 register.

Instead, search all register classes. If a register class containing the
the requested register has the requested type, then return that register
class. Otherwise, as before, return the first register class found that
contains the requested register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
9f4692d2953b47e9037ccfe5709a6e75de3911d4 18-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Tighten up the erase/remove API for bundled instructions.

Most code is oblivious to bundles and uses the MBB::iterator which only
visits whole bundles. MBB::erase() operates on whole bundles at a time
as before.

MBB::remove() now refuses to remove bundled instructions. It is not safe
to remove all instructions in a bundle without deleting them since there
is no way of returning pointers to all the removed instructions.

MBB::remove_instr() and MBB::erase_instr() will now update bundle flags
correctly, lifting individual instructions out of bundles while leaving
the remaining bundle intact.

The MachineInstr convenience functions are updated so

eraseFromParent() erases a whole bundle as before
eraseFromBundle() erases a single instruction, leaving the rest of its bundle.
removeFromParent() refuses to operate on bundled instructions, and
removeFromBundle() lifts a single instruction out of its bundle.

These functions will no longer accidentally split or coalesce bundles -
bundle flags are updated to preserve the existing bundling, and explicit
bundleWith* / unbundleFrom* functions should be used to change the
instruction bundling.

This API update is still a work in progress. I am going to update APIs
first so they maintain bundle flags automatically when possible. Then
I'll add stricter verification of the bundle flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170384 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineInstr.cpp
3d170e64ca1af491e2aa58f882f93b8e8111eef8 17-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Revert/correct some FastISel changes in r170104 (EVT->MVT for
TargetLowering::getRegClassFor).

Some isSimple() guards were missing, or getSimpleVT() were hoisted too
far, resulting in asserts on valid LLVM assembly input.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170336 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a1032b7e4c405474f8a26c731873d413b1f1d25b 17-Dec-2012 Craig Topper <craig.topper@gmail.com> Add debug prints for when optimizeLoadInstr folds a load.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170298 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
0641bd7399c8c3269779b0ba2de47d02524725ba 16-Dec-2012 Dmitri Gribenko <gribozavr@gmail.com> Declare class DwarfDebug before use instead of relying on a forward declaration
from some other unrelated header.

Patch by Kai.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170284 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
2c3a4641a7785da78839caf574277df9cd93b52c 16-Dec-2012 Reed Kotler <rkotler@mips.com> This patch is needed to make c++ exceptions work for mips16.

Mips16 is really a processor decoding mode (ala thumb 1) and in the same
program, mips16 and mips32 functions can exist and can call each other.

If a jal type instruction encounters an address with the lower bit set, then
the processor switches to mips16 mode (if it is not already in it). If the
lower bit is not set, then it switches to mips32 mode.

The linker knows which functions are mips16 and which are mips32.
When relocation is performed on code labels, this lower order bit is
set if the code label is a mips16 code label.

In general this works just fine, however when creating exception handling
tables and dwarf, there are cases where you don't want this lower order
bit added in.

This has been traditionally distinguished in gas assembly source by using a
different syntax for the label.

lab1: ; this will cause the lower order bit to be added
lab2=. ; this will not cause the lower order bit to be added

In some cases, it does not matter because in dwarf and debug tables
the difference of two labels is used and in that case the lower order
bits subtract each other out.

To fix this, I have added to mcstreamer the notion of a debuglabel.
The default is for label and debug label to be the same. So calling
EmitLabel and EmitDebugLabel produce the same result.

For various reasons, there is only one set of labels that needs to be
modified for the mips exceptions to work. These are the "$eh_func_beginXXX"
labels.

Mips overrides the debug label suffix from ":" to "=." .

This initial patch fixes exceptions. More changes most likely
will be needed to DwarfCFException to make all of this work
for actual debugging. These changes will be to emit debug labels in some
places where a simple label is emitted now.

Some historical discussion on this from gcc can be found at:
http://gcc.gnu.org/ml/gcc-patches/2008-08/msg00623.html
http://gcc.gnu.org/ml/gcc-patches/2008-11/msg01273.html



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170279 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
b1e66d0c4fed6f162424fd5257cedf0d2e705152 15-Dec-2012 Eric Christopher <echristo@gmail.com> To simplify some code move the unit emission into the holders.
Make emitDIE public accordingly. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170258 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
cf6b8ad784c7e5e64beb9e26c43176eb38b1b68b 15-Dec-2012 Eric Christopher <echristo@gmail.com> Use begin and end label names from the section for info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170257 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
702474dbb2d4fbaf7b93bcccd71b7b80a8ec2817 14-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getLoadExtAction to take an MVT, instead of
EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170183 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
caf946edf3478fcd00a572de380d9bf0fc00fd26 14-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the new MI bundling API in MachineInstrBundle itself.

The new API is higher level than just manipulating the bundle flags
directly, and the setIsInsideBundle() function will disappear soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170159 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrBundle.cpp
01bc2b39a4cbe76537e11411038bb834bceaf8a0 13-Dec-2012 David Blaikie <dblaikie@gmail.com> Debug Info: add support to mark member variables as artificial

This is the LLVM portion of r170154.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170156 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
009e1e21d4e4d26d4aeaeeb5063c0b4470572ef7 13-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::setTypeAction to take an MVT, instead fo EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170148 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
860e7cdab9d5eceda5ac52ae0ddfb4bdab0067f2 13-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getRepRegClassFor to take an MVT, instead of
EVT.

Accordingly, change RegDefIter to contain MVTs instead of EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170140 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
a61b17c18a67f1b3faef2f2108379c4337ce9bb7 13-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getRegClassFor to take an MVT, instead of EVT.

Accordingly, add helper funtions getSimpleValueType (in parallel to
getValueType) in SDValue, SDNode, and TargetLowering.

This is the first, in a series of patches.

This is the second attempt. In the first attempt (r169837), a few
getSimpleVT() were hoisted too far, detected by bootstrap failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170104 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/ResourcePriorityQueue.cpp
electionDAG/SelectionDAGBuilder.cpp
44fedbad3a3f57aa27ae2b5ac82b21679bf7fe00 13-Dec-2012 Eric Christopher <echristo@gmail.com> Use default label name for a section in emitting abbreviation
section to help prep some code to be split about.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170088 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9a65a01eeb97cdc10ca6b97ade3f9f8aba11fa9f 13-Dec-2012 Evan Cheng <evan.cheng@apple.com> Fix a bug in DAGCombiner::MatchBSwapHWord. Make sure the node has operands before referencing them. rdar://12868039

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170078 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5399d2502acaf96fe8420e61913e77f0b23650ff 12-Dec-2012 Pedro Artigas <partigas@apple.com> Make the MCStreamer have a reset method and call that after finalization of the asm printer,
also changed MCContext to a single reset only method for simplicity as requested on the list



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170041 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineModuleInfo.cpp
a16e49d56f6349c12da2b561da00c22e13eda09b 12-Dec-2012 Evan Cheng <evan.cheng@apple.com> Fix a logic bug in inline expansion of memcpy / memset with an overlapping
load / store pair. It's not legal to use a wider load than the size of
the remaining bytes if it's the first pair of load / store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170018 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
946a3a9f22c967d5432eaab5fa464b91343477cd 12-Dec-2012 Evan Cheng <evan.cheng@apple.com> Sorry about the churn. One more change to getOptimalMemOpType() hook. Did I
mention the inline memcpy / memset expansion code is a mess?

This patch split the ZeroOrLdSrc argument into two: IsMemset and ZeroMemset.
The first indicates whether it is expanding a memset or a memcpy / memmove.
The later is whether the memset is a memset of zero. It's totally possible
(likely even) that targets may want to do different things for memcpy and
memset of zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169959 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7d34267df63e23be1957f738de783c145febb7af 12-Dec-2012 Evan Cheng <evan.cheng@apple.com> - Rename isLegalMemOpType to isSafeMemOpType. "Legal" is a very overloade term.
Also added more comments to explain why it is generally ok to return true.
- Rename getOptimalMemOpType argument IsZeroVal to ZeroOrLdSrc. It's meant to
be true for loaded source (memcpy) or zero constants (memset). The poor name
choice is probably some kind of legacy issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169954 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
981b96376a99dacced70cc9b1e870968f426331a 12-Dec-2012 Manman Ren <mren@apple.com> DAGCombine: clamp hi bit in APInt::getBitsSet to avoid assertion

rdar://12838504


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169951 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
61f4dfe3693bf68b20748d82ac4dd9bf2f356699 12-Dec-2012 Evan Cheng <evan.cheng@apple.com> Avoid using lossy load / stores for memcpy / memset expansion. e.g.
f64 load / store on non-SSE2 x86 targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169944 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e07f85eb76a0254d3adbdf8b5d61ff5c07858cef 12-Dec-2012 Evan Cheng <evan.cheng@apple.com> Replace TargetLowering::isIntImmLegal() with
ScalarTargetTransformInfo::getIntImmCost() instead. "Legal" is a poorly defined
term for something like integer immediate materialization. It is always possible
to materialize an integer immediate. Whether to use it for memcpy expansion is
more a "cost" conceern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169929 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0b944ee36f85ff0af849f35dfb59dced15dcde5a 11-Dec-2012 Eric Christopher <echristo@gmail.com> Update some comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169907 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8293b7b8b1c4372095f86097da33f6cc63330289 11-Dec-2012 Joel Jones <joel_k_jones@apple.com> Add comment for load folding

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169880 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
34525f9ac098c1c6bc9002886d6da3039a284fd2 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Revert EVT->MVT changes, r169836-169851, due to buildbot failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169854 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/ResourcePriorityQueue.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/TargetLowering.cpp
05749cff9b045505f08313b4c2d1bd9a4fb84970 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change RegVT in BitTestBlock and RegsForValue, to contain MVTs,
instead of EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169851 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
47fd10f2fc45d280308b77ed4eda16f3c9c88248 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getTypeForExtArgOrReturn to take and return
MVTs, instead of EVTs.

Accordingly, add bitsLT (and similar) to MVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169850 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
1d367e9bccf1f374a92c4337251ea541118fdcc9 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change a parameter of TargetLowering::getVectorTypeBreakdown to MVT,
from EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169849 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
2d916231ff503b995bf3b65a338c9bf0d84ee7c7 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::RegisterTypeForVT to contain MVTs, instead of
EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169848 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
235c75cc2190c40f5785059ec1767e44da5c5401 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::TransformToType to contain MVTs, instead of
EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169847 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
bade0345d190427a08b2b947bc94f4d8ca5d7717 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::findRepresentativeClass to take an MVT, instead
of EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169845 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
bb2543bb0e38495cd655be3eadcb9dd008ac56d2 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getTypeToPromoteTo to take and return MVTs,
instead of EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169844 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorOps.cpp
204301f0459c1deb6c535723760c848ba2fcd42b 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::isCondCodeLegal to take an MVT, instead of EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
aff674331ebb54e74baa88532ee587d741a430a2 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getCondCodeAction to take an MVT, instead of
EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169842 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
3166283ac169e86e9718bee69850b94c1bc27727 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getTruncStoreAction to take MVTs, instead of EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169841 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorOps.cpp
ffa03b7981e322d6c9ba8b9cc18cae282ce3b587 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getLoadExtAction to take an MVT, instead of EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169840 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
968947766b17bc1a6f27e556f9f340de2504e92d 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::setTypeAction to take an MVT, instead fo EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169839 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
aa7744d75fc1769ccc12c65c07bb5b82afa58330 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getRepRegClassFor to take an MVT, instead of
EVT.

Accordingly, change RegDefIter to contain MVTs instead of EVTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169838 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
8163ca76f0b0d336c5436364ffb3b85be1162e7a 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getRegClassFor to take an MVT, instead of EVT.

Accordingly, add helper funtions getSimpleValueType (in parallel to
getValueType) in SDValue, SDNode, and TargetLowering.

This is the first, in a series of patches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169837 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/ResourcePriorityQueue.cpp
electionDAG/SelectionDAGBuilder.cpp
1c49fda408ae5ba90fdaf1b274edd1119aea58b7 11-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Fix a miscompile in the DAG combiner. Previously, we would incorrectly
try to reduce the width of this load, and would end up transforming:

(truncate (lshr (sextload i48 <ptr> as i64), 32) to i32)
to
(truncate (zextload i32 <ptr+4> as i64) to i32)

We lost the sext attached to the load while building the narrower i32
load, and replaced it with a zext because lshr always zext's the
results. Instead, bail out of this combine when there is a conflict
between a sextload and a zext narrowing. The rest of the DAG combiner
still optimize the code down to the proper single instruction:

movswl 6(...),%eax

Which is exactly what we wanted. Previously we read past the end *and*
missed the sign extension:

movl 6(...), %eax

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169802 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
425e951734c3a0615e22ec94ffa51cc16ce6e483 11-Dec-2012 Chad Rosier <mcrosier@apple.com> Fall back to the selection dag isel to select tail calls.

This shouldn't affect codegen for -O0 compiles as tail call markers are not
emitted in unoptimized compiles. Testing with the external/internal nightly
test suite reveals no change in compile time performance. Testing with -O1,
-O2 and -O3 with fast-isel enabled did not cause any compile-time or
execution-time failures. All tests were performed on my x86 machine.
I'll monitor our arm testers to ensure no regressions occur there.

In an upcoming clang patch I will be marking the objc_autoreleaseReturnValue
and objc_retainAutoreleaseReturnValue as tail calls unconditionally. While
it's theoretically true that this is just an optimization, it's an
optimization that we very much want to happen even at -O0, or else ARC
applications become substantially harder to debug.

Part of rdar://12553082

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169796 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
0e3e9b79f6e471b46438251249f18121408e5189 11-Dec-2012 Eric Christopher <echristo@gmail.com> Refactor out the abbreviation handling into a separate class that
controls each of the abbreviation sets (only a single one at the
moment) and computes offsets separately as well for each set
of DIEs.

No real function change, ordering of abbreviations for the skeleton
CU changed but only because we're computing in a separate order. Fix
the testcase not to care.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169793 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
376642ed620ecae05b68c7bc81f79aeb2065abe0 11-Dec-2012 Evan Cheng <evan.cheng@apple.com> Some enhancements for memcpy / memset inline expansion.
1. Teach it to use overlapping unaligned load / store to copy / set the trailing
bytes. e.g. On 86, use two pairs of movups / movaps for 17 - 31 byte copies.
2. Use f64 for memcpy / memset on targets where i64 is not legal but f64 is. e.g.
x86 and ARM.
3. When memcpy from a constant string, do *not* replace the load with a constant
if it's not possible to materialize an integer immediate with a single
instruction (required a new target hook: TLI.isIntImmLegal()).
4. Use unaligned load / stores more aggressively if target hooks indicates they
are "fast".
5. Update ARM target hooks to use unaligned load / stores. e.g. vld1.8 / vst1.8.
Also increase the threshold to something reasonable (8 for memset, 4 pairs
for memcpy).

This significantly improves Dhrystone, up to 50% on ARM iOS devices.

rdar://12760078


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169791 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
07f6a4fde0a1b081fbefd986345c9b2f4f85e88a 10-Dec-2012 Lang Hames <lhames@gmail.com> Defer call to InitSections until after MCContext has been initialized. If
InitSections is called before the MCContext is initialized it could cause
duplicate temporary symbols to be emitted later (after context initialization
resets the temporary label counter).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169785 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LVMTargetMachine.cpp
617d18385f7fc33082c91710676a01ed528555af 10-Dec-2012 Eric Christopher <echristo@gmail.com> Rearrange vars and make comments more obvious.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169780 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
642630ef2baeeb84763bc30dbc2e8b154d54d200 10-Dec-2012 Eric Christopher <echristo@gmail.com> Remove blank line at top of file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169779 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9171fb9cfb25b2e2db64131c15b497de459f69fc 10-Dec-2012 Eric Christopher <echristo@gmail.com> Fix a coding style nit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169776 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
f45d11b56bffeaec94291f330dc9f7f7aae5a741 10-Dec-2012 Tom Stellard <thomas.stellard@amd.com> LegalizeDAG: Allow type promotion of scalar loads

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169773 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8b7f16e9719a64973e3b4d35e122222c26839c44 10-Dec-2012 Tom Stellard <thomas.stellard@amd.com> LegalizeDAG: Allow type promotion for scalar stores

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169772 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4daaed1c7077deb185628a86252afdbbbaf5d3db 10-Dec-2012 Eric Christopher <echristo@gmail.com> Use the somewhat semantic term "split dwarf" it more matches what's
going on and makes a lot of the terminology in comments make more sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169758 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9ec87b3c86151d065b58a1f4f94c37034aae97da 10-Dec-2012 Eric Christopher <echristo@gmail.com> Delete the FissionCU.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169757 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
28bd25a06ba3f3fa493fde97344e095b6987988c 10-Dec-2012 Eric Christopher <echristo@gmail.com> Reorder fission variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169756 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
f21831073ca474601620d1a29258176b0deaedb2 10-Dec-2012 Hal Finkel <hfinkel@anl.gov> Use GetUnderlyingObjects in misched

misched used GetUnderlyingObject in order to break false load/store
dependencies, and the -enable-aa-sched-mi feature similarly relied on
GetUnderlyingObject in order to ensure it is safe to use the aliasing analysis.
Unfortunately, GetUnderlyingObject does not recurse through phi nodes, and so
(especially due to LSR) all of these mechanisms failed for
induction-variable-dependent loads and stores inside loops.

This change replaces uses of GetUnderlyingObject with GetUnderlyingObjects
(which will recurse through phi and select instructions) in misched.

Andy reviewed, tested and simplified this patch; Thanks!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169744 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
48b509c77318cc6e753513ca5dcdd67e18094235 10-Dec-2012 Craig Topper <craig.topper@gmail.com> Teach DAG combine to handle vector add/sub with vectors of all 0s.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5a0f372feb994a07ce40687c5ecff2e2c792bf24 09-Dec-2012 Craig Topper <craig.topper@gmail.com> Remove extra blank line.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9472b4fbf96fb840eb416acd00bbee173c62e8da 08-Dec-2012 Craig Topper <craig.topper@gmail.com> Teach DAG combine to handle vector logical operations with vectors of all 1s or all 0s. These cases can show up when vectors are split for legalizing. Fix some tests that were dependent on these cases not being combined.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169684 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fad649a5b173f8cfdbbbbde8649ed66afd1129c1 07-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add higher-level API for dealing with bundled MachineInstrs.

This is still a work in progress. The purpose is to make bundling and
unbundling operations explicit, and to catch errors where bundles are
broken or created inadvertently.

The old IsInsideBundle flag is replaced by two MI flags: BundledPred
which has the same meaning as IsInsideBundle, and BundledSucc which is
set on instructions that are bundled with a successor. Having two flags
provdes redundancy to detect when a bundle is inadvertently torn by a
splice() or insert(), and it makes it possible to write bundle iterators
that don't need to peek at adjacent instructions.

The new flags can't be manipulated directly (once setIsInsideBundle is
gone). Instead there are MI functions to make and break bundle bonds.

The setIsInsideBundle function will be removed in a future commit. It
should be replaced by bundleWithPred().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169583 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
873a1dd7d679ac9a9a92a93a4d2bbb157878efb4 06-Dec-2012 Pedro Artigas <partigas@apple.com> fixed valgrind issues of prior commit, this change applies r169456 changes back to the tree with fixes. on darwin no valgrind issues exist in the tests that used to fail.

original change description:

change MCContext to work on the doInitialization/doFinalization model

reviewed by Evan Cheng <evan.cheng@apple.com>




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169553 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
2766a47310b05228e9bbc536d9f3a593fc31cd12 06-Dec-2012 Evan Cheng <evan.cheng@apple.com> Replace r169459 with something safer. Rather than having computeMaskedBits to
understand target implementation of any_extend / extload, just generate
zero_extend in place of any_extend for liveouts when the target knows the
zero_extend will be implicit (e.g. ARM ldrb / ldrh) or folded (e.g. x86 movz).

rdar://12771555


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169536 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
dde785cd70a4a7418f310a0d86afcbfe3dd8dbfe 06-Dec-2012 Nadav Rotem <nrotem@apple.com> Fix a bug in the code that merges consecutive stores. Previously we did not
check if loads that happen in between stores alias with the first store in the
chain, only with the second store onwards.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169516 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6afe478e005bf9f112b32b7ec25879475adc1915 06-Dec-2012 Bill Wendling <isanbard@gmail.com> s/getLowerBoundDefault/getDefaultLowerBound/ for consistency. Also put the more natural check first in the if-then statement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169486 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
222c2fd60d0cbe676f3f316a4d62a75762a83c40 06-Dec-2012 Bill Wendling <isanbard@gmail.com> Handle non-default array bounds.

Some languages, e.g. Ada and Pascal, allow you to specify that the array bounds
are different from the default (1 in these cases). If we have a lower bound
that's non-default, then we emit the lower bound. We also calculate the correct
upper bound in those cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169484 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
c7078924f044584d9e9b277862d34d5b43ff2b1e 06-Dec-2012 NAKAMURA Takumi <geek4civic@gmail.com> Revert r169456, "change MCContext to work on the doInitialization/doFinalization model"

It broke many builders.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169462 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
8a7186dbc2df4879f511b2ae6f2bce25ad37d965 06-Dec-2012 Evan Cheng <evan.cheng@apple.com> Let targets provide hooks that compute known zero and ones for any_extend
and extload's. If they are implemented as zero-extend, or implicitly
zero-extend, then this can enable more demanded bits optimizations. e.g.

define void @foo(i16* %ptr, i32 %a) nounwind {
entry:
%tmp1 = icmp ult i32 %a, 100
br i1 %tmp1, label %bb1, label %bb2
bb1:
%tmp2 = load i16* %ptr, align 2
br label %bb2
bb2:
%tmp3 = phi i16 [ 0, %entry ], [ %tmp2, %bb1 ]
%cmp = icmp ult i16 %tmp3, 24
br i1 %cmp, label %bb3, label %exit
bb3:
call void @bar() nounwind
br label %exit
exit:
ret void
}

This compiles to the followings before:
push {lr}
mov r2, #0
cmp r1, #99
bhi LBB0_2
@ BB#1: @ %bb1
ldrh r2, [r0]
LBB0_2: @ %bb2
uxth r0, r2
cmp r0, #23
bhi LBB0_4
@ BB#3: @ %bb3
bl _bar
LBB0_4: @ %exit
pop {lr}
bx lr

The uxth is not needed since ldrh implicitly zero-extend the high bits. With
this change it's eliminated.

rdar://12771555


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169459 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
486a7ad94fc948a0f52c32c860cdb2b166741249 06-Dec-2012 Pedro Artigas <partigas@apple.com> change MCContext to work on the doInitialization/doFinalization model

reviewed by Evan Cheng <evan.cheng@apple.com>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169456 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
22af4bc07bb81c22b15d7a63fb566efcab913bd9 06-Dec-2012 Andrew Trick <atrick@apple.com> RegPressureTracker::dump(): Remove unnecessary argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169443 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
f3329c419b1010089e8aaf3d43b811ba12d94c8a 05-Dec-2012 Andrew Trick <atrick@apple.com> RegisterPressureTracker: fix findUseBetween to handle DebugValue

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169427 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
f54f61538688eff25f392c2062b3a654394333aa 05-Dec-2012 Andrew Trick <atrick@apple.com> RegisterPressureTracker: unify virtual registers and physical regunits.

Now that live register units are tracked individually, the code can be simplified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169426 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
553c42cefc9abe1f10ee33d34a12498b8ac12fe6 05-Dec-2012 Andrew Trick <atrick@apple.com> RegisterPresssureTracker: Track live physical register by unit.

This is much simpler to reason about, more efficient, and
fixes some corner cases involving implicit super-register defs.
Fixed rdar://12797931.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169425 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
b47a4f7a0a780eb256cf090e01c5a002fff6684e 05-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unused MachineInstr constructors.

A MachineInstr can only ever be constructed by CreateMachineInstr() and
CloneMachineInstr(), and those factories don't use the removed
constructors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169395 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
d1abec365aa89a8497d9b615ccb4b21c72da9447 05-Dec-2012 Pedro Artigas <partigas@apple.com> - Added calls to doInitialization/doFinalization to immutable passes
- fixed ordering of calls to doFinalization to be the reverse of the pass run order due to potential dependencies
- fixed machine module info to operate in the doInitialization/doFinalization model, also fixes some FIXMEs

reviewed by Evan Cheng <evan.cheng@apple.com>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169391 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
17cf53519905acb69c567173bedd2df1c8e45523 05-Dec-2012 Andrew Trick <atrick@apple.com> Added RegisterPressureTracker::dump() for debugging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169359 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
f7999fe1cb2c2bdb0a4080efabb4743719ce45ca 04-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Speed up the AllocationOrder class a bit.

Allow the central functions to be inlined, and use the argumentless
isHint() function when possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169319 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.cpp
llocationOrder.h
egAllocGreedy.cpp
836cfc46b38969acc2f74af099b51d0b567f498d 04-Dec-2012 David Blaikie <dblaikie@gmail.com> Comment change made in r169304 as requested by Eric Christopher.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169315 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9493dae613847b01b79914502f337814fe3e00ac 04-Dec-2012 Bill Wendling <isanbard@gmail.com> Use the 'count' attribute to calculate the upper bound of an array.

The count attribute is more accurate with regards to the size of an array. It
also obviates the upper bound attribute in the subrange. We can also better
handle an unbound array by setting the count to -1 instead of the lower bound to
1 and upper bound to 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169312 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
b36c531653913cdea211a25d45350e8b5bfbd262 04-Dec-2012 David Blaikie <dblaikie@gmail.com> Reapply r160148 (reverted in r163570) fixing spurious breakpoints in modern GDB

This reapplies the fix for PR13303 now with more justification. Based on my
execution of the GDB 7.5 test suite this results in:

expected passes: 16101 -> 20890 (+30%)
unexpected failures: 4826 -> 637 (-77%)

There are 23 checks that used to pass and now fail. They are all in
gdb.reverse. Investigating a few looks like they were accidentally passing
due to extra breakpoints being set by this bug. They're generally due to the
difference in end location between gcc and clang, the test suite is trying to
set breakpoints on the closing '}' that clang doesn't associate with any
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169304 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a1514e24cc24b050f53a12650e047799358833a1 04-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Sort includes for all of the .h files under the 'lib' tree. These were
missed in the first pass because the script didn't yet handle include
guards.

Note that the script is now able to handle all of these headers without
manual edits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169224 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.h
llocationOrder.cpp
llocationOrder.h
smPrinter/DwarfAccelTable.h
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.h
riticalAntiDepBreaker.h
rologEpilogInserter.h
egAllocBase.h
electionDAG/InstrEmitter.h
electionDAG/LegalizeTypes.h
electionDAG/SDNodeDbgValue.h
electionDAG/SelectionDAGBuilder.h
a7645a3c66668da5e2bc772a8e5ab03dc301610c 04-Dec-2012 Bill Wendling <isanbard@gmail.com> Add a 'count' field to the DWARF subrange.

The count field is necessary because there isn't a difference between the 'lo'
and 'hi' attributes for a one-element array and a zero-element array. When the
count is '0', we know that this is a zero-element array. When it's >=1, then
it's a normal constant sized array. When it's -1, then the array is unbounded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169218 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
f94e8c4cafc6a2ce7ff5c0c46084d3c38c2921f6 04-Dec-2012 Jakub Staszak <kubastaszak@gmail.com> Simplify code. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169198 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ResourcePriorityQueue.cpp
69261a644298bff1497d46c8cd38d688670f307b 04-Dec-2012 Manman Ren <mren@apple.com> Stack Alignment: when creating stack objects in MachineFrameInfo, make sure
the alignment is clamped to TargetFrameLowering.getStackAlignment if the target
does not support stack realignment or the option "realign-stack" is off.

This will cause miscompile if the address is treated as aligned and add is
replaced with or in DAGCombine.

Added a bool StackRealignable to TargetFrameLowering to check whether stack
realignment is implemented for the target. Also added a bool RealignOption
to MachineFrameInfo to check whether the option "realign-stack" is on.

rdar://12713765


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169197 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
46608c0f648af75dd7260c3d881ca17353bb5982 04-Dec-2012 Jakub Staszak <kubastaszak@gmail.com> Use dyn_cast instead of isa and cast. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169196 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
46f6fe7a45964a4aa1c6a0f52b9991af8c30cb0b 04-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove VirtRegMap::getRegAllocPref().

Now that there can be multiple hint registers from targets, it doesn't
make sense to have a function that returns 'the' preferred register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169190 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
980bddfb1c26e2e9374d1645f9ae26c44742606f 04-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use MRI::getSimpleHint() instead of getRegAllocPref() in remaining cases.

Targets can provide multiple hints now, so getRegAllocPref() doesn't
make sense any longer because it only returns one preferred register.
Replace it with getSimpleHint() in the remaining heuristics. This
function only

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169188 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
irtRegMap.cpp
dc8126bbb89cda8c87bf324e3495ceb3164ae7cb 04-Dec-2012 Manman Ren <mren@apple.com> Stack Alignment: move functions from header file MachineFrameInfo.h.

No functional change for this commit. The follow-up patch will add more stuff to
these functions.

rdar://12713765


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169186 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
fc6374439edf2f74da4026f4cea8e341d092be5c 04-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add VirtRegMap::hasKnownPreference().

Virtual registers with a known preferred register are prioritized by
RAGreedy. This function makes the condition explicit without depending
on getRegAllocPref().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169179 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
irtRegMap.cpp
fc29db1214736d6ed84d60707db28de346af3feb 03-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the new getRegAllocationHints() hook from AllocationOrder.

This simplifies the hinting code quite a bit while making the targets
easier to write at the same time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169173 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.cpp
llocationOrder.h
49eb628c21b358380b76df82aa3dfe0baab4c6ec 03-Dec-2012 Pedro Artigas <partigas@apple.com> moves doInitialization and doFinalization to the Pass class and removes some unreachable code in MachineModuleInfo

reviewed by Evan Cheng <evan.cheng@apple.com>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169164 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
7eafc3e7be067709c6fcdae7b7fc4994c7ec2377 03-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a new hook for providing register allocator hints more flexibly.

The TargetRegisterInfo::getRegAllocationHints() function is going to
replace the existing mechanisms for providing target-dependent hints to
the register allocator: ResolveRegAllocHint() and
getRawAllocationOrder().

The new hook is more flexible because it allows the target to provide
multiple preferred candidate registers for each virtual register, and it
is easier to use because targets are not required to return a reference
to a constant array like getRawAllocationOrder().

An optional VirtRegMap argument can be used to provide target-dependent
hints that depend on the provisional assignments of other virtual
registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169154 91177308-0d34-0410-b5e6-96231b3b80d8
argetRegisterInfo.cpp
d4a05e0c2c871a0acbadfe572abbdb99158871bd 03-Dec-2012 Eli Bendersky <eliben@google.com> Fix PR12942: Allow two CUs to be generated from the same source file.

Thanks Eric for the review.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169142 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
nalysis.cpp
smPrinter/ARMException.cpp
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/DIE.cpp
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfCFIException.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/OcamlGCPrinter.cpp
smPrinter/Win64Exception.cpp
ranchFolding.cpp
allingConvLower.cpp
odePlacementOpt.cpp
riticalAntiDepBreaker.cpp
FAPacketizer.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
arlyIfConversion.cpp
xecutionDepsFix.cpp
xpandISelPseudos.cpp
xpandPostRAPseudos.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
nlineSpiller.cpp
nterferenceCache.cpp
ntrinsicLowering.cpp
LVMTargetMachine.cpp
exicalScopes.cpp
iveDebugVariables.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveIntervalUnion.cpp
iveRangeEdit.cpp
iveRegMatrix.cpp
iveStackAnalysis.cpp
iveVariables.cpp
ocalStackSlotAllocation.cpp
achineBasicBlock.cpp
achineBlockFrequencyInfo.cpp
achineBlockPlacement.cpp
achineBranchProbabilityInfo.cpp
achineCSE.cpp
achineCopyPropagation.cpp
achineFunction.cpp
achineFunctionPrinterPass.cpp
achineInstr.cpp
achineInstrBundle.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineSSAUpdater.cpp
achineScheduler.cpp
achineSink.cpp
achineTraceMetrics.cpp
achineVerifier.cpp
ptimizePHIs.cpp
HIElimination.cpp
HIEliminationUtils.cpp
asses.cpp
eepholeOptimizer.cpp
ostRASchedulerList.cpp
rologEpilogInserter.cpp
seudoSourceValue.cpp
egAllocBasic.cpp
egAllocFast.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
egisterClassInfo.cpp
egisterCoalescer.cpp
egisterPressure.cpp
egisterScavenging.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
cheduleDAGPrinter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ResourcePriorityQueue.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGVLIW.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGDumper.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
hadowStackGC.cpp
hrinkWrapping.cpp
jLjEHPrepare.cpp
piller.cpp
tackColoring.cpp
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
argetFrameLoweringImpl.cpp
argetInstrInfo.cpp
argetLoweringObjectFileImpl.cpp
argetRegisterInfo.cpp
argetSchedule.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
a569a80e58fd89f08600b002f2e46b60ed2ba554 02-Dec-2012 Nadav Rotem <nrotem@apple.com> Allow merging multiple store sequences on the same chain.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169111 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
657b75b9946eae763725b413841dfd01ed12a051 01-Dec-2012 Andrew Trick <atrick@apple.com> misched: Fix RegisterPressureTracker handling of DebugVals.

Assertion failed: (TopRPTracker.getPos() == RegionBegin && "bad initial Top tracker").
rdar://12790302.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169072 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
egisterPressure.cpp
cheduleDAGInstrs.cpp
177d87ac8d974529b07430b2088f699ed279cd1d 01-Dec-2012 Andrew Trick <atrick@apple.com> misched: Fix the DAG builder to handle an undef operand at ExitSU.

Assertion failed: (VNI && "No value to read by operand")
rdar://12790267.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169071 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
30fe61aa35ff12cdcbf5f94d8e3ab9a2d964654e 01-Dec-2012 Andrew Trick <atrick@apple.com> misched: Fix LiveInterval update to better handle DebugVal.

Assertion failed: (itr != mi2iMap.end() && "Instruction not found in maps.")
rdar://12777252.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169070 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
67bdd42d1e538ce16e3bed98534d3fff0b4530fc 01-Dec-2012 Andrew Trick <atrick@apple.com> misched: fix RegionBegin when DebugValues get shuffled to the top.

assert (RemainingInstrs == 0 && "Instruction count mismatch!")

rdar://12776937.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169069 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
8c3dccde92e50f5be7d14cef2a6db34ea6ae2bc0 01-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify REG_SEQUENCE lowering.

The TwoAddressInstructionPass takes the machine code out of SSA form by
expanding REG_SEQUENCE instructions into copies. It is no longer
necessary to rewrite the registers used by a REG_SEQUENCE instruction
because the new coalescer algorithm can do it now.

REG_SEQUENCE is just converted to a sequence of sub-register copies now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169067 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
98e237fc69236f89ec35d6b69b264241af1e8107 01-Dec-2012 Eric Christopher <echristo@gmail.com> Add some first skeleton work for the DWARF5 Fission proposal. Emit
part of the compile unit CU and start separating out information into
the various sections that will be pulled out later.

WIP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169061 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
3e77747eba2173521d027033952b9a25785c7409 01-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Convert COPY instructions into KILLs if they have implicit defs.

MachineCopyPropagation doesn't understand super-register liveness well
enough to be able to remove implicit defs of super-registers.

This fixes a problem in ARM/2012-01-26-CopyPropKills.ll that is exposed
by an future TwoAddressInstructionPass change. The KILL instructions are
removed before the machine code is emitted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169060 91177308-0d34-0410-b5e6-96231b3b80d8
achineCopyPropagation.cpp
08510b14d4fe5d9b1a979fbee8a7aad11dbc6cea 30-Nov-2012 Bill Wendling <isanbard@gmail.com> Replace r168930 with a more reasonable patch.

The original patch removed a bunch of code that the SjLjEHPrepare pass placed
into the entry block if all of the landing pads were removed during the
CodeGenPrepare class. The more natural way of doing things is to run the CGP
*before* we run the SjLjEHPrepare pass.

Make it so!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169044 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
asses.cpp
5cf823cd82778e3193a18feffeee69b2beb92c68 29-Nov-2012 Eric Christopher <echristo@gmail.com> More comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168952 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
db62a883a78cef4ff63a699452368fefa4b3fefd 29-Nov-2012 Justin Holewinski <jholewinski@nvidia.com> Cleanup recent addition of DAGTypeLegalizer::SplitVecOp_VSELECT

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168932 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
5175fd990c898a49708d60b84e7838bead48f2cd 29-Nov-2012 Benjamin Kramer <benny.kra@googlemail.com> misched: Recompute priority queue when DFSResults are updated.

This was found by MSVC10's STL debug mode on a test from the test suite. Sadly
std::is_heap isn't standard so there is no way to assert this without writing
our own heap verify, which looks like overkill to me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168885 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
7f128ea00c5358729906a9b98f844e887a1c3d73 29-Nov-2012 Justin Holewinski <jholewinski@nvidia.com> Teach the legalizer how to handle operands for VSELECT nodes

If we need to split the operand of a VSELECT, it must be the mask operand. We
split the entire VSELECT operand with EXTRACT_SUBVECTOR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168883 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
3d200255d5b93344c1ab0a5ba4b47a52cfa5893e 29-Nov-2012 Justin Holewinski <jholewinski@nvidia.com> Allow targets to prefer TypeSplitVector over TypePromoteInteger when computing the legalization method for vectors

For some targets, it is desirable to prefer scalarizing <N x i1> instead of promoting to a larger legal type, such as <N x i32>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168882 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
39b5c0c049a19c7a7feffc9506da07923cc136e4 29-Nov-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use MCPhysReg for RegisterClassInfo allocation orders.

This saves a bit of memory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168852 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
llocationOrder.cpp
llocationOrder.h
riticalAntiDepBreaker.cpp
egAllocFast.cpp
egisterClassInfo.cpp
89bea17af235ea3a69485e73e54e71053c1bd936 29-Nov-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid rewriting instructions twice.

This could cause miscompilations in targets where sub-register
composition is not always idempotent (ARM).

<rdar://problem/12758887>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168837 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
90e11dc8ada81015becd6f613152131e5c28a29d 29-Nov-2012 Nadav Rotem <nrotem@apple.com> When combining consecutive stores allow loads in between the stores, if the loads do not alias.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168832 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cbefa15de4821975bb99fc6d74b3bdb42b2df45c 28-Nov-2012 Stephen Hines <srhines@google.com> Remove TARGET_BUILD_VARIANT dependency from external/llvm.

Bug: 7172695
Change-Id: I73aedcbefd36360fc68ba428be39cbab86eeee71
smPrinter/Android.mk
smPrinter/AsmPrinter.cpp
1ead68d769f27f6d68d4aaeffe4199fa2cacbc95 28-Nov-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make the LiveRegMatrix analysis available to targets.

No functional change, just moved header files.

Targets can inject custom passes between register allocation and
rewriting. This makes it possible to tweak the register allocation
before rewriting, using the full global interference checking available
from LiveRegMatrix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168806 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.cpp
nlineSpiller.cpp
nterferenceCache.h
iveDebugVariables.cpp
iveIntervalAnalysis.cpp
iveIntervalUnion.cpp
iveIntervalUnion.h
iveRangeEdit.cpp
iveRegMatrix.cpp
iveRegMatrix.h
egAllocBase.cpp
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
piller.cpp
plitKit.cpp
irtRegMap.cpp
irtRegMap.h
8b1496c922b6a21296f7d42172df45bf205d5419 28-Nov-2012 Andrew Trick <atrick@apple.com> misched: Analysis that partitions the DAG into subtrees.

This is a simple, cheap infrastructure for analyzing the shape of a
DAG. It recognizes uniform DAGs that take the shape of bottom-up
subtrees, such as the included matrix multiplication example. This is
useful for heuristics that balance register pressure with ILP. Two
canonical expressions of the heuristic are implemented in scheduling
modes: -misched-ilpmin and -misched-ilpmax.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168773 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAGInstrs.cpp
53e98a2c4aa7065f4136c5263b14192036c1e056 28-Nov-2012 Andrew Trick <atrick@apple.com> misched: rename ScheduleDAGILP to ScheduleDFS to prepare for other heuristics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168772 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAGInstrs.cpp
8f82a0867343058f4e01d640abbfae76af6886b4 28-Nov-2012 Andrew Trick <atrick@apple.com> misched: better alias analysis.

This fixes a hole in the "cheap" alias analysis logic implemented within
the DAG builder itself, regardless of whether proper alias analysis is
enabled. It now handles this pattern produced by LSR+CodeGenPrepare.

%sunkaddr1 = ptrtoint * %obj to i64
%sunkaddr2 = add i64 %sunkaddr1, %lsr.iv
%sunkaddr3 = inttoptr i64 %sunkaddr2 to i32*
store i32 %v, i32* %sunkaddr3

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168768 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
b422104f35b93b262cad8c2b8ba8c2f55ef6c1e4 28-Nov-2012 Andrew Trick <atrick@apple.com> misched: Debug output fix. Use an always valid iterator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168767 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
fa2d98632c77e5d9c305e97e5fa25d06f579127b 28-Nov-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move the guts of TargetInstrInfoImpl into the TargetInstrInfo class.

The *Impl class no longer serves a purpose now that the super-class
implementation is in CodeGen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168759 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
argetInstrInfo.cpp
argetInstrInfoImpl.cpp
11fad6ec660d2131e040ebdecc4433b359d05e5f 28-Nov-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move Target{Instr,Register}Info.cpp into lib/CodeGen.

The Target library is not allowed to depend on the large CodeGen
library, but the TRI and TII classes provide abstract interfaces that
require both caller and callee to link to CodeGen.

The implementation files for these classes provide default
implementations of some of the hooks. These methods may need to
reference CodeGen, so they belong in that library.

We already have a number of methods implemented in the
TargetInstrInfoImpl sub-class because of that. I will merge that class
into the parent next.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168758 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
argetInstrInfo.cpp
argetRegisterInfo.cpp
18bb0545ff79b85ef424e95e2170e3a06f11b735 28-Nov-2012 Chad Rosier <mcrosier@apple.com> Revert r168630, r168631, and r168633 as these are causing nightly test failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168751 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
egAllocBase.cpp
egAllocFast.cpp
egAllocPBQP.cpp
b6dc8655e193fa92c6d9233ad5f53ec21d4348cf 27-Nov-2012 Eric Christopher <echristo@gmail.com> Attempt to make the comments for dwarf debug look more like
the coding standard would like.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168737 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
4288502af9de9978283a83918301038a32512a66 27-Nov-2012 Eric Christopher <echristo@gmail.com> Reapply section moving, make sure string section is output last.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168736 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
39834da697e5a6d0198a6a802133ce351c871904 27-Nov-2012 Manman Ren <mren@apple.com> CSE: allow PerformTrivialCoalescing to check copies across basic block
boundaries.

Given the following case:
BB0
%vreg1<def> = SUBrr %vreg0, %vreg7
%vreg2<def> = COPY %vreg7
BB1
%vreg10<def> = SUBrr %vreg0, %vreg2
We should be able to CSE between SUBrr in BB0 and SUBrr in BB1.

rdar://12462006


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168717 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
9e3c3886d0b42b80f9eb38067fa85d96c75a4ec5 27-Nov-2012 Jakub Staszak <kubastaszak@gmail.com> Remove duplicated #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168712 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
dba37a3c43b79be8a54d5e07ff390b621da5958d 27-Nov-2012 Ulrich Weigand <ulrich.weigand@de.ibm.com> Never use .lcomm on platforms where it does not accept an alignment
argument. Instead, use a pair of .local and .comm directives.

This avoids spurious differences between binaries built by the
integrated assembler vs. those built by the external assembler,
since the external assembler may impose alignment requirements
on .lcomm symbols where the integrated assembler does not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168704 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
fcdbecbbaf110c6dff371655d6aaa8f58b2a22f3 27-Nov-2012 Eric Christopher <echristo@gmail.com> Revert rearrangement of debug info sections to unblock the bots
and O0 + debug codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168680 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
df22702db0b74c14782e00e36e9e9c5df56182b6 27-Nov-2012 Jakub Staszak <kubastaszak@gmail.com> Remove unneeded #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168670 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
388ffa7f663393ed91b1a07237d1c34710daeaa1 27-Nov-2012 Jakub Staszak <kubastaszak@gmail.com> Remove unneeded #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168664 91177308-0d34-0410-b5e6-96231b3b80d8
achineCopyPropagation.cpp
a823f18af4c9c2de5118c8ed52374664a7dfd463 27-Nov-2012 NAKAMURA Takumi <geek4civic@gmail.com> llvm/CodeGen: Remove empty files in r168659.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168663 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopRanges.cpp
07cde58fa02da9fba16d47b645f3d8f541144648 27-Nov-2012 Jakub Staszak <kubastaszak@gmail.com> Remove unused forward declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168660 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
af650354a1de1254c0937a9f6e9c88f447ad3889 27-Nov-2012 Jakub Staszak <kubastaszak@gmail.com> Remove unused MachineLoopRanges analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168659 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
iveIntervalUnion.cpp
iveIntervalUnion.h
achineLoopRanges.cpp
4d265332341360a7cb5b15e2c2f0c675a7fed766 27-Nov-2012 Eric Christopher <echristo@gmail.com> Make comment names match function names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168644 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
74802f7e43dada1411dd456e998e7650c360e1cf 27-Nov-2012 Eric Christopher <echristo@gmail.com> Add in sections for the fission case (no change so incorrect) and
add a TODO for starting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168643 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8ba01175cce553091b7367c4edb758b32266cc15 27-Nov-2012 Eric Christopher <echristo@gmail.com> Reorder section output ordering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168638 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
bdab800b02d8a3fca276d2df2119e036a023c9df 27-Nov-2012 Eric Christopher <echristo@gmail.com> Whitespace cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168637 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8d20b5f9ff609e70fae5c865931ab0f29e639d9c 27-Nov-2012 Chad Rosier <mcrosier@apple.com> Add an assertion to ensure freezeReservedRegs() is only ever called once.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168633 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
728aede2e9b436c7c3748379f01aa7ca42cd917e 27-Nov-2012 Chad Rosier <mcrosier@apple.com> Now that the X86 Maximal Stack Alignment Check pass has been removed (i.e.,
r168627), we no longer need to call the freezeReservedRegs() function a second
time. Previously, this pass was conservatively adding the FP to the set of
reserved registers, requiring the second update to the reserved registers.
rdar://12719844

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168631 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
egAllocPBQP.cpp
216532ac0a7b333e814cc86b7c91358db6a7e819 27-Nov-2012 Chad Rosier <mcrosier@apple.com> Now that the X86 Maximal Stack Alignment Check pass has been removed (i.e.,
r168627), we no longer need to call the freezeReservedRegs() function a second
time. Previously, this pass was conservatively adding the FP to the set of
reserved registers, requiring the second update to the reserved registers.
rdar://12719844

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168630 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.cpp
bb8ddc7e4ff1f06c7289865bbf9e1fa4632d1c8e 26-Nov-2012 Jakub Staszak <kubastaszak@gmail.com> Don't use iterator after being erased.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168622 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
ec66ac5318f8546fcb002e1f26063144e224f279 26-Nov-2012 Jakub Staszak <kubastaszak@gmail.com> Remove unneeded #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168608 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
327e4cba0929f65bf32ecbbc9dc664793e5b51f7 25-Nov-2012 Craig Topper <craig.topper@gmail.com> Refactor to make helper method static.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168557 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
c1aa638fff4d253286c601ae9fdf9e98d4bb1a3d 25-Nov-2012 Craig Topper <craig.topper@gmail.com> Remove duplicate check of LimitFloatPrecision. It was already checked earlier before IsExp10 could be set to true.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168553 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
915562e7620ef8a307c20df95bfb07f8514cf413 25-Nov-2012 Craig Topper <craig.topper@gmail.com> Factor common code out of individual if blocks into common tail.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168551 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
134f78cf4166841227ad125363066507f484ad5d 25-Nov-2012 Craig Topper <craig.topper@gmail.com> Remove redundant calls to getCurDebugLoc in visitIntrinsicCall. It's already called at the start of the function and captured in a local variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
538cd48455e78bb3f1bf3573ebb2ea266a21cd24 24-Nov-2012 Craig Topper <craig.topper@gmail.com> Refactor a bit to make some helper methods static.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
b315772cc9d52fef49bbe9b4e8d5e1bdf618755a 24-Nov-2012 Craig Topper <craig.topper@gmail.com> Factor some common code out of individual if blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168538 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
5d1e089eaa4ab0080da4e5f61379bba596a4f2b5 23-Nov-2012 Craig Topper <craig.topper@gmail.com> Refactor a bit to make some helper functions static.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168524 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
d5f03186e5b5c20225ba05d4506100ad763c79a1 23-Nov-2012 Patrik Hägglund <patrik.h.hagglund@ericsson.com> Cleanup: Simplify loop end logic in computeRegisterProperties().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168507 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
9f696c815719ceabbba8443e8039827ebcdebe44 22-Nov-2012 Eli Bendersky <eliben@google.com> Fix 80-col violation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168498 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
b47ec4087cc1d4cdc647cce7acf03b5c34f91722 22-Nov-2012 Lang Hames <lhames@gmail.com> llvm.fmuladd.* lowering should be checking isOperationLegalOrCustom, rather than
isOperationLegal. Thanks to Craig Topper for pointing this out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168485 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
4117bec41b955f4b6d22e600f4a04d968201701d 22-Nov-2012 Eric Christopher <echristo@gmail.com> Pull some code out into functions to make rearranging them a bit easier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168481 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8b4310b8061d3d5ef26a4a313f53804a8ad02fc9 21-Nov-2012 Eric Christopher <echristo@gmail.com> Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168402 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
7ee5f5d61f18deda7412fdff4c2729c59a436b27 21-Nov-2012 Eric Christopher <echristo@gmail.com> Update for some of the coding standard before rearranging functions
around.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168401 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
b8a101f39a05818138795c929d984ad5714f91dd 21-Nov-2012 Eric Christopher <echristo@gmail.com> Update some comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168400 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
e6ad6acb1922f54d0eac34fe6b60bca601401e23 21-Nov-2012 Eric Christopher <echristo@gmail.com> Update and add some comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168399 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
c82fbf4cb19223ce483a249f6940bcf5e7067193 21-Nov-2012 Eric Christopher <echristo@gmail.com> Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168398 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
7dc68db9f006959775b0689b31a36e4be4930126 21-Nov-2012 Eric Christopher <echristo@gmail.com> Remove constness from this, it modifies the output stream as does
everything else underneath.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168395 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
fbd19750383cf6a74ac8bfbca09956a0d7945143 20-Nov-2012 Eric Christopher <echristo@gmail.com> Remove unused function argument, add a bit to the comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168387 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
aaa50b9bc5e8707015ff31dce0a3665600f6b440 20-Nov-2012 Eric Christopher <echristo@gmail.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168384 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
dcc675a4ac735fd6cec66eaf481458fccfd5e96c 20-Nov-2012 Eric Christopher <echristo@gmail.com> Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168383 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
310f248c22c5a20eaa4de1e612af3338a89144f3 20-Nov-2012 Tim Northover <Tim.Northover@arm.com> Fix physical register liveness calculations:

+ Take account of clobbers
+ Give outputs priority over inputs since they happen later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168360 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineInstrBundle.cpp
c4639d6ec2cf1e66d0bbc22db9ec530419b18784 19-Nov-2012 Eric Christopher <echristo@gmail.com> Remove a function argument and propagate const around accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168338 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0f1c7f6216c4dfdd4593bef077f7e1e082b624f9 19-Nov-2012 Eric Christopher <echristo@gmail.com> Whitespace and 80-col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168337 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
239938ff77ef43c753881b030438f89a3dfc72c4 19-Nov-2012 Anton Korobeynikov <asl@math.spbu.ru> Make AsmPrinter::EmitTTypeReference() more robust - put
the zero GV check inside, so we won't forget it at the caller side.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168328 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfException.cpp
2386fc8daa682c7b6c2479cd9c9c3113581c41db 19-Nov-2012 Anton Korobeynikov <asl@math.spbu.ru> Factor out type info emission into separate routine.
It turned out that ARM wants different layout of type infos.
This is yet another patch in attempt to fix PR7187


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168325 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
97c3472bf915ce9124f682f6c8ce9e4baff7c284 19-Nov-2012 Eric Christopher <echristo@gmail.com> Move section label emission to module end. Nothing should be
depending on them being emitted before the text and/or data
sections and testing didn't uncover any.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168321 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e42561ad0c98b132515db89f2994c96d93e9587b 19-Nov-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle mixed normal and early-clobber defs on inline asm.

PR14376.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168320 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
8f54a53f0ed2091e05d5ca87d239487da292cbbc 19-Nov-2012 Craig Topper <craig.topper@gmail.com> Move else onto line with preceding closing brace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168294 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
e1f663933a59a04c6c01f12e140088cf2370b1f4 17-Nov-2012 Andrew Trick <atrick@apple.com> Broaden isSchedulingBoundary to check aliases of SP.

On PPC the stack pointer is X1, but ADJCALLSTACK writes R1.

Fixes PR14315: Register regmask dependency problem with misched.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168248 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
43147afd71f6da4e7369a4ab9c681e5b4e0cf8c7 17-Nov-2012 Eli Friedman <eli.friedman@gmail.com> Mark FP_EXTEND form v2f32 to v2f64 as "expand" for ARM NEON. Patch by Pete Couperus.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168240 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
cdf493dd0b74fa8a784bd1ea690351e0f4b608ad 16-Nov-2012 Andrew Trick <atrick@apple.com> Use array_pod_sort instead of std::sort.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168203 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
08ac4691c61c4fab449ecf34913fa8ac9fde3517 16-Nov-2012 Craig Topper <craig.topper@gmail.com> Remove conditions from 'else if' that were guaranteed by preceding 'if'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168191 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
df0ea8dcad612185a23b12e9ddf894b9ce744561 16-Nov-2012 Craig Topper <craig.topper@gmail.com> Factor out the final FADD that's common to multiple code paths in the visitLog* functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168183 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9bd4dd742e20e99e8bc31c510ee790c95f680993 16-Nov-2012 Craig Topper <craig.topper@gmail.com> Factor some common code to reduce compile size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168143 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
846ce8ea67362d8b6d93ebae66f23e3c68dce9df 15-Nov-2012 Eli Friedman <eli.friedman@gmail.com> Mark FP_ROUND for converting NEON v2f64 to v2f32 as expand. Add a missing
case to vector legalization so this actually works.

Patch by Pete Couperus. Fixes PR12540.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168107 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
f38aa4272c2fcebae4ad10b21ea29874d0edef80 15-Nov-2012 Ulrich Weigand <ulrich.weigand@de.ibm.com> Use std::stable_sort instead of std::sort when sorting stack slots
to guarantee deterministic code generation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168074 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
4823be3be1d87632fbd51ce8e51a58ee5e44b115 15-Nov-2012 Chad Rosier <mcrosier@apple.com> [reg scavenger] Fix the isUsed/isAliasUsed functions so as to not report a false
positive.

In this particular case, R6 was being spilled by the register scavenger when it
was in fact dead. The isUsed function reported R6 as used because the R6_R7
alias was reserved (due to the fact that we've reserved R7 as the FP). The
solution is to only check if the original register (i.e., R6) isReserved and
not the aliases. The aliases are only checked to make sure they're available.

The test case is derived from one of the nightly tester benchmarks and is rather
intractable and difficult to reproduce, so I haven't included it.
rdar://12592448


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168054 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
009cf9e9a3a386f89db2686a105736481aed10ca 15-Nov-2012 Sergei Larin <slarin@codeaurora.org> Fix indeterminism in MI scheduler DAG construction.
Similarly to several recent fixes throughout the code replace std::map use with the MapVector.
Add find() method to the MapVector.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168051 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
490104720db9e1e0eb9cc27e88e2d7288ac27ff0 15-Nov-2012 Craig Topper <craig.topper@gmail.com> Add llvm.ceil, llvm.trunc, llvm.rint, llvm.nearbyint intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168025 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c6d6aeb95feca2efc6ee652555dbb29f0a3d41c8 15-Nov-2012 Andrew Trick <atrick@apple.com> Fix an obvious merge bug in -join-globalcopies (disabled).

Jakub Staszak spotted this in review. I don't notice these things
until I manually rerun benchmarks. But reducing unit tests is a very
high priority.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168021 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
8762a6bc2b83dfc11e784772311ad0b8fa5211e2 14-Nov-2012 Jakub Staszak <kubastaszak@gmail.com> Use reserve() to avoid vector reallocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167991 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
39c71da6db9f52cf48430282a27384563a77793e 14-Nov-2012 Jakub Staszak <kubastaszak@gmail.com> canJoinPhys method doesn't modify CoalescerPair. Make it const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167972 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
984639b7a4b2e2f15d82d64623a634b4772f022f 14-Nov-2012 Chad Rosier <mcrosier@apple.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167970 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
062a6c8380efc74233d05ec895def51b01aa2f8f 14-Nov-2012 Anton Korobeynikov <asl@math.spbu.ru> Fix really stupid ARM EHABI info generation bug: we should not emit
eh table and handler data if there are no landing pads in the function.
Patch by Logan Chien with some cleanups from me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167945 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
32631d1a5a18cb997ea7ad4f103938470aecc146 14-Nov-2012 Craig Topper <craig.topper@gmail.com> Add newlines to end of debug messages.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167913 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
8e2b8ae3b11b9778da5cb54d330e984b33979bf9 14-Nov-2012 Rafael Espindola <rafael.espindola@gmail.com> Handle DAG CSE adding new uses during ReplaceAllUsesWith. Fixes PR14333.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167912 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
25efd6d556718295a63d37f5294985746af354f6 14-Nov-2012 Anton Korobeynikov <asl@math.spbu.ru> Use TARGET2 relocation for TType references on ARM.
Do some cleanup of the code while here.

Inspired by patch by Logan Chien!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167904 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfException.cpp
argetLoweringObjectFileImpl.cpp
242343d1ab0d6b10221569fd2c504842a561f0e7 14-Nov-2012 Eric Christopher <echristo@gmail.com> Revert "Use the 'count' attribute instead of the 'upper_bound' attribute."
temporarily as it is breaking the gdb bots.

This reverts commit r167806/e7ff4c14b157746b3e0228d2dce9f70712d1c126.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167886 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
a6aae0273af9963eaf58aa548f7a918f100e67c7 13-Nov-2012 Andrew Trick <atrick@apple.com> Revert -join-splitedges to a boolean cmd line option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167880 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
3106aa125eb2756083e950362b6769b87cb3430a 13-Nov-2012 Andrew Trick <atrick@apple.com> The MachineScheduler does not currently require JoinSplitEdges.

This option will eventually either be enabled unconditionally or
replaced by a more general live range splitting optimization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167879 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
4de5872dede6e3dd80f7ab3df5df4fe0e33e3b2e 13-Nov-2012 Michael J. Spencer <bigcheesegs@gmail.com> [MC][COFF] Emit weak symbols to the correct section. Patch by Dmitry Puzirev!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167877 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
b64e2115de3b293ef706b75f040277477c949208 13-Nov-2012 Ulrich Weigand <ulrich.weigand@de.ibm.com> Do not consider a machine instruction that uses and defines the same
physical register as candidate for common subexpression elimination
in MachineCSE.

This fixes a bug on PowerPC in MultiSource/Applications/oggenc/oggenc
caused by MachineCSE invalidly merging two separate DYNALLOC insns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167855 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
2344abc939b29ab80bbd247995a0ceb2efa5938b 13-Nov-2012 Andrew Trick <atrick@apple.com> Fix -join-splitedges: my previous "cleanup" broke it.

Working on reducing unit tests.
This won't be enabled unless a subtarget enables misched.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167851 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
b2df01ab2a311688c9c4ca4eb8a93ae1bf40d468 13-Nov-2012 Duncan Sands <baldrick@free.fr> Codegen support for arbitrary vector getelementptrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167830 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
ad1cc1d1bfc0accd3f1af5c02ac367ff46a4bfdf 13-Nov-2012 Andrew Trick <atrick@apple.com> misched: Allow subtargets to enable misched and dependent options.

This allows me to begin enabling (or backing out) misched by default
for one subtarget at a time. To run misched we typically want to:
- Disable SelectionDAG scheduling (use the source order scheduler)
- Enable more aggressive coalescing (until we decide to always run the coalescer this way)
- Enable MachineScheduler pass itself.

Disabling PostRA sched may follow for some subtargets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167826 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
asses.cpp
egisterCoalescer.cpp
electionDAG/SelectionDAGISel.cpp
265058d9239e6867d06dc8aa40db5f33390abd17 13-Nov-2012 Andrew Trick <atrick@apple.com> Added RegisterCoalescer support for joining global copies first.

This adds the -join-globalcopies option which can be enabled by
default once misched is also enabled.

Ideally, the register coalescer would be able to split local live
ranges in a way that produces copies that can be easily resolved by
the scheduler. Until then, this heuristic should be good enough to at
least allow the scheduler to run after coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167825 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
cf6b6131dd0da37903a6e3a5173ea12aa8263713 13-Nov-2012 Andrew Trick <atrick@apple.com> misched: Don't consider artificial edges weak edges.

For now be more conservative in case other out-of-tree schedulers rely
on the old behavior of artificial edges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167808 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
e7ff4c14b157746b3e0228d2dce9f70712d1c126 13-Nov-2012 Bill Wendling <isanbard@gmail.com> Use the 'count' attribute instead of the 'upper_bound' attribute.

If we have a type 'int a[1]' and a type 'int b[0]', the generated DWARF is the
same for both of them because we use the 'upper_bound' attribute. Instead use
the 'count' attrbute, which gives the correct number of elements in the array.
<rdar://problem/12566646>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167806 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
f546ac5f9bdedc7d1ae49238c65a93201d0e4f05 13-Nov-2012 Andrew Trick <atrick@apple.com> Cleanup the main RegisterCoalescer loop.

Block priorities still apply outside loops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167793 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
43736c7cfaea3b0c3e2660b9cd5c01e306f7c0df 13-Nov-2012 Andrew Trick <atrick@apple.com> Cleanup -join-splitedges. Make the loop more obvious.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167785 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
f5b6dcd3929fe04c81aca1d69f69bbc530de148f 12-Nov-2012 Eric Christopher <echristo@gmail.com> Add an option to enable prototype "fission" capabilities and debug changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167765 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
3c9e55867e2c8ae7a9e528bce865ebfa963f30a9 12-Nov-2012 Andrew Trick <atrick@apple.com> Added a temporary option to avoid critical edges splitting.

This teaches the register coalescer to be less prone to split critical
edges. I am currently benchmarking this with the new (post-coalescer)
scheduler. I plan to enable this by default and remove the option as
soon as misched is enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167758 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
a7d2d564d918a9cb9105d3b2b4176b45af36a20e 12-Nov-2012 Andrew Trick <atrick@apple.com> misched: rename interfaceto avoid gcc warnings

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167753 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
6996fd0b543cf8bd4a0d4e09e80a168f0ae052c5 12-Nov-2012 Andrew Trick <atrick@apple.com> misched: Target-independent support for MacroFusion.

Uses the infrastructure from r167742 to support clustering instructure
that the target processor can "fuse". e.g. cmp+jmp.

Next step: target hook implementations with test cases, and enable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167744 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
9b5caaa9c452f262a52dd5ac7ebbc722da5a63de 12-Nov-2012 Andrew Trick <atrick@apple.com> misched: Target-independent support for load/store clustering.

This infrastructure is generally useful for any target that wants to
strongly prefer two instructions to be adjacent after scheduling.

A following checkin will add target-specific hooks with unit
tests. Then this feature will be enabled by default with misched.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167742 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
ae692f2baedf53504af2715993b166950e185a55 12-Nov-2012 Andrew Trick <atrick@apple.com> misched: Infrastructure for weak DAG edges.

This adds support for weak DAG edges to the general scheduling
infrastructure in preparation for MachineScheduler support for
heuristics based on weak edges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167738 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGVLIW.cpp
722c9a7925d1a66569513a1894fdd230962fa3f9 09-Nov-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix assertions in updateRegMaskSlots().

The RegMaskSlots contains 'r' slots while NewIdx and OldIdx are 'B'
slots. This broke the checks in the assertions.

This fixes PR14302.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167625 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b754687fd7391213f455ffa52d1bcfbe11052bc0 09-Nov-2012 Benjamin Kramer <benny.kra@googlemail.com> Silence GCC warning about falling off the end of a non-void function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167618 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
3b87f6204fe094610282eea4c8ad7ea4e331d8db 07-Nov-2012 Andrew Trick <atrick@apple.com> misched: Heuristics based on the machine model.

misched is disabled by default. With -enable-misched, these heuristics
balance the schedule to simultaneously avoid saturating processor
resources, expose ILP, and minimize register pressure. I've been
analyzing the performance of these heuristics on everything in the
llvm test suite in addition to a few other benchmarks. I would like
each heuristic check to be verified by a unit test, but I'm still
trying to figure out the best way to do that. The heuristics are still
in considerable flux, but as they are refined we should be rigorous
about unit testing the improvements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167527 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
881a05b46c28299046bd0dc3d0b8c6677e68a4d7 07-Nov-2012 Andrew Trick <atrick@apple.com> misched: handle on-the-fly regpressure queries better for 2-addr
instructions without relying on liveintervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167526 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
168c190c581d21d50edefeedebe38400a12845e1 07-Nov-2012 Bill Wendling <isanbard@gmail.com> Add comment describing what's going on here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167525 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a4c769311877916cc73994d318d5e962228bf3cd 07-Nov-2012 Bill Wendling <isanbard@gmail.com> When we're updating the subprogram scope DIE, we want to determine if we're
updating an abstract DIE or not. If we are, then we use that. Its children will
be added on later, as well as the object pointer attribute. Otherwise, this
function may be called with a concrete DIE twice and adding the children and
object pointer attribute to it twice.
<rdar://problem/12401423&12600340>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167524 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7979b24e5cd4a99db6af3fcd66d9f514f02d11db 06-Nov-2012 Chad Rosier <mcrosier@apple.com> [regallocfast] Make sure the MachineRegisterInfo is aware of clobbers from a
register masks. This is an obvious and necessary fix for a soon to be committed
patch. No test case possible at this time. Reviewed by Jakob.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167498 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
8d4abb2446f80986ad5136bbec30c5da18cd6f4b 06-Nov-2012 Andrew Trick <atrick@apple.com> misched: TargetSchedule interface for machine resources.

Expose the processor resources defined by the machine model to the
scheduler and other clients through the TargetSchedule interface.

Normalize each resource count with respect to other kinds of
resources. This allows scheduling heuristics to balance resources
against other kinds of resources and latency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167444 91177308-0d34-0410-b5e6-96231b3b80d8
argetSchedule.cpp
2276453e2be12badb07f84f8be9cf89626da48b6 06-Nov-2012 Andrew Trick <atrick@apple.com> misched: Rename RemainingCount to avoid confusion with remaining resources.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167443 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
a78d3228e8b2a14915ea9908dbaaf2c934803e11 06-Nov-2012 Andrew Trick <atrick@apple.com> ScheduleDAG interface. Added OrderKind to distinguish nonregister dependencies.

This is in preparation for adding "weak" DAG edges, but generally
simplifies the design.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167435 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
efcc1aec6459c356c6516e28be29acaa51e876fa 03-Nov-2012 Owen Anderson <resistor@mac.com> Be careful not to optimize a SELECT_CC into a SETCC post-legalization if the SETCC node would be illegal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167344 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0a1544d2fd63d8101dc7d50974e65c95a0f6f98d 02-Nov-2012 Manman Ren <mren@apple.com> OutputArg: added an index of the original argument to match the change to
InputArg in r165616.

This will enable us to get the actual type for both InputArg and OutputArg.

rdar://9932559


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167265 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
426c2bf5cdd2173e4a33aea8cb92cf684a724f4b 01-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Revert the majority of the next patch in the address space series:

r165941: Resubmit the changes to llvm core to update the functions to
support different pointer sizes on a per address space basis.

Despite this commit log, this change primarily changed stuff outside of
VMCore, and those changes do not carry any tests for correctness (or
even plausibility), and we have consistently found questionable or flat
out incorrect cases in these changes. Most of them are probably correct,
but we need to devise a system that makes it more clear when we have
handled the address space concerns correctly, and ideally each pass that
gets updated would receive an accompanying test case that exercises that
pass specificaly w.r.t. alternate address spaces.

However, from this commit, I have retained the new C API entry points.
Those were an orthogonal change that probably should have been split
apart, but they seem entirely good.

In several places the changes were very obvious cleanups with no actual
multiple address space code added; these I have not reverted when
I spotted them.

In a few other places there were merge conflicts due to a cleaner
solution being implemented later, often not using address spaces at all.
In those cases, I've preserved the new code which isn't address space
dependent.

This is part of my ongoing effort to clean out the partial address space
code which carries high risk and low test coverage, and not likely to be
finished before the 3.2 release looms closer. Duncan and I would both
like to see the above issues addressed before we return to these
changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167222 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/OcamlGCPrinter.cpp
achineFunction.cpp
electionDAG/SelectionDAG.cpp
argetLoweringObjectFileImpl.cpp
ece6c6bb6329748b92403c06ac87f45c43485911 01-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Revert the series of commits starting with r166578 which introduced the
getIntPtrType support for multiple address spaces via a pointer type,
and also introduced a crasher bug in the constant folder reported in
PR14233.

These commits also contained several problems that should really be
addressed before they are re-committed. I have avoided reverting various
cleanups to the DataLayout APIs that are reasonable to have moving
forward in order to reduce the amount of churn, and minimize the number
of commits that were reverted. I've also manually updated merge
conflicts and manually arranged for the getIntPtrType function to stay
in DataLayout and to be defined in a plausible way after this revert.

Thanks to Duncan for working through this exact strategy with me, and
Nick Lewycky for tracking down the really annoying crasher this
triggered. (Test case to follow in its own commit.)

After discussing with Duncan extensively, and based on a note from
Micah, I'm going to continue to back out some more of the more
problematic patches in this series in order to ensure we go into the
LLVM 3.2 branch with a reasonable story here. I'll send a note to
llvmdev explaining what's going on and why.

Summary of reverted revisions:

r166634: Fix a compiler warning with an unused variable.
r166607: Add some cleanup to the DataLayout changes requested by
Chandler.
r166596: Revert "Back out r166591, not sure why this made it through
since I cancelled the command. Bleh, sorry about this!
r166591: Delete a directory that wasn't supposed to be checked in yet.
r166578: Add in support for getIntPtrType to get the pointer type based
on the address space.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167221 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ntrinsicLowering.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAG.cpp
607ebde651f18d68e45724c6e3b3544d4786879f 01-Nov-2012 Owen Anderson <resistor@mac.com> Add a few more simple fast-math constant propagations and cancellations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167200 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
21caa9ef03e3f2d4e860c8fc3cd53015c42934bf 01-Nov-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Exploit the new identity composition in composeSubRegIndices().

The static compose() function in RegisterCoalescer was doing the exact
same thing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167198 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
b4c9d9c51fcb8a4cad2336b1ad9d225f504bbc4c 31-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> Replace some instances of UniqueVector with SetVector, which is slightly cheaper.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167116 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
bab24216cc77477d475e9d2ae18e275c5b2054a3 31-Oct-2012 Akira Hatanaka <ahatanaka@mips.com> Change signature of function RAFast::spillAll to avoid conversion between
type MachineInstr* and MachineBasicBlock::iterator.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167088 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
dc6d846df56f83be4c7045ccc9092f8a8343360b 31-Oct-2012 Akira Hatanaka <ahatanaka@mips.com> Check that iterator I is not the end iterator.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167086 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
daeec8fad3a3038247df1e5081b74454e7ee9315 30-Oct-2012 Chad Rosier <mcrosier@apple.com> [inline asm] Get the mayLoad/mayStore directly from the MIOp_ExtraInfo operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
dfa4cecb1e549d96f800f7ebc793a342d8df1244 30-Oct-2012 Chad Rosier <mcrosier@apple.com> Add a comment for r167040.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167046 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3d71688476951d56ac00a81b17c2f83fd781b208 30-Oct-2012 Chad Rosier <mcrosier@apple.com> [inline asm] Implement mayLoad and mayStore for inline assembly. In general,
the MachineInstr MayLoad/MayLoad flags are based on the tablegen implementation.
For inline assembly, however, we need to compute these based on the constraints.

Revert r166929 as this is no longer needed, but leave the test case in place.
rdar://12033048 and PR13504

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167040 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
cheduleDAGInstrs.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
e0aae5b4f30ce283b7023daf3a41a6bd0e1e117e 30-Oct-2012 Bill Wendling <isanbard@gmail.com> Fix grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167029 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e669c930a61dd56891df2f9822966ecb173c8072 29-Oct-2012 Ulrich Weigand <ulrich.weigand@de.ibm.com> In various places throughout the code generator, there were special
checks to avoid performing compile-time arithmetic on PPCDoubleDouble.

Now that APFloat supports arithmetic on PPCDoubleDouble, those checks
are no longer needed, and we can treat the type like any other.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166958 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
573303e62a913ec881fde3434d7babed0bd4da33 29-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Completely disallow partial copies in adjustCopiesBackFrom().

Partial copies can show up even when CoalescerPair.isPartial() returns
false. For example:

%vreg24:dsub_0<def> = COPY %vreg31:dsub_0; QPR:%vreg24,%vreg31

Such a partial-partial copy is not good enough for the transformation
adjustCopiesBackFrom() needs to do.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166944 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
7ed4f94c1337b931524af99eb1aac72563888239 29-Oct-2012 Duncan Sands <baldrick@free.fr> Remove a wrapper around getIntPtrType added to GVN by Hal in commit 166624 (the
wrapper returns a vector of integers when passed a vector of pointers) by having
getIntPtrType itself return a vector of integers in this case. Outside of this
wrapper, I didn't find anywhere in the codebase that was relying on the old
behaviour for vectors of pointers, so give this a whirl through the buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166939 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
a836563e3208ad0b74019dc33ad361d3eb72f178 29-Oct-2012 Preston Gurd <preston.gurd@intel.com> This patch addresses a problem with the Post RA scheduler generating an
incorrect instruction sequence due to it not being aware that an
inline assembly instruction may reference memory.

This patch fixes the problem by causing the scheduler to always assume that any
inline assembly code instruction could access memory. This is necessary because
the internal representation of the inline instruction does not include
any information about memory accesses.

This should fix PR13504.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166929 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
8a5ec5d41590118c5d2d5a86213bef0a80255b2e 29-Oct-2012 Lang Hames <lhames@gmail.com> Remove unused typedef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166910 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
163f67f4d98aab114cb9b04efd086f54f7688d0c 27-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Never attempt to join an early-clobber def with a regular kill.

This fixes PR14194.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166880 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
96e6da4841368bbb3ae73736dc523c5b1d48b1c4 27-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Reduce indentation with early exit.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166829 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
0de4fd23a7da25b2cf902ed488d8c58e3e9c13e0 27-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Also make the current basic block a class member.

Don't pass it around everywhere as a function argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166828 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
002ef57e843c9ae204f37209d8378bf95f67fd95 27-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make the Processed set a class member.

Don't pass it everywhere as an argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166820 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
6db893660ff92d4433350b5c084d123a50f4f122 26-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix whitespace and function names to be coding standardy.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166814 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
f4a5a613faa1a0eca6b884a6dfe83e8b1eb957b2 26-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the canCombineSubRegIndices() target hook.

The new coalescer can already do all of this, so there is no need to
duplicate the efforts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166813 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
af8082206beb2a9ddaa7380e735d1ae1c221bce6 26-Oct-2012 Akira Hatanaka <ahatanaka@mips.com> Make sure I is not the end iterator when isInsideBundle is called.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166784 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
0bd10f2af37e694f08f41199f4c6792c494430d9 26-Oct-2012 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Remove GC roots that reference dead objects.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166763 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
6b0db5f372057745c5e4a99d70401dc2615cc084 26-Oct-2012 Nick Lewycky <nicholas@mxc.ca> Fix typo in comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166750 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
3c5e22db7ac9763b376626f1126136e51fba6577 25-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop running the machine code verifier unconditionally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166646 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
b52fb876171e3670e7307fda4459ca005d49d9f5 24-Oct-2012 Micah Villmow <villmow@gmail.com> Add some cleanup to the DataLayout changes requested by Chandler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166607 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b8bce928f4ffdf50eff69334f3e25b27848536b6 24-Oct-2012 Micah Villmow <villmow@gmail.com> Back out r166591, not sure why this made it through since I cancelled the command. Bleh, sorry about this!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166596 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
2f87640b86315beab8a5671cc23f524e59c58bd3 24-Oct-2012 Micah Villmow <villmow@gmail.com> Delete a directory that wasn't supposed to be checked in yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166591 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
aa76e9e2cf50af190de90bc778b7f7e42ef9ceff 24-Oct-2012 Micah Villmow <villmow@gmail.com> Add in support for getIntPtrType to get the pointer type based on the address space.
This checkin also adds in some tests that utilize these paths and updates some of the
clients.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166578 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ntrinsicLowering.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAG.cpp
1a5cc710ee78bf55c3799b49c6fd37619d2dbb7b 24-Oct-2012 Michael Liao <michael.liao@intel.com> Teach DAG combine to fold (buildvec (Xint2fp x)) to (Xint2fp (buildvec x))

- If more than 1 elemennts are defined and target supports the vectorized
conversion, use the vectorized one instead to reduce the strength on
conversion operation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
adf38913f815a2a453d4783e88b1528473b4740d 24-Oct-2012 Jakub Staszak <kubastaszak@gmail.com> Keep coding standard. Don't evaluate getNumOperands() every time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166531 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fac14ab1795cfce21e4e5e51c711a11f6181074b 24-Oct-2012 Michael Liao <michael.liao@intel.com> Clean up code and put transformation on (build_vec (ext x)) into a helper func



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166519 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ee0ce15ce14474bdae1a9bad7a5a1d457ad8d959 23-Oct-2012 Nadav Rotem <nrotem@apple.com> Make the indirect branch optimization deterministic. No functionality change.

Patch by Daniel Reynaud.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166501 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c1f7ae15bb970b347ddeb80d4474f7e7f2099a60 23-Oct-2012 Richard Smith <richard-llvm@metafoo.co.uk> Per the C++ standard, we need to include the definition of llvm::Calculate in
every TU where it's implicitly instantiated, even if there's an implicit
instantiation for the same types available in another TU.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166470 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
56acf63e35440068935bca999d19a81f76e876d6 21-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't crash when the Assignments vector is empty.

Reported by Vincent Lejeune using an out-of-tree target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166398 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
63a4c24616fafa2b86d6391308ffd93e012115e4 20-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> Symbol hygiene: Make sure declarations and definitions match, make helper functions static.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166376 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionPrinterPass.cpp
electionDAG/ScheduleDAGFast.cpp
cfc6cb0c61ef78aad2f63b634b0a6f377361858b 20-Oct-2012 Shuxin Yang <shuxin.llvm@gmail.com> 1. Remove noreturn attribute from __builtin_debugtrap().
(The change at Clang side was committed in r166345)

2. Cosmetic change in order to conform to coding standards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a04a4a79ea365d1ba96ed4b5861e879b267162e2 19-Oct-2012 Nadav Rotem <nrotem@apple.com> revert r166264 because the LTO build is still failing

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166340 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
970755e5197afb42a76a24a74cd6dc17721daf50 19-Oct-2012 Shuxin Yang <shuxin.llvm@gmail.com> This patch is to fix radar://8426430. It is about llvm support of __builtin_debugtrap()
which is supposed to consistently raise SIGTRAP across all systems. In contrast,
__builtin_trap() behave differently on different systems. e.g. it raises SIGTRAP on ARM, and
SIGILL on X86. The purpose of __builtin_debugtrap() is to consistently provide "trap"
functionality, in the mean time preserve the compatibility with on gcc on __builtin_trap().

The X86 backend is already able to handle debugtrap(). This patch is to:
1) make front-end recognize "__builtin_debugtrap()" (emboddied in the one-line change to Clang).
2) In DAG legalization phase, by default, "debugtrap" will be replaced with "trap", which
make the __builtin_debugtrap() "available" to all existing ports without the hassle of
changing their code.
3) If trap-function is specified (via -trap-func=xyz to llc), both __builtin_debugtrap() and
__builtin_trap() will be expanded into the function call of the specified trap function.
This behavior may need change in the future.

The provided testing-case is to make sure 2) and 3) are working for ARM port, and we
already have a testing case for x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
725f1d12801109a3b1d081a6e1c9e44426b2cf34 19-Oct-2012 Nadav Rotem <nrotem@apple.com> recommit the patch that makes LSR and LowerInvoke use the TargetTransform interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166264 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
9aecdb51c743f13f88748ef3c539a3e6e6df9e99 19-Oct-2012 Michael Liao <michael.liao@intel.com> Simplify condition checking as CONCAT assume all inputs of the same type.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166260 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
83ba06afa8503dc97a0aa5ec033022286959956c 18-Oct-2012 Sebastian Pop <spop@codeaurora.org> Clear unknown mem ops when merging stack slots (pr14090)

When merging stack slots, if StackColoring::remapInstructions gets a
value back from GetUnderlyingObject that it does not know about or is
not itself a stack slot, clear the memory operand in case it aliases
the merged slot. This prevents the introduction of incorrect aliasing
information.

Author: Matthew Curtis <mcurtis@codeaurora.org>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166216 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
bf0683f0f75dfb92e73b09718ed278eeab8ba9d2 18-Oct-2012 Sebastian Pop <spop@codeaurora.org> Change MachineFrameInfo::StackObject::Alloca from Value* to AllocaInst*

This more accurately reflects what is actually being stored in the
field.

No functionality change intended.

Author: Matthew Curtis <mcurtis@codeaurora.org>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166215 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
1c5bf3f429927c31b9ffc1308ea1ada7a58ee1c0 18-Oct-2012 Nadav Rotem <nrotem@apple.com> In SimplifySelectOps we pulled two loads through a select node despite the fact that one was dependent on the other.

rdar://12513091



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166196 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3b9a911efcf280950f878a050728450423875639 18-Oct-2012 Bob Wilson <bob.wilson@apple.com> Temporarily revert the TargetTransform changes.

The TargetTransform changes are breaking LTO bootstraps of clang. I am
working with Nadav to figure out the problem, but I am reverting it for now
to get our buildbots working.

This reverts svn commits: 165665 165669 165670 165786 165787 165997
and I have also reverted clang svn 165741

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166168 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
07edaf3801f7169477bab6d33cad86209ea8f558 18-Oct-2012 Michael Liao <michael.liao@intel.com> Revert part of r166049 back and enable test case in r166125.

- Folding (trunc (concat ... X )) to (concat ... (trunc X) ...) is valid
when '...' are all 'undef's.
- r166125 relies on this transformation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166155 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4031e9018b071d25e5fc905aa38a943fcd9facb6 18-Oct-2012 Michael Liao <michael.liao@intel.com> Revert r166049

- In general, it's unsafe for this transformation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166135 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
13429e224cb165dae658ae4ea3ef67d69c1860fa 17-Oct-2012 Michael Liao <michael.liao@intel.com> Teach DAG combine to fold (extract_subvec (concat v1, ..) i) to v_i

- If the extracted vector has the same type of all vectored being concatenated
together, it should be simplified directly into v_i, where i is the index of
the element being extracted.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166125 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4b1aa961fdbb75035a963f8c6a01c8c5f1dc3f16 17-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch MRI::UsedPhysRegs to a register unit bit vector.

This is a more compact, less redundant representation, and it avoids
scanning long lists of aliases for ARM D-registers, for example.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166124 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
d4f759696d1bd0ba7c0e6eefd7ed8b556840419a 17-Oct-2012 Evan Cheng <evan.cheng@apple.com> Add a really faster pre-RA scheduler (-pre-RA-sched=linearize). It doesn't use
any scheduling heuristics nor does it build up any scheduling data structure
that other heuristics use. It essentially linearize by doing a DFA walk but
it does handle glues correctly.

IMPORTANT: it probably can't handle all the physical register dependencies so
it's not suitable for x86. It also doesn't deal with dbg_value nodes right now
so it's definitely is still WIP.

rdar://12474515


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
9aa6e0a134358c681cc5918ec65b1ec9726b778e 17-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Merge MRI::isPhysRegOrOverlapUsed() into isPhysRegUsed().

All callers of these functions really want the isPhysRegOrOverlapUsed()
functionality which also checks aliases. For historical reasons, targets
without register aliases were calling isPhysRegUsed() instead.

Change isPhysRegUsed() to also check aliases, and switch all
isPhysRegOrOverlapUsed() callers to isPhysRegUsed().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166117 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
rologEpilogInserter.cpp
fdd6fa89b960088b368231ec08e56a0c0b1e6930 17-Oct-2012 Andrew Trick <atrick@apple.com> misched: Better handling of invalid latencies in the machine model

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166107 91177308-0d34-0410-b5e6-96231b3b80d8
argetSchedule.cpp
d7ea7d5cd7518788dea698d38023959480c8263a 17-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a SparseSet instead of a BitVector for UsedInInstr in RAFast.

This is just as fast, and it makes it possible to avoid leaking the
UsedPhysRegs BitVector implementation through
MachineRegisterInfo::addPhysRegsUsed().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166083 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
320db3f8052c9f506d9ea043ba5da534df40aa08 17-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid rematerializing a redef immediately after the old def.

PR14098 contains an example where we would rematerialize a MOV8ri
immediately after the original instruction:

%vreg7:sub_8bit<def> = MOV8ri 9; GR32_ABCD:%vreg7
%vreg22:sub_8bit<def> = MOV8ri 9; GR32_ABCD:%vreg7

Besides being pointless, it is also wrong since the original instruction
only redefines part of the register, and the value read by the new
instruction is wrong.

The problem was the LiveRangeEdit::allUsesAvailableAt() didn't
special-case OrigIdx == UseIdx and found the wrong SSA value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166068 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
cdcdfd2cab67366b1debbe36bf46c29f7fecda67 17-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r166046 "Switch back to the old coalescer for now to fix the 32 bit bit"

A fix for PR14098, including the test case is in the next commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166067 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
272ea0323999890d8bcf75b873a1c8ab2cdcba0d 16-Oct-2012 Michael Liao <michael.liao@intel.com> Teach DAG combine to fold (trunc (fptoXi x)) to (fptoXi x)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166049 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6f7cccd2e28bf544609ee8fdbfac4a24e9f37ff6 16-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Switch back to the old coalescer for now to fix the 32 bit bit
llvm+clang+compiler-rt bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166046 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
b52ba9f8a896b6717d6395ad59f6550e1fa475b0 16-Oct-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Issue:
Stack is formed improperly for long structures passed as byval arguments for
EABI mode.

If we took AAPCS reference, we can found the next statements:

A: "If the argument requires double-word alignment (8-byte), the NCRN (Next
Core Register Number) is rounded up to the next even register number." (5.5
Parameter Passing, Stage C, C.3).

B: "The alignment of an aggregate shall be the alignment of its most-aligned
component." (4.3 Composite Types, 4.3.1 Aggregates).

So if we have structure with doubles (9 double fields) and 3 Core unused
registers (r1, r2, r3): caller should use r2 and r3 registers only.
Currently r1,r2,r3 set is used, but it is invalid.

Callee VA routine should also use r2 and r3 regs only. All is ok here. This
behaviour is guessed by rounding up SP address with ADD+BFC operations.

Fix:
Main fix is in ARMTargetLowering::HandleByVal. If we detected AAPCS mode and
8 byte alignment, we waste odd registers then.

P.S.:
I also improved LDRB_POST_IMM regression test. Since ldrb instruction will
not generated by current regression test after this patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166018 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
27c28cef11da5373d9a146060f9c10a3c6ab58e3 16-Oct-2012 Andrew Trick <atrick@apple.com> misched: Added handleMove support for updating all kill flags, not just for allocatable regs.

This is a medium term workaround until we have a more robust solution
in the form of a register liveness utility for postRA passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166001 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineScheduler.cpp
feab72c20acc97f8942148189c06e443b29df841 16-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unused BitVectors from getAllocatableSet().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165999 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
achineSink.cpp
achineVerifier.cpp
14d1dd95c7c969e07defebb6fe65df2fae1b30cf 16-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove RegisterClassInfo::isReserved() and isAllocatable().

Clients can use the equivalent functions in MRI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165990 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
llocationOrder.cpp
riticalAntiDepBreaker.cpp
egAllocFast.cpp
egisterCoalescer.cpp
egisterPressure.cpp
790047620a8f31cee1841c06c9e5e7688166ad93 16-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove LIS::isAllocatable() and isReserved() helpers.

All callers can simply use the corresponding MRI functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165985 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveIntervalAnalysis.cpp
iveRangeEdit.cpp
egAllocPBQP.cpp
fb9ebbf236974beac31705eaeb9f50ab585af6ab 15-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch most getReservedRegs() clients to the MRI equivalent.

Using the cached bit vector in MRI avoids comstantly allocating and
recomputing the reserved register bit vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165983 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
iveVariables.cpp
achineCSE.cpp
achineCopyPropagation.cpp
achineVerifier.cpp
ostRASchedulerList.cpp
egAllocPBQP.cpp
egisterClassInfo.cpp
egisterScavenging.cpp
irtRegMap.cpp
e4f273908bd37df5f0f6b2c575dcb2af99f6b85b 15-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Freeze the reserved registers as soon as isel is complete.

Also provide an MRI::getReservedRegs() function to access the frozen
register set, and isReserved() and isAllocatable() methods to test
individual registers.

The various implementations of TRI::getReservedRegs() are quite
complicated, and many passes need to look at the reserved register set.
This patch makes it possible for these passes to use the cached copy in
MRI, avoiding a lot of malloc traffic and repeated calculations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165982 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
electionDAG/SelectionDAGISel.cpp
702cc91aa1bd41540e8674921ae7ac89a4ff061f 15-Oct-2012 Bill Wendling <isanbard@gmail.com> Move the Attributes::Builder outside of the Attributes class and into its own class named AttrBuilder. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165960 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
10ad98bbbb00d67d4272e8f29186a65e2a75215e 15-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Make sure we iterate over newly created instructions. Fixes pr13625. Testcase to
follow in one sec.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165951 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
1e94e98b0ec44c5b04eaa8c9e7fb6d7669b3cdea 15-Oct-2012 Andrew Trick <atrick@apple.com> misched: ILP scheduler for experimental heuristics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165950 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAGInstrs.cpp
2c39b15073db81d93bb629303915b7d7e5d088dc 15-Oct-2012 Micah Villmow <villmow@gmail.com> Resubmit the changes to llvm core to update the functions to support different pointer sizes on a per address space basis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165941 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/OcamlGCPrinter.cpp
achineFunction.cpp
electionDAG/SelectionDAG.cpp
argetLoweringObjectFileImpl.cpp
3756e70af69096a82b367ee9667e7720ca2201e4 14-Oct-2012 Bill Wendling <isanbard@gmail.com> Remove the bitwise XOR operator from the Attributes class. Replace it with the equivalent from the builder class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165893 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
d86296a4aea7ebac9c8ef8ba92642b64545dec95 13-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Drop <def,dead> flags when merging into an unused lane.

The new coalescer can merge a dead def into an unused lane of an
otherwise live vector register.

Clear the <dead> flag when that happens since the flag refers to the
full virtual register which is still live after the partial dead def.

This fixes PR14079.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165877 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
af8969076083396f06431971cce867ea11fb968c 13-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow for loops in LiveIntervals::pruneValue().

It is possible that the live range of the value being pruned loops back
into the kill MBB where the search started. When that happens, make sure
that the beginning of KillMBB is also pruned.

Instead of starting a DFS at KillMBB and skipping the root of the
search, start a DFS at each KillMBB successor, and allow the search to
loop back to KillMBB.

This fixes PR14078.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165872 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ad5e969ba945c46aef58ae26b77f80cd99c8f3fb 12-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a transposed algorithm for handleMove().

Completely update one interval at a time instead of collecting live
range fragments to be updated. This avoids building data structures,
except for a single SmallPtrSet of updated intervals.

Also share code between handleMove() and handleMoveIntoBundle().

Add support for moving dead defs across other live values in the
interval. The MI scheduler can do that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165824 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
795f951c6d5c60a10ffc8e0fdfa22b7c3b499f35 12-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix coalescing with IMPLICIT_DEF values.

PHIElimination inserts IMPLICIT_DEF instructions to guarantee that all
PHI predecessors have a live-out value. These IMPLICIT_DEF values are
not considered to be real interference when coalescing virtual
registers:

%vreg1 = IMPLICIT_DEF
%vreg2 = MOV32r0

When joining %vreg1 and %vreg2, the IMPLICIT_DEF instruction and its
value number should simply be erased since the %vreg2 value number now
provides a live-out value for the PHI predecesor block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165813 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
7bbb9c7b4a21364c5b92e60520babf326beff3d8 12-Oct-2012 Ulrich Weigand <ulrich.weigand@de.ibm.com> Fix big-endian codegen bug in DAGTypeLegalizer::ExpandRes_BITCAST

On PowerPC, a bitcast of <16 x i8> to i128 may run through a code
path in ExpandRes_BITCAST that attempts to do an intermediate
bitcast to a <4 x i32> vector, and then construct the Hi and Lo parts
of the resulting i128 by pairing up two of those i32 vector elements
each. The code already recognizes that on a big-endian system, the
first two vector elements form the Hi part, and the final two vector
elements form the Lo part (vice-versa from the little-endian situation).

However, we also need to take endianness into account when forming each
of those separate pairs: on a big-endian system, vector element 0 is
the *high* part of the pair making up the Hi part of the result, and
vector element 1 is the low part of the pair. The code currently always
uses vector element 0 as the low part and vector element 1 as the high
part, as is appropriate for little-endian platforms only.

This patch fixes this by swapping the vector elements as they are
paired up as appropriate.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165802 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
d36696c4e0ccd10a91bad2e3383c50347e2ea5ec 12-Oct-2012 Evan Cheng <evan.cheng@apple.com> Legalizer optimize a pair of div / mod to a call to divrem libcall if they are
not legal. However, it should use a div instruction + mul + sub if divide is
legal. The rem legalization code was missing a check and incorrectly uses a
divrem libcall even when div is legal.

rdar://12481395


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165778 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ed84062812c7b8a82d0e8128a22aa1aa07a14d79 12-Oct-2012 Sean Silva <silvas@purdue.edu> Remove unnecessary classof()'s

isa<> et al. automatically infer when the cast is an upcast (including a
self-cast), so these are no longer necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165767 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
fb384d61c78b60787ed65475d8403aee65023962 11-Oct-2012 Micah Villmow <villmow@gmail.com> Revert 165732 for further review.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165747 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/OcamlGCPrinter.cpp
achineFunction.cpp
electionDAG/SelectionDAG.cpp
argetLoweringObjectFileImpl.cpp
f3840d2c16a4ec4c879a8ded402835746de380f8 11-Oct-2012 Micah Villmow <villmow@gmail.com> Add in the first iteration of support for llvm/clang/lldb to allow variable per address space pointer sizes to be optimized correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165726 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/OcamlGCPrinter.cpp
achineFunction.cpp
electionDAG/SelectionDAG.cpp
argetLoweringObjectFileImpl.cpp
ebba49395c189364c9ef77fb4c432856330ceca1 11-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Pass an explicit operand number to addLiveIns.

Not all instructions define a virtual register in their first operand.
Specifically, INLINEASM has a different format.

<rdar://problem/12472811>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165721 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
achineTraceMetrics.h
be9262b8c7d32b416893368061281f827b489b18 11-Oct-2012 Michael Liao <michael.liao@intel.com> Follow the same routine to add target float expansion hook



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165707 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
4903c15b7d92802a4f0f28928a89bb4c0d5e212f 11-Oct-2012 Andrew Trick <atrick@apple.com> misched: Handle "transient" non-instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165701 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
argetSchedule.cpp
e3d0e86919730784faaddcb5d9b0257c39b0804b 11-Oct-2012 Nadav Rotem <nrotem@apple.com> Add a new interface to allow IR-level passes to access codegen-specific information.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165665 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
d6458a0aa12ef831ff45d1ce55a89a70ed091cbe 10-Oct-2012 Micah Villmow <villmow@gmail.com> Add in support for expansion of all of the comparison operations to the absolute minimum required set. This allows a backend to expand any arbitrary set of comparisons as long as a minimum set is supported.
The minimum set of required instructions is ISD::AND, ISD::OR, ISD::SETO(or ISD::SETOEQ) and ISD::SETUO(or ISD::SETUNE). Everything is expanded into one of two patterns:
Pattern 1: (LHS CC1 RHS) Opc (LHS CC2 RHS)
Pattern 2: (LHS CC1 LHS) Opc (RHS CC2 RHS)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165655 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9d796db3e746c31dbdb605510c53b3da98d71b38 10-Oct-2012 Michael Liao <michael.liao@intel.com> Add alternative support for FP_ROUND from v2f32 to v2f64

- Due to the current matching vector elements constraints in ISD::FP_EXTEND,
rounding from v2f32 to v2f64 is scalarized. Add a customized v2f32 widening
to convert it into a target-specific X86ISD::VFPEXT to work around this
constraints. This patch also reverts a previous attempt to fix this issue by
recovering the scalarized ISD::FP_EXTEND pattern and thus significantly
reduces the overhead of supporting non-power-2 vector FP extend.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165625 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
661afe75e81431a66de3ed8e22d5aa91443367b3 10-Oct-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Issue description:
SchedulerDAGInstrs::buildSchedGraph ignores dependencies between FixedStack
objects and byval parameters. So loading byval parameters from stack may be
inserted *before* it will be stored, since these operations are treated as
independent.

Fix:
Currently ARMTargetLowering::LowerFormalArguments saves byval registers with
FixedStack MachinePointerInfo. To fix the problem we need to store byval
registers with MachinePointerInfo referenced to first the "byval" parameter.

Also commit adds two new fields to the InputArg structure: Function's argument
index and InputArg's part offset in bytes relative to the start position of
Function's argument. E.g.: If function's argument is 128 bit width and it was
splitted onto 32 bit regs, then we got 4 InputArg structs with same arg index,
but different offset values.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165616 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7d2f2496c1d263eecdc104fd72e847a31d8695b9 10-Oct-2012 Bill Wendling <isanbard@gmail.com> Remove the final bits of Attributes being declared in the Attribute
namespace. Use the attribute's enum value instead. No functionality change
intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165610 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
8a8cf9617cdc735f0425e828bb7a6f401c0cf0f6 10-Oct-2012 Lang Hames <lhames@gmail.com> My earlier "fix" for PBQP (see r165201) was incorrect. The real issue was that
checkRegMaskInterference only initializes the bitmask on the first interference.

This fixes PR14027 and (re)fixes PR13945.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165608 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
82d46aec62f127856f4bfeb30f80aa12dd74bae0 10-Oct-2012 Andrew Trick <atrick@apple.com> misched: fall-back to a target hook for instr bundles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165606 91177308-0d34-0410-b5e6-96231b3b80d8
argetSchedule.cpp
412cd2f81374865dfa708bef6d5b896ca10dece0 10-Oct-2012 Andrew Trick <atrick@apple.com> misched: Use the TargetSchedModel interface wherever possible.

Allows the new machine model to be used for NumMicroOps and OutputLatency.

Allows the HazardRecognizer to be disabled along with itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165603 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAGInstrs.cpp
argetSchedule.cpp
c0dfffa448ad7ab647779bc3e7f2aee5c76cb31b 10-Oct-2012 Andrew Trick <atrick@apple.com> misched: Add computeInstrLatency to TargetSchedModel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165566 91177308-0d34-0410-b5e6-96231b3b80d8
argetSchedule.cpp
42bb106118db51393c2524c8b0c7f7ba6674cfd7 10-Oct-2012 Andrew Trick <atrick@apple.com> misched: Allow flags to disable hasInstrSchedModel/hasInstrItineraries for external users of TargetSchedule.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165564 91177308-0d34-0410-b5e6-96231b3b80d8
argetSchedule.cpp
714973e459d6611dd3e67f77968aba55528664b4 10-Oct-2012 Andrew Trick <atrick@apple.com> misched: Remove LoopDependencies heuristic.

This wasn't contributing anything significant to postRA heuristics except compile time (by my measurements) and will be replaced by a more general heuristic for cross-region dependencies within the scheduler itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165563 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
3e2d76c946ba753c2b11af192a52e25b6f9b46ff 09-Oct-2012 Bill Wendling <isanbard@gmail.com> Use the attribute enums to query if a parameter has an attribute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165550 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7d661468682c333739a6f6ab7dc337463573c354 09-Oct-2012 Micah Villmow <villmow@gmail.com> Add in the first step of the multiple pointer support. This adds in support to the data layout for specifying a per address space pointer size.
The next step is to update the optimizers to allow them to optimize the different address spaces with this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165505 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6765834754cbb3cb0f15b4b15e98c5e73fa50066 09-Oct-2012 Bill Wendling <isanbard@gmail.com> Create enums for the different attributes.

We use the enums to query whether an Attributes object has that attribute. The
opaque layer is responsible for knowing where that specific attribute is stored.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165488 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
ranchFolding.cpp
odePlacementOpt.cpp
achineBlockPlacement.cpp
achineFunction.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
tackProtector.cpp
ailDuplication.cpp
2d65efed5357ff1768e0462feffc910809ed1b62 09-Oct-2012 Eric Christopher <echristo@gmail.com> Fix up comment to be more clear.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165463 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
ad6aedc7d980d407da4452ff3ed4592d3df1a3f7 09-Oct-2012 Nadav Rotem <nrotem@apple.com> Refactor the AddrMode class out of TLI to its own header file.
This class is used by LSR and a number of places in the codegen.
This is the first step in de-coupling LSR from TLI, and creating
a new interface in between them.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165455 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6be75ae196e0138048f685d4df7128d24245be5e 09-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't crash on extra evil irreducible control flow.

When the CFG contains a loop with multiple entry blocks, the traces
computed by MachineTraceMetrics don't always have the same nice
properties. Loop back-edges are normally excluded from traces, but
MachineLoopInfo doesn't recognize loops with multiple entry blocks, so
those back-edges may be included.

Avoid asserting when that happens by adding an isEarlierInSameTrace()
function that accurately determines if a dominating block is part of the
same trace AND is above the currrent block in the trace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165434 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
achineTraceMetrics.h
c56e3f0cdde9b5e3f8222ece7b5968ae9961955e 08-Oct-2012 Eric Christopher <echristo@gmail.com> Fixup comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165427 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
02c1a64efe95e5fcdb0123d3f03a605801abbec4 08-Oct-2012 Eric Christopher <echristo@gmail.com> Fixup comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165426 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
39817f9d393fdc29ec35fc8626d8b372415df414 08-Oct-2012 Andrew Trick <atrick@apple.com> misched: remove the unused getSpecialAddressLatency hook.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165418 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
a98f600a64b7b70754df58926ce8d60feeb9ce29 08-Oct-2012 Andrew Trick <atrick@apple.com> misched: remove forceUnitLatencies. Defaults are handled by the default SchedModel

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165417 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.h
30c6ec21990aff1f46465e411e5af622d7256c68 08-Oct-2012 Andrew Trick <atrick@apple.com> misched: avoid scheduling an instruction twice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165416 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
3574eca1b02600bac4e625297f4ecf745f4c4f32 08-Oct-2012 Micah Villmow <villmow@gmail.com> Move TargetData to DataLayout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165402 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
smPrinter/ARMException.cpp
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DIE.cpp
smPrinter/DwarfCFIException.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/OcamlGCPrinter.cpp
smPrinter/Win64Exception.cpp
allingConvLower.cpp
ntrinsicLowering.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineModuleInfo.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGVLIW.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/TargetLowering.cpp
electionDAG/TargetSelectionDAGInfo.cpp
jLjEHPrepare.cpp
tackProtector.cpp
argetLoweringObjectFileImpl.cpp
87802d52e1e873592c6fe39827081b492bd318cc 08-Oct-2012 Craig Topper <craig.topper@gmail.com> Remove unused MachineInstr constructors that don't take a DebugLoc argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165382 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
14ce91cc2720da9547bff1ac199697b6d157d348 07-Oct-2012 Craig Topper <craig.topper@gmail.com> Fix indentation. Remove 'else' after return. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165381 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
a4b5050cf5af18ac18565073fecbfcb95f93556b 05-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove unused but set variable flagged by GCC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165331 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ebd7eabca4c090175b71f221e880f8bd937a4523 05-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> Simplify code, don't or a bool with an uint64_t.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165321 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ea2c50c0416555a91cf963618f07c90a4c791708 05-Oct-2012 Nadav Rotem <nrotem@apple.com> When merging connsecutive stores, use vectors to store the constant zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165267 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0313ced016f3777e806ca2e42a746d3162174c47 04-Oct-2012 Eric Christopher <echristo@gmail.com> Update this a bit more to represent how the prologue should work:

a) frame setup instructions define the prologue
b) we shouldn't change our location mid-stream

Add a test to make sure that the stack adjustment stays within
the prologue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165250 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e6521b57cc475e3606fd90e48363cc27aa17cc80 04-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Get MCSchedModel directly from the subtarget.

Not all targets have itineraries, but the subtarget always has an
MCSchedModel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165236 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
f43fe1d163b34e1de5d045773728c571b59d1cdd 04-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch MachineTraceMetrics to the new TargetSchedModel interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165235 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
achineTraceMetrics.h
442c59f0a2fc3e596d0ce1f13b4a6849b2f46cc4 04-Oct-2012 Lang Hames <lhames@gmail.com> Fix reg mask slot test, and preserve LiveIntervals and VirtRegMap in the PBQP
allocator. Fixes PR13945.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165201 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
72fd0a9448a9d9eced8f475741e4a1ee543253e0 04-Oct-2012 Andrew Trick <atrick@apple.com> Enable -schedmodel, but prefer itineraries until we have more benchmark data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165188 91177308-0d34-0410-b5e6-96231b3b80d8
argetSchedule.cpp
4c230b3338bc527fa62de1ea574019261316fcfb 03-Oct-2012 Bill Wendling <isanbard@gmail.com> Update to use the predicate methods to query if an attribute exists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165163 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
2e7d38192de6ccdc54cf138fabdf00b81a6cd11d 03-Oct-2012 Nadav Rotem <nrotem@apple.com> Fix a cycle in the DAG. In this code we replace multiple loads with a single load and
multiple stores with a single load. We create the wide loads and stores (and their chains)
before we remove the scalar loads and stores and fix the DAG chain. We attempted to merge
loads with a different chain. When that happened, the assumption that it is safe to RAUW
broke and a cycle was introduced.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165148 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c653de6c0f3722154a41cbb57c213a0cdd789419 03-Oct-2012 Nadav Rotem <nrotem@apple.com> A DAGCombine optimization for mergeing consecutive stores to memory. The optimization
is not profitable in many cases because modern processors perform multiple stores
in parallel and merging stores prior to merging requires extra work. We handle two main cases:

1. Store of multiple consecutive constants:
q->a = 3;
q->4 = 5;
In this case we store a single legal wide integer.

2. Store of multiple consecutive loads:
int a = p->a;
int b = p->b;
q->a = a;
q->b = b;
In this case we load/store either ilegal vector registers or legal wide integer registers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165125 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
541a858f1a4e65a714fe54293d43d0861cd12b8f 03-Oct-2012 Silviu Baranga <silviu.baranga@arm.com> Fixed a bug in the ExecutionDependencyFix pass that caused dependencies to not propagate through implicit defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165102 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
76ad43c6e1619ed4c087b8ccb2cd573eb9d7093e 03-Oct-2012 Eric Christopher <echristo@gmail.com> Revert 165051-165049 while looking into the foreach.m failure in
more detail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165099 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
0d141f867d49dadc2f7580b149464f1e8e095f03 03-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> The early if conversion pass is ready to be used as an opt-in.

Enable the pass by default for targets that request it, and change the
-enable-early-ifcvt to the opposite -disable-early-ifcvt.

There are still some x86 regressions when enabling early if-conversion
because of the missing machine models. Disable the pass for x86 until
machine models are added.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165075 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
394820b8e159a39a9a07aac9722ad8738680037d 03-Oct-2012 Eric Christopher <echristo@apple.com> Revert "Don't use a debug location for frame setup instructions in the"

This reverts 165055 and 165052 temporarily while I look at debugger
failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165071 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6c0c6d613ac3223fdf515c1616331bdeb2a4f1a4 03-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the old coalescer algorithm.

The new algorithm has been enabled by default for almost a week now and
seems to be stable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165062 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
d4919a988d1e2d62b5c108bbb98a1633edee76db 03-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle reserved registers more accurately in handleMove().

Reserved register live ranges look like a set of dead defs - any uses of
reserved registers are ignored.

Instead of skipping the updating of reserved register operands entirely,
just ignore the use operands and treat the def operands normally.

No test case, handleMove() is not commonly used yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165060 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
27cb347d0e765175efb2c4d388bcbba84cf1b95e 02-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make sure the whole live range is covered when values are pruned twice.

JoinVals::pruneValues() calls LIS->pruneValue() to avoid conflicts when
overlapping two different values. This produces a set of live range end
points that are used to reconstruct the live range (with SSA update)
after joining the two registers.

When a value is pruned twice, the set of end points was insufficient:

v1 = DEF
v1 = REPLACE1
v1 = REPLACE2
KILL v1

The end point at KILL would only reconstruct the live range from
REPLACE2 to KILL, leaving the range REPLACE1-REPLACE2 dead.

Add REPLACE2 as an end point in this case so the full live range is
reconstructed.

This fixes PR13999.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165056 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
55c86c67ee7ac8596c439d41b93851e7ad024c43 02-Oct-2012 Eric Christopher <echristo@apple.com> 80-col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165054 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9fd304672cec6cd31b1978408a0a0dc375f96969 02-Oct-2012 Eric Christopher <echristo@apple.com> Don't use a debug location for frame setup instructions in the
prologue. Also skip frame setup instructions when looking for the
first location.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165052 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
96bd4418b2320dec7cf9573c4f1da0a0ef31465e 02-Oct-2012 Eric Christopher <echristo@apple.com> Remove the SavePoint infrastructure from fast isel, replace
with just an insert point from the MachineBasicBlock and let
the location be updated as we access it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165049 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
48da0be8b5821dddbb5233ad9cb198369031684b 02-Oct-2012 Duncan Sands <baldrick@free.fr> Fix PR13991: legalizing an overflowing multiplication operation is harder than
the add/sub case since in the case of multiplication you also have to check that
the operation in the larger type did not overflow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165017 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
554c6762e8cbc0a2fd6b61201254ba37df57e8db 30-Sep-2012 Jakub Staszak <kubastaszak@gmail.com> Use dyn_cast instead of isa and cast.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164924 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
73fab91f2cd5fa3dbe4593506ac4a31aa3faf897 30-Sep-2012 Nadav Rotem <nrotem@apple.com> Revert r164910 because it causes failures to several phase2 builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164911 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e5f163a3b98a531c3ff35da0e97e7364c0e04b95 30-Sep-2012 Nadav Rotem <nrotem@apple.com> A DAGCombine optimization for merging consecutive stores. This optimization is not profitable in many cases
because moden processos can store multiple values in parallel, and preparing the consecutive store requires
some work. We only handle these cases:

1. Consecutive stores where the values and consecutive loads. For example:
int a = p->a;
int b = p->b;
q->a = a;
q->b = b;

2. Consecutive stores where the values are constants. Foe example:
q->a = 4;
q->b = 5;



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164910 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
454627252b1cc43e81949d41eb20e9ea9560da58 29-Sep-2012 Duncan Sands <baldrick@free.fr> Speculatively revert commit 164885 (nadav) in the hope of ressurecting a pile of
buildbots. Original commit message:

A DAGCombine optimization for merging consecutive stores. This optimization is not profitable in many cases
because moden processos can store multiple values in parallel, and preparing the consecutive store requires
some work. We only handle these cases:

1. Consecutive stores where the values and consecutive loads. For example:
int a = p->a;
int b = p->b;
q->a = a;
q->b = b;

2. Consecutive stores where the values are constants. Foe example:
q->a = 4;
q->b = 5;



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164890 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0eb5dadf657d38da9a8c7fe44c660bcfb6933038 29-Sep-2012 Craig Topper <craig.topper@gmail.com> Tidy up to match coding standards. Remove 'else' after 'return' and moving operators to end of preceding line. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164887 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
32b7343a96feb052e8afa0c99fb3bfcac617f0a5 29-Sep-2012 Craig Topper <craig.topper@gmail.com> Replace a couple if/elses around similar calls with conditional operators on the varying arguments. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164886 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
72f7b0811efef58080a909abbc14d74c40c0867d 29-Sep-2012 Nadav Rotem <nrotem@apple.com> A DAGCombine optimization for merging consecutive stores. This optimization is not profitable in many cases
because moden processos can store multiple values in parallel, and preparing the consecutive store requires
some work. We only handle these cases:

1. Consecutive stores where the values and consecutive loads. For example:
int a = p->a;
int b = p->b;
q->a = a;
q->b = b;

2. Consecutive stores where the values are constants. Foe example:
q->a = 4;
q->b = 5;



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164885 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
83ef63efced9a957fe370134314645d2188c7203 28-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove <def,read-undef> flags from partial redefinitions.

The new coalescer can turn a full virtual register definition into a
partial redef by merging another value into an unused vector lane.

Make sure to clear the <read-undef> flag on such defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164807 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
5cf178f281b5bc52b61d4288a309a7d35ec3cc06 27-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable the new coalescer algorithm by default.

The new coalescer is better at merging values into unused vector lanes,
improving NEON code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164794 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
657720bc6ed1f214c4e7f45f80dcc15b2e168288 27-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't dereference begin() on an empty vector.

The fix is obvious and the only test case I have is horrible, so I am
not including it. The problem shows up when self-hosting clang on i386
with -new-coalescer enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164793 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
ddc26d89362330995f59ad29eb8bb439a817050b 27-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid dereferencing a NULL pointer.

Fixes PR13943.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164778 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
94c22716d60ff5edf6a98a3c67e0faa001be1142 27-Sep-2012 Sylvestre Ledru <sylvestre@debian.org> Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
7e2c793a2b5c746344652b6579e958ee42fafdcc 27-Sep-2012 Sylvestre Ledru <sylvestre@debian.org> Fix a typo 'iff' => 'if'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164767 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
2c189061184925c6a8ecbb5a19e648b230a41c0e 26-Sep-2012 Bill Wendling <isanbard@gmail.com> Remove the `hasFnAttr' method from Function.

The hasFnAttr method has been replaced by querying the Attributes explicitly. No
intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164725 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
odePlacementOpt.cpp
achineBlockPlacement.cpp
achineFunction.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
tackProtector.cpp
ailDuplication.cpp
4bb51cc83badd77bdc482b0594b72cb177f052f6 26-Sep-2012 Craig Topper <craig.topper@gmail.com> Rename virtual table anchors from Anchor() to anchor() for consistency with the rest of the tree.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164666 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfoImpls.cpp
f18eb5887f913bd9aa372005599d7375333cdce2 26-Sep-2012 Bill Wendling <isanbard@gmail.com> Generate an error message instead of asserting or segfaulting when we have a
scalar-to-vector conversion that we cannot handle. For instance, when an invalid
constraint is used in an inline asm statement.
<rdar://problem/12284092>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164662 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
1293130f4f53e736678c45e712802f0dd087c80b 26-Sep-2012 Bill Wendling <isanbard@gmail.com> Generate an error message instead of asserting or segfaulting when we have a
scalar-to-vector conversion that we cannot handle. For instance, when an invalid
constraint is used in an inline asm statement.
<rdar://problem/12284092>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164657 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
1a37d7e807ad6cc71fe3cffdf6674644c46a60eb 25-Sep-2012 Sebastian Pop <spop@codeaurora.org> TargetLowering interface to set/get minimum block entries for jump tables.

Provide interface in TargetLowering to set or get the minimum number of basic
blocks whereby jump tables are generated for switch statements rather than an
if sequence.

getMinimumJumpTableEntries() defaults to 4.
setMinimumJumpTableEntries() allows target configuration.

This patch changes the default for the Hexagon architecture to 5
as it improves performance on some benchmarks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164628 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
e9525d862454674ce87a9da52b2d05915a142206 25-Sep-2012 Jim Grosbach <grosbach@apple.com> Mark jump tables in code sections with DataRegion directives.

Even out-of-line jump tables can be in the code section, so mark them
as data-regions for those targets which support the directives.

rdar://12362871&12362974

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164571 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7b451cf35613cd4dbed1cd2053464b28974571fc 22-Sep-2012 Eric Christopher <echristo@apple.com> Have the DbgVariable "isArtificial" and "isObjectPointer" not
care about it being an argument variable so that we can decide
that captured block and lambda vars that don't happen to
be arguments could be an argument pointer.

Add the object pointer for one case onto the subprogram die.

rdar://12001329

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164419 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
bb36a438722d4d56febc07c6472c8446bb6faafe 21-Sep-2012 Evan Cheng <evan.cheng@apple.com> Fix a significant recent(?) regression. StackSlotColoring no longer did anything
because LiveStackAnalysis was not preserved by VirtRegWriter. This caused
big stack usage regression in some cases.

rdar://12340383


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164408 91177308-0d34-0410-b5e6-96231b3b80d8
iveStackAnalysis.cpp
egAllocGreedy.cpp
tackSlotColoring.cpp
irtRegMap.cpp
ef99fe8efaa6cb74c66e570a6ef467debca92911 21-Sep-2012 Bill Wendling <isanbard@gmail.com> Make the 'get*AlignmentFromAttr' functions into member functions within the Attributes class. Now with fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164370 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
e6e2d8cd90ceb5190aa646dc06584027f7d492d0 21-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Ignore PHI-defs for -new-coalescer interference checks.

A PHI can't create interference on its own. If two live ranges interfere
at a PHI, they must also interfere when leaving one of the PHI
predecessors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164330 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
2df8ac84ae8317b6a96f19bbc984d2bd02cff087 21-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Extend -new-coalescer SSA update to handle mapped values as well.

The old-fashioned many-to-one value mapping doesn't always work when
merging vector lanes. A value can map to multiple different values, and
it can even be necessary to insert new PHIs.

When a value number is defined by a copy from a value number that
required SSa update, include the live range of the copied value number
in the SSA update as well. It is not necessarily a copy of the original
value number any longer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164329 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egisterCoalescer.cpp
d57ae39a885649cf4d86e50e11fd2c453eae78d5 21-Sep-2012 Eric Christopher <echristo@apple.com> Only emit DW_AT_object_pointer if this is a definition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164326 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
4aa189909a194b4b858aefa0c186fa6504845bfd 20-Sep-2012 Bill Wendling <isanbard@gmail.com> Revert r164308 to fix buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164309 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
f2e89e00b4c4ecfa5a092a479ccab1ed8677eede 20-Sep-2012 Bill Wendling <isanbard@gmail.com> Make the 'get*AlignmentFromAttr' functions into member functions within the Attributes class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164308 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
6dfabb6cc72118e046d2a466aa6adcec4c4923db 20-Sep-2012 Nadav Rotem <nrotem@apple.com> Fix 80-col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164297 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e603fe46649aee6f6aeca1668f0b617818af1e1d 20-Sep-2012 Bill Wendling <isanbard@gmail.com> Convert some attribute existence queries over to use the predicate methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164268 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
e853d2e2508e21b5c3156c7d8b6e6902a7d2604a 20-Sep-2012 Bill Wendling <isanbard@gmail.com> Add predicates for queries on whether an attribute exists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164264 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d40d4c34f72d1eda3cd9ba0f3dbf2d43b726f06c 19-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Resolve conflicts involving dead vector lanes for -new-coalescer.

A common coalescing conflict in vector code is lane insertion:

%dst = FOO
%src = BAR
%dst:ssub0 = COPY %src

The live range of %src interferes with the ssub0 lane of %dst, but that
lane is never read after %src would have clobbered it. That makes it
safe to merge the live ranges and eliminate the COPY:

%dst = FOO
%dst:ssub0 = BAR

This patch teaches the new coalescer to resolve conflicts where dead
vector lanes would be clobbered, at least as long as the clobbered
vector lanes don't escape the basic block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164250 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
d8f39afb4755743bdf92c869d87a86dc4f17e56b 19-Sep-2012 Andrew Trick <atrick@apple.com> comment typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164180 91177308-0d34-0410-b5e6-96231b3b80d8
iveRegMatrix.h
3918cade8f7c0a9ff4e3c5799a55846d8f6e3fd4 18-Sep-2012 Andrew Trick <atrick@apple.com> TargetSchedule: cleanup computeOperandLatency logic & diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164154 91177308-0d34-0410-b5e6-96231b3b80d8
argetSchedule.cpp
781ab4777f683099b919597431022c77854ed415 18-Sep-2012 Andrew Trick <atrick@apple.com> misched: Make ScheduleDAGInstrs use the TargetSchedule interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164153 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
536a88ad5bf160232205192a7ce72e50bfadbded 18-Sep-2012 Roman Divacky <rdivacky@freebsd.org> When creating MCAsmBackend pass the CPU string as well. In X86AsmBackend
store this and use it to not emit long nops when the CPU is geode which
doesnt support them.

Fixes PR11212.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164132 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
34301ceca8913f3126339f332d3dc6f2d7ac0d78 18-Sep-2012 Andrew Trick <atrick@apple.com> TargetSchedModel API. Implement latency lookup, disabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164098 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
argetSchedule.cpp
c2945e44d5d485ce080a09900fbd5245e01165fc 18-Sep-2012 Craig Topper <craig.topper@gmail.com> Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164090 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeOrdering.h
fe257cc8af0859b0a92a6ba195382e1f9e1ea9aa 18-Sep-2012 Evan Cheng <evan.cheng@apple.com> Fix some funky indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164087 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
87f7864c6d81ae134335b8271ac12c937c81dffc 18-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Merge into undefined lanes under -new-coalescer.

Add LIS::pruneValue() and extendToIndices(). These two functions are
used by the register coalescer when merging two live ranges requires
more than a trivial value mapping as supported by LiveInterval::join().

The pruneValue() function can remove the part of a value number that is
going to conflict in join(). Afterwards, extendToIndices can restore the
live range, using any new dominating value numbers and updating the SSA
form.

Use this complex value mapping to support merging a register into a
vector lane that has a conflicting value, but the clobbered lane is
undef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164074 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egisterCoalescer.cpp
98279e8d65fe5c86d0370b3e2a62f244985bec33 18-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop adding <imp-def> operands when expanding REG_SEQUENCE.

These extra operands are not needed by register allocators using
VirtRegRewriter, and RAFast don't need them any longer.

By omitting the <imp-def> operands, it becomes possible for the new
register coalescer to track which lanes are valid and which are undef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164073 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
e1b53287179b4b9b5c3c549586f688d3fa2ae8ef 18-Sep-2012 Andrew Trick <atrick@apple.com> Revert r164061-r164067. Most of the new subtarget emitter.

I have to work out the Target/CodeGen header dependencies
before putting this back.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164072 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
argetSchedule.cpp
12886db4a7af74f17281695320c40248cb263f55 18-Sep-2012 Andrew Trick <atrick@apple.com> TargetSchedModel API. Implement latency lookup, disabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164065 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
argetSchedule.cpp
8dcc99496d9e32e13e30d6579b7af05f19e7c8d8 17-Sep-2012 Michael Ilseman <milseman@apple.com> Increase the static sizes of some SmallSets. finalizeBundle() is very frequently called for some backends, and growing into an std::set is overkill for these numbers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164044 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrBundle.cpp
2b9430243373768d5baba046a8c344cce96749a5 17-Sep-2012 Michael Ilseman <milseman@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164043 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrBundle.cpp
bb7300224738e65f9a9945dc7df2f360b1d4feb6 17-Sep-2012 Michael Liao <michael.liao@intel.com> Fix PR13859

- Preserve the original NOutVT during casting from vector to integer by
extracting vector elements.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164042 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
a52c3acc14062a7c2220cedb9f75531bf730eda8 17-Sep-2012 Tom Stellard <thomas.stellard@amd.com> Add a MachinePostDominator pass

This is used in the AMDIL and R600 backends.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164029 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
achinePostDominators.cpp
a26cadc58d32a739ccf99423922bfc542c1026b1 17-Sep-2012 Nadav Rotem <nrotem@apple.com> Disable the protection from escaped allocas in an attempt to find violating passes. This may break the buildbots. I plan to revert it in a few hours.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164024 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
1d2b45f1670a76e61d997de865d154ee77d01ea4 16-Sep-2012 Craig Topper <craig.topper@gmail.com> Fix bad comment. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164000 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c722ae7a2b470e544ce570692ef3b109449d69ec 16-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add alternative coalescing algorithm under a flag.

The live range of an SSA value forms a sub-tree of the dominator tree.
That means the live ranges of two values overlap if and only if the def
of one value lies within the live range of the other.

This can be used to simplify the interference checking a bit: Visit each
def in the two registers about to be joined. Check for interference
against the value that is live in the other register at the def point
only. It is not necessary to scan the set of overlapping live ranges,
this interference check can be done while computing the value mapping
required for the final live range join.

The new algorithm is prepared to handle more complicated conflict
resolution - We can allow overlapping live ranges with different values
as long as the differing lanes are undef or unused in the other
register.

The implementation in this patch doesn't do that yet, it creates code
that is nearly identical to the old algorithm's, except:

- The new stripCopies() function sees through multiple copies while
the old RegistersDefinedFromSameValue() only can handle one.

- There are a few rare cases where the new algorithm can erase an
IMPLICIT_DEF instuction that RegistersDefinedFromSameValue() couldn't
handle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163991 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
86a1c32e67b23c5e9e42dff9eb86e99ba15bb42f 15-Sep-2012 Craig Topper <craig.topper@gmail.com> Use LLVM_DELETED_FUNCTION in place of 'DO NOT IMPLEMENT' comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163974 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.h
iveIntervalUnion.h
irtRegMap.h
ab9baf7ff4b58b3905bccad68c8d2ab59ea4202b 15-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't depend on kill flags in removeCopyByCommutingDef().

Kill flags are removed more and more aggressively during the register
allocation passes, it is better to get information from LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163972 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
99ab6c6035aec3c0e9b0cc5b76a4666fc5fd7b7b 14-Sep-2012 Andrew Trick <atrick@apple.com> TargetSchedModel interface. To be implemented...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163934 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
argetSchedule.cpp
d039b383e76e6658846dca9eee3fe7f221a2f938 14-Sep-2012 Andrew Trick <atrick@apple.com> misched: add a hook for custom DAG postprocessing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163915 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
74b4762234eaeff94058999758a83acc0b54cba6 14-Sep-2012 Duncan Sands <baldrick@free.fr> Remove silly dead store. Patch by Ettl Martin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163882 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
ffaf69b8b118808ca35ab84d477fd2e4e54cce90 14-Sep-2012 Eric Christopher <echristo@apple.com> Fix both the test for zero and what we do if we have a zero for
umulo legalization.

Fixes PR13839

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163856 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
331f64cd0dc1249d0708af63b4d13509850c234e 14-Sep-2012 Eric Christopher <echristo@apple.com> Reformat, remove a couple unused variables and move some variables
closer to where they're needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163855 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
092122f124b6589a3a432473c1047bf5834df3c1 13-Sep-2012 Michael Liao <michael.liao@intel.com> Enhance type legalization on bitcast from vector to integer

- Find a legal vector type before casting and extracting element from it.
- As the new vector type may have more than 2 elements, build the final
hi/lo pair by BFS pairing them from bottom to top.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163830 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
18e2c290940b67c9dc1196e3c2234e7a20f60ae4 13-Sep-2012 Nadav Rotem <nrotem@apple.com> Rename the flag which protects from escaped allocas, which may come from bugs in user code or in the compiler. Also, dont assert if the protection is not enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163807 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
91a7e0184a4f7976ef11cb48697d2782fc1b9be7 13-Sep-2012 Nadav Rotem <nrotem@apple.com> Fix a dagcombine optimization. The optimization attempts to optimize a bitcast of fneg to integers
by xoring the high-bit. This fails if the source operand is a vector because we need to negate
each of the elements in the vector.

Fix rdar://12281066 PR13813.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163802 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
faf31d01db913b477b749c9f11f18a9471c0a672 13-Sep-2012 Nadav Rotem <nrotem@apple.com> Fix a typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163801 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
0cd19b93017fcaba737b15ea4da39c460feb5670 13-Sep-2012 Nadav Rotem <nrotem@apple.com> Stack Coloring: We have code that checks that all of the uses of allocas
are within the lifetime zone. Sometime legitimate usages of allocas are
hoisted outside of the lifetime zone. For example, GEPS may calculate the
address of a member of an allocated struct. This commit makes sure that
we only check (abort regions or assert) for instructions that read and write
memory using stack frames directly. Notice that by allowing legitimate
usages outside the lifetime zone we also stop checking for instructions
which use derivatives of allocas. We will catch less bugs in user code
and in the compiler itself.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163791 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
e521278f00cf5f4ea0cc4aac126df30924d3e705 13-Sep-2012 Eric Christopher <echristo@apple.com> Recommit, with fixes:

Add some support for dealing with an object pointer on arguments.

Part of rdar://9797999

which now supports adding the object pointer attribute to the
subprogram as it should.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163754 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6c7ccaa3fd1d6e96d0bf922554b09d2b17c3b0e3 12-Sep-2012 Michael Liao <michael.liao@intel.com> Fix PR11985

- BlockAddress has no support of BA + offset form and there is no way to
propagate that offset into machine operand;
- Add BA + offset support and a new interface 'getTargetBlockAddress' to
simplify target block address forming;
- All targets are modified to use new interface and X86 backend is enhanced to
support BA + offset addressing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163743 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGDumper.cpp
045ca86bb3494e60ec2be72cabb5683fe204d066 12-Sep-2012 Owen Anderson <resistor@mac.com> Remove an overly-aggressive assertion. The code following this assertion already knows how to handle the case where DstRC was NULL, so it's not actually protecting us from anything, and this pattern can come up when using unknown_class operands in the SelectionDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163736 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
01b50ca5b397128d43167d617ba849d4a83282f1 12-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163735 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
fd1cd572211aae8f73dc073c004b865054a34604 12-Sep-2012 Eric Christopher <echristo@apple.com> Revert "Add some support for dealing with an object pointer on arguments."
This should be done on the subprogram, not the variable itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163734 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
67c8978617c3bce9d07210f93f6c64c715f77695 12-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Fix a couple of Doxygen comment issues pointed out by -Wdocumentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163721 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
789efbad2a7b2c7693a3aee7b6d08806c361538f 12-Sep-2012 Kristof Beyls <kristof.beyls@arm.com> Fix constant folding through bitcasts by no longer relying on undefined behaviour (converting NaN values between float and double).

SelectionDAG::getConstantFP(double Val, EVT VT, bool isTarget);
should not be used when Val is not a simple constant (as the comment in
SelectionDAG.h indicates). This patch avoids using this function
when folding an unknown constant through a bitcast, where it cannot be
guaranteed that Val will be a simple constant.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d76f6eadc8c8511e1c5cd089a8a54e429c19aa60 12-Sep-2012 Nadav Rotem <nrotem@apple.com> Add a flag to disable the code that looks for allocas which escaped the lifetime regions. This is useful for debugging. No testcase because without this check we fail on assertions when finding escaped allocas.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163702 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
c4f70d437df505e128e0debdf0c5f4ab5010e1b5 12-Sep-2012 James Molloy <james.molloy@arm.com> Add a function computeRegisterLiveness() to MachineBasicBlock. This uses analyzePhysReg() from r163694 to heuristically try and determine the liveness state of a physical register upon arrival at a particular instruction in a block.

The search for liveness is clipped to a specific number of instructions around the target MachineInstr, in order to avoid degenerating into an O(N^2) algorithm. It tries to use various clues about how instructions around (both before and after) a given MachineInstr use that register, to determine its state at the MachineInstr.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163695 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
b17cf29784ad526f3adfc20c5aa1b0de5c57033e 12-Sep-2012 James Molloy <james.molloy@arm.com> Add an analyzePhysReg() function to MachineOperandIteratorBase that analyses an instruction's use of a physical register, analogous to analyzeVirtReg.

Rename RegInfo to VirtRegInfo so as not to be confused with the new PhysRegInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163694 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
achineInstrBundle.cpp
dba5de5246f84fe50aef79e464e5aecdf5607ab4 12-Sep-2012 Nadav Rotem <nrotem@apple.com> Enable stack-coloring, in hope that the recent fixes will enable correct dragonegg self-hosting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163687 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
6d742cc61eb9c933a36f0bc96631fae95c6d3d2e 12-Sep-2012 Lang Hames <lhames@gmail.com> Make findLastUseBefore handle reg-unit liveness.

findLastUseBefore was previous considering virtreg liveness only, leading to
incorrect live intervals for reg units when instrs with physreg operands were
moved up.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163685 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
0a16da445740ca6fcd7a7ca571c1917e77315904 12-Sep-2012 Nadav Rotem <nrotem@apple.com> Stack coloring: remove lifetime intervals which contain escaped allocas.

The input program may contain intructions which are not inside lifetime
markers. This can happen due to a bug in the compiler or due to a bug in
user code (for example, returning a reference to a local variable).
This commit adds checks that all of the instructions in the function and
invalidates lifetime ranges which do not contain all of the instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163678 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
2c57a334d762275a0ba478b7c39f384992bcdf6a 12-Sep-2012 Eric Christopher <echristo@apple.com> Add some support for dealing with an object pointer on arguments.

Part of rdar://9797999

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163667 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
b720be6a50f4e1b3280d2b029ee38dda14577525 12-Sep-2012 Manman Ren <mren@apple.com> Release build: guard dump functions with
"#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)"

No functional change. Update r163339.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163653 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
achineLoopInfo.cpp
achineScheduler.cpp
ostRASchedulerList.cpp
egisterPressure.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
coreboardHazardRecognizer.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
lotIndexes.cpp
plitKit.cpp
irtRegMap.cpp
a7b159ccdd3531853dc49dd91cf8948ce382e1c1 11-Sep-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Split the parsing of IR asm strings into GCC and MS variants.
Add support in the EmitMSInlineAsmStr() function for handling integer consts.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163645 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
1eba4a7a28f7e0156725518783dc35137869a670 11-Sep-2012 Nadav Rotem <nrotem@apple.com> Dragonegg selfhost exposed additional cases where alloca usage moved outside of lifetime markers. Disabling the pass for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163623 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
50bdea299c9c1d4b2d0535a7cc874490ac49fe67 11-Sep-2012 Nadav Rotem <nrotem@apple.com> Enable stack coloring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163617 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
8754bbbe672450689a5bdc8a198af90144e56f31 11-Sep-2012 Nadav Rotem <nrotem@apple.com> Stack Coloring: Dont crash on dbg values which use stack frames.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163616 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
68aeecc773d36c4be9adf32d1f09ec739574c880 11-Sep-2012 Stephen Hines <srhines@google.com> Merge up through LLVM r163557.

Updated Android.mk source files for Analysis, CodeGen, Target/Mips,
Transforms/Instrumentation, and Transforms/Utils.

Change-Id: I232a895e3ad9ec0c4a66f4308a11bb794b67940f
ndroid.mk
dd201ff1dcbc138cde07fb86896d491134987a2e 11-Sep-2012 Craig Topper <craig.topper@gmail.com> Teach DAG combiner to constant fold FABS of a BUILD_VECTOR of ConstantFPs. Factor similar code out of FNEG DAG combiner.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163587 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
78e5efe1b202f71975ad93f33b1fda21d83fd1fb 11-Sep-2012 Andrew Trick <atrick@apple.com> Reorganize MachineScheduler interfaces and publish them in the header.

The Hexagon target decided to use a lot of functionality from the
target-independent scheduler. That's fine, and other targets should be
able to do the same. This reorg and API update makes that easy.

For the record, ScheduleDAGMI was not meant to be subclassed. Instead,
new scheduling algorithms should be able to implement
MachineSchedStrategy and be done. But if need be, it's nice to be
able to extend ScheduleDAGMI, so I also made that easier. The target
scheduler is somewhat more apt to break that way though.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163580 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
1c4ad5ef4fab105f0c8af7edd026e00502fb6279 11-Sep-2012 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge-2012_09_10

Conflicts:
lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
lib/Support/DynamicLibrary.cpp
lib/Support/LockFileManager.cpp

Change-Id: I91e94c3a7a76e19c688307c5a480a640a3bd2b7e
09e475091921aef0f1f1253f774689d00da78bf4 11-Sep-2012 Eric Christopher <echristo@apple.com> Revert r160148 it seems to cause more problems than it should
right now. We'll fix PR13303 a different way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163570 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4984e01fd5d671db17fdbebcd84d618837ad13bf 11-Sep-2012 Eric Christopher <echristo@apple.com> 80-col fixup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163569 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.h
edf8bc8c88ba0edd5c502957dd11402dbd66f58d 11-Sep-2012 Eric Christopher <echristo@apple.com> 80-col fixup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163568 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5c38de99f104daaf1624b28def2c8375a702466d 11-Sep-2012 Eric Christopher <echristo@apple.com> No reason to construct this twice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163567 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
24f5fddbdff3d54d822555ae792a7f3bb22e342f 10-Sep-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Properly emit the asm directives when the AsmPrinterVariant
and InlineAsmVariant don't match.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163550 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
2de0572caec55e3779857cae0bbcd962af2e495d 10-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Remove redundant semicolons which are null statements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163547 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
tackColoring.cpp
8631a90f46f4dada3b2082d81d17846210cfd7d8 10-Sep-2012 Nadav Rotem <nrotem@apple.com> Disable stack coloring because it makes dragonegg fail bootstrapping.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163545 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
3b132fab0bebe7186348d7ab0e2663c9fddab3bb 10-Sep-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Pass the correct AsmVariant to the PrintAsmOperand() function
and update the printOperand() function accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163544 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
b6d52a5b4aa56292ad4085e87b9e5e618f795a1e 10-Sep-2012 Nadav Rotem <nrotem@apple.com> Enable stack coloring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163539 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
6165dba25f3374ce340b420ab9a360623c26fdc3 10-Sep-2012 Nadav Rotem <nrotem@apple.com> Stack Coloring: Handle the case where END markers come before BEGIN markers properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163530 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
10def396cba31bc2358a92bc5d714fceb17cbbd3 10-Sep-2012 Michael Ilseman <milseman@apple.com> Fold multiply by 0 or 1 when in UnsafeFPMath mode in SelectionDAG::getNode().

This folding happens as early as possible for performance reasons, and to make sure it isn't foiled by other transforms (e.g. forming FMAs).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163519 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
06b9690463e994e026d529701b19cb8e970b5c62 10-Sep-2012 Michael Ilseman <milseman@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163518 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8cd08bf4ac67b9d711fd1f72e6f5e00425d8c6ad 10-Sep-2012 James Molloy <james.molloy@arm.com> Fix an assertion failure when optimising a shufflevector incorrectly into concat_vectors, and a followup bug with SelectionDAG::getNode() creating nodes with invalid types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163511 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
ff1b63172d22c148c9180a546262f61a8c334974 10-Sep-2012 Nadav Rotem <nrotem@apple.com> Minor cleanup. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163510 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
9438d1e3514ab8801e9c488d9723241af7f4dc91 10-Sep-2012 Nadav Rotem <nrotem@apple.com> Stack Coloring: Debug prints to print the slot number and not the array index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163509 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
a7de8a61dfae69885203137f3c712ab3d0cd75a4 10-Sep-2012 Nadav Rotem <nrotem@apple.com> Stack Coloring: When searching for disjoint regions, do not compare intervals twice or to theirself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163508 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
e47feeb823ebf496e82db6a666d4c0fbaeb158b4 10-Sep-2012 Nadav Rotem <nrotem@apple.com> Stack Coloring: Add support for multiple regions of the same slot, within a single basic block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163507 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
8cc14949053ea4fcba34afc68b30137eff408d66 10-Sep-2012 Nadav Rotem <nrotem@apple.com> Fix a typo in the comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163496 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
0aa52ee04e3060974474f6b3f824517c088f07d8 10-Sep-2012 Nadav Rotem <nrotem@apple.com> Add an assertion that the frame index is indeed inside the declared lifetime region.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163495 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
9a2ae00c85c553108f3d57b134f0aceef5ae3372 10-Sep-2012 Nadav Rotem <nrotem@apple.com> Teach the DAGBuilder about lifetime markers which are generated from PHINodes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163494 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
956342b2104c734d4d6b758a58a799ccd3beb63d 10-Sep-2012 Craig Topper <craig.topper@gmail.com> Teach DAG combiner to constant fold fneg of a BUILD_VECTOR of constants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163483 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
11b450589978a39e59b77cd074dcda9d5697f174 09-Sep-2012 Benjamin Kramer <benny.kra@googlemail.com> LiveVariables: Compute a set of defs and kills to speed up updating LV during critical edge splitting.

Previously we checked if the register is def'd in a block via the def/use list a
nd walked the list of kills to check if the register is killed in a block. Both
of these checks can be made much cheaper by walking the block first and
recording all defs and kills.

This reduces the compile time of the test case from PR13651 from 40s to 15s at
-O2. The compile time is still dominated by LV updating but now the main culprit
is SparseBitVector's slowness.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163478 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
a9e37c5eaf79c3a32f2921536fb7e12514e86fb2 07-Sep-2012 Benjamin Kramer <benny.kra@googlemail.com> Fix alignment of .comm and .lcomm on mingw32.

For some reason .lcomm uses byte alignment and .comm log2 alignment so we can't
use the same setting for both. Fix this by reintroducing the LCOMM enum.
I verified this against mingw's gcc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163420 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
26c5d5f0a93640008ccd01554b9c26e1e42dc892 07-Sep-2012 Chad Rosier <mcrosier@apple.com> Fix indent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163416 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
c53ade2889c85207e064e4c3d049383ffffb3319 07-Sep-2012 Chad Rosier <mcrosier@apple.com> Update function names to conform to guidelines. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163401 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
39646d96e76aea5d20bffb386233a0dbb5932a21 07-Sep-2012 Benjamin Kramer <benny.kra@googlemail.com> MC: Overhaul handling of .lcomm

- Darwin lied about not supporting .lcomm and turned it into zerofill in the
asm parser. Push the zerofill-conversion down into macho-specific code.
- This makes the tri-state LCOMMType enum superfluous, there are no targets
without .lcomm.
- Do proper error reporting when trying to use .lcomm with alignment on a target
that doesn't support it.
- .comm and .lcomm alignment was parsed in bytes on COFF, should be power of 2.
- Fixes PR13755 (.lcomm crashes on ELF).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163395 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1fdaee9995f1bf1553cecd4da62daba91fd4fa1f 07-Sep-2012 Michael Liao <michael.liao@intel.com> Stop emitting lifetime region info when stack coloring is not enabled in O0

- this should fix PR13780



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163370 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
77e300e8f0b8db8eec448cae9c87d7c5bfad9757 06-Sep-2012 Manman Ren <mren@apple.com> Release build: guard dump functions with "ifndef NDEBUG"

No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163339 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
achineLoopInfo.cpp
achineScheduler.cpp
ostRASchedulerList.cpp
egisterPressure.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
coreboardHazardRecognizer.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
lotIndexes.cpp
plitKit.cpp
irtRegMap.cpp
45c5c57179e8b4938042431f8e12c9bfad67b3c8 06-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow overlaps between virtreg and physreg live ranges.

The RegisterCoalescer understands overlapping live ranges where one
register is defined as a copy of the other. With this change, register
allocators using LiveRegMatrix can do the same, at least for copies
between physical and virtual registers.

When a physreg is defined by a copy from a virtreg, allow those live
ranges to overlap:

%CL<def> = COPY %vreg11:sub_8bit; GR32_ABCD:%vreg11
%vreg13<def,tied1> = SAR32rCL %vreg13<tied0>, %CL<imp-use,kill>

We can assign %vreg11 to %ECX, overlapping the live range of %CL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163336 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveRegMatrix.cpp
egisterCoalescer.h
e617ccb80da76821379bbff4a2fdcd09e8401e8b 06-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle overlapping regunit intervals in LiveIntervals::addKillFlags().

We will soon allow virtual register live ranges to overlap regunit live
ranges when the physreg is defined as a copy of the virtreg:

%EAX = COPY %vreg5
FOO %vreg5
BAR %EAX<kill>

There is no real interference since %vreg5 and %EAX have the same value
where they overlap.

This patch prevents addKillFlags from adding virtreg kill flags to FOO
where the assigned physreg is overlapping the virtual register live
range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163335 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
f9dff0e0e4e8aa9fd99c5f069e431fe6de98c1c9 06-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Clear kill flags while computing live ranges.

Kill flags are difficult to maintain, and liveness queries are better
handled by live intervals.

Kill flags are reinserted after register allocation by addKillFlags().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163334 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeCalc.cpp
5177b3a8c48adec2acf284fcb8e00775a705a7e2 06-Sep-2012 Roman Divacky <rdivacky@freebsd.org> Dont cast away const needlessly. Found by gcc48 -Wcast-qual.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163324 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
79cb162e5d7aeaa3602bf4a7afa253232f461b33 06-Sep-2012 Nadav Rotem <nrotem@apple.com> Disable stack coloring by default in order to resolve the i386 failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163316 91177308-0d34-0410-b5e6-96231b3b80d8
tackColoring.cpp
e757640df0615510dbc42921cf6271aa76c405ee 06-Sep-2012 Nadav Rotem <nrotem@apple.com> Fix a few old-GCC warnings. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163309 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
c05d30601ced172b55be81bb529df6be91d6ae15 06-Sep-2012 Nadav Rotem <nrotem@apple.com> Add a new optimization pass: Stack Coloring, that merges disjoint static allocations (allocas). Allocas are known to be
disjoint if they are marked by disjoint lifetime markers (@llvm.lifetime.XXX intrinsics).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163299 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
achineFunction.cpp
asses.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGDumper.cpp
electionDAG/SelectionDAGISel.cpp
tackColoring.cpp
366df7945f0e65052d2e1df701ae1fd16b943642 06-Sep-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Use the asm dialect from the MI to set the parser dialect.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163273 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
2f1d8154795ad82e500fda27d75ec1449e7a0648 06-Sep-2012 Chad Rosier <mcrosier@apple.com> Cleanup a few magic numbers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163263 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/SelectionDAGBuilder.cpp
59324297650c12a8dccf1a7ad650a9e895fdc17e 06-Sep-2012 Roman Divacky <rdivacky@freebsd.org> Stop casting away const qualifier needlessly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163258 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineVerifier.cpp
asses.cpp
electionDAG/SelectionDAGDumper.cpp
electionDAG/TargetLowering.cpp
77fffa6fdd389ad6d70a42b36c1c36c768c2de41 06-Sep-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] We only need one bit to represent the AsmDialect in the
MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163257 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/SelectionDAGBuilder.cpp
2943e378048636691eda1b1b4e437eea9da4a839 06-Sep-2012 Roman Divacky <rdivacky@freebsd.org> Constify this properly. Found by gcc48 -Wcast-qual.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163256 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
141e99745adbd3ba9fa7315af3384c1d08c4c20c 06-Sep-2012 Roman Divacky <rdivacky@freebsd.org> Constify SDNodeIterator an stop its only non-const user being cast stripped
of its constness. Found by gcc48 -Wcast-qual.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
576cd11ab8035d4240f7e6ea8d7c6c2e45154f86 05-Sep-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Propagate the asm dialect into the MachineInstr representation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163243 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/SelectionDAGBuilder.cpp
15d0c81b2496a025af30a78e3a36fd7f05b165ef 05-Sep-2012 Roman Divacky <rdivacky@freebsd.org> Remove unused typedefs gcc4.8 warns about.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163225 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
3d5e161fe45f9553009c0377a5689324aab1c64a 05-Sep-2012 Silviu Baranga <silviu.baranga@arm.com> Fixed the DAG combiner to better handle the folding of AND nodes for vector types. The previous code was making the assumption that the length of the bitmask returned by isConstantSplat was equal to the size of the vector type. Now we first make sure that the splat value has at least the length of the vector lane type, then we only use as many fields as we have available in the splat value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ec90cc8b0fc4d1dfb641ca1a7853f1bb334a00bd 05-Sep-2012 Logan Chien <tzuhsiang.chien@gmail.com> Reorder the comments of EmitExceptionTable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163194 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.h
f6dc792df1452f015bc56590b77af9cb0d7b33d9 05-Sep-2012 Craig Topper <craig.topper@gmail.com> Convert vextracti128/vextractf128 intrinsics to extract_subvector at DAG build time. Similar was previously done for vinserti128/vinsertf128. Add patterns for folding these extract_subvectors with stores.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163192 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f363ebdb037d9071abae5ca8af7f3b3cd84327e3 05-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Search the whole instruction for tied operands.

Implicit uses can be dynamically tied to defs. This will soon be used
for predicated instructions on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163177 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4f1a56ce3c08763c89e9cf50e9503a87247ac4e9 04-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163154 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
99c416c9f7e8a9d7d1038d03cafebec730280398 04-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Actually use the MachineOperand field for isRegTiedToDefOperand().

The MachineOperand::TiedTo field was maintained, but not used.

This patch enables it in isRegTiedToDefOperand() and
isRegTiedToUseOperand() which are the actual functions use by the
register allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163153 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
daddf07497af2849868105264bd5f95c362041e5 04-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move tie checks into MachineVerifier::visitMachineOperand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163152 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
9c130672761e006c47ea23b34a7bd414f2cd8368 04-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow tied uses and defs in different orders.

After much agonizing, use a full 4 bits of precious MachineOperand space
to encode this. This uses existing padding, and doesn't grow
MachineOperand beyond its current 32 bytes.

This allows tied defs among the first 15 operands on a normal
instruction, just like the current MCInstrDesc constraint encoding.
Inline assembly needs to be able to tie more than the first 15 operands,
and gets special treatment.

Tied uses can appear beyond 15 operands, as long as they are tied to a
def that's in range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163151 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
2e2efd960056bbb7e4bbd843c8de55116d52aa7d 04-Sep-2012 Preston Gurd <preston.gurd@intel.com> Generic Bypass Slow Div
- CodeGenPrepare pass for identifying div/rem ops
- Backend specifies the type mapping using addBypassSlowDivType
- Enabled only for Intel Atom with O2 32-bit -> 8-bit
- Replace IDIV with instructions which test its value and use DIVB if the value
is positive and less than 256.
- In the case when the quotient and remainder of a divide are used a DIV
and a REM instruction will be present in the IR. In the non-Atom case
they are both lowered to IDIVs and CSE removes the redundant IDIV instruction,
using the quotient and remainder from the first IDIV. However,
due to this optimization CSE is not able to eliminate redundant
IDIV instructions because they are located in different basic blocks.
This is overcome by calculating both the quotient (DIV) and remainder (REM)
in each basic block that is inserted by the optimization and reusing the result
values when a subsequent DIV or REM instruction uses the same operands.
- Test cases check for the presents of the optimization when calculating
either the quotient, remainder, or both.

Patch by Tyler Nowicki!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
f68b87f5fc1985c897e7a84ee040bcfff75b4959 03-Sep-2012 Benjamin Kramer <benny.kra@googlemail.com> IRBuilderify the SjlLjEHPrepare pass.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163115 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
7b23d0838551ee16cbd49692df1eb0598b8a48f2 03-Sep-2012 Lang Hames <lhames@gmail.com> When updating live range endpoints, make sure to preserve the early clobber bit.

Fixs PR13719.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163107 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ee77da6b28d7f56e4e531ae8b4f8093de760a2e5 02-Sep-2012 Nadav Rotem <nrotem@apple.com> Fix a typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163094 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
f55ef64544f8ba81e50154a98f144f7b7783ed40 02-Sep-2012 Nadav Rotem <nrotem@apple.com> Generate better select code by allowing the target to use scalar select, and not sign-extend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163086 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
d906017c1a8b5c7c49f1bc21c13e8b85306298b8 02-Sep-2012 Pete Cooper <peter_cooper@apple.com> Only legalise a VSELECT in to bitwise operations if the vector mask bool is zeros or all ones. A vector bool with just ones isn't suitable for masking with.

No test case unfortunately as i couldn't find a target which fit all
the conditions needed to hit this code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163075 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
0fc44aba18ed2f557805ce84fe597356f026f202 01-Sep-2012 Pete Cooper <peter_cooper@apple.com> Revert "Take account of boolean vector contents when promoting a build vector from i1 to some other type. rdar://problem/12210060"

This reverts commit 5dd9e214fb92847e947f9edab170f9b4e52b908f.

Thanks to Duncan for explaining how this should have been done.

Conflicts:

test/CodeGen/X86/vec_select.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163064 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
e2ac55242179382ba86215206072ea0d9be4ff5d 01-Sep-2012 Logan Chien <tzuhsiang.chien@gmail.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163059 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
58d5729540bec7c6f7aef19a9a6a179123deab47 01-Sep-2012 Owen Anderson <resistor@mac.com> Teach DAG combine a number of tricks to simplify FMA expressions in fast-math mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163051 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b79bff50bdf68615dfa1ddd2239c8d093e155e1f 01-Sep-2012 Michael Liao <michael.liao@intel.com> Fix typo



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163049 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
94083149fd6891c8a72472cf1814fa6600a75979 31-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineInstr::tieOperands, remove setIsTied().

Manage tied operands entirely internally to MachineInstr. This makes it
possible to change the representation of tied operands, as I will do
shortly.

The constraint that tied uses and defs must be in the same order was too
restrictive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163021 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/InstrEmitter.cpp
89b2ff0b5c9383ed574205b1e9a42089ee9e6861 31-Aug-2012 Craig Topper <craig.topper@gmail.com> Use CloneMachineInstr to make a new MI in commuteInstruction to make the code tolerant of instructions with more than two input operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163000 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
908c0c01f634798a4c1b335a6aca0870ad1fce77 31-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't enforce ordered inline asm operands.

I was too optimistic, inline asm can have tied operands that don't
follow the def order.

Fixes PR13742.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162998 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
5dd9e214fb92847e947f9edab170f9b4e52b908f 31-Aug-2012 Pete Cooper <peter_cooper@apple.com> Take account of boolean vector contents when promoting a build vector from i1 to some other type. rdar://problem/12210060

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162960 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
43da6c7f13aedcc11530f9d81dbbb2ee07ad226a 31-Aug-2012 Owen Anderson <resistor@mac.com> Teach the DAG combiner to turn chains of FADDs (x+x+x+x+...) into FMULs by constants. This is only enabled in unsafe FP math mode, since it does not preserve rounding effects for all such constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162956 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e757f00446fb3c80a96d729f0530b87e9148db7f 30-Aug-2012 Nadav Rotem <nrotem@apple.com> Currently targets that do not support selects with scalar conditions and vector operands - scalarize the code. ARM is such a target
because it does not support CMOV of vectors. To implement this efficientlyi, we broadcast the condition bit and use a sequence of NAND-OR
to select between the two operands. This is the same sequence we use for targets that don't have vector BLENDs (like SSE2).

rdar://12201387



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
e941df5e354ff7d327bab8e59af687ec90fdd149 30-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't use MCInstrDesc flags for implicit operands.

When a MachineInstr is constructed, its implicit operands are added
first, then the explicit operands are inserted before the implicits.

MCInstrDesc has oprand flags like early clobber and operand ties that
apply to the explicit operands.

Don't look at those flags when the implicit operands are first added in
the explicit operands's positions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162910 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
6b1e1d8b3d8d5a1b299d3c2897db9bf122b02c00 30-Aug-2012 Craig Topper <craig.topper@gmail.com> Add FMA to switch statement in VectorLegalizer::LegalizeOp so that it can be expanded when it isn't legal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162894 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
3b9dfc9bf79f1134336fa704c54e411a24856d1d 30-Aug-2012 Craig Topper <craig.topper@gmail.com> Add support for FMA to WidenVectorResult.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162893 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
492d76b02ec5dd84fa59f79ce83cd3e5ae6603fe 30-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify the order of tied operands in inline asm.

When there are multiple tied use-def pairs on an inline asm instruction,
the tied uses must appear in the same order as the defs.

It is possible to write an LLVM IR inline asm instruction that breaks
this constraint, but there is no reason for a front end to emit the
operands out of order.

The gnu inline asm syntax specifies tied operands as a single read/write
constraint "+r", so ouf of order operands are not possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162878 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
66390805ad58871cde3f5ccd72a7dcac9b1cd4d8 30-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Set the isTied flags when building INLINEASM MachineInstrs.

For normal instructions, isTied() is set automatically by addOperand(),
based on MCInstrDesc, but inline asm has tied operands outside the
descriptor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162869 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
f036f7a1e79910bf5b5b6f37d2e512b4f01155a0 29-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename hasVolatileMemoryRef() to hasOrderedMemoryRef().

Ordered memory operations are more constrained than volatile loads and
stores because they must be ordered with respect to all other memory
operations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162861 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
cheduleDAGInstrs.cpp
0d7585839540abb9ab661a741dc3e0c2c860bceb 29-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't move normal loads across volatile/atomic loads.

It is technically allowed to move a normal load across a volatile load,
but probably not a good idea.

It is not allowed to move a load across an atomic load with
Ordering > Monotonic, and we model those with MOVolatile as well.

I recently removed the mayStore flag from atomic load instructions, so
they don't need a pseudo-opcode. This patch makes up for the difference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162857 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
90a4f78d3b23576da92a60a731cb34767fd75db8 29-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify the consistency of inline asm operands.

The operands on an INLINEASM machine instruction are divided into groups
headed by immediate flag operands. Verify this structure.

Extract verifyTiedOperands(), and only call it for non-inlineasm
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162849 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
17dd9a992aa499d79ccfa8b477ed4a225d1e39b6 29-Aug-2012 Eric Christopher <echristo@apple.com> Clean this up slightly, doesn't really fall through.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162848 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
ca71c5debe0467646ca1f359073948d5353393a0 29-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify the tied operand flags.

WHen running with -verify-machineinstrs, check that tied operands come
in matching use/def pairs, and that they are consistent with MCInstrDesc
when it applies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162816 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
699ac049517285d978ed607b2735976c5ae97ac0 29-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Maintain a vaild isTied bit as operands are added and removed.

The isTied bit is set automatically when a tied use is added and
MCInstrDesc indicates a tied operand. The tie is broken when one of the
tied operands is removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162814 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
4ba6916a98fffd9dedac5945ac51d40c8948069e 28-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a MachineOperand::isTied() flag.

While in SSA form, a MachineInstr can have pairs of tied defs and uses.
The tied operands are used to represent read-modify-write operands that
must be assigned the same physical register.

Previously, tied operand pairs were computed from fixed MCInstrDesc
fields, or by using black magic on inline assembly instructions.

The isTied flag makes it possible to add tied operands to any
instruction while getting rid of (some of) the inlineasm magic.

Tied operands on normal instructions are needed to represent predicated
individual instructions in SSA form. An extra <tied,imp-use> operand is
required to represent the output value when the instruction predicate is
false.

Adding a predicate to:

%vreg0<def> = ADD %vreg1, %vreg2

Will look like:

%vreg0<tied,def> = ADD %vreg1, %vreg2, pred:3, %vreg7<tied,imp-use>

The virtual register %vreg7 is the value given to %vreg0 when the
predicate is false. It will be assigned the same physreg as %vreg0.

This commit adds the isTied flag and sets it based on MCInstrDesc when
building an instruction. The flag is not used for anything yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162774 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
190e342cbcb1456ebb21b53a35cfefa99435bd65 28-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't allow TargetFlags on MO_Register MachineOperands.

Register operands are manipulated by a lot of target-independent code,
and it is not always possible to preserve target flags. That means it is
not safe to use target flags on register operands.

None of the targets in the tree are using register operand target flags.
External targets should be using immediate operands to annotate
instructions with operand modifiers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162770 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
36d29bc72345d882623b001c2692b9246a19688a 28-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove extra MayLoad/MayStore flags from atomic_load/store.

These extra flags are not required to properly order the atomic
load/store instructions. SelectionDAGBuilder chains atomics as if they
were volatile, and SelectionDAG::getAtomic() sets the isVolatile bit on
the memory operands of all atomic operations.

The volatile bit is enough to order atomic loads and stores during and
after SelectionDAG.

This means we set mayLoad on atomic_load, mayStore on atomic_store, and
mayLoad+mayStore on the remaining atomic read-modify-write operations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162733 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1d522388bfa642d710618edd3f4e9fe6471cf674 28-Aug-2012 Akira Hatanaka <ahatanaka@mips.com> Fix bug 13532.

In SelectionDAGLegalize::ExpandLegalINT_TO_FP, expand INT_TO_FP nodes without
using any f64 operations if f64 is not a legal type.

Patch by Stefan Kristiansson.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162728 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1144af3c9b4da48cd581156e05b24261c8de366a 25-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix integer undefined behavior due to signed left shift overflow in LLVM.
Reviewed offline by chandlerc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162623 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAG.cpp
baa74e4b35d96ee154c68fa6d204d854cb45f969 24-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid including explicit uses when counting SDNode imp-uses.

It is legal to have a register node as an explicit operand, it shouldn't
be counted as an implicit use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162591 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
1a710fdde197b00107ef55df51054925b9a5d2a2 24-Aug-2012 Manman Ren <mren@apple.com> BranchProb: modify the definition of an edge in BranchProbabilityInfo to handle
the case of multiple edges from one block to another.

A simple example is a switch statement with multiple values to the same
destination. The definition of an edge is modified from a pair of blocks to
a pair of PredBlock and an index into the successors.

Also set the weight correctly when building SelectionDAG from LLVM IR,
especially when converting a Switch.
IntegersSubsetMapping is updated to calculate the weight for each cluster.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162572 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
d62cdbe700ab288e9ad447824066edb7d17167d9 23-Aug-2012 Stephen Hines <srhines@google.com> Add new files for Mips + fixups for merge to upstream r162314.

Change-Id: Ib545c0c991575c14b0b74e3b8fd4cc8c789b25d0
ndroid.mk
31675153bd2d7617db8cb6aeb58054934c7b9f73 24-Aug-2012 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge_2

Conflicts:
lib/Target/ARM/ARMCodeEmitter.cpp

Change-Id: I6702d340c733e9721499b5d85b13b96ad9c14eb5
873cf0a0d7906083578d9b793008348750636138 24-Aug-2012 Eric Christopher <echristo@apple.com> Use DW_FORM_flag_present to save space in debug information if we're
not in darwin gdb compat mode.

Fixes rdar://10975088

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162526 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
cbbd5b1d86e0d06c804f4cdd61e0676b2d2f5c85 24-Aug-2012 Eric Christopher <echristo@apple.com> Remove the DW_AT_MIPS_linkage name attribute when we don't need it
output (we're emitting a specification already and the information
isn't changing) and we're not in old gdb compat mode.

Saves 1% on the debug information for a build of llvm.

Fixes rdar://11043421

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162493 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
20f47ab7688ba1e5e4c6af4be47c2f07ee4e9ab6 24-Aug-2012 Eric Christopher <echristo@apple.com> Turn these two options in to trinary state so that they can be
turned on and off separate from the platform if you're on darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162487 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c1610fa3c43befd489cd41e358bfa48323594266 24-Aug-2012 Eric Christopher <echristo@apple.com> Add a flag to DwarfDebug to allow it to communicate whether or not
we're using the darwin old gdb compat mode for emitting dwarf.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162486 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9d9f5a5855a711b1154e178e26f3766dc21d846a 23-Aug-2012 Eric Christopher <echristo@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162438 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9eb1a94c2020b4d6ba53962745eef19559b39a9f 23-Aug-2012 Eric Christopher <echristo@apple.com> Only emit the __debug_inlined section if we're trying to be compatible
with older gdbs on darwin.

rdar://10975874

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162436 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
360f0062bc83610e944123ee30eb057c325dfbf7 23-Aug-2012 Eric Christopher <echristo@apple.com> Emit pubtypes only when going for darwin gdb compatibility.

rdar://10393214

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162434 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
10cb744f194dc2a0ce0c3d52965aafb2b190068b 23-Aug-2012 Eric Christopher <echristo@apple.com> Add an option for darwin gdb compatibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162432 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ffd2526fa4e2d78564694b4797b96236c9ba9d85 23-Aug-2012 Andrew Trick <atrick@apple.com> Simplify the computeOperandLatency API.

The logic for recomputing latency based on a ScheduleDAG edge was
shady. This bypasses the problem by requiring the client to provide
operand indices. This ensures consistent use of the machine model's
API.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162420 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAGInstrs.cpp
argetInstrInfoImpl.cpp
986d76d7b3844b9a2f3d01a48975952749267a93 22-Aug-2012 David Blaikie <dblaikie@gmail.com> Tidy up a few more uses of MF.getFunction()->getName().

Based on CR feedback from r162301 and Craig Topper's refactoring in r162347
here are a few other places that could use the same API (& in one instance drop
a Function.h dependency).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162367 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
arlyIfConversion.cpp
xpandPostRAPseudos.cpp
iveDebugVariables.cpp
iveIntervalAnalysis.cpp
achineFunction.cpp
rocessImplicitDefs.cpp
egAllocBasic.cpp
egAllocFast.cpp
egAllocGreedy.cpp
egisterCoalescer.cpp
tackSlotColoring.cpp
05d96f98cbd96dab7f4ea1ea4ebe4285597e7e88 22-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Reduce duplicated hash map lookups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162362 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
trongPHIElimination.cpp
fdeb9fe5e08146d9cb953000cb893eda80329a08 22-Aug-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Rejected 169195. As Duncan commented, bitcasting to proper type is wrong approach. We need to insert some valid TRANCATE node here.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162354 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
96601ca332ab388754ca4673be8973396fea2ddd 22-Aug-2012 Craig Topper <craig.topper@gmail.com> Add a getName function to MachineFunction. Use it in places that previously did getFunction()->getName(). Remove includes of Function.h that are no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162347 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
xpandPostRAPseudos.cpp
fConversion.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineLICM.cpp
achineScheduler.cpp
achineVerifier.cpp
ostRASchedulerList.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
hrinkWrapping.cpp
tackSlotColoring.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
cb1f68d7c8bea99530ba55813c2b4ddd14556286 22-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Initialize SelectionDAGBuilder's Context in 'init', not in its constructor. The
SelectionDAG's 'init' has not been called when the SelectionDAGBuilder is
constructed (in SelectionDAGISel's constructor), so this was previously always
initialized with 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162333 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
79c78de3785a24cb6994038f0e8df92bded548e6 21-Aug-2012 David Blaikie <dblaikie@gmail.com> Remove unnecessary cast that was also unnecessarily casting away constness.

Even looking at the revision history I couldn't quite piece together why this
cast was ever written in the first place, but I assume it was because of some
change in the inheritance, perhaps this function was reimplemented in a
derived type & this caller was meant to get the base version (& it wasn't
virtual)?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162301 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
35907e98626b33f6406dc498201fc59ced282c8a 21-Aug-2012 Chad Rosier <mcrosier@apple.com> Add support for the --param ssp-buffer-size= driver option.
PR9673

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162284 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
990ca5517fd6666d4049b6b8281d9df99da11637 21-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a quadratic algorithm in MachineBranchProbabilityInfo.

The getSumForBlock function was quadratic in the number of successors
because getSuccWeight would perform a linear search for an already known
iterator.

This patch was originally committed as r161460, but reverted again
because of assertion failures. Now that duplicate Machine CFG edges have
been eliminated, this works properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162233 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineBranchProbabilityInfo.cpp
e7fdef420d0c8a825555d246da259342c48bd527 20-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't add CFG edges for redundant conditional branches.

IR that hasn't been through SimplifyCFG can look like this:

br i1 %b, label %r, label %r

Make sure we don't create duplicate Machine CFG edges in this case.

Fix the machine code verifier to accept conditional branches with a
single CFG edge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162230 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
electionDAG/SelectionDAGBuilder.cpp
228e3f5fac0ceef9f6fe22d1621ac32bae5d3177 20-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a verification pass after ExpandISelPseudos.

This pass often has weird CFG hacks and hand-written MI building code
that can go wrong in many ways.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162224 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
b254c6d77a042ac175e101f6e06aa667446e1b77 20-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add CFG checks to MachineVerifier.

Verify that the predecessor and successor lists are consistent and free
of duplicates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162223 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
08da177c355dcde40dbe6c0a21b26956fcbca32c 20-Aug-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Fixed DAGCombiner bug (found and localized by James Malloy):
The DAGCombiner tries to optimise a BUILD_VECTOR by checking if it
consists purely of get_vector_elts from one or two source vectors. If
so, it either makes a concat_vectors node or a shufflevector node.

However, it doesn't check the element type width of the underlying
vector, so if you have this sequence:

Node0: v4i16 = ...
Node1: i32 = extract_vector_elt Node0
Node2: i32 = extract_vector_elt Node0
Node3: v16i8 = BUILD_VECTOR Node1, Node2, ...

It will attempt to:

Node0: v4i16 = ...
NewNode1: v16i8 = concat_vectors Node0, ...

Where this is actually invalid because the element width is completely
different. This causes an assertion failure on DAG legalization stage.

Fix:
If output item type of BUILD_VECTOR differs from input item type.
Make concat_vectors based on input element type and then bitcast it to the output vector type. So the case described above will transformed to:
Node0: v4i16 = ...
NewNode1: v8i16 = concat_vectors Node0, ...
NewNode2: v16i8 = bitcast NewNode1



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fd45fa1503de725801be3db33c7e860298fc82a3 18-Aug-2012 Eli Friedman <eli.friedman@gmail.com> Make atomic load and store of pointers work. Tighten verification of atomic operations
so other unexpected operations don't slip through. Based on patch by Logan Chien.
PR11786/PR13186.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162146 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a67eda76c0224ec272e2cc7cf919f4e6e213e275 17-Aug-2012 Bill Wendling <isanbard@gmail.com> Implement stack protectors for structures with character arrays in them.
<rdar://problem/10545247>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162131 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
32811bef956e0fae4329e6515420d85f7e510660 17-Aug-2012 Bill Wendling <isanbard@gmail.com> Change the `linker_private_weak_def_auto' linkage to `linkonce_odr_auto_hide' to
make it more consistent with its intended semantics.

The `linker_private_weak_def_auto' linkage type was meant to automatically hide
globals which never had their addresses taken. It has nothing to do with the
`linker_private' linkage type, which outputs the symbols with a `l' (ell) prefix
among other things.

The intended semantic is more like the `linkonce_odr' linkage type.

Change the name of the linkage type to `linkonce_odr_auto_hide'. And therefore
changing the semantics so that it produces the correct output for the linker.

Note: The old linkage name `linker_private_weak_def_auto' will still parse but
is not a synonym for `linkonce_odr_auto_hide'. This should be removed in 4.0.
<rdar://problem/11754934>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162114 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b97cebdfcc4d76835961038b79e605b167bd8cc5 17-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> TargetLowering: Use the large shift amount during legalize types. The legalizer may call us with an overly large type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162101 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
cabc0699ea32cad78028a6533aef1e380064262e 17-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use standard pattern for iterate+erase.

Increment the MBB iterator at the top of the loop to properly handle the
current (and previous) instructions getting erased.

This fixes PR13625.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162099 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
f2c64ef519b38a4328809b27b4a3a8e0c26e9709 17-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an MCID::Select flag and TII hooks for optimizing selects.

Select instructions pick one of two virtual registers based on a
condition, like x86 cmov. On targets like ARM that support predication,
selects can sometimes be eliminated by predicating the instruction
defining one of the operands.

Teach PeepholeOptimizer to recognize select instructions, and ask the
target to optimize them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162059 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
11a4fa452305eeaeaaaf9c4fd83d043da081bd11 15-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix undefined behavior: don't perform array indexing through a potentially null
pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161919 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
bb57febe3cbc2e968abee728b615918fc734ff7a 14-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix undefined behavior: binding null pointer to reference. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161853 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
443c9ed7688e66c55c43819a75be681574b291de 14-Aug-2012 Eric Christopher <echristo@apple.com> Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161851 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
7c626d30974c632ab500171ff185a24bcf2603bf 14-Aug-2012 Owen Anderson <resistor@mac.com> Add a roundToIntegral method to APFloat, which can be parameterized over various rounding modes. Use this to implement SelectionDAG constant folding of FFLOOR, FCEIL, and FTRUNC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
03e593efc65807dad7ca8807554584fcb89f40f1 14-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Transfer weights in transferSuccessorsAndUpdatePHIs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161805 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
cb6889b23d7bdac292e0203bcca19e82b2e17875 14-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out MachineBasicBlock successor weights when available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161804 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
43600e95ec3690b37d458a6d3d56941ad84cddcb 13-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the TII::scheduleTwoAddrSource() hook.

It never does anything when running 'make check', and it get's in the
way of updating live intervals in 2-addr.

The hook was originally added to help form IT blocks in Thumb2 code
before register allocation, but the pass ordering has changed since
then, and we run if-conversion after register allocation now.

When the MI scheduler is enabled, there will be no less than two
schedulers between 2-addr and Thumb2ITBlockPass, so this hook is
unlikely to help anything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161794 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
6d86f3cdfc8d750d73f4a711ec74300fcb8644cb 13-Aug-2012 Bill Wendling <isanbard@gmail.com> Whitespace cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161788 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
786556c26847befdb011298fd7b36ae86fd150b0 13-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Count triangles and diamonds in early if-conversion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161783 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
5f6d36335b9468a16bd3b0c3ab8bab103841332a 13-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete dead typedef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161782 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
bc70ff3cb977fd69e120d89b0e04f316d87cdbef 13-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle extra Tail predecessors in if-conversion.

It is still possible to if-convert if the tail block has extra
predecessors, but the tail phis must be rewritten instead of being
removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161781 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
5fa2d458af8522a0fc3c6c93227d8cb3c0dc2862 11-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> MachineCSE: Hoist isConstantPhysReg out of the loop, it checks for overlaps already.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161729 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
cfc0ad6e48fcbb5d9d7d97307e5b5df6bba53a97 11-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> PR13578: Teach MachineCSE that instructions that use a constant register can be CSE'd safely.

This is common e.g. when doing rip-relative addressing on x86_64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161728 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
eb74c08192d9c9425b2d8cf08852e9e787a87881 11-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a proper if-conversion cost model.

Detect when there is not enough available ILP, so if-conversion can't
speculate instructions for free.

Compute the lengthening of the critical path when inserting a select
instruction that depends on the condition as well as both sides of the
if.

Reject conversions that would stretch the critical path by more than
half a mispredict penalty.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161713 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
a35bf506f41f4231dc649f3af5255e0b1087b2e3 11-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Give MachineTraceMetrics its own debug tag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161712 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
5413b68b1f59041a821287790dbc1ee2e272cf4e 11-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add more trace query functions.

Trace::getResourceLength() computes the number of cycles required to
execute the trace when ignoring data dependencies. The number can be
compared to the critical path to estimate the trace ILP.

Trace::getPHIDepth() computes the data dependency depth of a PHI in a
trace successor that isn't necessarily part of the trace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161711 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
achineTraceMetrics.h
870da6de2c3f3f40360e04882b9ddf42ded0930a 10-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add getTPred() and getFPred() functions.

They identify the PHI predecessors in both diamonds and triangles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161689 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
8828c4ccd44cb49d13360cf86fd0b963f211f03f 10-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Include loop-carried dependencies when computing instr heights.

When a trace ends with a back-edge, include PHIs in the loop header in
the height computations. This makes the critical path through a loop
more accurate by including the latencies of the last instructions in the
loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161688 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
15121ca0d18e6a0f6a16f8a696f4efc3782dc965 10-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Update edge weights correctly in replaceSuccessor().

When replacing Old with New, it can happen that New is already a
successor. Add the old and new edge weights instead of creating a
duplicate edge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161653 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
c7908037d87c8f6866b872e9f6b5a7fffae5b63e 10-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Reapply r161633-161634 "Partition use lists so defs always come before uses.""

No changes to these patches, MRI needed to be notified when changing
uses into defs and vice versa.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161644 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
d6397eba2389e8a24d37aa56e049187c1ee75f4f 10-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Also update MRI use lists when changing a use to a def and vice versa.

This was the cause of the buildbot failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161643 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1134aae4e743290da2ad29a7ac76d3a1f9dcfce8 10-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r161633-161634 "Partition use lists so defs always come before uses."

These commits broke a number of buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161640 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
81a6995243380668e6f991fa4e11dd0a6e37e030 10-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Partition use lists so defs always come before uses.

This makes it possible to speed up def_iterator by stopping at the first
use. This makes def_empty() and getUniqueVRegDef() much faster when
there are many uses.

In a +Asserts build, LiveVariables is 100x faster in one case because
getVRegDef() has an assertion that would scan to the end of a
def_iterator chain.

Spill weight calculation is significantly faster (300x in one case)
because isTriviallyReMaterializable() calls MRI->isConstantPhysReg(%RIP)
which calls def_empty(%RIP).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161634 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
46f4c35372062eaf097922b5683bc6639ccf342b 10-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't use pointer-pointers for the register use lists.

Use a more conventional doubly linked list where the Prev pointers form
a cycle. This means it is no longer necessary to adjust the Prev
pointers when reallocating the VRegInfo array.

The test changes are required because the register allocation hint is
using the use-list order to break ties.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161633 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
ff2b99afc8cbc6cfa73181072888e0f9f07deb7e 10-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move use list management into MachineRegisterInfo.

Register MachineOperands are kept in linked lists accessible via MRI's
reg_iterator interfaces. The linked list management was handled partly
by MachineOperand methods, partly by MRI methods.

Move all of the list management into MRI, delete
MO::AddRegOperandToRegInfo() and MO::RemoveRegOperandFromRegInfo().

Be more explicit about handling the cases where an MRI pointer isn't
available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161632 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineInstr.cpp
achineRegisterInfo.cpp
988069e2291f62dced081dd54da38b9683bdbdca 10-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a future TwoAddressInstructionPass crash.

No test case, the crash only happens when the default use list order is
changed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161627 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
0b66bd9b078c99dfca6ba0836750cdc168f635d1 09-Aug-2012 Nadav Rotem <nadav.rotem@intel.com> Fix the legalization of ExtLoad on ARM. ExpandUnalignedLoad did not properly
handle the cases where the memory value type was illegal.
PR 13111.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161565 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4e6966266a6dbbd560e11f68e6a5ff3fd35c130d 09-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't use getNextOperandForReg() in RAFast.

That particular optimization was probably premature anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161541 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
e723007ee6911c77bedaa2e914961e86b0b4ce61 09-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Deal with irreducible control flow when building traces.

We filter out MachineLoop back-edges during the trace-building PO
traversals, but it is possible to have CFG cycles that aren't natural
loops, and MachineLoopInfo doesn't include such cycles.

Use a standard visited set to detect such CFG cycles, and completely
ignore them when picking traces.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161532 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
d6cf5f4224d0e600ebb810f1da09aabaeea7e6f3 08-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Heed -stress-early-ifcvt.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161513 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
0fac6aa076450f5474feb2ec697b7d63d33fa567 08-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Get the MispredictPenalty from MCSchedModel.

Thanks, Andy!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161507 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
3c417554caedde3a333755916701c8380606342a 08-Aug-2012 Andrew Trick <atrick@apple.com> Minor cleanup of defaultDefLatency API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161470 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
913ff09a9acf563ae9719ff223bc117dd66ad6b0 08-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Fix a quadratic algorithm in MachineBranchProbabilityInfo."

It caused an assertion failure when compiling consumer-typeset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161463 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineBranchProbabilityInfo.cpp
39ad568c62f5120faec29f69d3d614303a1f992d 08-Aug-2012 Manman Ren <mren@apple.com> X86: enable CSE between CMP and SUB

We perform the following:
1> Use SUB instead of CMP for i8,i16,i32 and i64 in ISel lowering.
2> Modify MachineCSE to correctly handle implicit defs.
3> Convert SUB back to CMP if possible at peephole.

Removed pattern matching of (a>b) ? (a-b):0 and like, since they are handled
by peephole now.

rdar://11873276


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161462 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
5e63d43e48f6d0b597d21b83a1eed9eaf2febc93 08-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a quadratic algorithm in MachineBranchProbabilityInfo.

The getSumForBlock function was quadratic in the number of successors
because getSuccWeight would perform a linear search for an already known
iterator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161460 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineBranchProbabilityInfo.cpp
8c5c0733cde7c941de6c9386a07a8378c5c482c5 08-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Skip tied operand pairs that already have the same register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161454 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
74500bdba3eae36a1a8a17d8bad0b971b9c212ec 08-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SelectionDAG::getTargetIndex.

This adds support for TargetIndex operands during isel. The meaning of
these (index, offset, flags) operands is entirely defined by the target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161453 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGDumper.cpp
1299422ee1e7834a8a697b2c915a8bfdada77246 07-Aug-2012 Bill Wendling <isanbard@gmail.com> For non-Darwin platforms, we want to generate stack protectors only for
character arrays. This is in line with what GCC does.
<rdar://problem/10529227>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161446 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
0b40d09ff6b1facd0fe81e50ee0271e035488520 07-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a new kind of MachineOperand: MO_TargetIndex.

A target index operand looks a lot like a constant pool reference, but
it is completely target-defined. It contains the 8-bit TargetFlags, a
32-bit index, and a 64-bit offset. It is preserved by all code generator
passes.

TargetIndex operands can be used to carry target-specific information in
cases where immediate operands won't suffice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161441 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
7a8f311ece7108e44ded601237091c23ef7782eb 07-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a couple of typos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161437 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
achineTraceMetrics.h
84ef6ba44394f983d985b02e328cbb2dd779e4b0 07-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add trace accessor methods, implement primitive if-conversion heuristic.

Compare the critical paths of the two traces through an if-conversion
candidate. If the difference is larger than the branch brediction
penalty, reject the if-conversion. If would never pay.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161433 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
achineTraceMetrics.cpp
achineTraceMetrics.h
e6450dc2afc18531bf9b70180a9f67376d9f00c7 07-Aug-2012 Chandler Carruth <chandlerc@gmail.com> Add a much more conservative strategy for aligning branch targets.
Previously, MBP essentially aligned every branch target it could. This
bloats code quite a bit, especially non-looping code which has no real
reason to prefer aligned branch targets so heavily.

As Andy said in review, it's still a bit odd to do this without a real
cost model, but this at least has much more plausible heuristics.

Fixes PR13265.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161409 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
ba86b13ad9cd6a9707a954598863da1e2a9f773b 07-Aug-2012 Manman Ren <mren@apple.com> MachineCSE: Update the heuristics for isProfitableToCSE.

If the result of a common subexpression is used at all uses of the candidate
expression, CSE should not increase the live range of the common subexpression.

rdar://11393714 and rdar://11819721


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161396 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
cf1823dc25b9687af9277b824eb7cac3931bdb5e 04-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete a dead variable.

TwoAddressInstructionPass doesn't remat any more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161285 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
ae52faddebe5b780cd74d4cd66765f8ae509b656 04-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> TwoAddressInstructionPass refactoring: Extract another method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161284 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
53624a2df557b4a24f2ee98cfce1a69bf83243af 04-Aug-2012 Bob Wilson <bob.wilson@apple.com> Refactor and check "onlyReadsMemory" before optimizing builtins.

This patch is mostly just refactoring a bunch of copy-and-pasted code, but
it also adds a check that the call instructions are readnone or readonly.
That check was already present for sin, cos, sqrt, log2, and exp2 calls, but
it was missing for the rest of the builtins being handled in this code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161282 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
6ac8066ae49a5e9910f24e08af0b168210270946 04-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> TwoAddressInstructionPass refactoring: Extract a method.

No functional change intended, except replacing a DenseMap with a
SmallDenseMap which should behave identically.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161281 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
5bfdedf6ab4e85bc4e27fd937a74e15071cb949b 04-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Begin adding support for updating LiveIntervals in TwoAddressInstructionPass.

This is far from complete, and only changes behavior when the
-early-live-intervals flag is passed to llc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161273 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
dcc4436cddc9b5d155040ed3ed38e9070ec4e3b8 04-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an experimental -early-live-intervals option.

This option runs LiveIntervals before TwoAddressInstructionPass which
will eventually learn to exploit and update the analysis.

Eventually, LiveIntervals will run before PHIElimination, and we can get
rid of LiveVariables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161270 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
asses.cpp
e744ac49f4cf878e2b34dba26964f04fb0415fa3 04-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete merged physreg copies in joinReservedPhysReg().

Previously, the identity copy would survive through register allocation
before it was removed by the rewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161269 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
982dc84762fc0c2ca35e6947d648a690dd22343c 03-Aug-2012 Bob Wilson <bob.wilson@apple.com> Try to reduce the compile time impact of r161232.

The previous change caused fast isel to not attempt handling any calls to
builtin functions. That included things like "printf" and caused some
noticable regressions in compile time. I wanted to avoid having fast isel
keep a separate list of functions that had to be kept in sync with what the
code in SelectionDAGBuilder.cpp was handling. I've resolved that here by
moving the list into TargetLibraryInfo. This is somewhat redundant in
SelectionDAGBuilder but it will ensure that we keep things consistent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
772af92cb16a5e11bd580f576643a6268e8a5bce 03-Aug-2012 Bob Wilson <bob.wilson@apple.com> Fix memcmp code-gen to honor -fno-builtin.

I noticed that SelectionDAGBuilder::visitCall was missing a check for memcmp
in TargetLibraryInfo, so that it would use custom code for memcmp calls even
with -fno-builtin. I also had to add a new -disable-simplify-libcalls option
to llc so that I could write a test for this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161262 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b2beac2b9671f7d9773329d62c2821c8ac449ac5 03-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Completely eliminate VNInfo flags.

The 'unused' state of a value number can be represented as an invalid
def SlotIndex. This also exposed code that shouldn't have been looking
at unused value VNInfos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161258 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
1599a64277f3a01619b5614974be9bec662c7ec0 03-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a couple of loops that were processing unused value numbers.

Unused VNInfos should be left alone. Their def SlotIndex doesn't point
to anything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161257 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
a5b51f5694b143790d7d081eef689614fbbb00b5 03-Aug-2012 Matt Beaumont-Gay <matthewbg@google.com> Silence unused variable warning in -asserts build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161256 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
bf60aa9db5953dd99c561dfa9323b1e3293a5a85 03-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate the VNInfo::hasPHIKill() flag.

The only real user of the flag was removeCopyByCommutingDef(), and it
has been switched to LiveIntervals::hasPHIKill().

All the code changed by this patch was only concerned with computing and
propagating the flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161255 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
egisterCoalescer.cpp
trongPHIElimination.cpp
0ab7103e06ee1da7bde5b196a68be77ab49a005d 03-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make the hasPHIKills flag a computed property.

The VNInfo::HAS_PHI_KILL is only half supported. We precompute it in
LiveIntervalAnalysis, but it isn't properly updated by live range
splitting and functions like shrinkToUses().

It is only used in one place: RegisterCoalescer::removeCopyByCommutingDef().

This patch changes that function to use a new LiveIntervals::hasPHIKill()
function that computes the flag for a given value number.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161254 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egisterCoalescer.cpp
3cd9f572eddac8aca63ee867dc225f719ff63eb2 03-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete dead function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161242 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
bc8d827b2b2f063f1305754bc0b629e03e00c9ce 03-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't delete dead code in TwoAddressInstructionPass.

This functionality was added before we started running
DeadMachineInstructionElim on all targets. It serves no purpose now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161241 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
c3f0e98f40f1382870c679b6aef1c5d01540637f 03-Aug-2012 Shih-wei Liao <sliao@google.com> Apply changes to migrate to LLVM-160668-20120724.

- Update Android.mk for removed files and new files.

- llvm-ld has been removed in upstream, so we remove it as well.

Change-Id: I613ada916156a43993d4bba9cae6dcb6bf40ed2f
ndroid.mk
smPrinter/AsmPrinter.cpp
7744acd1ab73b3eec6f1449f47083abe3fb1b527 03-Aug-2012 Shih-wei Liao <sliao@google.com> Merge with LLVM upstream r160668 (Jul 24th 2012)

Conflicts:
include/llvm/Support/ELF.h
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/Support/Memory.cpp
lib/Transforms/Instrumentation/AddressSanitizer.cpp

Change-Id: Iddd658cf2eadc7165b2805b446d31af2c5c9917f
d49edb7ab098fa0c82f59efbcf1b4eb2958f8dc3 03-Aug-2012 Bob Wilson <bob.wilson@apple.com> Fall back to selection DAG isel for calls to builtin functions.

Fast isel doesn't currently have support for translating builtin function
calls to target instructions. For embedded environments where the library
functions are not available, this is a matter of correctness and not
just optimization. Most of this patch is just arranging to make the
TargetLibraryInfo available in fast isel. <rdar://problem/12008746>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161232 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
127eea87d666ccc9fe7025f41148c33af0f8c84b 02-Aug-2012 Manman Ren <mren@apple.com> X86 Peephole: fold loads to the source register operand if possible.

Add more comments and use early returns to reduce nesting in isLoadFoldable.
Also disable folding for V_SET0 to avoid introducing a const pool entry and
a const pool load.

rdar://10554090 and rdar://11873276


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161207 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
79a20ce6f0d6c1041a5031aca41b50a1e58b1d4b 02-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Compute the critical path length through a trace.

Whenever both instruction depths and instruction heights are known in a
block, it is possible to compute the length of the critical path as
max(depth+height) over the instructions in the block.

The stored live-in lists make it possible to accurately compute the
length of a critical path that bypasses the current (small) block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161197 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
achineTraceMetrics.h
804468916a93bb2914c28687829ccb065a97e1d9 02-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify regunit intervals along with virtreg intervals.

Don't cause regunit intervals to be computed just to verify them. Only
check the already cached intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161183 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
e2b83ab056836067e2c86ef22223a4c29fe267ce 02-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid creating dangling physreg live ranges during DCE.

LiveRangeEdit::eliminateDeadDefs() can delete a dead instruction that
reads unreserved physregs. This would leave the corresponding regunit
live interval dangling because we don't have shrinkToUses() for physical
registers.

Fix this problem by turning the instruction into a KILL instead of
deleting it. This happens in a landing pad in
test/CodeGen/X86/2012-05-19-CoalescerCrash.ll:

%vreg27<def,dead> = COPY %EDX<kill>; GR32:%vreg27

becomes:

KILL %EDX<kill>

An upcoming fix to the machine verifier will catch problems like this by
verifying regunit live intervals.

This fixes PR13498. I am not including the test case from the PR since
we already have one exposing the problem once the verifier is fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161182 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
79240f9539ab187f5e25cec44e0250a89dfe1d59 02-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add report() functions that take a LiveInterval argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161178 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
d7d003c2b7b7f657eed364e4ac06f4ab32fc8c2d 02-Aug-2012 Manman Ren <mren@apple.com> X86 Peephole: fold loads to the source register operand if possible.

Machine CSE and other optimizations can remove instructions so folding
is possible at peephole while not possible at ISel.

This patch is a rework of r160919 and was tested on clang self-host on my local
machine.

rdar://10554090 and rdar://11873276


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161152 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
e5c79a5c2542fa0d852df28b5ee9de8dfef694d8 02-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract some methods from verifyLiveIntervals.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161149 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
a62e1e8bc6df16174ae613914d876d335970ef4f 02-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Also verify RegUnit intervals at uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161147 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
c7f44b8b8fca87cdd28ffe420c3b87141d88c099 02-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Compute instruction heights through a trace.

The height on an instruction is the minimum number of cycles from the
instruction is issued to the end of the trace. Heights are computed for
all instructions in and below the trace center block.

The method for computing heights is different from the depth
computation. As we visit instructions in the trace bottom-up, heights of
used instructions are pushed upwards. This way, we avoid scanning long
use lists, looking for uses in the current trace.

At each basic block boundary, a list of live-in registers and their
minimum heights is saved in the trace block info. These live-in lists
are used when restarting depth computations on a trace that
converges with an already computed trace. They will also be used to
accurately compute the critical path length.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161138 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
achineTraceMetrics.h
6635cad5480210d683aba7dc42627430b29fb0b4 01-Aug-2012 Eric Christopher <echristo@apple.com> Temporarily revert c23b933d5f8be9b51a1d22e717c0311f65f87dcd. It's causing
failures in the debug testsuite and possibly PR13486.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161121 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9dae457e2b9a9919c3f7d48b229035d2b956a2d4 01-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add DataDep constructors. Explicitly check SSA form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161115 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
1503aba4a036f5394c7983417bc1e64613b2fc77 01-Aug-2012 Elena Demikhovsky <elena.demikhovsky@intel.com> Added FMA functionality to X86 target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161110 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f99efdf3290b438a2cd74304e4299d50bce2b397 31-Jul-2012 Manman Ren <mren@apple.com> MachineSink: Sort the successors before trying to find SuccToSinkTo.

Use stable_sort instead of sort. Follow-up to r161062.

rdar://11980766


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161075 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
5f8e8bd656bb174b3e22c0e56ce3d1eb958ac2e2 31-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Compute instruction depths through the current trace.

Assuming infinite issue width, compute the earliest each instruction in
the trace can issue, when considering the latency of data dependencies.
The issue cycle is record as a 'depth' from the beginning of the trace.

This is half the computation required to find the length of the critical
path through the trace. Heights are next.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161074 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
achineTraceMetrics.h
64e2973bf78970aedecbb5fda44e19f93f56dd9b 31-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename CT -> MTM. MachineTraceMetrics is abbreviated MTM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161072 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
achineTraceMetrics.h
53b59d1d974184657edfd22779e0bb3653d164ec 31-Jul-2012 Manman Ren <mren@apple.com> MachineSink: Sort the successors before trying to find SuccToSinkTo.

One motivating example is to sink an instruction from a basic block which has
two successors: one outside the loop, the other inside the loop. We should try
to sink the instruction outside the loop.

rdar://11980766


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161062 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
8c574be2fec59a3d80e400a9a0409b28f7f34829 31-Jul-2012 Micah Villmow <villmow@gmail.com> Conform to LLVM coding style.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161061 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
683826765c45d7acd19e915a73b8c1b46c40a4eb 31-Jul-2012 Micah Villmow <villmow@gmail.com> Don't generate ordered or unordered comparison operations if it is not legal to do so.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161053 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
34af6f597b09c13fba7d3a1960c0810cfc30beff 31-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Clear kill flags in removeCopyByCommutingDef().

We are extending live ranges, so kill flags are not accurate. They
aren't needed until they are recomputed after RA anyway.

<rdar://problem/11950722>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161023 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
11236143173d1aedeace570ac1133d3d5dfb268e 31-Jul-2012 Manman Ren <mren@apple.com> Reverse order of the two branches at end of a basic block if it is profitable.

We branch to the successor with higher edge weight first.
Convert from
je LBB4_8 --> to outer loop
jmp LBB4_14 --> to inner loop
to
jne LBB4_14
jmp LBB4_8

PR12750
rdar: 11393714


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161018 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
8b5704f9589f20cdfb28b3632cc396995e4d8c45 31-Jul-2012 Andrew Trick <atrick@apple.com> Use the latest MachineRegisterInfo APIs. No functionality.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161010 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
269120cd9b45b24665433ea28eb7d092c138ca76 31-Jul-2012 Andrew Trick <atrick@apple.com> Inline MachineRegisterInfo::hasOneUse

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161007 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
2f6b62b09f07d63b7f3ee2de50735dd8c83c0f0f 31-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid looking at stale data in verifyAnalysis().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161004 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
1c899cf47c13a107cf0f85ae69fcd36c92b37f14 31-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow traces to enter nested loops.

This lets traces include the final iteration of a nested loop above the
center block, and the first iteration of a nested loop below the center
block.

We still don't allow traces to contain backedges, and traces are
truncated where they would leave a loop, as seen from the center block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161003 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
20f13c50d88560d75129f4a691fe6b477d04dc70 30-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Clarify invalidation strategy in comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160997 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.h
8e54ab5c7618bf3813c337ad181a741f30eb36cc 30-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Assert that all trace candidate blocks have been visited by the PO.

When computing a trace, all the candidates for pred/succ must have been
visited. Filter out back-edges first, though. The PO traversal ignores
them.

Thanks to Andy for spotting this in review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160995 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
ef6c76c984f821ea866902a7f9e695b16e971468 30-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Hook into PassManager's analysis verification.

By overriding Pass::verifyAnalysis(), the pass contents will be verified
by the pass manager.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160994 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
achineTraceMetrics.cpp
achineTraceMetrics.h
32ecfb41585d377c25c30aa4260cf007c1b0d5ce 30-Jul-2012 Pete Cooper <peter_cooper@apple.com> Consider address spaces for hashing and CSEing DAG nodes. Otherwise two loads from different x86 segments but the same address would get CSEd

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160987 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3f63a589788995a724bc4587d022fe15ea8576ba 30-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineInstr::isTransient().

This is a cleaned up version of the isFree() function in
MachineTraceMetrics.cpp.

Transient instructions are very unlikely to produce any code in the
final output. Either because they get eliminated by RegisterCoalescing,
or because they are pseudo-instructions like labels and debug values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160977 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
a1b2bf79796d8c44b1321a69a7236b85c33ef7ca 30-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineTraceMetrics::verify().

This function verifies the consistency of cached data in the
MachineTraceMetrics analysis.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160976 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
achineTraceMetrics.cpp
achineTraceMetrics.h
ee31ae12e8a7b843e97285b321cb1f485cd77248 30-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that the CFG hasn't changed during invalidate().

The MachineTraceMetrics analysis must be invalidated before modifying
the CFG. This will catch some of the violations of that rule.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160969 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
f192b507a33b2ab2e2f6271bb1ea6ed4fbda69e7 30-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineBasicBlock::isPredecessor().

A->isPredecessor(B) is the same as B->isSuccessor(A), but it can
tolerate a B that is null or dangling. This shouldn't happen normally,
but it it useful for verification code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160968 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
e8b4a4a9d173d67e35e4b1d32e20140381db6bde 29-Jul-2012 Manman Ren <mren@apple.com> Revert r160920 and r160919 due to dragonegg and clang selfhost failure



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160927 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
0eb3edea9cb6819334173a7d288da85943201fe5 28-Jul-2012 Manman Ren <mren@apple.com> X86 Peephole: fold loads to the source register operand if possible.

Machine CSE and other optimizations can remove instructions so folding
is possible at peephole while not possible at ISel.

rdar://10554090 and rdar://11873276


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160919 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
4b72ada1f4c1c90ead331a650956e7b14450080e 28-Jul-2012 Andrew Trick <atrick@apple.com> Reenable a basic SSA DAG builder optimization.

Jakob fixed ProcessImplicifDefs in r159149.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160910 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
08f6ef6a7807250d84446661b7a6ec4afa762099 28-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add more debug output to MachineTraceMetrics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160905 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
achineTraceMetrics.cpp
achineTraceMetrics.h
0271a5fa29f73150fad891ca4c43a0a89a64b3bf 28-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep track of the head and tail of the trace through each block.

This makes it possible to quickly detect blocks that are outside the
trace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160904 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
achineTraceMetrics.h
c23b933d5f8be9b51a1d22e717c0311f65f87dcd 28-Jul-2012 Eric Christopher <echristo@apple.com> Add a DW_AT_high_pc for CUs that are a single address range. Update
all tests accordingly.

Fixes PR13351.

Patch by shinichiro hamaji!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160899 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c16bf79303ad8c84c5dd3c76e143cd2145539834 27-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Also compute register mask lists under -new-live-intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160898 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b18d779b35909cd5b753871f8bf2ff4f6c17ace1 27-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate the IS_PHI_DEF flag and VNInfo::setIsPHIDef().

A value number is a PHI def if and only if it begins at a block
boundary. This can be derived from the def slot, a separate flag is not
necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160893 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveRangeCalc.cpp
plitKit.cpp
trongPHIElimination.cpp
3dfa38a5bf431ec78272bb06c47d7c28616d276a 27-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a -new-live-intervals experimental option.

This option replaces the existing live interval computation with one
based on LiveRangeCalc.cpp. The new algorithm does not depend on
LiveVariables, and it can be run at any time, before or after leaving
SSA form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160892 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
72e7dbf88be36b96aefd9fe8912f33ab8afb7352 27-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add <imp-def> of super-register when lowering SUBREG_TO_REG.

Patch by Tyler Nowicki!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160888 91177308-0d34-0410-b5e6-96231b3b80d8
xpandPostRAPseudos.cpp
0fc44869ffb5c180ec12f86f2fd02a35a1affb4a 26-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use an otherwise unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160798 91177308-0d34-0410-b5e6-96231b3b80d8
achineTraceMetrics.cpp
9f63e104271eb91e545fa8cdb16fb9e10a8a9578 26-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Start scaffolding for a MachineTraceMetrics analysis pass.

This is still a work in progress.

Out-of-order CPUs usually execute instructions from multiple basic
blocks simultaneously, so it is necessary to look at longer traces when
estimating the performance effects of code transformations.

The MachineTraceMetrics analysis will pick a typical trace through a
given basic block and provide performance metrics for the trace. Metrics
will include:

- Instruction count through the trace.
- Issue count per functional unit.
- Critical path length, and per-instruction 'slack'.

These metrics can be used to determine the performance limiting factor
when executing the trace, and how it will be affected by a code
transformation.

Initially, this will be used by the early if-conversion pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160796 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
arlyIfConversion.cpp
achineTraceMetrics.cpp
achineTraceMetrics.h
27db99fcee85939f0b7580ad55303c4c60a3b98d 26-Jul-2012 Dan Gohman <gohman@apple.com> Add a floor intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160791 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
d68e8cda245269c032a692873dc8eb163fa6ef00 25-Jul-2012 Manman Ren <mren@apple.com> Disable rematerialization in TwoAddressInstructionPass.

It is redundant; RegisterCoalescer will do the remat if it can't eliminate
the copy. Collected instruction counts before and after this. A few extra
instructions are generated due to spilling but it is normal to see these kinds
of changes with almost any small codegen change, according to Jakob.

This also fixed rdar://11830760 where xor is expected instead of movi0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160749 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
84315f03cb6127ac92a5b02239c6edc2a347069a 25-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Preserve 2-addr constraints in ConnectedVNInfoEqClasses.

When a live range splits into multiple connected components, we would
arbitrarily assign <undef> uses to component 0. This is wrong when the
use is tied to a def that gets assigned to a different component:

%vreg69<def> = ADD8ri %vreg68<undef>, 1

The use and def must get the same virtual register.

Fix this by assigning <undef> uses to the same component as the value
defined by the instruction, if any:

%vreg69<def> = ADD8ri %vreg69<undef>, 1

This fixes PR13402. The PR has a test case which I am not including
because it is unlikely to keep exposing this behavior in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160739 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
eba2bbb58cafcb1ec0fa50d5e8a1c6a8cac2f780 25-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify two-address constraints more carefully.

Include <undef> operands and virtual registers after leaving SSA form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160734 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
ea0ca846478b8296f679afa419f2ad4e28073ad5 24-Jul-2012 Craig Topper <craig.topper@gmail.com> Change llvm_unreachable in SplitVectorOperand to report_fatal_error. Keeps release builds from crashing if code uses an intrinsic with an illegal type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160661 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
c8e41c591741b3da1077f7000274ad040bef8002 23-Jul-2012 Sylvestre Ledru <sylvestre@debian.org> Fix a typo (the the => the)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160621 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
electionDAG/ScheduleDAGRRList.cpp
ed1a335ece5c83230af662580e69008ed6fcca17 23-Jul-2012 Nadav Rotem <nadav.rotem@intel.com> Fixed DAGCombine optimizations which generate select_cc for targets
that do not support it (X86 does not lower select_cc).

PR: 13428

Together with Michael Kuperstein <michael.m.kuperstein@intel.com>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160619 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f093393b9a65eae6b04c487784cb8256b15b790e 23-Jul-2012 Craig Topper <craig.topper@gmail.com> Tidy up. Fix indentation and remove trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160617 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
200e04c3fdbdbdb671e29691ee201f34805e4dd1 23-Jul-2012 Craig Topper <craig.topper@gmail.com> Change llvm_unreachable in SplitVectorResult to report_fatal_error. Keeps release builds from crashing if code uses an intrinsic with an illegal type. For instance 256-bit AVX intrinsics without having AVX enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160616 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
e288cd100f86631ec0ade2a85930397a4ea7b21e 21-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove unused private member variables uncovered by the recent changes to clang's -Wunused-private-field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160583 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
smPrinter/DwarfException.h
tackSlotColoring.cpp
2ec0cda5d5ede57022eb7dc5e7170f4fa420cb2b 20-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid folding loads that are unsafe to move.

LiveRangeEdit::foldAsLoad() can eliminate a register by folding a load
into its only use. Only do that when the load is safe to move, and it
won't extend any live ranges.

This fixes PR13414.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160575 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
c321a20b2e250a755bd06f36d896d00d9fd396ad 20-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Split loop exiting edges more aggressively.

PHIElimination splits critical edges when it predicts it can resolve
interference and eliminate copies. It doesn't split the edge if the
interference wouldn't be resolved anyway because the phi-use register is
live in the critical edge anyway.

Teach PHIElimination to split loop exiting edges with interference, even
if it wouldn't resolve the interference. This removes the necessary
copies from the loop, which is still an improvement from injecting the
copies into the loop.

The test case demonstrates the improvement. Before:

LBB0_1:
cmpb $0, (%rdx)
leaq 1(%rdx), %rdx
movl %esi, %eax
je LBB0_1

After:

LBB0_1:
cmpb $0, (%rdx)
leaq 1(%rdx), %rdx
je LBB0_1

movl %esi, %eax

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160571 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
b97c57a8b7dc268958924b8bcc0e97f70437dff6 20-Jul-2012 Pete Cooper <peter_cooper@apple.com> Fix crash in machine verifier when trying to print the def of a register which has no def

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160531 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
b26e2916c937d03bc2d7e273b2df4ffccdb061b4 19-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Replace some explicit compare loops with std::equal.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160501 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
72ea0c9ffaa1700730c8ce36e9b73aef4b914988 19-Jul-2012 Galina Kistanova <gkistanova@gmail.com> Fixed few warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160493 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
96cb1128528a512f1ef9c28ae5e1b78a98dcc505 19-Jul-2012 Bill Wendling <isanbard@gmail.com> Remove tabs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160475 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineCSE.cpp
achineVerifier.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
argetLoweringObjectFileImpl.cpp
32d75bec4bbbd97b70d887ed3c106951b1d18182 18-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Fix a somewhat nasty crasher in PR13378. This crashes inside of
LiveIntervals due to the two-addr pass generating bogus MI code.

The crux of the issue was a loop nesting problem. The intent of the code
which attempts to transform instructions before converting them to
two-addr form is to defer and reprocess any transformed instructions as
the second processing is likely to have more opportunities to coalesce
copies, etc. Unfortunately, there was one section of processing that was
not deferred -- the INSERT_SUBREG rewriting. Due to quirks of how this
rewriting proceeded, not only did it occur early, it removed the bits of
information needed for the deferred processing to correctly generate the
necessary two address form (specifically inserting a copy), but didn't
trigger any immediate assertions and produced what appeared to be
already valid two-address from code. Thus, the assertion only fired much
later in the pipeline.

The fix is to hoist the transformation logic up layer to where it can
more firmly defer all further processing, and to teach the normal
processing to handle an edge case previously handled as part of the
transformation logic. This edge case (already matched tied register
operands) needs to *not* defer any steps.

As has been brought up repeatedly in the process: wow does this code
need refactoring. I *may* squeeze in some time to at least bring sanity
to this loop... but wow... =]

Thanks to Jakob for helpful hints on the way here, and the review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160443 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4532bf6ecf39d02b60d4c77f807c2f04e51e3583 18-Jul-2012 Nuno Lopes <nunoplopes@sapo.pt> ignore 'invoke @llvm.donothing', but still keep the edge to the continuation BB

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160411 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a9e13ba3c8230073dd1157e4a17ef52906ac6cb8 17-Jul-2012 Evan Cheng <evan.cheng@apple.com> Back out r160101 and instead implement a dag combine to recover from instcombine transformation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160387 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a532bcec2f8b766ec2b623c715fab662e2d2e31d 17-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add some trace output to TwoAddressInstructionPass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160380 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
de39671ebb1151b15bb7f3703fdc78061c68763e 17-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
5589a69f0abd39e583786515cf6c9170554dc8de 17-Jul-2012 Nadav Rotem <nadav.rotem@intel.com> Fix a crash in the legalization of large vectors.
When truncating a result of a vector that is split we need
to use the result of the split vector, and not re-split the dead node.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
f5c0539092996771824893309f311378e719e32e 17-Jul-2012 Evan Cheng <evan.cheng@apple.com> Implement r160312 as target indepedenet dag combine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160354 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b4d4959fdda7afdf7994d3cb0b20c052ad0c7895 17-Jul-2012 Evan Cheng <evan.cheng@apple.com> Make sure constant bitwidth is <= 64 bit before calling getSExtValue().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
70e10d3fe4c5df189348f64fce56254a5a32b51c 17-Jul-2012 Evan Cheng <evan.cheng@apple.com> This is another case where instcombine demanded bits optimization created
large immediates. Add dag combine logic to recover in case the large
immediates doesn't fit in cmp immediate operand field.

int foo(unsigned long l) {
return (l>> 47) == 1;
}

we produce

%shr.mask = and i64 %l, -140737488355328
%cmp = icmp eq i64 %shr.mask, 140737488355328
%conv = zext i1 %cmp to i32
ret i32 %conv

which codegens to

movq $0xffff800000000000,%rax
andq %rdi,%rax
movq $0x0000800000000000,%rcx
cmpq %rcx,%rax
sete %al
movzbl %al,%eax
ret

TargetLowering::SimplifySetCC would transform
(X & -256) == 256 -> (X >> 8) == 1
if the immediate fails the isLegalICmpImmediate() test. For x86,
that's immediates which are not a signed 32-bit immediate.

Based on a patch by Eli Friedman.

PR10328
rdar://9758774


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160346 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
c76fa8937d483ae83f94d0793254dbab78877687 16-Jul-2012 Nadav Rotem <nadav.rotem@intel.com> Minor cleanup and docs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
7ee0e5ae6093dba18ecc5eaafb91e8fa82f4c409 16-Jul-2012 Nadav Rotem <nadav.rotem@intel.com> Make ComputeDemandedBits return a deterministic result when computing an AssertZext value.
In the added testcase the constant 55 was behind an AssertZext of type i1, and ComputeDemandedBits
reported that some of the bits were both known to be one and known to be zero.

Together with Michael Kuperstein <michael.m.kuperstein@intel.com>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
46646572f76513e39bcdd0e06c66668ec1caf5bc 15-Jul-2012 Nadav Rotem <nadav.rotem@intel.com> Fix a bug in the scalarization of BUILD_VECTOR. BUILD_VECTOR elements may be wider than the output element type. Make sure to trunc them if needed.

Together with Michael Kuperstein <michael.m.kuperstein@intel.com>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160235 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
b87bdac6a3de4ab83e23bf808f990e4bb7eade5e 15-Jul-2012 Nadav Rotem <nadav.rotem@intel.com> Refactor the code that checks that all operands of a node are UNDEFs.
Add a micro-optimization to getNode of CONCAT_VECTORS when both operands are undefs.
Can't find a testcase for this because VECTOR_SHUFFLE already handles undef operands, but Duncan suggested that we add this.

Together with Michael Kuperstein <michael.m.kuperstein@intel.com>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160229 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
7d532c8d0742ebd107e5fd58ae23ecea5c55d19e 15-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Reapply r160194, switching to use LV information for finding local kills.

The notable fix is to look at any dependencies attached to the kill
instruction (or other instructions between MI nad the kill) where the
dependencies are specific to the register in question.

The old code implicitly handled this by rejecting the transform if *any*
other uses were found within the block, but after the start point. The
new code directly finds the kill, and has to re-use the existing
dependency scan to check for non-kill uses.

This was caught by self-host, but I found the bug via inspection and use
of absurd assert scaffolding to compute the kills in two ways and
compare them. So I have no useful testcase for this other than
"bootstrap". I'd work harder to reduce a test case if this particular
code were likely to live for a long time.

Thanks to Benjamin Kramer for reviewing the fix itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160228 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b7e230d999deec5c90ee51a7c2bbc6ee5be0a914 14-Jul-2012 Nadav Rotem <nadav.rotem@intel.com> Add a dagcombine optimization to convert concat_vectors of undefs into a single undef.
The unoptimized concat_vectors isd prevented the canonicalization of the vector_shuffle node.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160221 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
27982e110817e373ed85064eb844bbaec0fe6771 14-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Account for early-clobber reload instructions.

No test case, there are no in-tree targets that require this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160219 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
c8981f2e3d6237742714883256cd778acf0eeebe 14-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more verbose when detecting dominance problems.

Catch uses of undefined physregs that haven't been added to basic block
live-in lists. Run the verifier to pinpoint the problem.

Also run the verifier when a virtual register use is not jointly
dominated by defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160207 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeCalc.cpp
iveRangeCalc.h
cb41e5f6f28da51e37eb072e4bf69143fe29dacc 14-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Revert r160194, which switched to use LV information for finding local
kills.

This is causing miscompiles that I'm working on tracking down.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160196 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
558341590938dec2bf0eb1679b7a990afa61d676 13-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Use the LiveVariables information to efficiently get local kills. This
removes the largest scaling problem in the test cases from PR13225 when
ASan is switched to insert basic blocks in the natural CFG order.

It may also solve some scaling problems for more normal code with large
numbers of basic blocks and variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160194 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
f51f1a7dd60d1f7ceab2d5819a44ffe860db0389 13-Jul-2012 Jim Grosbach <grosbach@apple.com> Provide function name in 'Cannot select' fatal error.

When dumping the DAG for a fatal 'Cannot select' back-end error, also
provide the name of the function the construct is in. Useful when dealing
with large testcases, as the next step is to llvm-extract the function
in question to get a small(er) testcase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160152 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5cf55e1c6a22ae066db5066fdc69f99564ace8ea 13-Jul-2012 Eric Christopher <echristo@apple.com> The end of the prologue should be marked with is_stmt.
Fixes PR13303.

Patch by Paul Robinson!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160148 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4e8982a34da69effe23ce9c553680b19d7d57551 12-Jul-2012 Duncan Sands <baldrick@free.fr> The result type of EXTRACT_VECTOR_ELT doesn't have to match the element type of
the input vector, it can be bigger (this is helpful for powerpc where <2 x i16>
is a legal vector type but i16 isn't a legal type, IIRC). However this wasn't
being taken into account by ExpandRes_EXTRACT_VECTOR_ELT, causing PR13220.
Lightly tweaked version of a patch by Michael Liao.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160116 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
875913439ca8f073852ec8315d3b32b875184582 11-Jul-2012 Evan Cheng <evan.cheng@apple.com> InstrEmitter::EmitSubregNode() optimize extract_subreg in this case:

r1025 = s/zext r1024, 4
r1026 = extract_subreg r1025, 4

to a copy:
r1026 = copy r1024

This is correct. However it uses TII->isCoalescableExtInstr() which can return
true for instructions which essentially does a sext_in_reg so this can end up
with an illegal copy where the source and destination register classes do not
match. Add a check to avoid it. Sorry, no test case possible at this time.

rdar://11849816


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160059 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
4b24bf8da340ba30585777ab656c83752a5e3e6a 11-Jul-2012 Nadav Rotem <nadav.rotem@intel.com> Rename many of the Tmp1, Tmp2, Tmp3 variables to names such as Chain, Value, Ptr, etc.
No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160042 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a67306d21f235f14d99d31fa211536ad652086b1 11-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160040 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b6e89f0471c70215565f3d236d09732cd184c0ee 11-Jul-2012 Nadav Rotem <nadav.rotem@intel.com> Refactor the DAG Legalizer by extracting the legalization of
Load and Store nodes into their own functions.
No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160037 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
45299995d6a1273d644d127b4aeaf4e7eb365292 11-Jul-2012 Owen Anderson <resistor@mac.com> Only apply the SETCC+SITOFP -> SELECTCC optimization when the SETCC returns an MVT::i1, i.e. before type legalization.
This is a speculative fix for a problem on Mips reported by Akira Hatanaka.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160036 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
47730a774dd6392744ee62c7385665c780e1c4e1 11-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Require and preserve LoopInfo for early if-conversion.

It will surely be needed by heuristics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160027 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
4e996de58cfad27033165d8feb8f296b8cbe20ca 11-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Teach the LiveInterval::join function to use the fast merge algorithm,
generalizing its implementation sufficiently to support this value
number scenario as well.

This cuts out another significant performance hit in large functions
(over 10k basic blocks, etc), especially those with "natural" CFG
structures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160026 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
1f523dc45e29874bf8101e50b42ba707ffc8aff9 11-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Run early if-conversion in domtree post-order.

This ordering allows nested if-conversion without using a work list, and
it makes it possible to update the dominator tree on the fly as well.

Any erased basic blocks will always be dominated by the current
post-order position, so the domtree can be pruned without invalidating
the iterator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160025 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
1b8da1d8f14f91b88ff99d3bd5ec4d904cdf21b7 10-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Fix a bug where I didn't test for an empty range before inspecting the
back of it.

I don't have anything even remotely close to a test case for this. It
only broke two build bots, both of them doing bootstrap builds, one of
them a dragonegg bootstrap. It doesn't break for me when I bootstrap
either. It doesn't reproduce every time or on many machines during the
bootstrap. Many thanks to Duncan Sands who got the exact command (and
stage of the bootstrap) which failed on the dragonegg bootstrap and
managed to get it to trigger under valgrind with debug symbols. The fix
was then found by inspection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159993 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
2dd83eb1ab3b7d7cdef2e244317caefd78be8a45 10-Jul-2012 Nadav Rotem <nadav.rotem@intel.com> Improve the loading of load-anyext vectors by allowing the codegen to load
multiple scalars and insert them into a vector. Next, we shuffle the elements
into the correct places, as before.
Also fix a small dagcombine bug in SimplifyBinOpWithSameOpcodeHands, when the
migration of bitcasts happened too late in the SelectionDAG process.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159991 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e585e75612ef5fd32e2bb2c9f635496791a20f8b 10-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Add an efficient merge operation to LiveInterval and use it to avoid
quadratic behavior when performing pathological merges. Fixes the core
element of PR12652.

There is only one user of addRangeFrom left: join. I'm hoping to
refactor further in a future patch and have join use this merge
operation as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159982 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
261b6330896736f674bdb2dd4556a0483f3cfe8d 10-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Teach LiveIntervals how to verify themselves and start using it in some
of the trick merge routines. This adds a layer of testing that was
necessary when implementing more efficient (and complex) merge logic for
this datastructure.

No functionality changed here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159981 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
70cb1778b90bb21ff8d86cd094797b9e8d3613fd 09-Jul-2012 Andrew Trick <atrick@apple.com> indentation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159958 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
d9bf71fdd26475f4629ef8861debfd2c621a372f 09-Jul-2012 Owen Anderson <resistor@mac.com> Teach the DAG combiner to turn sitofp/uitofp from i1 into a conditional move, since there are only two possible values.
Previously, this would become an integer extension operation, followed by a real integer->float conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2661b411ccc81b1fe19194d3f43b2630cbef3f28 07-Jul-2012 Andrew Trick <atrick@apple.com> I'm introducing a new machine model to simultaneously allow simple
subtarget CPU descriptions and support new features of
MachineScheduler.

MachineModel has three categories of data:
1) Basic properties for coarse grained instruction cost model.
2) Scheduler Read/Write resources for simple per-opcode and operand cost model (TBD).
3) Instruction itineraties for detailed per-cycle reservation tables.

These will all live side-by-side. Any subtarget can use any
combination of them. Instruction itineraries will not change in the
near term. In the long run, I expect them to only be relevant for
in-order VLIW machines that have complex contraints and require a
precise scheduling/bundling model. Once itineraries are only actively
used by VLIW-ish targets, they could be replaced by something more
appropriate for those targets.

This tablegen backend rewrite sets things up for introducing
MachineModel type #2: per opcode/operand cost model.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159891 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
coreboardHazardRecognizer.cpp
electionDAG/ResourcePriorityQueue.cpp
argetInstrInfoImpl.cpp
6016a4a1627726b7419e1c95c6c3e67138100d23 06-Jul-2012 Chad Rosier <mcrosier@apple.com> Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159839 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
fd065bbed1d731b49b1b4a5c4c050ce461be80b4 06-Jul-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Tell fast-isel to do nothing with the new donothing intrinsic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159837 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
b67bd33e8e2f29c3d6adb10c4f3a02c79c61af08 06-Jul-2012 Alexey Samsonov <samsonov@google.com> Fix PR13202 and a regtest.
DwarfDebug class could generate the same (inlined) DIVariable twice:
1) when trying to find abstract debug variable for a concrete inlined instance.
2) when explicitly collecting info for variables that were optimized out.

This change makes sure that this duplication won't happen and makes
Clang pass "gdb.opt/inline-locals" test from gdb testsuite.

Reviewed by Eric Christopher.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159811 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
86fc3100b552c8d400160581c2a00f2fd7b83b45 06-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add some comments suggested in code review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159800 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
95c88b8cb210ffad127519a143fade685ab21f5b 05-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Optimize extendIntervalEndTo a tiny bit by saving one call through the
vector erase. No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159746 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
d862d697d2d6f7d4e8fdd0b70686a6695e04d362 05-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Finish fixing the MachineOperand hashing, providing a nice modern
hash_value overload for MachineOperands. This addresses a FIXME
sufficient for me to remove it, and cleans up the code nicely too.

The important changes to the hashing logic:
- TargetFlags are now included in all of the hashes. These were complete
missed.
- Register operands have their subregisters and whether they are a def
included in the hash.
- We now actually hash all of the operand types. Previously, many
operand types were simply *dropped on the floor*. For example:
- Floating point immediates
- Large integer immediates (>64-bit)
- External globals!
- Register masks
- Metadata operands
- It removes the offset from the block-address hash; I'm a bit
suspicious of this, but isIdenticalTo doesn't consider the offset for
black addresses.

Any patterns involving these entities could have triggered extreme
slowdowns in MachineCSE or PHIElimination. Let me know if there are PRs
you think might be closed now... I'm looking myself, but I may miss
them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159743 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
483c54b811badbfcaa040cdb6d84cf564afe75cf 05-Jul-2012 Duncan Sands <baldrick@free.fr> All cases are covered, no need for a default. This deals with the
corresponding clang warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b8087451cadab83332d6ba9c65227b6e925ea38f 05-Jul-2012 Chandler Carruth <chandlerc@gmail.com> The hash function for MI expressions, used by MachineCSE, is really
broken. This patch fixes the superficial problems which lead to the
intractably slow compile times reported in PR13225.

The specific issue is that we were failing to include the *offset* of
a global variable in the hash code. Oops. This would in turn cause all
MIs which were only distinguishable due to operating on different
offsets of a global variable to produce identical hash functions. In
some of the test cases attached to the PR I saw hash table activity
where there were O(1000) probes-per-lookup *on average*. A very few
entries were responsible for most of these probes.

There is still quite a bit more to do here. The ad-hoc layering of data
in MachineOperands makes them *extremely* brittle to hash correctly.
We're missing quite a few other cases, the only ones I've fixed here are
the specific MO types which were allowed through the assert() in
getOffset().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159741 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e7de3b29f79b147a8f06e6edff0c54149d638139 05-Jul-2012 Duncan Sands <baldrick@free.fr> Use the right kind of booleans: we were emitting 0/1 booleans, instead of 0/-1
booleans. Patch by James Benton.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159739 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7a7a6db6d79b53fdf01bbd9519e669424c3ea7a0 05-Jul-2012 Nick Lewycky <nicholas@mxc.ca> Remove ParentMap. You can just ask the domnode for its parent. No functionality
change.

Move the "Not profitable, avoid CSE!" debug message next to where we fail the
check for profitability and use a different message for avoiding CSE due to
being in different register classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159729 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
33a537a5c41e60507ac9a4ea987c1a395cbb74fe 05-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow trailing physreg RegisterSDNode operands on non-variadic instructions.

Also allow trailing register mask operands on non-variadic both
MachineSDNodes and MachineInstrs.

The extra physreg RegisterSDNode operands are added to the MI as
<imp-use> operands. This makes it possible to have non-variadic call
instructions.

Call and return instructions really are non-variadic, the argument
registers should only be used implicitly - they are not part of the
encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159727 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
9389ec7375eb184ad017b7a1f09600cc4c2be4cd 05-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Print SlotIndexes when available for -print-machineinstrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159726 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionPrinterPass.cpp
9e51b14faa55225a3175c4af9c69f5a45dd9a646 04-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow multiple terminators to read virtual registers.

Find the kill as the last terminator to read SrcReg.

Patch by Philipp Brüschweiler!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159722 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
f86c00f1f89082c800dbb78870fc5537eb3702f6 04-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make sure -print-machineinstrs applies to the first pass as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159720 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
66d79cefcb742bdbfef8823ac8491a7ebc4af5a7 04-Jul-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Reverted r156659, due to probable performance regressions, DenseMap should be used here:
IntegersSubsetMapping
- Replaced type of Items field from std::list with std::map. In neares future I'll test it with DenseMap and do the correspond replacement
if possible.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
caba263c8e28474e3d6feb307af8fc4445645962 04-Jul-2012 Eric Christopher <echristo@apple.com> Reduce some code duplication.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159701 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
00f43076a3d9cc76ef4736cf3e7215e19b05f6d5 04-Jul-2012 Matt Beaumont-Gay <matthewbg@google.com> Fix some ascii art in a comment to not have trailing backslashes (inspiration
from IfConversion.cc), and fix some spelling and grammar in the surrounding
prose.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159699 91177308-0d34-0410-b5e6-96231b3b80d8
arlyIfConversion.cpp
33242fd3ed5586091e73254b58dd1825e9d53c60 04-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an experimental early if-conversion pass, off by default.

This pass performs if-conversion on SSA form machine code by
speculatively executing both sides of the branch and using a cmov
instruction to select the result. This can help lower the number of
branch mispredictions on architectures like x86 that don't have
predicable instructions.

The current implementation is very aggressive, and causes regressions on
mosts tests. It needs good heuristics that have yet to be implemented.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159694 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
arlyIfConversion.cpp
asses.cpp
6a590737355e82d83729198715e3fff11b0c6f9e 03-Jul-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Part of r159527. Splitted into series of patches and gone with fixed PR13256:
IntegersSubsetMapping
- Replaced type of Items field from std::list with std::map. In neares future I'll test it with DenseMap and do the correspond replacement
if possible.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159659 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c723eb1aef817d47feec620933ee1ec6005cdd14 03-Jul-2012 Eric Christopher <echristo@apple.com> Revert "IntRange:" as it appears to be breaking self hosting.

This reverts commit b2833d9dcba88c6f0520cad760619200adc0442c.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159618 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6068c48498e9af1076b1b5f2499e176e7e9c0f34 03-Jul-2012 Chandler Carruth <chandlerc@gmail.com> All glory to address sanitizer. ;]

It appears to have caught a use-after-free introduced as by r159567
and/or friends which call 'addPass' from many more places. The bug in
'addPass' doesn't appear to be new, and was spotted by inspection when
ASan shown a bright light of a stacktrace at these functions.

Hopefully this will fix the ASan failure -- I have no test case other
than running an ASan-built clang over the test suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159614 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
769951f6cc6323821ce1e9f46a37817a541c884f 03-Jul-2012 Evan Cheng <evan.cheng@apple.com> Target option DisableJumpTables is a gross hack. Move it to TargetLowering instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159611 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
3d4ed0857437c2bbea4dcabc949d180860433d1d 02-Jul-2012 Andrew Trick <atrick@apple.com> misched: allow NULL InstrItineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159599 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
9eb4f8a3e665e0fe37509e632b97877b29b3c106 02-Jul-2012 Eric Christopher <echristo@apple.com> Turn an assert into an error to make it a bit more friendly.

Part of rdar://6880388 and rdar://11766377

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159590 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
30a507a1f5d6a5646dd3481eba6958424415c886 02-Jul-2012 Bob Wilson <bob.wilson@apple.com> Extend TargetPassConfig to allow running only a subset of the normal passes.

This is still a work in progress but I believe it is currently good enough
to fix PR13122 "Need unit test driver for codegen IR passes". For example,
you can run llc with -stop-after=loop-reduce to have it dump out the IR after
running LSR. Serializing machine-level IR is not yet supported but we have
some patches in progress for that.

The plan is to serialize the IR to a YAML file, containing separate sections
for the LLVM IR, machine-level IR, and whatever other info is needed. Chad
suggested that we stash the stop-after pass in the YAML file and use that
instead of the start-after option to figure out where to restart the
compilation. I think that's a great idea, but since it's not implemented yet
I put the -start-after option into this patch for testing purposes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159570 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
asses.cpp
6b2bb15bf7c77918adc433646846f6847d421257 02-Jul-2012 Bob Wilson <bob.wilson@apple.com> Move assertion with TargetPassConfig's Initialized flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159569 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
3fb99a73686c39d9855b3f8881add977af3868cb 02-Jul-2012 Bob Wilson <bob.wilson@apple.com> Consistently use AnalysisID types in TargetPassConfig.

This makes it possible to just use a zero value to represent "no pass", so
the phony NoPassID global variable is no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159568 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
564fbf6aff8fb95646a1290078a37c2d4dbe629f 02-Jul-2012 Bob Wilson <bob.wilson@apple.com> Add all codegen passes to the PassManager via TargetPassConfig.

This is a preliminary step toward having TargetPassConfig be able to
start and stop the compilation at specified passes for unit testing
and debugging. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159567 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
asses.cpp
5f917cd3fada4507c0f4b718dd6af24b5e7086f1 02-Jul-2012 Manman Ren <mren@apple.com> Added assertion in getVRegDef of MachineRegisterInfo to make sure the virtual
register does not have multiple definitions. Modified TwoAddressInstructionPass
to use getUniqueVRegDef instead of getVRegDef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159545 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
woAddressInstructionPass.cpp
218ee74a011c0d350099c452810da0bd57a15047 02-Jul-2012 Andrew Trick <atrick@apple.com> Reapply "Make NumMicroOps a variable in the subtarget's instruction itinerary."

Reapplies r159406 with minor cleanup. The regressions appear to have been spurious.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159541 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
b2833d9dcba88c6f0520cad760619200adc0442c 02-Jul-2012 Stepan Dyatkovskiy <stpworld@narod.ru> IntRange:
- Changed isSingleNumber method behaviour. Now this flag is calculated on demand.
IntegersSubsetMapping
- Optimized diff operation.
- Replaced type of Items field from std::list with std::map.
- Added new methods:
bool isOverlapped(self &RHS)
void add(self& RHS, SuccessorClass *S)
void detachCase(self& NewMapping, SuccessorClass *Succ)
void removeCase(SuccessorClass *Succ)
SuccessorClass *findSuccessor(const IntTy& Val)
const IntTy* getCaseSingleNumber(SuccessorClass *Succ)
IntegersSubsetTest
- DiffTest: Added checks for successors.
SimplifyCFG
Updated SwitchInst usage (now it is case-ragnes compatible) for
- SimplifyEqualityComparisonWithOnlyPredecessor
- FoldValueComparisonIntoPredecessors



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159527 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9c3d5a70f40f9e7bb90f3cb8ec1d87cff6e3f0ae 01-Jul-2012 Rafael Espindola <rafael.espindola@gmail.com> Now that RegistersDefinedFromSameValue handles one instruction being an
implicit_def, the other instruction can be anything, including instructions
that define multiple values. Be careful about that and don't assume what operand
0 is.
Fixes pr13249.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159509 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
682e8d05c7def2b82edc354abf1d38df607d39c8 30-Jun-2012 Rafael Espindola <rafael.espindola@gmail.com> Handle implicit_defs in the register coalescer. I am still trying to produce
a reduced testcase, but this fixes pr13209.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159479 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
de7266c611b37ec050efb53b73166081a98cea13 29-Jun-2012 Manman Ren <mren@apple.com> Add SrcReg2 to analyzeCompare and optimizeCompareInstr to handle Compare
instructions with two register operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159465 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
8ccaad526abdf39141b11b6d480b027d73a2d2a8 29-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Clear kill flags in InstrEmitter::EmitSubregNode().

When a local virtual register is made global, make sure to clear any
existing kill flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
bb0721680c329625f47c090f48dcafb2fe14101c 29-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Check for extra kill flags on live-out virtual registers.

This would previously get reported as the misleading "Virtual register
def doesn't dominate all uses."

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159460 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
54d69668b22b8c37aa6e45f14445f3988cc430d4 29-Jun-2012 Manman Ren <mren@apple.com> Add getUniqueVRegDef to MachineRegisterInfo.
This comes in handy during peephole optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159453 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
e2ec14090999a45583ed0f6e6f1a1effc510f4f3 29-Jun-2012 Alexey Samsonov <samsonov@google.com> Cleanup in DwarfDebug - fix a typo and remove two unused functions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159433 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
06cb8ed00696eb14d1b831921452e50ec0568ea2 29-Jun-2012 Chandler Carruth <chandlerc@gmail.com> Move llvm/Support/IRBuilder.h -> llvm/IRBuilder.h

This was always part of the VMCore library out of necessity -- it deals
entirely in the IR. The .cpp file in fact was already part of the VMCore
library. This is just a mechanical move.

I've tried to go through and re-apply the coding standard's preferred
header sort, but at 40-ish files, I may have gotten some wrong. Please
let me know if so.

I'll be committing the corresponding updates to Clang and Polly, and
Duncan has DragonEgg.

Thanks to Bill and Eric for giving the green light for this bit of cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159421 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
16eeb6f5ebc978b03745177b9ac82684ab1c6932 29-Jun-2012 Bill Wendling <isanbard@gmail.com> The DIBuilder class is just a wrapper around debug info creation
(a.k.a. MDNodes). The module doesn't belong in Analysis. Move it to the VMCore
instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159414 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
3e4b3b9043b1ced24e07d8d1174feeee06c6912e 29-Jun-2012 Andrew Trick <atrick@apple.com> Revert "Make NumMicroOps a variable in the subtarget's instruction itinerary."

This reverts commit r159406. I noticed a performance regression so I'll back out for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159411 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
5559ffae2beb0adc868a0839a3bb560a063cc3e1 29-Jun-2012 Andrew Trick <atrick@apple.com> misched: avoid scheduling instructions that can't be dispatched.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159408 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
7f8c74cfaebb4b58b283a1875d3205704ce5be07 29-Jun-2012 Andrew Trick <atrick@apple.com> misched: count micro-ops toward the issue limit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159407 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
0d9513c74f3e4c019406273cce49e43508dc4dcf 29-Jun-2012 Andrew Trick <atrick@apple.com> Make NumMicroOps a variable in the subtarget's instruction itinerary.

The TargetInstrInfo::getNumMicroOps API does not change, but soon it
will be used by MachineScheduler. Now each subtarget can specify the
number of micro-ops per itinerary class. For ARM, this is currently
always dynamic (-1), because it is used for load/store multiple which
depends on the number of register operands.

Zero is now a valid number of micro-ops. This can be used for
nop pseudo-instructions or instructions that the hardware can squash
during dispatch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159406 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
85b408991aff28ffa4e9e113a5a8a35b0db505c2 29-Jun-2012 Nuno Lopes <nunoplopes@sapo.pt> add a new @llvm.donothing intrinsic that, well, does nothing, and teach CodeGen to ignore calls to it

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
926dc168c893e1848a18e45fd78f9b99d6f4cd5d 28-Jun-2012 Jim Grosbach <grosbach@apple.com> 'Promote' vector [su]int_to_fp should widen elements.

Teach vector legalization how to honor Promote for int to float
conversions. The code checking whether to promote the operation knew
to look at the operand, but the actual promotion code didn't. This
fixes that. The operand is promoted up via [zs]ext.

rdar://11762659

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
0bcbd1df7a204e1e512f1a27066d725309de1b13 28-Jun-2012 Bill Wendling <isanbard@gmail.com> Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and
include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h.

The reasoning is because the DebugInfo module is simply an interface to the
debug info MDNodes and has nothing to do with analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159312 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
exicalScopes.cpp
iveDebugVariables.cpp
achineFunction.cpp
achineInstr.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGDumper.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
34f5a2b596236a5452ddc664066138ca7a0c7af2 26-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow targets to inject passes before the virtual register rewriter.

Such passes can be used to tweak the register assignments in a
target-dependent way, for example to avoid write-after-write
dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159209 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
c04f816afd1ad9a1c3746f894556b6bea0cac8fc 26-Jun-2012 Chandler Carruth <chandlerc@gmail.com> Update a bunch of stale comments that dated from when this folled the
very first (and worst) placement algorithm. These should now more
accurately reflect the reality of the pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159185 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
c9b1e25493b393013b28e5d457f2fb2845a4dd9f 26-Jun-2012 Andrew Trick <atrick@apple.com> Enable the new LoopInfo algorithm by default.

The primary advantage is that loop optimizations will be applied in a
stable order. This helps debugging and unit test creation. It is also
a better overall implementation without pathologically bad performance
on deep functions.

On large functions (llvm-stress --size=200000 | opt -loops)
Before: 0.1263s
After: 0.0225s

On deep functions (after tweaking llvm-stress, thanks Nadav):
Before: 0.2281s
After: 0.0227s

See r158790 for more comments.

The loop tree is now consistently generated in forward order, but loop
passes are applied in reverse order over the program. If we have a
loop optimization that prefers forward order, that can easily be
achieved by adding a different type of LoopPassManager.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159183 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
16436dffb50fac4677c7162639f8da0b73eb4e99 26-Jun-2012 Evan Cheng <evan.cheng@apple.com> Make sure type is not extended or untyped before create a constant of the type. No test case. Found by inspection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159179 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a4e6397fd9f2fbbd6affdfb0738813918cb21da0 25-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Enforce stricter liveness rules for PHIs.

Verify that all paths from the entry block to a virtual register read
pass through a def. Enable this check even when MRI->isSSA() is false.

Verify that the live range of a virtual register is live out of all
predecessor blocks, even for PHI-values.

This requires that PHIElimination sometimes inserts IMPLICIT_DEF
instruction in predecessor blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159150 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
5984d2b31fe3c69e46d2b81439a8c3ef0bdf9a91 25-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Run ProcessImplicitDefs on SSA form where it can be much simpler.

Implicitly defined virtual registers can simply have the <undef> bit set
on all uses, and copies can be turned into implicit defs recursively.

Physical registers are a bit trickier. We handle the common case where a
physreg def is used by a nearby instruction in the same basic block. For
more complicated cases, just leave the IMPLICIT_DEF instruction in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159149 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
rocessImplicitDefs.cpp
5213750e27c2f9fd7f5a0884c4a15f3b5e3aa843 25-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach PHIElimination to handle <undef> operands.

When a PHI use is <undef>, don't emit a copy in the predecessor block,
but insert an IMPLICIT_DEF instruction instead. This ensures that
virtual register uses are always jointly dominated by defs, even if some
of them are IMPLICIT_DEF.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159121 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
351c8818f2ff89d567094f46c3e220d6501ec3fa 25-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle <undef> operands in TwoAddressInstructionPass.

When the source register to a 2-addr instruction is undefined, there is
no need to attempt any transformations - simply replace the source
register with the destination register.

This also comes up when lowering IMPLICIT_DEF instructions - make sure
the <undef> flag is moved to the new partial register def operand:

%vreg8<def> = INSERT_SUBREG %vreg9<undef>, %vreg0<kill>, sub_16bit
rewrite undef:
%vreg8<def> = INSERT_SUBREG %vreg8<undef>, %vreg0<kill>, sub_16bit
convert to:
%vreg8:sub_16bit<def,read-undef> = COPY %vreg0<kill>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159120 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
d5c407d2d01ff8797c29343e4da5f765fe52fb5f 24-Jun-2012 NAKAMURA Takumi <geek4civic@gmail.com> llvm/lib: [CMake] Add explicit dependency to intrinsics_gen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159112 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
electionDAG/CMakeLists.txt
b49998d76cb4e414d13d60116adf13b085d85dc1 24-Jun-2012 Pete Cooper <peter_cooper@apple.com> DAG legalisation can now handle illegal fma vector types by scalarisation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159092 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
7806c0778f22552ebe6711f3dc43887dc6097bfc 23-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach LiveVariables to handle <undef> operands.

It's simple: Don't treat <undef> operands as uses, and don't assume a
virtual register has a defining instruction unless a real use has been
seen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159061 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
0cafa139c01aa9d5072b185d686a05b9d8ab1ee7 23-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove ProcessImplicitDefs.h which was unused.

The ProcessImplicitDefs class can be local to its implementation file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159041 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
f935e945c0fc0444324347882ac41104b12204c2 23-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Also verify the def index for early clobbers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159039 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
bfd752f310078561de07850ce66213c4579a0d7e 22-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete a boring statistic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159030 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7fa6784296e6bc1aa4e8ec3664e58247893c21a2 22-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Store live intervals in an IndexedMap.

It is both smaller and faster than DenseMap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159029 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b460a3382961c5be9952a75d46228f624edbd39f 22-Jun-2012 Hal Finkel <hfinkel@anl.gov> Revert r158679 - use case is unclear (and it increases the memory footprint).

Original commit message:
Allow up to 64 functional units per processor itinerary.

This patch changes the type used to hold the FU bitset from unsigned to uint64_t.
This will be needed for some upcoming PowerPC itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159027 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
coreboardHazardRecognizer.cpp
04ce06dc4c9dff4ff7a8b97079e3cbb7b60da3ab 22-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a crash in --debug code.

Don't try to print out the live range of a physreg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159021 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
b150930910a254377a62ed74af981c37eafe8fcb 22-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't depend on live ranges being present.

DBG_VALUE instructions could be referring to non-existing virtual
registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159020 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
e024874d22c8f6acc4f54eb6183f70f6681f23ac 22-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify handleMove() a bit.

There is no need to check for physreg live ranges. They don't exist any
more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159019 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
27b7669a6058235eec494ea30d0d62b7146e0eb4 22-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop computing physreg live ranges.

Everyone is using on-demand regunit ranges now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159018 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e6d21144054c7b7e0445307f58f703b08d189d75 22-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove some redundant LIS->hasInterval() checks.

These functions only operate on virtual registers now, and they all have
live ranges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159015 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
834a9cdbb78c1a16c8ceecb018a324a3ba31c365 22-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use MRI::isConstantPhysReg() to check remat feasibility.

Don't depend on LiveIntervals::hasInterval() to determine if a physreg
is reserved and constant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159013 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
e8a0a1286417e73f4b2bffe21ae45882701e703f 22-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use regunit liveness to guide LiveDebugVariables.

This should produce the same results as using physreg liveness directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159009 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
241d0209a765c97c684b120527e185f17723f650 22-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove LiveIntervals::trackingRegUnits().

With regunit liveness permanently enabled, this function would always
return true.

Also remove now obsolete code for checking physreg interference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159006 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
9cfc799171171e0cc26f64a60ba36bef8e889556 22-Jun-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove another duplicated variable. We only need one to tell us if the linker
knows dwarf or not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158993 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2241e51406f7bae369d6103cf3464e70f74c4af9 22-Jun-2012 Rafael Espindola <rafael.espindola@gmail.com> Fix a FIXME: DwarfRequiresRelocationForSectionOffset is the same as
DwarfUsesRelocationsAcrossSections.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158992 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ffccd923101ae177c1a2c407618d8f03a312d69b 22-Jun-2012 Nick Lewycky <nicholas@mxc.ca> Emit relocations for DW_AT_location entries on systems which need it. This is
a recommit of r127757. Fixes PR9493. Patch by Paul Robinson!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158957 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
e0231413225cf47aaf3238bf21afd0d59025028d 22-Jun-2012 Lang Hames <lhames@gmail.com> Rename -allow-excess-fp-precision flag to -fuse-fp-ops, and switch from a
boolean flag to an enum: { Fast, Standard, Strict } (default = Standard).

This option controls the creation by optimizations of fused FP ops that store
intermediate results in higher precision than IEEE allows (E.g. FMAs). The
behavior of this option is intended to match the behaviour specified by a
soon-to-be-introduced frontend flag: '-ffuse-fp-ops'.

Fast mode - allows formation of fused FP ops whenever they're profitable.

Standard mode - allow fusion only for 'blessed' FP ops. At present the only
blessed op is the fmuladd intrinsic. In the future more blessed ops may be
added.

Strict mode - allow fusion only if/when it can be proven that the excess
precision won't effect the result.

Note: This option only controls formation of fused ops by the optimizers. Fused
operations that are explicitly requested (e.g. FMA via the llvm.fma.* intrinsic)
will always be honored, regardless of the value of this option.

Internally TargetOptions::AllowExcessFPPrecision has been replaced by
TargetOptions::AllowFPOpFusion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158956 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGBuilder.cpp
4db98becf798a013ee00b82691af154e261d648e 21-Jun-2012 Jack Carter <jcarter@mips.com> The inline asm operand modifier 'n' is suppose
to be generic across architectures. It has the
following description in the gnu sources:

Negate the immediate constant

Several Architectures such as x86 have local implementations
of operand modifier 'n' which go beyond the above description
slightly. This won't affect them.

Affected files:

lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
Added 'n' to the switch cases.

test/CodeGen/Generic/asm-large-immediate.ll
Generic compiled test (x86 for me)

test/CodeGen/Mips/asm-large-immediate.ll
Mips compiled version of the generic one

Contributer: Jack Carter



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158939 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
438c04027bb5f219e8d77770828a555c42fd1d7c 21-Jun-2012 Pete Cooper <peter_cooper@apple.com> Fix potential crash if DAGCombine on stores sees a half type

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158927 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d5e11ad51a3966c0b80ce2119946cd1aa3558aec 21-Jun-2012 Jack Carter <jcarter@mips.com> The inline asm operand modifier 'c' is suppose
to be generic across architectures. It has the
following description in the gnu sources:

Substitute immediate value without immediate syntax

Several Architectures such as x86 have local implementations
of operand modifier 'c' which go beyond the above description
slightly. To make use of the generic modifiers without overriding
local implementation one can make a call to the base class method
for AsmPrinter::PrintAsmOperand() in the locally derived method's
"default" case in the switch statement. That way if it is already
defined locally the generic version will never get called.

This change is needed when test/CodeGen/generic/asm-large-immediate.ll
failed on a native Mips board. The test was assuming a generic
implementation was in place.

Affected files:

lib/Target/Mips/MipsAsmPrinter.cpp:
Changed the default case to call the base method.
lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
Added 'c' to the switch cases.
test/CodeGen/Mips/asm-large-immediate.ll
Mips compiled version of the generic one

Contributer: Jack Carter



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158925 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
8ef0968dc230f6fae8fcbd6dc4a5cb9ccc780b6b 21-Jun-2012 Evan Cheng <evan.cheng@apple.com> Emit a single _udivmodsi4 libcall instead of two separate _udivsi3 and
_umodsi3 libcalls if they have the same arguments. This optimization
was apparently broken if one of the node was replaced in place.
rdar://11714607


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
71b49cb5c73ba912f2fab30f35ed1e43c35a2139 21-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Update regunits in RegisterCoalescer::reMaterializeTrivialDef.

Old code would only update physreg live intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158881 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
0f3c892cdecd6c0978341b7ca5e1abaeafd893ea 21-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove spurious typedefs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158878 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
312244747c329f1d98c05afe78e3c90593e2fcb2 21-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the RenderMachineFunction HTML output pass.

I don't think anyone has been using this functionality for a while, and
it is getting in the way of refactoring now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158876 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
egAllocBasic.cpp
egAllocPBQP.cpp
enderMachineFunction.cpp
enderMachineFunction.h
c4118452bcdae305088e151719abb2a3530caede 21-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the -live-regunits command line option.

Register allocators depend on it being permanently enabled now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158873 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
12a7be9ba4263a283ca14e277a90cb64fe0e6f62 21-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix some more LiveInterval enumerations.

Deterministically enumerate the virtual registers instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158872 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineVerifier.cpp
d4348a2dc24c4fb012c1b9b20e71908f52049283 21-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove LiveIntervalUnions from RegAllocBase.

They are living in LiveRegMatrix now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158868 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.cpp
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
042888db2bb195c86bf34afbb6907d70855d2830 21-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Convert RAGreedy to LiveRegMatrix interference checking.

Stop depending on the LiveIntervalUnions in RegAllocBase, they are about
to be removed.

The changes are mostly replacing register alias iterators with regunit
iterators, and querying LiveRegMatrix instrad of RegAllocBase.

InterferenceCache is converted to work with per-regunit
LiveIntervalUnions, and it checks fixed regunit interference separately,
using the fixed live intervals provided by LiveIntervalAnalysis.

The local splitting helper calcGapWeights() is also considering fixed
regunit interference which is kept on the side now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158867 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.cpp
nterferenceCache.h
iveRegMatrix.h
egAllocGreedy.cpp
812cda9a5cc26b1f8dda6f909bf5062c215b65d7 21-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Convert RABasic to using LiveRegMatrix interference checking.

Stop using the LiveIntervalUnions provided by RegAllocBase, they will be
removed soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158866 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.cpp
egAllocBase.h
egAllocBasic.cpp
797e9a7737136a5e13d9114fe11543da471f9bdc 21-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable register unit liveness by default.

Soon we won't need to compute live intervals for physical registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158865 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3b30bca16f7ab002bcd5058b3f3a044a267541e0 21-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach PBQPBuilder::build() about regunit interference.

Filter out physreg candidates with regunit interferrence.
Also compute regmask interference more efficiently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158864 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
d67582e2767df96610ba8dc1835ad4bf99fc77e8 20-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid iterating with LiveIntervals::iterator.

That is a DenseMap iterator keyed by pointers, so the iteration order is
nondeterministic.

I would like to replace the DenseMap with an IndexedMap which doesn't
allow iteration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158856 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
egAllocBase.cpp
egAllocPBQP.cpp
3affd9e8f366f241adbbc57ef53489ff2052db4f 20-Jun-2012 Pete Cooper <peter_cooper@apple.com> Add users of a MERGE_VALUE node to the worklist to process again when the node is removed. Sorry, no test case. Foudn it by inspection of the code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158839 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7824152557cfe3a366963f504b2b956f853ebc3a 20-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Only update regunit live ranges that have been precomputed.

Regunit live ranges are computed on demand, so when mi-sched calls
handleMove, some regunits may not have live ranges yet.

That makes updating them easier: Just skip the non-existing ranges. They
will be computed correctly from the rescheduled machine code when they
are needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158831 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
2769e9338429377f0d06fb78ec884bf69b0c7d41 20-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158827 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d65e463ff9327d168e8389e5c9a9f16a601be8a5 20-Jun-2012 Hal Finkel <hfinkel@anl.gov> Fix DAGCombine to deal with ext-conversion of pre/post_inc loads.

The test case for this will come with the PPC indexed preinc loads commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158822 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9905dbc3798b262c02637d528131ea536a1614b7 20-Jun-2012 Aaron Ballman <aaron@aaronballman.com> Fixing a compiler warning in MSVC 10.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158820 91177308-0d34-0410-b5e6-96231b3b80d8
coreboardHazardRecognizer.cpp
fdc2d0faf321224393f1a5dbf05c3e3f88bb6e3e 20-Jun-2012 Chandler Carruth <chandlerc@gmail.com> Fix two rather subtle internal vs. external linker issues.

I'll admit I'm not entirely satisfied with this change, but it seemed
the cleanest option. Other suggestions quite welcome

The issue is that the traits specializations have static methods which
return the typedef'ed PHI_iterator type. In both the IR and MI layers
this is typedef'ed to a custom iterator class defined in an anonymous
namespace giving the types and the functions returning them internal
linkage. However, because the traits specialization is defined in the
'llvm' namespace (where it has to be, specialized template lives there),
and is in turn used in the templated implementation of the SSAUpdater.
This led to the linkage conflict that Clang now warns about.

The simplest solution to me was just to define the PHI_iterator as
a nested class inside the trait specialization. That way it still
doesn't get scoped widely, it can't be accidentally reused somewhere,
etc. This is a little gross just because nested class definitions are
a little gross, but the alternatives seem more ad-hoc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158799 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
37aa33bc11c01a7142bfa2428a5a4d219b07b6c3 20-Jun-2012 Andrew Trick <atrick@apple.com> A new algorithm for computing LoopInfo. Temporarily disabled.

-stable-loops enables a new algorithm for generating the Loop
forest. It differs from the original algorithm in a few respects:

- Not determined by use-list order.
- Initially guarantees RPO order of block and subloops.
- Linear in the number of CFG edges.
- Nonrecursive.

I didn't want to change the LoopInfo API yet, so the block lists are
still inclusive. This seems strange to me, and it means that building
LoopInfo is not strictly linear, but it may not be a problem in
practice. At least the block lists start out in RPO order now. In the
future we may add an attribute or wrapper analysis that allows other
passes to assume RPO order.

The primary motivation of this work was not to optimize LoopInfo, but
to allow reproducing performance issues by decomposing the compilation
stages. I'm often unable to do this with the current LoopInfo, because
the loop tree order determines Loop pass order. Serializing the IR
tends to invert the order, which reverses the optimization order. This
makes it nearly impossible to debug interdependent loop optimizations
such as LSR.

I also believe this will provide more stable performance results across time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158790 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
cbf24b4e58c2f621f480883c5bb1f2f2b2b8d497 20-Jun-2012 Andrew Trick <atrick@apple.com> Move the implementation of LoopInfo into LoopInfoImpl.h.

The implementation only needs inclusion from LoopInfo.cpp and
MachineLoopInfo.cpp. Clients of the interface should only include the
interface. This makes the interface readable and speeds up rebuilds
after modifying the implementation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158787 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
bf833f07473851c79018a1e32186e1b9c00d03c1 20-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add regunit liveness support to LiveIntervals::handleMove().

When LiveIntervals is tracking fixed interference in regunits, make sure
to update those intervals as well. Currently guarded by -live-regunits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158766 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
0c1eac8129f7e4e637074a482a085448e1680199 20-Jun-2012 Chad Rosier <mcrosier@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158762 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
2531a6415ff9c082bb1c11c27f1b03aa3e1b97df 20-Jun-2012 Chad Rosier <mcrosier@apple.com> Add an ensureMaxAlignment() function to MachineFrameInfo (analogous to
ensureAlignment() in MachineFunction). Also, drop setMaxAlignment() in
favor of this new function. This creates a main entry point to setting
MaxAlignment, which will be helpful for future work. No functionality
change intended.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158758 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
achineFunction.cpp
d693cafcfb9e67ba7040cb810e4409a166421482 20-Jun-2012 Lang Hames <lhames@gmail.com> Add DAG-combines for aggressive FMA formation.

This patch adds DAG combines to form FMAs from pairs of FADD + FMUL or
FSUB + FMUL. The combines are performed when:
(a) Either
AllowExcessFPPrecision option (-enable-excess-fp-precision for llc)
OR
UnsafeFPMath option (-enable-unsafe-fp-math)
are set, and
(b) TargetLoweringInfo::isFMAFasterThanMulAndAdd(VT) is true for the type of
the FADD/FSUB, and
(c) The FMUL only has one user (the FADD/FSUB).

If your target has fast FMA instructions you can make use of these combines by
overriding TargetLoweringInfo::isFMAFasterThanMulAndAdd(VT) to return true for
types supported by your FMA instruction, and adding patterns to match ISD::FMA
to your FMA instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158757 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fa8becb6f9e8aa2cbe3bab79e1fc4cdf2ffbb8e5 20-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> 80 col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158755 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7164288c3eb52e20454fc757440f867f04eb13a4 19-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement PPCInstrInfo::isCoalescableExtInstr().

The PPC::EXTSW instruction preserves the low 32 bits of its input, just
like some of the x86 instructions. Use it to reduce register pressure
when the low 32 bits have multiple uses.

This requires a small change to PeepholeOptimizer since EXTSW takes a
64-bit input register.

This is related to PR5997.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158743 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
d8d0279c007e70c325b4ac9d9893b31ee5f21085 19-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Style: Don't reuse variables for multiple purposes.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158742 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
d6b43a317e71246380db55a50b799b062b53cdce 19-Jun-2012 Rafael Espindola <rafael.espindola@gmail.com> Move the support for using .init_array from ARM to the generic
TargetLoweringObjectFileELF. Use this to support it on X86. Unlike ARM,
on X86 it is not easy to find out if .init_array should be used or not, so
the decision is made via TargetOptions and defaults to off.

Add a command line option to llc that enables it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158692 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
e877c4f9c7b4e4142f33a29e6cd1a07262525a12 18-Jun-2012 Hal Finkel <hfinkel@anl.gov> Allow up to 64 functional units per processor itinerary.

This patch changes the type used to hold the FU bitset from unsigned to uint64_t.
This will be needed for some upcoming PowerPC itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158679 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
coreboardHazardRecognizer.cpp
a9783663398baf1289683fc7326430b89963f38e 16-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Guard private fields that are unused in Release builds with #ifndef NDEBUG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158608 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
egAllocBasic.cpp
af06825460e1905a7739386c28253c13e3653394 16-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove final verification in RABasic.

We now have a proper machine code verifier pass between register
allocation and rewriting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158577 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
127cdba3eb78240e727dda4e62b05393d7a938e6 16-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out register number in InlineSpiller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158575 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
eb06b0b6aa627c6698471d4df71570f080fb3c5c 16-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Accept null PhysReg arguments to checkRegMaskInterference.

Calling checkRegMaskInterference(VirtReg) checks if VirtReg crosses any
regmask operands, regardless of the registers they clobber.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158563 91177308-0d34-0410-b5e6-96231b3b80d8
iveRegMatrix.cpp
iveRegMatrix.h
4b8e1fd054f88b443c4983c7c8b9f2e1f22e3686 15-Jun-2012 Bill Wendling <isanbard@gmail.com> Remove assignments which aren't used afterwards.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158535 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
324143d888a83511b6e022b4c541b18cc7773886 15-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use regunit liveness in RegisterCoalescer when it is available.

We only do very limited physreg coalescing now, but we still merge
virtual registers into reserved registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158526 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
6b0cd9b9c65dc8c91827ddd926e050738ea590fd 14-Jun-2012 Akira Hatanaka <ahatanaka@mips.com> Make machine verifier check the first instruction of the last bundle instead of
the last instruction of a basic block.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158468 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
0180694b2f416e2247af1d284d701b19e1431a6c 14-Jun-2012 Lang Hames <lhames@gmail.com> Make comment slightly more helpful.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158467 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
42120a2c5546f0eca9fdedf860b6a222e279971a 14-Jun-2012 Andrew Trick <atrick@apple.com> misched: disable SSA check pending PR13112.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158461 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
1c2d3c538c6062655f2b37438cc69a769ab90942 13-Jun-2012 Andrew Trick <atrick@apple.com> sched: fix latency of memory dependence chain edges for consistency.

For store->load dependencies that may alias, we should always use
TrueMemOrderLatency, which may eventually become a subtarget hook. In
effect, we should guarantee at least TrueMemOrderLatency on at least
one DAG path from a store to a may-alias load.

This should fix the standard mode as well as -enable-aa-sched-mi".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158380 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
9df55eed0470c898c4003dc433c4479bdb0e0aac 13-Jun-2012 Andrew Trick <atrick@apple.com> sched: Avoid trivially redundant DAG edges. Take the one with higher latency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158379 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
0eb3a3524e9d68642e574780d19c781386ed4469 12-Jun-2012 Andrew Trick <atrick@apple.com> misched: When querying RegisterPressureTracker, always save current and max pressure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158340 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
4487479543d58df84bb403f4bcfd33f72aadfa18 12-Jun-2012 Andrew Trick <atrick@apple.com> misched: regpressure getMaxPressureDelta, revert accidental checkin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158339 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
f33a79c590934ee9973a3c91cbc7c435bd6aa115 09-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Allocate the contents of DwarfDebug's StringMaps in a single big BumpPtrAllocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158265 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
ba17293a8827a7e0e390b0a1d6075148a58d9edd 09-Jun-2012 Andrew Trick <atrick@apple.com> Register pressure: added getPressureAfterInstr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158256 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
8879480ed708ffa51d23f423ec316763c7cb9577 09-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Sketch a LiveRegMatrix analysis pass.

The LiveRegMatrix represents the live range of assigned virtual
registers in a Live interval union per register unit. This is not
fundamentally different from the interference tracking in RegAllocBase
that both RABasic and RAGreedy use.

The important differences are:

- LiveRegMatrix tracks interference per register unit instead of per
physical register. This makes interference checks cheaper and
assignments slightly more expensive. For example, the ARM D7 reigster
has 24 aliases, so we would check 24 physregs before assigning to one.
With unit-based interference, we check 2 units before assigning to 2
units.

- LiveRegMatrix caches regmask interference checks. That is currently
duplicated functionality in RABasic and RAGreedy.

- LiveRegMatrix is a pass which makes it possible to insert
target-dependent passes between register allocation and rewriting.
Such passes could tweak the register assignments with interference
checking support from LiveRegMatrix.

Eventually, RABasic and RAGreedy will be switched to LiveRegMatrix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158255 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
iveRegMatrix.cpp
iveRegMatrix.h
fe17bdbb50efe2f7f68d0b99e55ae52bd9477978 09-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Also compute MBB live-in lists in the new rewriter pass.

This deduplicates some code from the optimizing register allocators, and
it means that it is now possible to change the register allocators'
solutions simply by editing the VirtRegMap between the register
allocator pass and the rewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158249 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.cpp
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
irtRegMap.cpp
05ec712e7f75635abbdd84dced69f4a45fe0f541 09-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Reintroduce VirtRegRewriter.

OK, not really. We don't want to reintroduce the old rewriter hacks.

This patch extracts virtual register rewriting as a separate pass that
runs after the register allocator. This is possible now that
CodeGen/Passes.cpp can configure the full optimizing register allocator
pipeline.

The rewriter pass uses register assignments in VirtRegMap to rewrite
virtual registers to physical registers, and it inserts kill flags based
on live intervals.

These finalization steps are the same for the optimizing register
allocators: RABasic, RAGreedy, and PBQP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158244 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
asses.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
irtRegMap.cpp
irtRegMap.h
791e2e0867d1e6fcb9c6f651da89f57043bc6c4a 08-Jun-2012 Evan Cheng <evan.cheng@apple.com> Start implementing pre-ra if-converter: using speculation and selects to eliminate branches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158234 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
eb81df7d95b8923ea99c0d4741a5aabf82d1c5ab 08-Jun-2012 Andrew Trick <atrick@apple.com> TargetInstrInfo hooks implemented in codegen should be declared pure virtual.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158233 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
c36d033c08c6148846f61cc7aee4fe0f523af1e5 08-Jun-2012 Andrew Trick <atrick@apple.com> Fix Target->Codegen dependence.

Bulk move of TargetInstrInfo implementation into
TargetInstrInfoImpl. This is dirty because the code isn't part of
TargetInstrInfoImpl class, nor should it be, because the methods are
not target hooks. However, it's the current mechanism for keeping
libTarget useful outside the backend. You'll get a not-so-nice link
error if you invoke a TargetInstrInfo method that depends on CodeGen.

The TargetInstrInfoImpl class should probably be removed since it
doesn't really solve this problem.

To really fix this, we probably need separate interfaces for the
CodeGen/nonCodeGen sides of TargetInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158212 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
83569cb062930a62e96ba87a47b002366e00124d 07-Jun-2012 Pete Cooper <peter_cooper@apple.com> Move terminator machine verification to check MachineBasicBlock::instr_iterator instead of MBB::iterator

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158154 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
2afde7782dfa56b2e46f79598bdb5f1e09471941 07-Jun-2012 Manman Ren <mren@apple.com> Revert r157755.

The commit is intended to fix rdar://11540023.
It is implemented as part of peephole optimization. We can actually implement
this in the SelectionDAG lowering phase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158122 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
1f9c3ec831cf63f7833680c38362c1e92c251aff 07-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly verify liveness with bundled machine instructions.

Bundles should be treated as one atomic transaction when checking
liveness. That is how the register allocator (and VLIW targets) treats
bundles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158116 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
1525260b3e50cc578939ef41b60609689eecfdd2 06-Jun-2012 Andrew Trick <atrick@apple.com> Move RegisterClassInfo.h.

Allow targets to access this API. It's required for RegisterPressure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158102 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
llocationOrder.cpp
riticalAntiDepBreaker.h
achineScheduler.cpp
ostRASchedulerList.cpp
egAllocBase.h
egAllocFast.cpp
egisterClassInfo.cpp
egisterClassInfo.h
egisterCoalescer.cpp
egisterPressure.cpp
afc2657cc33988a178d3b21645dba54484600c5f 06-Jun-2012 Andrew Trick <atrick@apple.com> Move RegisterPressure.h.

Make it a general utility for use by Targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158097 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
egisterPressure.cpp
egisterPressure.h
cheduleDAGInstrs.cpp
95a9d937728ca9cf2bf44f86ff1184df318b3bd7 06-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Round 2 of dead private variable removal.

LLVM is now -Wunused-private-field clean except for
- lib/MC/MCDisassembler/Disassembler.h. Not sure why it keeps all those unaccessible fields.
- gtest.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158096 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocGreedy.cpp
a7542d5f870c5d98960d1676e23ac1d1d975d7e5 06-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove unused private fields found by clang's new -Wunused-private-field.

There are some that I didn't remove this round because they looked like
obvious stubs. There are dead variables in gtest too, they should be
fixed upstream.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158090 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
egAllocBasic.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
egisterCoalescer.h
cheduleDAGInstrs.cpp
461e7eaa6fc52f96d01f7e1a5c357eae79e52508 06-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove dead debug option -disable-rematerialization.

Remat has been stable for years, and it isn't done by
LiveIntervalAnalysis any longer. (See LiveRangeEdit).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158079 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d14e4e133f940d0c1f454a40f3bd835a8c7a7886 06-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Stop leaking RegScavengers from TailDuplication.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158069 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
0e5a60b4ebc06a4fe6bb58f0200acf130d7be685 06-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move LiveUnionArray into LiveIntervalUnion.h

It is useful outside RegAllocBase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158041 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.cpp
egAllocBase.h
2fd0923593c4d30691a45ade1e8b0bd484896c3f 06-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't print register names in LiveIntervalUnion::print().

Soon we'll be making LiveIntervalUnions for register units as well.

This was the only place using the RepReg member, so just remove it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158038 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.cpp
05b46f05c3c4efd0972bf3e2e570404e7db72509 06-Jun-2012 Matt Beaumont-Gay <matthewbg@google.com> Suppress -Wunused-variable in -Asserts build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158037 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b77ec7d26405125fa5685370af5f17fcc9edbecd 06-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify LiveInterval::print().

Don't print out the register number and spill weight, making the TRI
argument unnecessary.

This allows callers to interpret the reg field. It can currently be a
virtual register, a physical register, a spill slot, or a register unit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158031 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
egAllocBase.cpp
egisterCoalescer.cpp
34c6f9803499c11ed2dc8479ec768d47370a2d3a 06-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add experimental support for register unit liveness.

Instead of computing a live interval per physreg, LiveIntervals can
compute live intervals per register unit. This makes impossible the
confusing situation where aliasing registers could have overlapping live
intervals. It should also make fixed interferernce checking cheaper
since registers have fewer register units than aliases.

Live intervals for regunits are computed on demand, using MRI use-def
chains and the new LiveRangeCalc class. Only regunits live in to ABI
blocks are precomputed during LiveIntervals::runOnMachineFunction().

The regunit liveness computations don't depend on LiveVariables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158029 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4e53a40ea321c43bdf754147dd2ec064985e5b7b 05-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement LiveRangeCalc::extendToUses() and createDeadDefs().

These LiveRangeCalc methods are to be used when computing a live range
from scratch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158027 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveRangeCalc.cpp
iveRangeCalc.h
d88d27868bf7c2c5914c1b9ccace0ee6d7ee958a 05-Jun-2012 Andrew Trick <atrick@apple.com> MachineInstr::eraseFromParent fix for removing bundled instrs.

Patch by Ivan Llopard.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158025 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b7e0289fb320c8440ba5eed121a8b932dbd806a2 05-Jun-2012 Andrew Trick <atrick@apple.com> misched: API for minimum vs. expected latency.

Minimum latency determines per-cycle scheduling groups.
Expected latency determines critical path and cost.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158021 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.h
woAddressInstructionPass.cpp
5afba6f00c3e2eef83aebbcff5fcfca2fa3c978e 05-Jun-2012 Lang Hames <lhames@gmail.com> Add a new intrinsic: llvm.fmuladd. This intrinsic represents a multiply-add
expression (a * b + c) that can be implemented as a fused multiply-add (fma)
if the target determines that this will be more efficient. This intrinsic
will be used to implement FP_CONTRACT support and an aggressive FMA formation
mode.

If your target has a fast FMA instruction you should override the
isFMAFasterThanMulAndAdd method in TargetLowering to return true.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158014 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
fc992996f751e0941951b6d08d8f1e80ebec1385 05-Jun-2012 Andrew Trick <atrick@apple.com> misched: Added MultiIssueItineraries.

This allows a subtarget to explicitly specify the issue width and
other properties without providing pipeline stage details for every
instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157979 91177308-0d34-0410-b5e6-96231b3b80d8
coreboardHazardRecognizer.cpp
electionDAG/ResourcePriorityQueue.cpp
4eb4e5eb224b3d737558bcda8a0a369cc9d800e6 05-Jun-2012 Andrew Trick <atrick@apple.com> sdsched: Use the right heuristics when -mcpu is not provided and we have no itinerary.
Use ILP heuristics for long latency instrs if no scoreboard exists.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157978 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d327d3ddddaf23fe920a01bf6304f6a8f4986e89 05-Jun-2012 Andrew Trick <atrick@apple.com> misched: Allow disabling scoreboard hazard checking for subtargets with a
valid itinerary but no pipeline stages.

An itinerary can contain useful scheduling information without specifying pipeline stages for each instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157977 91177308-0d34-0410-b5e6-96231b3b80d8
coreboardHazardRecognizer.cpp
76e9e838a143a12fdf119ecd01919936a437b5a2 05-Jun-2012 Andrew Trick <atrick@apple.com> misched: comments from code review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157975 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
afb32f7fb482d62532d575ea7b1ee8ab3919575c 05-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the last remat-related code from LiveIntervalAnalysis.

Rematerialization is handled by LiveRangeEdit now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157974 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3dfd59bdc3ab1135961a3798b4f23e191a7dc953 05-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop using LiveIntervals::isReMaterializable().

It is an old function that does a lot more than required by
CalcSpillWeights, which was the only remaining caller.

The isRematerializable() function never actually sets the isLoad
argument, so don't try to compute that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157973 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
84423c8778ed22877c123fe41f5e137cb5a30e90 05-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157963 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
15f1d8c557c217b90a82599d5f0f849f8340a1e3 05-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch LiveIntervals member variable to LLVM naming standards.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157957 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
631390e3c26fe5581ee9468b04593cedf48cc908 04-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Pass context pointers to LiveRangeCalc::reset().

Remove the same pointers from all the other LiveRangeCalc functions,
simplifying the interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157941 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeCalc.cpp
iveRangeCalc.h
plitKit.cpp
fcb2c3cf5e8ee421fd3a5639cc4a33036e9a614e 04-Jun-2012 Nadav Rotem <nadav.rotem@intel.com> Remove the "-promote-elements" flag. This flag is now enabled by default.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157925 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d9b0b025612992a0b724eeca8bdf10b1d7a5c355 02-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Fix typos found by http://github.com/lyda/misspell-check

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157885 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
odePlacementOpt.cpp
riticalAntiDepBreaker.cpp
xecutionDepsFix.cpp
achineBlockPlacement.cpp
electionDAG/ResourcePriorityQueue.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/TargetLowering.cpp
43eb31bfae470b33bab9a6764b98b5e8a0beeda5 02-Jun-2012 Stepan Dyatkovskiy <stpworld@narod.ru> PR1255: case ranges.
IntRange converted from struct to class. So main change everywhere is replacement of ".Low/High" with ".getLow/getHigh()"



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
4319a552ac98137d511341905711293d541f15e7 02-Jun-2012 Stepan Dyatkovskiy <stpworld@narod.ru> PR1255: case ranges.
IntegersSubsetGeneric, IntegersSubsetMapping: added IntTy template parameter, that allows use either APInt or IntItem. This change allows to write unittest for these classes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
55a105160dc02a0d990a69820cfe63fef504195e 02-Jun-2012 Akira Hatanaka <ahatanaka@mips.com> Fix a bug in the code which custom-lowers truncating stores in LegalizeDAG.

Check that the SDValue TargetLowering::LowerOperation returns is not null
before replacing the original node with the returned node.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157873 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
396618b43a85e12d290a90b181c6af5d7c0c5f11 02-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch all register list clients to the new MC*Iterator interface.

No functional change intended.

Sorry for the churn. The iterator classes are supposed to help avoid
giant commits like this one in the future. The TableGen-produced
register lists are getting quite large, and it may be necessary to
change the table representation.

This makes it possible to do so without changing all clients (again).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157854 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
ranchFolding.cpp
allingConvLower.cpp
riticalAntiDepBreaker.cpp
eadMachineInstructionElim.cpp
xecutionDepsFix.cpp
fConversion.cpp
nterferenceCache.cpp
iveVariables.cpp
achineCopyPropagation.cpp
achineInstr.cpp
achineInstrBundle.cpp
achineLICM.cpp
achineRegisterInfo.cpp
achineVerifier.cpp
ostRASchedulerList.cpp
rocessImplicitDefs.cpp
egAllocBase.cpp
egAllocBasic.cpp
egAllocFast.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
egisterClassInfo.cpp
egisterCoalescer.cpp
egisterPressure.cpp
egisterScavenging.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGRRList.cpp
0984461dfb329c8e43ca70e264f56cd39bbae573 02-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove physreg support from adjustCopiesBackFrom and removeCopyByCommutingDef.

After physreg coalescing was disabled, these functions can't do anything
useful with physregs anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157849 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
8c70ea47fae6d61441d150cbe9431cf5e06222e5 02-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify some more getAliasSet callers.

MCRegAliasIterator can include Reg itself in the list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157848 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
egisterScavenging.cpp
electionDAG/ScheduleDAGFast.cpp
f152fe8d487c46873bbdd4abab43200f783e978b 01-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch some getAliasSet clients to MCRegAliasIterator.

MCRegAliasIterator can optionally visit the register itself, allowing
for simpler code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157837 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
riticalAntiDepBreaker.cpp
eadMachineInstructionElim.cpp
achineCSE.cpp
achineCopyPropagation.cpp
68f25571e759c1fcf2da206109647259f49f7416 01-Jun-2012 Manman Ren <mren@apple.com> ARM: properly handle alignment for struct byval.

Factor out the expansion code into a function.
This change is to be enabled in clang.

rdar://9877866


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157830 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
6bb5c0074dc4cede2ad8efd420ec91288f91b012 01-Jun-2012 Stepan Dyatkovskiy <stpworld@narod.ru> PR1255: case ranges.
IntegersSubset devided into IntegersSubsetGeneric and into IntegersSubset itself. The first has no references to ConstantInt and works with IntItem only.
IntegersSubsetMapping also made generic. Here added second template parameter "IntegersSubsetTy" that allows to use on of two IntegersSubset types described below.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157815 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
74ee0ef6a72c61766523364f7c300c2a2612aae7 01-Jun-2012 Chris Lattner <sabre@nondot.org> quick fix for PR13006, will check in testcase later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157813 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
f59e4e34528a078c2db57ee72b2814b495989124 01-Jun-2012 Chris Lattner <sabre@nondot.org> enhance the logic for looking through tailcalls to look through transparent casts
in multiple-return value scenarios, like what happens on X86-64 when returning
small structs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157800 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
5b0d9465375c4e175f5805038c5ef1d7d11193bd 01-Jun-2012 Chris Lattner <sabre@nondot.org> enhance getNoopInput to know about vector<->vector bitcasts of legal
types, as well as int<->ptr casts. This allows us to tailcall functions
with some trivial casts between the call and return (i.e. because the
return types disagree).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157798 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
cd6015cc8a0da3981f298c2e92b145fe11e838e0 01-Jun-2012 Chris Lattner <sabre@nondot.org> rearrange some logic, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157796 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
fc4199bf4add3422ce6470ca47bbe6bff2d70ea5 01-Jun-2012 Eric Christopher <echristo@apple.com> Add support for enum forward declarations.

Part of rdar://11570854

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157786 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
91c5346d91973a1d3458a20f8c6b0e899b732e38 31-May-2012 Manman Ren <mren@apple.com> X86: replace SUB with CMP if possible

This patch will optimize the following
movq %rdi, %rax
subq %rsi, %rax
cmovsq %rsi, %rdi
movq %rdi, %rax
to
cmpq %rsi, %rdi
cmovsq %rsi, %rdi
movq %rdi, %rax

Perform this optimization if the actual result of SUB is not used.

rdar: 11540023


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157755 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
9cda1be0aa5e9e70ae493ef6944a8c202c1c70e6 30-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Prioritize smaller register classes for urgent evictions.

It helps compile exotic inline asm. In the test case, normal GR32
virtual registers use up eax-edx so the final GR32_ABCD live range has
no registers left. Since all the live ranges were tiny, we had no way of
prioritizing the smaller register class.

This patch allows tiny unspillable live ranges to be evicted by tiny
unspillable live ranges from a smaller register class.

<rdar://problem/11542429>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157715 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
f917d20561688ca79fab5a58feb495e332f84903 30-May-2012 Owen Anderson <resistor@mac.com> Switch the canonical FMA term operand order to match both the comment I wrote and the usual LLVM convention.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157708 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
85ef6f4c99aee3c2ed43bbe6d190541f283a7e43 30-May-2012 Owen Anderson <resistor@mac.com> Teach DAGCombine to canonicalize the position of a constant in the term operands of an FMA node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157707 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
06a23ea8083657270e86a178abf050246caac0b5 30-May-2012 Chad Rosier <mcrosier@apple.com> Remove extra space.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157706 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
275fd2523edd30e75af6398c25d47e94cc32f150 30-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove some redundant tests.

An empty list is not represented as a null pointer. Let TRI do its own
shortcuts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157702 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
eb25bd2356cca5ef83472b1ae0f764037b82ad82 30-May-2012 Evan Cheng <evan.cheng@apple.com> Teach taildup to update livein set. rdar://11538365

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157663 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
3d4166dff0624b8843338acc156987e8bc890e9b 30-May-2012 Evan Cheng <evan.cheng@apple.com> If-converter models predicated defs as read + write. The read should be marked as 'undef' since it may not already be live. This appeases -verify-machineinstrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157662 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
6e1b8128505711276a87e96f6bffb818b435cbd5 30-May-2012 Bob Wilson <bob.wilson@apple.com> Add an insertPass API to TargetPassConfig. <rdar://problem/11498613>

Besides adding the new insertPass function, this patch uses it to
enhance the existing -print-machineinstrs so that the MachineInstrs
after a specific pass can be printed.

Patch by Bin Zeng!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157655 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
achineFunctionPrinterPass.cpp
asses.cpp
cac58aa80ea9450d5e5b0499ac598b646f419b51 29-May-2012 Evan Cheng <evan.cheng@apple.com> Optional def can be either a def or a use (of reg0).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157640 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
f905f69668e5dd184c0a2b5fae38d9f3721c0d3b 29-May-2012 Lang Hames <lhames@gmail.com> Clear the entering, exiting and internal ranges of a bundle before collecting
ranges for the instruction about to be bundled. This fixes a bug in an external
project where an assertion was triggered due to spurious 'multiple defs' within
the bundle.

Patch by Ivan Llopard. Thanks Ivan!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157632 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
0aa32d5d0ff6cd65b6cff957858a79e2d2a614bd 29-May-2012 Stepan Dyatkovskiy <stpworld@narod.ru> ConstantRangesSet renamed to IntegersSubset. CRSBuilder renamed to IntegersSubsetMapping.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157612 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b34d3aa35b199969168f41a12e92e5d2f0e9367f 28-May-2012 Peter Collingbourne <peter@pcc.me.uk> Add llvm.fabs intrinsic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157594 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
484fc93eff0295b1aa52b9a64d22346580e4b0e2 28-May-2012 Stepan Dyatkovskiy <stpworld@narod.ru> PR1255: Case Ranges
Implemented IntItem - the wrapper around APInt. Why not to use APInt item directly right now?
1. It will very difficult to implement case ranges as series of small patches. We got several large and heavy patches. Each patch will about 90-120 kb. If you replace ConstantInt with APInt in SwitchInst you will need to changes at the same time all Readers,Writers and absolutely all passes that uses SwitchInst.
2. We can implement APInt pool inside and save memory space. E.g. we use several switches that works with 256 bit items (switch on signatures, or strings). We can avoid value duplicates in this case.
3. IntItem can be easyly easily replaced with APInt.
4. Currenly we can interpret IntItem both as ConstantInt and as APInt. It allows to provide SwitchInst methods that works with ConstantInt for non-updated passes.

Why I need it right now? Currently I need to update SimplifyCFG pass (EqualityComparisons). I need to work with APInts directly a lot, so peaces of code
ConstantInt *V = ...;
if (V->getValue().ugt(AnotherV->getValue()) {
...
}
will look awful. Much more better this way:
IntItem V = ConstantIntVal->getValue();
if (AnotherV < V) {
}

Of course any reviews are welcome.

P.S.: I'm also going to rename ConstantRangesSet to IntegersSubset, and CRSBuilder to IntegersSubsetMapping (allows to map individual subsets of integers to the BasicBlocks).
Since in future these classes will founded on APInt, it will possible to use them in more generic ways.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157576 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
27302f07393d4db22e8ad06ac2ad4e7f01370b17 27-May-2012 Peter Collingbourne <peter@pcc.me.uk> Have getOrCreateSubprogramDIE store the DIE for a subprogram
definition in the map before calling itself to retrieve the
DIE for the declaration. Without this change, if this causes
getOrCreateSubprogramDIE to be recursively called on the definition,
it will create multiple DIEs for that definition. Fixes PR12831.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157541 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
cf1d69df7e39a45fd1c7a07452271c586580164e 27-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Missed parens.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157527 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
4fae58b32d4ff88f2df093514a0986c79e0c9e2c 27-May-2012 Benjamin Kramer <benny.kra@googlemail.com> r157525 didn't work, just disable iterator checking.

This is obviosly right but I don't see how to do this with proper vector
iterators without building a horrible mess of workarounds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157526 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
dc54f8ebe288c7313e22902d4bdfe030e479db48 27-May-2012 Benjamin Kramer <benny.kra@googlemail.com> SDAGBuilder: Avoid iterator invalidation harder.

vector.begin()-1 is invalid too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157525 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
5db954dab9a9e3c57c6e5194bf902a34a458d555 26-May-2012 Benjamin Kramer <benny.kra@googlemail.com> SDAGBuilder: Don't create an invalid iterator when there is only one switch case.

Found by libstdc++'s debug mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157522 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c511b2a5a1b91f08be6572ca7d7215c261176bc4 26-May-2012 Benjamin Kramer <benny.kra@googlemail.com> SelectionDAGBuilder: When emitting small compare chains for switches order them by using edge weights.

SimplifyCFG tends to form a lot of 2-3 case switches when merging branches. Move
the most likely condition to the front so it is checked first and the others can
be skipped. This is currently not as effective as it could be because SimplifyCFG
destroys profiling metadata when merging branches and switches. Merging branch
weight metadata is tricky though.

This code touches at most 3 cases so I didn't use a proper sorting algorithm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157521 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9632f77f8dde9d2c9c9cb9d022b846a82c918cbd 26-May-2012 Benjamin Kramer <benny.kra@googlemail.com> ScoreboardHazardRecognizer: Remove dead conditional in debug code.

Negative cycles are filtered out earlier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157514 91177308-0d34-0410-b5e6-96231b3b80d8
coreboardHazardRecognizer.cpp
d2ea0e10cbd158c93fb870cdd03001b9cd1156b8 25-May-2012 Justin Holewinski <jholewinski@nvidia.com> Change interface for TargetLowering::LowerCallTo and TargetLowering::LowerCall
to pass around a struct instead of a large set of individual values. This
cleans up the interface and allows more information to be added to the struct
for future targets without requiring changes to each and every target.

NV_CONTRIB

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157479 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
c7a098fbb23f7f6cfbbbfc097b22c10cf4211ab6 25-May-2012 Andrew Trick <atrick@apple.com> misched: trace formatting

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157455 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
coreboardHazardRecognizer.cpp
2db0e9ebb600a2e6b8f651f66a1ef50e0d3c3c6b 25-May-2012 Eli Friedman <eli.friedman@gmail.com> Simplify code for calling a function where CanLowerReturn fails, fixing a small bug in the process.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157446 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
5402efa3dce1902003094f701fc090e78a5ad557 25-May-2012 Kaelyn Uhrain <rikka@google.com> Silence unused variable warnings from when assertions are disabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157438 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
8ddd9d5b2bee3ccdb36aee4423ca4443d7b3dc32 25-May-2012 Andrew Trick <atrick@apple.com> misched: Use the same scheduling heuristics with -misched-topdown/bottomup.

(except the part about choosing direction)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157437 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
bb0a242d86f46c66cb4e3eee25516c99ae24f361 25-May-2012 Andrew Trick <atrick@apple.com> misched: Trace regpressure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157429 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
f323424d71a8c7c129f4fc7c9c109ca6ce2f4460 25-May-2012 Andrew Trick <atrick@apple.com> misched: Give each ReadyQ a unique ID

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157428 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
0a39d4e4c86540d7c89f6dbe511b70466e132715 25-May-2012 Andrew Trick <atrick@apple.com> misched: Added ScoreboardHazardRecognizer.

The Hazard checker implements in-order contraints, or interlocked
resources. Ready instructions with hazards do not enter the available
queue and are not visible to other heuristics.

The major code change is the addition of SchedBoundary to encapsulate
the state at the top or bottom of the schedule, including both a
pending and available queue.

The scheduler now counts cycles in sync with the hazard checker. These
are minimum cycle counts based on known hazards.

Targets with no itinerary (x86_64) currently remain at cycle 0. To fix
this, we need to provide some maximum issue width for all targets. We
also need to add the concept of expected latency vs. minimum latency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157427 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
argetInstrInfoImpl.cpp
2aa689dfbf26f9f566ce7f7d72fc28e7d76e903a 25-May-2012 Andrew Trick <atrick@apple.com> misched: Release bottom roots in reverse order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157426 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
8c2d9212a929c633b7a338593a57d0a0db79f19a 25-May-2012 Andrew Trick <atrick@apple.com> misched: rename ReadyQ class

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157425 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
c8fe4ecb47644e76f5e38b8b75997912554a24a3 25-May-2012 Andrew Trick <atrick@apple.com> misched: copy comments so compareRPDelta is readable by itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157424 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
5f887fab35cd71a1e6fcbfa64ae5cbbf43b39807 25-May-2012 Andrew Trick <atrick@apple.com> regpressure: Added RegisterPressure::dump

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157423 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
egisterPressure.h
a7de4b99e47fc5061181ecdf7fd65e1b8441e2e7 25-May-2012 Andrew Trick <atrick@apple.com> regpressure: physreg livein/out fix

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157422 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
e32981048244ecfa67d0bdc211af1bac2020a555 24-May-2012 Craig Topper <craig.topper@gmail.com> Mark some static arrays as const.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157377 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d74d2847573df690b6a91254688ef3fd974f83f7 24-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a last resort tryInstructionSplit() to RAGreedy.

Live ranges with a constrained register class may benefit from splitting
around individual uses. It allows the remaining live range to use a
larger register class where it may allocate. This is like spilling to a
different register class.

This is only attempted on constrained register classes.

<rdar://problem/11438902>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157354 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
dbb4e57a3c7fb18d5ff2d9504c5cacb5df20fab4 24-May-2012 Bill Wendling <isanbard@gmail.com> Forgot to reverse conditional.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157349 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
20350db44807f6863c3c00345934d45763ed21d3 24-May-2012 Bill Wendling <isanbard@gmail.com> Reduce indentation by early detection of 'continue'. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157348 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
e3b548219ff47b1384aa7325ebbe21c795c19974 23-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Correctly deal with identity copies in RegisterCoalescer.

Now that the coalescer keeps live intervals and machine code in sync at
all times, it needs to deal with identity copies differently.

When merging two virtual registers, all identity copies are removed
right away. This means that other identity copies must come from
somewhere else, and they are going to have a value number.

Deal with such copies by merging the value numbers before erasing the
copy instruction. Otherwise, we leave dangling value numbers in the live
interval.

This fixes PR12927.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157340 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
d76938788b4b682043a74befbb6320ce0077ddc9 23-May-2012 Patrik Hägglund <patrik.h.hagglund@ericsson.com> Small fix for the debug output from PBQP (PR12822).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157319 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
bb0f6eac1f2d04e485607f0726c31a84ce9b8ced 23-May-2012 Eric Christopher <echristo@apple.com> Add support for C++11 enum classes in llvm.

Part of rdar://11496790

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157303 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
4d069bf8ec726570d668e59fda993a33dfb7cb0b 22-May-2012 Eric Christopher <echristo@apple.com> Untabify and 80-col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157274 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
4a5d839dfa07fd6a187581b00c1a09ece30d9a08 22-May-2012 Eric Christopher <echristo@apple.com> Formatting consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157273 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
76ff7418361c1c80ce9d018bce63511a70bd7390 22-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Only erase virtregs with no uses left.

Also make sure registers aren't erased twice if the dead def mentions
the register twice.

This fixes PR12911.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157254 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
4b6e6750fed37879ce4730571cae1bfa342e8e02 22-May-2012 Owen Anderson <resistor@mac.com> Fix use of an unitialized value in the LegalizeOps expansion for ISD::SUB. No in-tree targets exercise this path.

Patch by Micah Villmow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157215 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f496deaa03cec32887f2365ff27b5f0adfd9d256 21-May-2012 Chad Rosier <mcrosier@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1dc12aa148f0ecb4135fa3e47e7a2ac81ceac394 21-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Give a small negative bias to giant edge bundles.

This helps compile time when the greedy register allocator splits live
ranges in giant functions. Without the bias, we would try to grow
regions through the giant edge bundles, usually to find out that the
region became too big and expensive.

If a live range has many uses in blocks near the giant bundle, the small
negative bias doesn't make a big difference, and we still consider
regions including the giant edge bundle.

Giant edge bundles are usually connected to landing pads or indirect
branches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157174 91177308-0d34-0410-b5e6-96231b3b80d8
pillPlacement.cpp
857ed2260403f2cbfe702e83da283b78e341707e 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Clear kill flags on the fly when joining intervals.

With physreg joining out of the way, it is easy to recognize the
instructions that need their kill flags cleared while testing for
interference.

This allows us to skip the final scan of all instructions for an 11%
speedup of the coalescer pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157169 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
418a3638acfa95e4212a38100adfc2f8cdd45919 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Constrain regclasses in PeepholeOptimizer.

It can be necessary to restrict to a sub-class before accessing
sub-registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157164 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
0fda545c2c164dc607f48f4b77f54c35bcafa413 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Constrain register classes in TailDup.

When rewriting operands, make sure the new registers have a compatible
register class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157163 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
92d63ccfc7d86d39bc0b806bf7e9fac13dd2d7b5 20-May-2012 Peter Collingbourne <peter@pcc.me.uk> When legalising shifts, do not pre-build a list of operands which
may be RAUW'd by the recursive call to LegalizeOps; instead, retrieve
the other operands when calling UpdateNodeOperands. Fixes PR12889.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157162 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6514551be704adb577682148ca825c08fd642329 20-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Plug a leak when using MCJIT.

Found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157160 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
79485315cd88df1d743158feeb21cc46c253c021 20-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Use TargetMachine's register info instead of creating a new one and leaking it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157155 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ee0d5d4398fb855c6674da94d902ef45e944f375 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly constrain register classes for sub-registers.

Not all GR64 registers have sub_8bit sub-registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8e86929e3ce3fe56295d2704b93bf14c709b311a 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly constrain register classes in 2-addr.

X86 has 2-addr instructions with different constraints on the tied def
and use operands. One is GR32, one is GR32_NOSP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157149 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4991de8fe1e72230cf714378b96411f1b59f6b77 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Missed a push_back in r157147.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157148 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
f0bf8b401827b58ec171c9d994c46d7f810a3e17 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid deleting extra copies when RegistersDefinedFromSameValue is true.

This function adds copies to be erased to DupCopies, avoid also adding
them to DeadCopies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157147 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
067fcb4087a2c816f6536907b9918165e5b00b33 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix build bots.

Avoid looking at the operands of a potentially erased instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157146 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
97769fcdd1b50972222673a0effc6f793848bf06 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> LiveRangeQuery simplifies shrinkToUses().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157145 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
93e29ce066c80528ab0afb90fdaabf734fb4b412 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use LiveRangeQuery in ScheduleDAGInstrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157144 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
e1b93d2e86a3396b1b1d3d761f0335b17c5f54b8 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate some uses of struct LiveRange.

That struct ought to be a LiveInterval implementation detail.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157143 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
92a05fa4507102e1891f1de3523fb5aaf0d9398c 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use LiveRangeQuery instead of getLiveRangeContaining().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157142 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
a991ea5f7f2df661dc1ad7bd230d3a401dfb6411 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify overlap check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157137 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
7ebed91fddbcd259d03c4b438719ac1ce2a4fc87 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix 12892.

Dead code elimination during coalescing could cause a virtual register
to be split into connected components. The following rewriting would be
confused about the already joined copies present in the code, but
without a corresponding value number in the live range.

Erase all joined copies instantly when joining intervals such that the
MI and LiveInterval representations are always in sync.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157135 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
egisterCoalescer.cpp
ec096b492549d625e4be608fcaea265b96dabc03 19-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the late DCE in RegisterCoalescer.

Dead code and joined copies are now eliminated on the fly, and there is
no need for a post pass.

This makes the coalescer work like other modern register allocator
passes: Code is changed on the fly, there is no pending list of changes
to be committed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157132 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
ccce1233a27e9527cfb68cbced311351332a3a4e 19-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Erase joined copies immediately.

The late dead code elimination is no longer necessary.

The test changes are cause by a register hint that can be either %rdi or
%rax. The choice depends on the use list order, which this patch changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157131 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
56366601765c1ff43f8796c271a818f8c272af27 19-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix an ancient bug in removeCopyByCommutingDef().

Before rewriting uses of one value in A to register B, check that there
are no tied uses. That would require multiple A values to be rewritten.

This bug can't bite in the current version of the code for a fairly
subtle reason: A tied use would have caused 2-addr to insert a copy
before the use. If the copy has been coalesced, it will be found by the
same loop changed by this patch, and the optimization is aborted.

This was exposed by 400.perlbench and lua after applying a patch that
deletes joined copies aggressively.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157130 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
03c8383324da4fe42fae4e5685072a782935644d 19-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Collect inflatable virtual registers on the fly.

There is no reason to defer the collection of virtual registers whose
register class may be replaced with a larger class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157125 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
1dc6d7cbb5affee14a2fc5e7269616f3b7b4b6fa 19-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate dead code after remat.

This will remove the original def once it has no more uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157104 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
67ccb29cec06c85210f334cfbdae144460170cd3 19-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't remat during updateRegDefsUses().

Remaining virtreg->physreg copies were rematerialized during
updateRegDefsUses(), but we already do the same thing in joinCopy() when
visiting the physreg copy instruction.

Eliminate the preserveSrcInt argument to reMaterializeTrivialDef(). It
is now always true.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157103 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
3662f0d492533435c30969118fd025f6bed46654 19-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Immediately erase trivially useless copies.

There is no need for these instructions to stick around since they are
known to be not dead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157102 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
bd6f44a3a2a1404721bcbb67edf92b8480a3e655 19-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Run proper recursive dead code elimination during coalescing.

Dead copies cause problems because they are trivial to coalesce, but
removing them gived the live range a dangling end point. This patch
enables full dead code elimination which trims live ranges to their uses
so end points don't dangle.

DCE may erase multiple instructions. Put the pointers in an ErasedInstrs
set so we never risk visiting erased instructions in the work list.

There isn't supposed to be any dead copies entering RegisterCoalescer,
but they do slip by as evidenced by test/CodeGen/X86/coalescer-dce.ll.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157101 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
egisterCoalescer.cpp
20942dcd8634ad75091fe89669868cfebf74e869 19-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow LiveRangeEdit to be created with a NULL parent.

The dead code elimination with callbacks is still useful.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157100 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
c696c8bd35a8ab293879e821142dd9136201f16e 19-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Modernize naming convention for class members.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157079 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
b3776d33cfaba3fc48acccf166d2bd4871ee51c7 18-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move all work list processing to copyCoalesceWorkList().

This will make it possible to filter out erased instructions later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157073 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
3e96531186ba574b0c25a4be62d24b8b7d752c9f 18-May-2012 Jim Grosbach <grosbach@apple.com> Refactor data-in-code annotations.

Use a dedicated MachO load command to annotate data-in-code regions.
This is the same format the linker produces for final executable images,
allowing consistency of representation and use of introspection tools
for both object and executable files.

Data-in-code regions are annotated via ".data_region"/".end_data_region"
directive pairs, with an optional region type.

data_region_directive := ".data_region" { region_type }
region_type := "jt8" | "jt16" | "jt32" | "jta32"
end_data_region_directive := ".end_data_region"

The previous handling of ARM-style "$d.*" labels was broken and has
been removed. Specifically, it didn't handle ARM vs. Thumb mode when
marking the end of the section.

rdar://11459456

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157062 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
23da8a061fcadd20a2abe3afafdeed2d505acfb8 18-May-2012 Eric Christopher <echristo@apple.com> Remove duplicate code that we could just fallthrough to.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157060 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
846b183a9ed2999d3f35c7c6b54a5796c0660b9e 18-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify RegisterCoalescer::copyCoalesceInMBB().

It is no longer necessary to separate VirtCopies, PhysCopies, and
ImpDefCopies. Implicitly defined copies are extremely rare after we
added the ProcessImplicitDefs pass, and physical register copies are not
joined any longer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157059 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
34a18775a402f269425b5d79efe385fe122cc64d 18-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove support for PhysReg joining.

This has been disabled for a while, and it is not a feature we want to
support. Copies between physical and virtual registers are eliminated by
good hinting support in the register allocator. Joining virtual and
physical registers is really a form of register allocation, and the
coalescer is not properly equipped to do that. In particular, it cannot
backtrack coalescing decisions, and sometimes that would cause it to
create programs that were impossible to register allocate, by exhausting
a small register class.

It was also very difficult to keep track of the live ranges of aliasing
registers when extending the live range of a physreg. By disabling
physreg joining, we can let fixed physreg live ranges remain constant
throughout the register allocator super-pass.

One type of physreg joining remains: A virtual register that has a
single value which is a copy of a reserved register can be merged into
the reserved physreg. This always lowers register pressure, and since we
don't compute live ranges for reserved registers, there are no problems
with aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157055 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
05cfe2eda63e54a1e4c84b15136d154ab6393304 18-May-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Recommited reworked r156804:
SelectionDAGBuilder::Clusterify : main functinality was replaced with CRSBuilder::optimize, so big part of Clusterify's code was reduced.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157046 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
ad753648155590f1c70bd168e8cf11a414957387 18-May-2012 Evan Cheng <evan.cheng@apple.com> Teach two-address pass to update the "source" map so it doesn't perform a
non-profitable commute using outdated info. The test case would still fail
because of poor pre-RA schedule. That will be fixed by MI scheduler.

rdar://11472010


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157038 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
5429a6b0d5ed57bf9a924fa5d88c80c0357b7e08 18-May-2012 Andrew Trick <atrick@apple.com> comments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157020 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
81f1be3b5a920f75970bd3d3cdc65ada980bbfc1 17-May-2012 Andrew Trick <atrick@apple.com> misched: trace ReadyQ.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157007 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
73a0d8ecf838a9b333c9865d2a4b72c5768fb49f 17-May-2012 Andrew Trick <atrick@apple.com> misched: Added 3-level regpressure back-off.

Introduce the basic strategy for register pressure scheduling.

1) Respect target limits at all times.

2) Indentify critical register classes (pressure sets).
Track pressure within the scheduled region.
Avoid increasing scheduled pressure for critical registers.

3) Avoid exceeding the max pressure of the region prior to scheduling.

Added logic for picking between the top and bottom ready Q's based on
regpressure heuristics.

Status: functional but needs to be asjusted to achieve good results.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157006 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
egisterPressure.cpp
egisterPressure.h
0556bd35e564c89149aa02ea8d76f539c87ee875 17-May-2012 Andrew Trick <atrick@apple.com> comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157005 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
egisterPressure.cpp
b54ec26b355157c76b29b12388d49816eaf57da1 17-May-2012 Andrew Trick <atrick@apple.com> regpressure: Fix getMaxUpwardPressureDelta.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157004 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
811d9268e4bd1e7f77d430ce1f352188020375f4 17-May-2012 Andrew Trick <atrick@apple.com> misched: fix liveness iterators

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157003 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
24617213ba8e9d1e0f10af33d88285a92304ab95 17-May-2012 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157002 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
egisterPressure.h
94e58f3a7c50e14819d411db3b6df10bbd35cb5e 17-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Never clear <undef> flags on already joined copies.

RegisterCoalescer set <undef> flags on all operands of copy instructions
that are scheduled to be removed. This is so they won't affect
shrinkToUses() by introducing false register reads.

Make sure those <undef> flags are never cleared, or shrinkToUses() could
cause live intervals to end at instructions about to be deleted.

This would be a lot simpler if RegisterCoalescer could just erase joined
copies immediately instead of keeping all the to-be-deleted instructions
around.

This fixes PR12862. Unfortunately, bugpoint can't create a sane test
case for this. Like many other coalescer problems, this failure depends
of a very fragile series of events.

<rdar://problem/11474428>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157001 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
e3da8c62864da0ed0386075baf79d612746d849b 17-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a verifier bug.

Make sure useless (def-only) intervals also get verified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157000 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
29424e8133bacadecff1eaf3f9c6a78c778b12b0 17-May-2012 Bill Wendling <isanbard@gmail.com> Relax the requirement that the exception object must be an instruction. During
bugpoint-ing, it may turn into something else.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156998 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
c187df2198bc6e2b038fa2d75af974644874d26f 17-May-2012 Stepan Dyatkovskiy <stpworld@narod.ru> SelectionDAGBuilder: CaseBlock, CaseRanges and CaseCmp changed representation of Low and High from signed to unsigned. Since unsigned ints usually simpler, faster and allows to reduce some extra signed bit checks needed before <,>,<=,>= comparisons.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156985 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
07a267faec7bd77fdece44f242cb4270120e0ef2 16-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Set sub-register <undef> flags more accurately.

When widening an existing <def,reads-undef> operand to a super-register,
it may be necessary to clear the <undef> flag because the wider register
is now read-modify-write through the instruction.

Conversely, it may be necessary to add an <undef> flag when the
coalescer turns a full-register def into a sub-register def, but the
larger register wasn't live before the instruction.

This happens in test/CodeGen/ARM/coalesce-subregs.ll, but the test
is too small for the <undef> flags to affect the generated code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156951 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
04b2c5042727b091ad425110d952491a40c88ee3 16-May-2012 Duncan Sands <baldrick@free.fr> Fix a thinko in DisintegrateMERGE_VALUES. Patch by Xiaoyi Guo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156909 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
83b3a293349919d18bc05d87bc03156ef6637370 16-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable sub-sub-register copy coalescing.

It is now possible to coalesce weird skewed sub-register copies by
picking a super-register class larger than both original registers. The
included test case produces code like this:

vld2.32 {d16, d17, d18, d19}, [r0]!
vst2.32 {d18, d19, d20, d21}, [r0]

We still perform interference checking as if it were a normal full copy
join, so this is still quite conservative. In particular, the f1 and f2
functions in the included test case still have remaining copies because
of false interference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156878 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
ceacd6da8c31106333952f6dc4fd6e6aa98312f1 16-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach RegisterCoalescer to handle symmetric sub-register copies.

It is possible to coalesce two overlapping registers to a common
super-register that it larger than both of the original registers.

The important difference is that it may be necessary to rewrite DstReg
operands as well as SrcReg operands because the sub-register index has
changed.

This behavior is still disabled by CoalescerPair.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156869 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
70724aaf7329b8de8e53648b2a3afcbbf46ddbb7 16-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle NewReg==OldReg in renameRegister().

This can happen when widening a virtual register to a super-register
class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156867 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
141aea9cff95b8df8ca89fb757dc44ee37a3d8df 16-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> We never call adjustCopiesBackFrom() for partial copies.

There is no need to look at an always null SrcIdx.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156866 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
94b62ac5f3b2732251f164ee6feab2dd1a4b967f 15-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Extend the CoalescerPair interface to handle symmetric sub-register copies.

Now both SrcReg and DstReg can be sub-registers of the final coalesced
register.

CoalescerPair::setRegisters still rejects such copies because
RegisterCoalescer doesn't yet handle them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156848 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
egisterCoalescer.h
eb05b976e6e13fb0a8d1c45822dff67b0374e123 15-May-2012 Andrew Trick <atrick@apple.com> Add -enable-aa-sched-mi, off by default, for AliasAnalysis inside MachineScheduler.

This feature avoids creating edges in the scheduler's dependence graph
for non-aliasing memory operations according to whichever alias
analysis is available. It has been fully tested in Hexagon. Before
making this default, it needs to be extended to handle multiple
MachineMemOperands, compile time needs more evaluation, and
benchmarking on X86 and ARM is needed.

Patch by Sergei Larin!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156842 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
918f55fe239f00651e396be841f2b3b6e242f98d 15-May-2012 Jim Grosbach <grosbach@apple.com> Allow MCCodeEmitter access to the target MCRegisterInfo.

Add the MCRegisterInfo to the factories and constructors.

Patch by Tom Stellard <Tom.Stellard@amd.com>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156828 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
c2c52a647098e72558f1831b7502a79fd22ead31 15-May-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Rejected r156804 due to buildbots failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156808 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a62e235c1c539aef38b94029035b46bd82f12357 15-May-2012 Stepan Dyatkovskiy <stpworld@narod.ru> SelectionDAGBuilder::Clusterify : main functinality was replaced with CRSBuilder::optimize, so big part of Clusterify's code was reduced.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156804 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6565a709702995fa8a5e659269d6cda134383be7 14-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't access MO reference after invalidating operand list.

This should unbreak llvm-x86_64-linux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156778 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
4d10829e1296b7aea0455e000fc318b147182c1c 14-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR12821.

RAFast must add an <imp-def> operand when it is rewriting a sub-register
def that isn't a read-modify-write.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156777 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
a6063c6e29746d9425bdf46d680e28a48dcf58f9 14-May-2012 Dan Gohman <gohman@apple.com> Rename @llvm.debugger to @llvm.debugtrap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156774 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGDumper.cpp
2b3fa322b8788e62e28bc6989a53737bf9483437 12-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't look for empty live ranges in the unions.

Empty live ranges represent undef and still get allocated, but they
won't appear in LiveIntervalUnions.

Patch by Patrik Hägglund!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156685 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.cpp
aefd36bdda0dac496b8acabb25f0de29b370ebca 12-May-2012 Chad Rosier <mcrosier@apple.com> Revert 156658.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156662 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
550a08a876760e305dab25bd22f28acf8ffdeb18 12-May-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Fast-isel doesn't use the expect intrinsic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156658 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
247c5ab07c1c136f37f5ad8ade9a1ee086ca452e 11-May-2012 Manman Ren <mren@apple.com> ARM: peephole optimization to remove cmp instruction

This patch will optimize the following cases:
sub r1, r3 | sub r1, imm
cmp r3, r1 or cmp r1, r3 | cmp r1, imm
bge L1

TO
subs r1, r3
bge L1 or ble L1

If the branch instruction can use flag from "sub", then we can replace
"sub" with "subs" and eliminate the "cmp" instruction.

rdar: 10734411


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156599 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
d4347e1af9141ec9f8e3e527367bfd16c0cc4ffb 11-May-2012 Dan Gohman <gohman@apple.com> Define a new intrinsic, @llvm.debugger. It will be similar to __builtin_trap(),
but it generates int3 on x86 instead of ud2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156593 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGDumper.cpp
89c324bf11b611a322b71ed81846a5c81fb5d01f 10-May-2012 Andrew Trick <atrick@apple.com> misched: Print machineinstrs with -debug-only=misched

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156576 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
28ebc89c413c042bf693d9ad6971f0fb5cca2f0f 10-May-2012 Andrew Trick <atrick@apple.com> misched: tracing register pressure heuristics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156575 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
7196a8ff213338b9b09ee48efb9c96b699726d5d 10-May-2012 Andrew Trick <atrick@apple.com> misched: Add register pressure backoff to ConvergingScheduler.

Prioritize the instruction that comes closest to keeping pressure
under the target's limit. Then prioritize instructions that avoid
increasing the max pressure in the scheduled region. The max pressure
heuristic is a tad aggressive. Later I'll fix it to consider the
unscheduled pressure as well.

WIP: This is mostly functional but untested and not likely to do much good yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156574 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
16716c730216e461a9b5b71d19f1c4eef257cecd 10-May-2012 Andrew Trick <atrick@apple.com> misched: Release only unscheduled nodes into ReadyQ.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156573 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
d38f87eeecbf58553e460f4cd9a4666a2caeba62 10-May-2012 Andrew Trick <atrick@apple.com> misched: Added ReadyQ container wrapper for Top and Bottom Queues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156572 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
7f8ab785af09e4d6e4db07157a5b5aa449b5c3ae 10-May-2012 Andrew Trick <atrick@apple.com> misched: Introducing Top and Bottom register pressure trackers during scheduling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156571 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
egisterPressure.cpp
egisterPressure.h
55ba5dff3c1a723adf302f1124aafde797dbf31a 10-May-2012 Andrew Trick <atrick@apple.com> RegPressure: API for speculatively checking instruction pressure.

Added getMaxExcessUpward/DownwardPressure. They somewhat abuse the
tracker by speculatively handling an instruction out of order. But it
is convenient for now. In the future, we will cache each instruction's
pressure contribution to make this efficient.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156561 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
egisterPressure.h
d25303533909f62eae18ee53ed0ff692174b092c 10-May-2012 Andrew Trick <atrick@apple.com> RegPressure: fix array index iteration style.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156560 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
fe65d98dadbedf2650266ac71c1c093c3b97da1f 10-May-2012 Manman Ren <mren@apple.com> Revert: 156550 "ARM: peephole optimization to remove cmp instruction"

This commit broke an external linux bot and gave a compile-time warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156556 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
8ae4f062e4aefe60732b3fc135769aaedddf082d 10-May-2012 Manman Ren <mren@apple.com> ARM: peephole optimization to remove cmp instruction

This patch will optimize the following cases:
sub r1, r3 | sub r1, imm
cmp r3, r1 or cmp r1, r3 | cmp r1, imm
bge L1

TO
subs r1, r3
bge L1 or ble L1

If the branch instruction can use flag from "sub", then we can replace
"sub" with "subs" and eliminate the "cmp" instruction.

rdar: 10734411


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156550 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
a80f2d1f976a40ce627e18e3a80e52cb1f1aecb5 08-May-2012 Eric Christopher <echristo@apple.com> Fix thinko in conditional.

Part of rdar://11352000 and should bring the buildbots back.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156421 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a249f7de5df0bb6260fdebee528221fc84092140 08-May-2012 Jim Grosbach <grosbach@apple.com> DAGCombiner should not change the type of an extract_vector index.

When a combine twiddles an extract_vector, care should be take to preserve
the type of the index operand. No luck extracting a reasonable testcase,
unfortunately.

rdar://11391009

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9318e484de290b46192e834eb8feca18e0ece153 08-May-2012 Akira Hatanaka <ahatanaka@mips.com> Formatting fixes.

Patch by Jack Carter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156409 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
501207676c78fefcfc9eeeaa1e3dbe9ea857d33f 08-May-2012 Eric Christopher <echristo@apple.com> Handle OpDeref in case it comes in as a register operand.

Part of rdar://11352000

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156405 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
92ff7cae7c5a6ce236549516119a9e0b2e71fda0 08-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract methods for joining physregs.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156345 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
9790266eeae86b2d763d0760f239ab90bc1de84a 08-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Naming convention and whitespace. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156342 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
defa0afa146f4c2370fe126b7860d6d57cf20909 08-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Coalesce subreg-subreg copies.

At least some of them:

%vreg1:sub_16bit = COPY %vreg2:sub_16bit; GR64:%vreg1, GR32: %vreg2

Previously, we couldn't figure out that the above copy could be
eliminated by coalescing %vreg2 with %vreg1:sub_32bit.

The new getCommonSuperRegClass() hook makes it possible.

This is not very useful yet since the unmodified part of the destination
register usually interferes with the source register. The coalescer
needs to understand sub-register interference checking first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156334 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
397fc4874efe9c17e737d4c5c50bd19dc3bf27f5 08-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an MF argument to TRI::getPointerRegClass() and TII::getRegClass().

The getPointerRegClass() hook can return register classes that depend on
the calling convention of the current function (ptr_rc_tailcall).

So far, we have been able to infer the calling convention from the
subtarget alone, but as we add support for multiple calling conventions
per target, that no longer works.

Patch by Yiannis Tsiouris!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156328 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
riticalAntiDepBreaker.cpp
ocalStackSlotAllocation.cpp
achineInstr.cpp
achineLICM.cpp
achineVerifier.cpp
egisterCoalescer.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGRRList.cpp
woAddressInstructionPass.cpp
713e953118175d693a3fddbf6a61dc73aa69ad87 07-May-2012 Owen Anderson <resistor@mac.com> Teach DAG combine to fold x-x to 0.0 when unsafe FP math is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156324 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
aaf723dd2bccc052d2dd28e3cc4db76f2a3e2fb0 05-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Add a new target hook "predictableSelectIsExpensive".

This will be used to determine whether it's profitable to turn a select into a
branch when the branch is likely to be predicted.

Currently enabled for everything but Atom on X86 and Cortex-A9 devices on ARM.

I'm not entirely happy with the name of this flag, suggestions welcome ;)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156233 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7fc4d9cbc54c2e5393440a40b566c1f0527d8037 05-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make sure findRepresentativeClass picks the widest super-register.

We want the representative register class to contain the largest
super-registers available. This makes the function less sensitive to the
register class numbering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156220 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
41afb9da2c808409fb689288bc9b77bc817e235d 05-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove extra comma in debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156219 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e3ee49fb2728dcb9702b5be0c3c80f472ffccefc 04-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use SuperRegClassIterator for findRepresentativeClass().

The masks returned by SuperRegClassIterator are computed automatically
by TableGen. This is better than depending on the manually specified
SuperRegClasses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156147 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d99d68bcee8ce91a18c397756c702363e030fd83 03-May-2012 Evan Cheng <evan.cheng@apple.com> Fix two-address pass's aggressive instruction commuting heuristics. It's meant
to catch cases like:
%reg1024<def> = MOV r1
%reg1025<def> = MOV r0
%reg1026<def> = ADD %reg1024, %reg1025
r0 = MOV %reg1026

By commuting ADD, it let coalescer eliminate all of the copies. However, there
was a bug in the heuristics where it ended up commuting the ADD in:

%reg1024<def> = MOV r0
%reg1025<def> = MOV 0
%reg1026<def> = ADD %reg1024, %reg1025
r0 = MOV %reg1026

That did no benefit but rather ensure the last MOV would not be coalesced.

rdar://11355268


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156048 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
f12f6dff9784805e8f89309787231c1ec53a8c6e 03-May-2012 Andrew Trick <atrick@apple.com> Added TargetRegisterInfo::getAllocatableClass.

The ensures that virtual registers always belong to an allocatable class.
If your target attempts to create a vreg for an operand that has no
allocatable register subclass, you will crash quickly.

This ensures that targets define register classes as intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156046 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
woAddressInstructionPass.cpp
062c0a5b58b756b91811bf3e6e978257c9fda3ff 03-May-2012 Owen Anderson <resistor@mac.com> Teach DAGCombine the same multiply-by-1.0 folding trick when doing FMAs, just like it now knows for FMULs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156029 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
363e4b90c0a8dfca87ac847001158c743491c06f 02-May-2012 Owen Anderson <resistor@mac.com> Teach DAG combine that multiplication by 1.0 can always be constant folded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156023 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
39cc5138707eee563db7a487cd720b232b4b58fd 02-May-2012 Jim Grosbach <grosbach@apple.com> Tidy up. Naming conventions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155960 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
ce00b440f5d754aaf7196255bc139ce64c260e00 02-May-2012 Jakub Staszak <kubastaszak@gmail.com> Use dyn_cast instead of checking opcode and cast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
95dd4420419a6daae6304ed490a50537094ed488 02-May-2012 Bill Wendling <isanbard@gmail.com> Strip the pointer casts off of allocas so that the selection DAG can find them.
PR10799


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155954 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
902337092fef14ce2519b4c93c37d72bf66ce768 01-May-2012 Sirish Pande <spande@codeaurora.org> Target independent Hexagon Packetizer fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155947 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
7c4ce30ea6a9d0410f306e805403dd224c3df65c 01-May-2012 Bill Wendling <isanbard@gmail.com> Change the PassManager from a reference to a pointer.

The TargetPassManager's default constructor wants to initialize the PassManager
to 'null'. But it's illegal to bind a null reference to a null l-value. Make the
ivar a pointer instead.
PR12468


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155902 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
39379c5df3a0bdcd768fc6421381ca805cd4ee21 01-May-2012 Jakub Staszak <kubastaszak@gmail.com> Add some constantness. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155859 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2b8d0501b169c3ee81a9af1cb715e1be4d6a079e 29-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> RegisterPressure: ArrayRefize some functions for better readability. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155795 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
egisterPressure.h
ff11c0185391023d4f7b3254de94e11a5bb9cd58 28-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't update spill weights when joining intervals.

We don't compute spill weights until after coalescing anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155766 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
f4aee4c50e2ce46946f71bbb7d7a849b054018f7 28-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Spring cleaning - Delete dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155765 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
2674a4acdb51ce610d060b76608f631765a6e508 28-Apr-2012 Andrew Trick <atrick@apple.com> Reapply 155668: Fix the SD scheduler to avoid gluing the same node twice.

This time, also fix the caller of AddGlue to properly handle
incomplete chains. AddGlue had failure modes, but shamefully hid them
from its caller. It's luck ran out.

Fixes rdar://11314175: BuildSchedUnits assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
0e47cfd5b647e8480274c6b29c4e2d01c41a9e82 28-Apr-2012 Andrew Trick <atrick@apple.com> Temporarily revert r155668: Fix the SD scheduler to avoid gluing.

This definitely caused regression with ARM -mno-thumb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155743 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
aec9240be2bc0bc852167b26fd2e217355ecd745 26-Apr-2012 Andrew Trick <atrick@apple.com> Fix the SD scheduler to avoid gluing the same node twice.

DAGCombine strangeness may result in multiple loads from the same
offset. They both may try to glue themselves to another load. We could
insist that the redundant loads glue themselves to each other, but the
beter fix is to bail out from bad gluing at the time we detect it.

Fixes rdar://11314175: BuildSchedUnits assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155668 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
a0b0219a9e13ecd193eee604ab22ffc74b516b02 25-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove more dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155566 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
40a2b653e165b5afc2f612b4b3edbb54a7b5eb59 25-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the -disable-cross-class-join option.

Cross-class joins have been normal and fully supported for a while now.
With TableGen generating the getMatchingSuperRegClass() hook, they are
unlikely to cause problems again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155552 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
a2404e3458ca7d570802ca296240733f2aa41098 25-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Cross-class joining is winning.

Remove the heuristic for disabling cross-class joins. The greedy
register allocator can handle the narrow register classes, and when it
splits a live range, it can pick a larger register class.

Benchmarks were unaffected by this change.

<rdar://problem/11302212>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155551 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
86b7e2acc9e3b55b8afdfeabda124cc6547e943b 24-Apr-2012 Andrew Trick <atrick@apple.com> Fix a naughty header include that breaks "installed" builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155486 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
ddb1420e1752a354a2a18dfc37ecca7eef883beb 24-Apr-2012 Evan Cheng <evan.cheng@apple.com> MachineBasicBlock::SplitCriticalEdge() should follow LLVM IR variant and refuse to break edge to EH landing pad. rdar://11300144

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155470 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
cf5a1461acaace0f3e7d11fbbcfbf635b8c8ea9d 24-Apr-2012 Shih-wei Liao <sliao@google.com> Merge with LLVM upstream r155090.

Conflicts:
lib/Support/Unix/PathV2.inc

Change-Id: I7b89833849f6cbcfa958a33a971d0f7754c9cb2c
63bbe14e203c13336a197e0acc784158924dba8a 24-Apr-2012 Andrew Trick <atrick@apple.com> cmake: new file

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155460 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
c3ad885dac8b4ed1a092e3276aeb84810a4a250c 24-Apr-2012 Andrew Trick <atrick@apple.com> misched: DAG builder must special case earlyclobber

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155459 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
000b2504eef6c1ff4a7857087b0a1cbe0f7e1b1a 24-Apr-2012 Andrew Trick <atrick@apple.com> misched: try (not too hard) to place debug values where they belong

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155458 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
eb45ebbdef242018e2a44e9c4888adb8767da75c 24-Apr-2012 Andrew Trick <atrick@apple.com> misched: ignore debug values during scheduling

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155457 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
006e1abf76148626fb38de1b643c2d31de7f08a7 24-Apr-2012 Andrew Trick <atrick@apple.com> misched: DAG builder support for tracking register pressure within the current scheduling region.

The DAG builder is a convenient place to do it. Hopefully this is more
efficient than a separate traversal over the same region.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155456 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAGInstrs.cpp
4dfeef100d940a0c1ca22055dcb29b02a4848f65 24-Apr-2012 Andrew Trick <atrick@apple.com> RegisterPressure: A utility for computing register pressure within a
MachineInstr sequence.

This uses the new target interface for tracking register pressure
using pressure sets to model overlapping register classes and
subregisters.

RegisterPressure results can be tracked incrementally or stored at
region boundaries. Global register pressure can be deduced from local
RegisterPressure results if desired.

This is an early, somewhat untested implementation. I'm working on
testing it within the context of a register pressure reducing
MachineScheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155454 91177308-0d34-0410-b5e6-96231b3b80d8
egisterPressure.cpp
egisterPressure.h
adb082cd6ae2ec799838cd84d54a381bca175cd4 24-Apr-2012 Bill Wendling <isanbard@gmail.com> Look for the 'Is Simulated' module flag. This indicates that the program is compiled to run on a simulator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155435 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
6a8c7bf8e72338e55f0f9583e1828f62da165d4a 23-Apr-2012 Preston Gurd <preston.gurd@intel.com> This patch fixes a problem which arose when using the Post-RA scheduler
on X86 Atom. Some of our tests failed because the tail merging part of
the BranchFolding pass was creating new basic blocks which did not
contain live-in information. When the anti-dependency code in the Post-RA
scheduler ran, it would sometimes rename the register containing
the function return value because the fact that the return value was
live-in to the subsequent block had been lost. To fix this, it is necessary
to run the RegisterScavenging code in the BranchFolding pass.

This patch makes sure that the register scavenging code is invoked
in the X86 subtarget only when post-RA scheduling is being done.
Post RA scheduling in the X86 subtarget is only done for Atom.

This patch adds a new function to the TargetRegisterClass to control
whether or not live-ins should be preserved during branch folding.
This is necessary in order for the anti-dependency optimizations done
during the PostRASchedulerList pass to work properly when doing
Post-RA scheduling for the X86 in general and for the Intel Atom in particular.

The patch adds and invokes the new function trackLivenessAfterRegAlloc()
instead of using the existing requiresRegisterScavenging().
It changes BranchFolding.cpp to call trackLivenessAfterRegAlloc() instead of
requiresRegisterScavenging(). It changes the all the targets that
implemented requiresRegisterScavenging() to also implement
trackLivenessAfterRegAlloc().

It adds an assertion in the Post RA scheduler to make sure that post RA
liveness information is available when it is needed.

It changes the X86 break-anti-dependencies test to use –mcpu=atom, in order
to avoid running into the added assertion.

Finally, this patch restores the use of anti-dependency checking
(which was turned off temporarily for the 3.1 release) for
Intel Atom in the Post RA scheduler.

Patch by Andy Zhang!

Thanks to Jakob and Anton for their reviews.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155395 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ostRASchedulerList.cpp
e3fd2a36d93ed65fabe9cd8e1c98edd8d4f7ec62 23-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Temporarily revert r155364 until the upstream review can complete, per
the stated developer policy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155373 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
9f6852dcc292882845876ecc1181710a5c35fb1f 23-Apr-2012 Sirish Pande <spande@codeaurora.org> Hexagon Packetizer's target independent fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155364 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
1da5867236f4132ec56493f3535c7b5830878b55 22-Apr-2012 Elena Demikhovsky <elena.demikhovsky@intel.com> ZERO_EXTEND/SIGN_EXTEND/TRUNCATE optimization for AVX2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155309 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
db3461662e7945e04fe42e0d606581bba73c29dc 21-Apr-2012 Nadav Rotem <nadav.rotem@intel.com> Teach getVectorTypeBreakdown about promotion of vectors in addition to widening of vectors.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155296 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
0b35c35efcc584c0a09ed70840bcca420f42be2f 21-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR12599.

The X86 target is editing the selection DAG while isel is selecting
nodes following a topological ordering. When the DAG hacking triggers
CSE, nodes can be deleted and bad things happen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155257 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8c48e4ff899303eb9a4ea8ed1c43d175f0cf48ff 21-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make ISelPosition a local variable.

Now that multiple DAGUpdateListeners can be active at the same time,
ISelPosition can become a local variable in DoInstructionSelection.

We simply register an ISelUpdater with CurDAG while ISelPosition exists.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
bc7d448f242b1bbc1031fb87cd69c285ff9aaffa 21-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Register DAGUpdateListeners with SelectionDAG.

Instead of passing listener pointers to RAUW, let SelectionDAG itself
keep a linked list of interested listeners.

This makes it possible to have multiple listeners active at once, like
RAUWUpdateListener was already doing. It also makes it possible to
register listeners up the call stack without controlling all RAUW calls
below.

DAGUpdateListener uses an RAII pattern to add itself to the SelectionDAG
list of active listeners.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155248 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
3429c7571e87ca6070ceb1b44b1f367ce23c99f9 20-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Print <def,read-undef> to avoid confusion.

The <undef> flag on a def operand only applies to partial register
redefinitions. Only print the flag when relevant, and print it as
<def,read-undef> to make it clearer what it means.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155239 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a30444a69c2503ab7dae4c9d696fd3ade33e921d 20-Apr-2012 Andrew Trick <atrick@apple.com> New and improved comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155229 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
c0ccb8bb17028fe0dda139c0972c0125d10e6053 20-Apr-2012 Andrew Trick <atrick@apple.com> SparseSet: Add support for key-derived indexes and arbitrary key types.

This nicely handles the most common case of virtual register sets, but
also handles anticipated cases where we will map pointers to IDs.

The goal is not to develop a completely generic SparseSet
template. Instead we want to handle the expected uses within llvm
without any template antics in the client code. I'm adding a bit of
template nastiness here, and some assumption about expected usage in
order to make the client code very clean.

The expected common uses cases I'm designing for:
- integer keys that need to be reindexed, and may map to additional
data
- densely numbered objects where we want pointer keys because no
number->object map exists.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155227 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
cheduleDAGInstrs.cpp
918f38ab2420bbdc350a6ec8c6ba6b09e37126b2 20-Apr-2012 Andrew Trick <atrick@apple.com> misched: initialize BB

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155226 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
fc728fbdc2631ce8f343cf9b7292d218fde7419f 19-Apr-2012 Andrew Trick <atrick@apple.com> Allow targets to select the default scheduler by name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155090 91177308-0d34-0410-b5e6-96231b3b80d8
achinePassRegistry.cpp
37097623bbde5420f81ab8d1d056700f8f258025 18-Apr-2012 Chandler Carruth <chandlerc@gmail.com> This reverts a long string of commits to the Hexagon backend. These
commits have had several major issues pointed out in review, and those
issues are not being addressed in a timely fashion. Furthermore, this
was all committed leading up to the v3.1 branch, and we don't need piles
of code with outstanding issues in the branch.

It is possible that not all of these commits were necessary to revert to
get us back to a green state, but I'm going to let the Hexagon
maintainer sort that out. They can recommit, in order, after addressing
the feedback.

Reverted commits, with some notes:

Primary commit r154616: HexagonPacketizer
- There are lots of review comments here. This is the primary reason
for reverting. In particular, it introduced large amount of warnings
due to a bad construct in tablegen.
- Follow-up commits that should be folded back into this when
reposting:
- r154622: CMake fixes
- r154660: Fix numerous build warnings in release builds.
- Please don't resubmit this until the three commits above are
included, and the issues in review addressed.

Primary commit r154695: Pass to replace transfer/copy ...
- Reverted to minimize merge conflicts. I'm not aware of specific
issues with this patch.

Primary commit r154703: New Value Jump.
- Primarily reverted due to merge conflicts.
- Follow-up commits that should be folded back into this when
reposting:
- r154703: Remove iostream usage
- r154758: Fix CMake builds
- r154759: Fix build warnings in release builds
- Please incorporate these fixes and and review feedback before
resubmitting.

Primary commit r154829: Hexagon V5 (floating point) support.
- Primarily reverted due to merge conflicts.
- Follow-up commits that should be folded back into this when
reposting:
- r154841: Remove unused variable (fixing build warnings)

There are also accompanying Clang commits that will be reverted for
consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155047 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
722b6f18536a1b23a03bfb55440f098da0a7762d 18-Apr-2012 Pete Cooper <peter_cooper@apple.com> LiveIntervalUpdate validators weren't recorded after the calls to std::for_each. Turns out std::for_each doesn't update the variable passed in for the functor but instead copy constructs a new one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155041 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d16ce17711e8e6231363fe1fd47800570b75d61d 18-Apr-2012 Joel Jones <joel_k_jones@apple.com> Fixes a problem in instruction selection with testing whether or not the
transformation:

(X op C1) ^ C2 --> (X op C1) & ~C2 iff (C1&C2) == C2

should be done.

This change has been tested:
Using a debug+asserts build:
on the specific test case that brought this bug to light
make check-all
lnt nt
using this clang to build a release version of clang
Using the release+asserts clang-with-clang build:
on the specific test case that brought this bug to light
make check-all
lnt nt

Checking in because Evan wants it checked in. Test case forthcoming after
scrubbing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154955 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
613dfb219c167717576b2383ee57573f4d8f53cf 17-Apr-2012 Lang Hames <lhames@gmail.com> SlotIndexes used to store the index list in a crufty custom linked-list. I can't
for the life of me remember why I wrote it this way, but I can't see any good
reason for it now. This patch replaces the custom linked list with an ilist.

This change should preserve the existing numberings exactly, so no generated code
should change (if it does, file a bug!).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154904 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
e9722e1e8ba43bff2dc8ee3ae948e31f3fb0e370 17-Apr-2012 Eric Christopher <echristo@apple.com> Make comment here more clear.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154878 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
f1a60c734c2edb97ab75e67328935538fae5bae6 17-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Fix updateTerminator to be resiliant to degenerate terminators where
both fallthrough and a conditional branch target the same successor.
Gracefully delete the conditional branch and introduce any unconditional
branch needed to reach the actual successor. This fixes memory
corruption in 2009-06-15-RegScavengerAssert.ll and possibly other tests.

Also, while I'm here fix a latent bug I spotted by inspection. I never
applied the same fundamental fix to this fallthrough successor finding
logic that I did to the logic used when there are no conditional
branches. As a consequence it would have selected landing pads had they
be aligned in just the right way here. I don't have a test case as
I spotted this by inspection, and the previous time I found this
required have of TableGen's source code to produce it. =/ I hate backend
bugs. ;]

Thanks to Jim Grosbach for helping me reason through this and reviewing
the fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154867 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
9e67db4af13abb967cae5858502207a43d26bf84 16-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Flip the new block-placement pass to be on by default.

This is mostly to test the waters. I'd like to get results from FNT
build bots and other bots running on non-x86 platforms.

This feature has been pretty heavily tested over the last few months by
me, and it fixes several of the execution time regressions caused by the
inlining work by preventing inlining decisions from radically impacting
block layout.

I've seen very large improvements in yacr2 and ackermann benchmarks,
along with the expected noise across all of the benchmark suite whenever
code layout changes. I've analyzed all of the regressions and fixed
them, or found them to be impossible to fix. See my email to llvmdev for
more details.

I'd like for this to be in 3.1 as it complements the inliner changes,
but if any failures are showing up or anyone has concerns, it is just
a flag flip and so can be easily turned off.

I'm switching it on tonight to try and get at least one run through
various folks' performance suites in case SPEC or something else has
serious issues with it. I'll watch bots and revert if anything shows up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154816 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
e773e8c3e53aadb6e861316e4db88d63a0226b2f 16-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Add a somewhat hacky heuristic to do something different from whole-loop
rotation. When there is a loop backedge which is an unconditional
branch, we will end up with a branch somewhere no matter what. Try
placing this backedge in a fallthrough position above the loop header as
that will definitely remove at least one branch from the loop iteration,
where whole loop rotation may not.

I haven't seen any benchmarks where this is important but loop-blocks.ll
tests for it, and so this will be covered when I flip the default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154812 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
16295fc20b68f9a9318cada4e4d96e964b1cdd7e 16-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Tweak the loop rotation logic to check whether the loop is naturally
laid out in a form with a fallthrough into the header and a fallthrough
out of the bottom. In that case, leave the loop alone because any
rotation will introduce unnecessary branches. If either side looks like
it will require an explicit branch, then the rotation won't add any, do
it to ensure the branch occurs outside of the loop (if possible) and
maximize the benefit of the fallthrough in the bottom.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154806 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
31490baf38680012000890dcb11ac4914ec94911 16-Apr-2012 Hal Finkel <hfinkel@anl.gov> Remove dead SD nodes after the combining pass. Fixes PR12201.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
70daea90afc167a010a1851defda01d7e0eb45eb 16-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Rewrite how machine block placement handles loop rotation.

This is a complex change that resulted from a great deal of
experimentation with several different benchmarks. The one which proved
the most useful is included as a test case, but I don't know that it
captures all of the relevant changes, as I didn't have specific
regression tests for each, they were more the result of reasoning about
what the old algorithm would possibly do wrong. I'm also failing at the
moment to craft more targeted regression tests for these changes, if
anyone has ideas, it would be welcome.

The first big thing broken with the old algorithm is the idea that we
can take a basic block which has a loop-exiting successor and a looping
successor and use the looping successor as the layout top in order to
get that particular block to be the bottom of the loop after layout.
This happens to work in many cases, but not in all.

The second big thing broken was that we didn't try to select the exit
which fell into the nearest enclosing loop (to which we exit at all). As
a consequence, even if the rotation worked perfectly, it would result in
one of two bad layouts. Either the bottom of the loop would get
fallthrough, skipping across a nearer enclosing loop and thereby making
it discontiguous, or it would be forced to take an explicit jump over
the nearest enclosing loop to earch its successor. The point of the
rotation is to get fallthrough, so we need it to fallthrough to the
nearest loop it can.

The fix to the first issue is to actually layout the loop from the loop
header, and then rotate the loop such that the correct exiting edge can
be a fallthrough edge. This is actually much easier than I anticipated
because we can handle all the hard parts of finding a viable rotation
before we do the layout. We just store that, and then rotate after
layout is finished. No inner loops get split across the post-rotation
backedge because we check for them when selecting the rotation.

That fix exposed a latent problem with our exitting block selection --
we should allow the backedge to point into the middle of some inner-loop
chain as there is no real penalty to it, the whole point is that it
*won't* be a fallthrough edge. This may have blocked the rotation at all
in some cases, I have no idea and no test case as I've never seen it in
practice, it was just noticed by inspection.

Finally, all of these fixes, and studying the loops they produce,
highlighted another problem: in rotating loops like this, we sometimes
fail to align the destination of these backwards jumping edges. Fix this
by actually walking the backwards edges rather than relying on loopinfo.

This fixes regressions on heapsort if block placement is enabled as well
as lots of other cases where the previous logic would introduce an
abundance of unnecessary branches into the execution.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154783 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
3ab32ea49ec13182f1397dc89c37551692f67140 15-Apr-2012 Nadav Rotem <nadav.rotem@intel.com> When emulating vselect using OR/AND/XOR make sure to bitcast the result back to the original type.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154764 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
007079201276368736fc893d4d5ec7aeeca00823 14-Apr-2012 Andrew Trick <atrick@apple.com> misched: Added CanHandleTerminators.

This is a special flag for targets that really want their block
terminators in the DAG. The default scheduler cannot handle this
correctly, so it becomes the specialized scheduler's responsibility to
schedule terminators.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154712 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
36c38b81f0938974c0b1b5fde0b838d51466a94f 13-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> Reduce malloc traffic in DwarfAccelTable

- Don't copy offsets into HashData, the underlying vector won't change once the table is finalized.
- Allocate HashData and HashDataContents in a BumpPtrAllocator.
- Allocate string map entries in the same allocator.
- Random cleanups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154694 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
d1a87a68064e0b9af3b71b681286954f861bb1b3 12-Apr-2012 Sirish Pande <spande@codeaurora.org> HexagonPacketizer patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154616 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
2e506198c8cc7eec8f2f4fb4719a07daef17f931 11-Apr-2012 Nadav Rotem <nadav.rotem@intel.com> Reapply 154397. Original message:

Fix a dagcombine optimization which assumes that the vsetcc result type is always
of the same size as the compared values. This is ture for SSE/AVX/NEON but not
for all targets.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154490 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7eb46d834ccca887ab8fbd1d96080f9a4632bb48 11-Apr-2012 Craig Topper <craig.topper@gmail.com> Fix an overly indented line. Remove an 'else' after an 'if' that returns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154479 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c42e640dc8a970c7d16934a16551c4c1a3b3acae 11-Apr-2012 Craig Topper <craig.topper@gmail.com> Inline implVisitAluOverflow by introducing a nested switch to convert the intrinsic to an nodetype.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154478 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
23de31b13bfde8dfe3d5c21322f5e08608725521 11-Apr-2012 Craig Topper <craig.topper@gmail.com> Optimize code a bit by calling push_back only once in some loops. Reduces compiled code size a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154473 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
71fbed45d9f4e2e886afc7f22c058087e7872dc6 11-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Tweak MachineLICM heuristics for cheap instructions.

Allow cheap instructions to be hoisted if they are register pressure
neutral or better. This happens if the instruction is the last loop use
of another virtual register.

Only expensive instructions are allowed to increase loop register
pressure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154455 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
8b560b8c485992dbd62ee31aaff5ac25b5549bd6 11-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Only check for PHI uses inside the current loop.

Hoisting a value that is used by a PHI in the loop will introduce a
copy because the live range is extended to cross the PHI.

The same applies to PHIs in exit blocks.

Also use this opportunity to make HasLoopPHIUse() non-recursive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154454 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
06886aaaebe38b7e4b253b336624c9a7ab6dbc44 11-Apr-2012 Owen Anderson <resistor@mac.com> Move the constant-folding support for FP_ROUND in SelectionDAG from the one-operand version of getNode() to the two-operand version, since it became a two-operand node at sound point.
Zap a testcase that this allows us to completely fold away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154447 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
507bb7a42fce6502f90268712cbc32158c17bb59 10-Apr-2012 Duncan Sands <baldrick@free.fr> Add a comment noting that the fdiv -> fmul conversion won't generate
multiplication by a denormal, and some tests checking that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154431 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
18112d83e7d54597bcd5870fb411c7997e02bc1e 10-Apr-2012 Eric Christopher <echristo@apple.com> To ensure that we have more accurate line information for a block
don't elide the branch instruction if it's the only one in the block,
otherwise it's ok.

PR9796 and rdar://11215207

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
b79855ee181b0a74507022894b0f753af0041121 10-Apr-2012 Owen Anderson <resistor@mac.com> Revert r154397, which was causing make check failures on the buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154414 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
77dde089abc8dcfd40c73f980ccebf3f2255405f 10-Apr-2012 Nadav Rotem <nadav.rotem@intel.com> Fix a dagcombine optimization which assumes that the vsetcc result type is always
of the same size as the compared values. This is ture for SSE/AVX/NEON but not
for all targets.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154397 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
45fb79bc54159330979bf24e4bfbdbb64bee1e2c 10-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Make a somewhat subtle change in the logic of block placement. Sometimes
the loop header has a non-loop predecessor which has been pre-fused into
its chain due to unanalyzable branches. In this case, rotating the
header into the body of the loop in order to place a loop exit at the
bottom of the loop is a Very Bad Idea as it makes the loop
non-contiguous.

I'm working on a good test case for this, but it's a bit annoynig to
craft. I should get one shortly, but I'm submitting this now so I can
begin the (lengthy) performance analysis process. An initial run of LNT
looks really, really good, but there is too much noise there for me to
trust it much.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154395 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
999821cddfeb8fd5115261c539c951f8733c943a 10-Apr-2012 Anton Korobeynikov <asl@math.spbu.ru> Transform div to mul with reciprocal only when fp imm is legal.
This fixes PR12516 and uncovers one weird problem in legalize (workarounded)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154394 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b52ba49fdbf6cdf055e8b264c18b6e594fd30dc4 10-Apr-2012 Evan Cheng <evan.cheng@apple.com> Make the code slightly more palatable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bf010eb9110009d745382bf15131fbe556562ffe 10-Apr-2012 Evan Cheng <evan.cheng@apple.com> Fix a long standing tail call optimization bug. When a libcall is emitted
legalizer always use the DAG entry node. This is wrong when the libcall is
emitted as a tail call since it effectively folds the return node. If
the return node's input chain is not the entry (i.e. call, load, or store)
use that as the tail call input chain.

PR12419
rdar://9770785
rdar://11195178


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154370 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/LegalizeDAG.cpp
fdb230a154ead49cf0ded5b4587be994ec2f43e0 10-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> Don't try to zExt just to check if an integer constant is zero, it might
not fit in a i64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
787c3fd385834db61bd955dcc40fb02b77c183a9 09-Apr-2012 Akira Hatanaka <ahatanaka@mips.com> Have TargetLowering::getPICJumpTableRelocBase return a node that points to the
GOT if jump table uses 64-bit gp-relative relocation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154341 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
f31ceaf8b7b1c5092fe35e20732711f5e1074118 09-Apr-2012 Lang Hames <lhames@gmail.com> Patch r153892 for PR11861 apparently broke an external project (see PR12493).

This patch restores TwoAddressInstructionPass's pre-r153892 behaviour when
rescheduling instructions in TryInstructionTransform. Hopefully this will fix
PR12493. To refix PR11861, lowering of INSERT_SUBREGS is deferred until after
the copy that unties the operands is emitted (this seems to be a more
appropriate fix for that issue anyway).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154338 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
decbc43f72866fa33d18e4b63d0d2dd2a2e102f6 09-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> Pattern match a setcc of boolean value with 0 as a truncate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154322 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f920423ffc41dcde33b25ea7d6f25272b709b7fc 09-Apr-2012 Craig Topper <craig.topper@gmail.com> Remove unnecessary type check when combining and/or/xor of swizzles. Move some checks to allow better early out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154309 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b7135e5838f1d08378952de125af9006449fa25c 09-Apr-2012 Craig Topper <craig.topper@gmail.com> Remove unnecessary 'else' on an 'if' that always returns

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154308 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4b206bdfd0839fe61fda3e0b6955a80646a93977 09-Apr-2012 Craig Topper <craig.topper@gmail.com> Optimize code slightly. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154307 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ae1bec52f7a0e8b719e74f3575ec238094ff7599 09-Apr-2012 Craig Topper <craig.topper@gmail.com> Replace some explicit checks with asserts for conditions that should never happen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
10612dc15f48cace9d62c7b5df772234a7c386e4 09-Apr-2012 Craig Topper <craig.topper@gmail.com> Optimize code a bit. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154299 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c47bc3321825ff3aa9aee4ff125c5e9ee853e449 08-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> Silence sign-compare warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154297 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3ef3fcfc0414b96d626b706c6151596684b7d134 08-Apr-2012 Duncan Sands <baldrick@free.fr> Only have codegen turn fdiv by a constant into fmul by the reciprocal
when -ffast-math, i.e. don't just always do it if the reciprocal can
be formed exactly. There is already an IR level transform that does
that, and it does it more carefully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154296 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f873dde50264ffab16f3d12eaec8be91edfcc131 08-Apr-2012 Craig Topper <craig.topper@gmail.com> Simplify code that tries to do vector extracts for shuffles when the mask width and the input vector widths don't match. No need to check the min and max are in range before calculating the start index. The range check after having the start index is sufficient. Also no need to check for an extract from the beginning differently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154295 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
34797136cb9fa9f450c0e1c47983482083979dd4 08-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Move the TLSModel information into the TargetMachine rather than hiding
in TargetLowering. There was already a FIXME about this location being
odd. The interface is simplified as a consequence. This will also make
it easier to change TLS models when compiling with PIE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154292 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
5e93a7672222853cdf5dd261c322e6f89d40be01 08-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Remove an over zealous assert. The assert was trying to catch places
where a chain outside of the loop block-set ended up in the worklist for
scheduling as part of the contiguous loop. However, asserting the first
block in the chain is in the loop-set isn't a valid check -- we may be
forced to drag a chain into the worklist due to one block in the chain
being part of the loop even though the first block is *not* in the loop.
This occurs when we have been forced to form a chain early due to
un-analyzable branches.

No test case here as I have no idea how to even begin reducing one, and
it will be hopelessly fragile. We have to somehow end up with a loop
header of an inner loop which is a successor of a basic block with an
unanalyzable pair of branch instructions. Ow. Self-host triggers it so
it is unlikely it will regress.

This at least gets block placement back to passing selfhost and the test
suite. There are still a lot of slowdown that I don't like coming out of
block placement, although there are now also a lot of speedups. =[ I'm
seeing swings in both directions up to 10%. I'm going to try to find
time to dig into this and see if we can turn this on for 3.1 as it does
a really good job of cleaning up after some loops that degraded with the
inliner changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154287 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
6313d941d29d77f62662c4bd13f12314e6b4b86e 08-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Add a debug-only 'dump' method to the BlockChain structure to ease
debugging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154286 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
b45c96995924d1b74f2a91e85e21be98709285cd 08-Apr-2012 Craig Topper <craig.topper@gmail.com> Turn avx2 vinserti128 intrinsic calls into INSERT_SUBVECTOR DAG nodes and remove patterns for selecting the intrinsic. Similar was already done for avx1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154272 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
ad9fb01e86606e36965eb0cf53b27f296fd22948 07-Apr-2012 Craig Topper <craig.topper@gmail.com> Remove 'else' after 'if' that ends in return.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154267 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
d16c8d0d336638225378466bc17c9db156401817 07-Apr-2012 Nadav Rotem <nadav.rotem@intel.com> 1. Remove the part of r153848 which optimizes shuffle-of-shuffle into a new
shuffle node because it could introduce new shuffle nodes that were not
supported efficiently by the target.

2. Add a more restrictive shuffle-of-shuffle optimization for cases where the
second shuffle reverses the transformation of the first shuffle.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154266 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
961d666be4f3714452ff9f15470f9255d85f0506 07-Apr-2012 Duncan Sands <baldrick@free.fr> Convert floating point division by a constant into multiplication by the
reciprocal if converting to the reciprocal is exact. Do it even if inexact
if -ffast-math. This substantially speeds up ac.f90 from the polyhedron
benchmarks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154265 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
60b35f408bc3194e7ea4e96367c0b42dc5e7f850 05-Apr-2012 Eric Christopher <echristo@apple.com> Patch to set is_stmt a little better for prologue lines in a function.
This enables debuggers to see what are interesting lines for a
breakpoint rather than any line that starts a function.

rdar://9852092

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154120 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
740cd657f3d9d4e88614831c70a649f9257164da 05-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't break the IV update in TLI::SimplifySetCC().

LSR always tries to make the ICmp in the loop latch use the incremented
induction variable. This allows the induction variable to be kept in a
single register.

When the induction variable limit is equal to the stride,
SimplifySetCC() would break LSR's hard work by transforming:

(icmp (add iv, stride), stride) --> (cmp iv, 0)

This forced us to use lea for the IC update, preventing the simpler
incl+cmp.

<rdar://problem/7643606>
<rdar://problem/11184260>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154119 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d7484e5d9b25fe907cdad283659fcdeb5c73060f 05-Apr-2012 Owen Anderson <resistor@mac.com> Treat f16 the same as f80/f128 for the purposes of generating constants during instruction selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154113 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ef74ca6a41c899273c5df5af1ba1ad6c9bb7da97 04-Apr-2012 Pete Cooper <peter_cooper@apple.com> REG_SEQUENCE expansion to COPY instructions wasn't taking account of sub register indices on the source registers. No simple test case

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154051 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
9751b81fc97dcb6ecc4be4304ef8e6e8cf79f6e4 04-Apr-2012 Pete Cooper <peter_cooper@apple.com> f16 FREM can now be legalized by promoting to f32

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154039 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1487cb3a5a0535b343e602e976af538fd87d0df2 04-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove spurious debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154032 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
26c8dcc692fb2addd475446cfff24d6a4e958bca 04-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> Always compute all the bits in ComputeMaskedBits.
This allows us to keep passing reduced masks to SimplifyDemandedBits, but
know about all the bits if SimplifyDemandedBits fails. This allows instcombine
to simplify cases like the one in the included testcase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
8d41a1a7e68164d36d5332aa82d871902000db5b 04-Apr-2012 Craig Topper <craig.topper@gmail.com> Remove default case from switch that was already covering all cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153996 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e5ae51a38f156ae7bfa50fc6b27d0042793e8fd1 04-Apr-2012 Pete Cooper <peter_cooper@apple.com> Removed useless switch for default case when switch was covering all the enum values

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153984 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
2ce63c73520cd6e715f9114589f802938b5db01f 04-Apr-2012 Pete Cooper <peter_cooper@apple.com> Add VSELECT to LegalizeVectorTypes::ScalariseVectorResult. Previously it would crash if it encountered a 1 element VSELECT. Solution is slightly more complicated than just creating a SELET as we have to mask or sign extend the vector condition if it had different boolean contents from the scalar condition. Fixes <rdar://problem/11178095>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153976 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
dda3a099a096588d435fdb855b52b0a203316de2 04-Apr-2012 Pete Cooper <peter_cooper@apple.com> Removed one last bad continue statement meant to be removed in r153914.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153975 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
9dbb018b36d37d9676fe70ac5d928e69ae01b7fb 03-Apr-2012 Chad Rosier <mcrosier@apple.com> Fix an issue in SimplifySetCC() specific to vector comparisons.

When folding X == X we need to check getBooleanContents() to determine if the
result is a vector of ones or a vector of negative ones.

I tried creating a test case, but the problem seems to only be exposed on a
much older version of clang (around r144500).
rdar://10923049


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153966 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
fa5b05013679fe04bac94084d411d2774608236f 03-Apr-2012 Eric Christopher <echristo@apple.com> Fix thinko check for number of operands to be the one that actually
might have more than 19 operands. Add a testcase to make sure I
never screw that up again.

Part of rdar://11026482

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153961 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6126a1e1894f346fae02a514a20aa56b879aeb99 03-Apr-2012 Eric Christopher <echristo@apple.com> Add a line number for the scope of the function (starting at the first
brace) so that we get more accurate line number information about the
declaration of a given function and the line where the function
first starts.

Part of rdar://11026482

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153916 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2e267ae7b8caf7192a3793eb3b78937ff83f794d 03-Apr-2012 Pete Cooper <peter_cooper@apple.com> Fixes to r153903. Added missing explanation of behaviour when the VirtRegMap is NULL. Also changed it in this case to just avoid updating the map, but live ranges or intervals will still get updated and created

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153914 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
789d5d85ba6e9259a8e0f0bcfbd06a59ad164512 03-Apr-2012 Pete Cooper <peter_cooper@apple.com> Moved LiveRangeEdit.h so that it can be called from other parts of the backend, not just libCodeGen

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153906 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
egAllocBase.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
piller.cpp
plitKit.cpp
e3b23cde80b19507f1d8b641a541e91ace0864dc 03-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allocate virtual registers in ascending order.

This is just the fallback tie-breaker ordering, the main allocation
order is still descending size.

Patch by Shamil Kurmangaleev!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153904 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
8a06af96698537377275dd7848db69915638dd26 03-Apr-2012 Pete Cooper <peter_cooper@apple.com> Refactored the LiveRangeEdit interface so that MachineFunction, TargetInstrInfo, MachineRegisterInfo, LiveIntervals, and VirtRegMap are all passed into the constructor and stored as members instead of passed in to each method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153903 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
piller.cpp
plitKit.cpp
29f60f359b59032108cdabcde91217b6784c4e13 03-Apr-2012 Owen Anderson <resistor@mac.com> Add predicates for checking whether targets have free FNEG and FABS operations, and prevent the DAGCombiner from turning them into bitwise operations if they do.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153901 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
be9fe49b179a89a659fe786d64b176d2b360bb4a 02-Apr-2012 Lang Hames <lhames@gmail.com> During two-address lowering, rescheduling an instruction does not untie
operands. Make TryInstructionTransform return false to reflect this.
Fixes PR11861.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153892 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
60777d8eaf338fd7fef2296f78d5e513bf0da011 02-Apr-2012 Eric Christopher <echristo@apple.com> Turn on the accelerator tables for Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153880 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
44b5e6de8cb7a5562f698078415a3a9b608b8ed6 02-Apr-2012 Nadav Rotem <nadav.rotem@intel.com> Optimizing swizzles of complex shuffles may generate additional complex shuffles.

Do not try to optimize swizzles of shuffles if the source shuffle has more than
a single user, except when the source shuffle is also a swizzle.






git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153864 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
17463b3ef1a3d39b10619254f12e806c8c43f9e7 02-Apr-2012 Craig Topper <craig.topper@gmail.com> Make MCInstrInfo available to the MCInstPrinter. This will be used to remove getInstructionName and the static data it contains since the same tables are already in MCInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153860 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
4ac9081c7110dbf099d682fa51c091741e763491 01-Apr-2012 Nadav Rotem <nadav.rotem@intel.com> This commit contains a few changes that had to go in together.

1. Simplify xor/and/or (bitcast(A), bitcast(B)) -> bitcast(op (A,B))
(and also scalar_to_vector).

2. Xor/and/or are indifferent to the swizzle operation (shuffle of one src).
Simplify xor/and/or (shuff(A), shuff(B)) -> shuff(op (A, B))

3. Optimize swizzles of shuffles: shuff(shuff(x, y), undef) -> shuff(x, y).

4. Fix an X86ISelLowering optimization which was very bitcast-sensitive.

Code which was previously compiled to this:

movd (%rsi), %xmm0
movdqa .LCPI0_0(%rip), %xmm2
pshufb %xmm2, %xmm0
movd (%rdi), %xmm1
pshufb %xmm2, %xmm1
pxor %xmm0, %xmm1
pshufb .LCPI0_1(%rip), %xmm1
movd %xmm1, (%rdi)
ret

Now compiles to this:

movl (%rsi), %eax
xorl %eax, (%rdi)
ret




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153848 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
16d6eae08209251a31dae638908c79bd39620c91 01-Apr-2012 Lang Hames <lhames@gmail.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153846 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
830da405fa32ab4f2a8378a658e1429a9ffd4d65 01-Apr-2012 Andrew Trick <atrick@apple.com> misched: Add finalizeScheduler to complete the target interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153827 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
95d594cac3737ae1594a391276942a443cac426b 31-Mar-2012 Rafael Espindola <rafael.espindola@gmail.com> Teach CodeGen's version of computeMaskedBits to understand the range metadata.
This is the CodeGen equivalent of r153747. I tested that there is not noticeable
performance difference with any combination of -O0/-O2 /-g when compiling
gcc as a single compilation unit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153817 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
84364a4e23e8ba2fe9332da99bcab31acc173381 30-Mar-2012 Bill Wendling <isanbard@gmail.com> If we have a VLA that has a "use" in a metadata node that's then used
here but it has no other uses, then we have a problem. E.g.,

int foo (const int *x) {
char a[*x];
return 0;
}

If we assign 'a' a vreg and fast isel later on has to use the selection
DAG isel, it will want to copy the value to the vreg. However, there are
no uses, which goes counter to what selection DAG isel expects.
<rdar://problem/11134152>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153705 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
b8ca98874316bfe8e46b27e7a034a8a764c92e08 29-Mar-2012 Eric Christopher <echristo@apple.com> Add support for objc property decls according to the page at:

http://llvm.org/docs/SourceLevelDebugging.html#objcproperty

including type and DECL. Expand the metadata needed accordingly.

rdar://11144023

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153639 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
8b4c502098d8a8aee52f2251db5614d9d26c83e2 29-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable machine code verification in the entire code generator.

Some targets still mess up the liveness information, but that isn't
verified after MRI->invalidateLiveness().

The verifier can still check other useful things like register classes
and CFG, so it should be enabled after all passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153615 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
78811669d5872b28c447ea9f7cfc3963c7f72841 29-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable machine code verification after PreSched2 passes.

The late scheduler depends on accurate liveness information if it is
breaking anti-dependencies, so we should be able to verify it.

Relax the terminator checking in the machine code verifier so it can
handle the basic blocks created by if conversion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153614 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
asses.cpp
2ef5bf6b34cb0041648e7cb857d2c6e673d0550b 28-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Also verify after ExpandPostRAPseudos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153599 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
663ee20cc4b13b6d37ad1578050d8c3cc31eeff5 28-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable machine code verification after the late machine optimization passes.

Branch folding invalidates liveness and disables liveness verification
on some targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153597 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
948a44458c2965e6c2924bbd47c4d41bda0d78f0 28-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Skip liveness verification when MRI->tracksLiveness() is false.

Extract the liveness verification into its own method.

This makes it possible to run the machine code verifier after liveness
information is no longer required to be valid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153596 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
78836f0bb2bf5958c1b9f904b0ad0057c77ab75f 28-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow removeLiveIn to be called with a register that isn't live-in.

This avoids the silly double search:

if (isLiveIn(Reg))
removeLiveIn(Reg);

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153592 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
442ee9c3f7f6b29ff4ca82f3fdd7e20fc9cd5ee4 28-Mar-2012 Pete Cooper <peter_cooper@apple.com> Fixed commuteInstructions bug where if its called pre-regalloc the subreg indices weren't commuted

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153579 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
9fc5c83fb7b86862d4a29bf416842a4f1a0084d5 28-Mar-2012 Eric Christopher <echristo@apple.com> More debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
663e0cf73dcf2bfbbfc22b49c739d54916652d1c 28-Mar-2012 Eric Christopher <echristo@apple.com> Fix the output of the DW_TAG_friend tag to include DW_AT_friend
and not the rest of the member tag.

Fixes PR11695

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153570 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
5f46eb157e58df285e1a0a7ce6ff1c9ed972bf65 27-Mar-2012 Lang Hames <lhames@gmail.com> Use a SmallVector and linear lookup instead of a DenseSet - SourceMap values
will always be tiny sets, so DenseSet is overkill (SmallSet won't work as we
need iteration support).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153529 91177308-0d34-0410-b5e6-96231b3b80d8
achineCopyPropagation.cpp
7f316597cfaf3e8cacf2626559b1aab310f4cb98 27-Mar-2012 Eric Christopher <echristo@apple.com> Use DW_AT_low_pc for a single entry point into a routine.

Fixes PR10105

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153524 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1f141684cfe382b47db55b6ef1fb4fd62886b3c6 27-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Print SSA and liveness tracking flags in MF::print().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153518 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
80799fbe3c048cc78aba59c389e4b33e936bc190 27-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Branch folding may invalidate liveness.

Branch folding can use a register scavenger to update liveness
information when required. Don't do that if liveness information is
already invalid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153517 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
77d9521945fa46e03af9451b526fe0e588f44a04 27-Mar-2012 Chris Lattner <sabre@nondot.org> fix what looks like a real logic bug, found by PVS-Studio (part of PR12357)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153513 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
aba6559370c3d453588103fb667ffa3b11b76652 27-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an MRI::tracksLiveness() flag.

Late optimization passes like branch folding and tail duplication can
transform the machine code in a way that makes it expensive to keep the
register liveness information up to date. There is a fuzzy line between
register allocation and late scheduling where the liveness information
degrades.

The MRI::tracksLiveness() flag makes the line clear: While true,
liveness information is accurate, and can be used for register
scavenging. Once the flag is false, liveness information is not
accurate, and can only be used as a hint.

Late passes generally don't need the liveness information, but they will
sometimes use the register scavenger to help update it. The scavenger
enforces strict correctness, and we have to spend a lot of code to
update register liveness that may never be used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153511 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
egisterScavenging.cpp
d6c23557898b1fe9b21b28023f4133cab84a8b83 27-Mar-2012 Evan Cheng <evan.cheng@apple.com> Post-ra LICM should take care not to hoist an instruction that would clobber a
register that's read by the preheader terminator.

rdar://11095580


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153492 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
d9eb1d77979f10d0237af22d87789803162044fa 27-Mar-2012 Lang Hames <lhames@gmail.com> During MachineCopyPropagation a register may be the source operand of multiple
copies being considered for removal. Make sure to track all of the copies,
rather than just the most recent encountered, by holding a DenseSet instead of
an unsigned in SrcMap.

No test case - couldn't reduce something with a sane size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153487 91177308-0d34-0410-b5e6-96231b3b80d8
achineCopyPropagation.cpp
20df03ccd572aefadc3d68e4abc2e58c0bef9ff7 27-Mar-2012 Lang Hames <lhames@gmail.com> Add a debug option to dump PBQP graphs during register allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153483 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
082120053fdccb7eb21681c09365175f130df210 26-Mar-2012 Eric Christopher <echristo@apple.com> Use the file in the inlined die rather than the compile unit for
backtrace locations.

Testcase forthcoming, but I wanted to get some testing here.

Should fix:

PR12323
PR12314
rdar://11091100

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153471 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
be3f051c49699a86d526833d7dbe95645680a340 26-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> No need to do an expensive stable sort for a bunch of integers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153438 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
f1d0f7781e766df878bec4e7977fa3204374f394 26-Mar-2012 Craig Topper <craig.topper@gmail.com> Prune some includes and forward declarations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153429 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
7e1e18fa1eaac4019deeb0f0e9de93541c29a7a4 26-Mar-2012 Eric Christopher <echristo@apple.com> Add a debug statement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3770f605b522e34ef4a1fabb4dcaa2e76a7a2d96 22-Mar-2012 Shih-wei Liao <sliao@google.com> Migrate external/llvm to LLVM-153224-20120321.

Change-Id: I93619a538c59e5b1280d46534dac322fbccd14f7
ndroid.mk
electionDAG/Android.mk
c59a7995d22e2889706810c90a20a51ecfec278b 24-Mar-2012 Shih-wei Liao <sliao@google.com> Merge branch 'upstream' into sliao_d
5194d6dd9575845cf1cbb2f10a0c769634d116a9 24-Mar-2012 Hal Finkel <hfinkel@anl.gov> Add the ability to promote legal integer VAARGs. This is required for the PPC64 SVR4 ABI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7c0bc008f1b1f8185f879bd956ef0b5f361638cb 24-Mar-2012 Jim Grosbach <grosbach@apple.com> Pretty-printing comments for literal floating point in .s files.

Dump the hex representation to the comment stream as well as the float
value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153346 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f1113ef452871b88c086419fb2abf58da0088110 23-Mar-2012 Lang Hames <lhames@gmail.com> Add support for register masks to PBQP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153341 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
479389a4da53ce72226366cc6d1cad13da158909 22-Mar-2012 Evan Cheng <evan.cheng@apple.com> Source order scheduler should not preschedule nodes with multiple uses. rdar://11096639

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153270 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
5aef7957ddf43d30c33137386fdd9cbfcc5944e4 22-Mar-2012 Evan Cheng <evan.cheng@apple.com> Assign node orders to target intrinsics which do not produce results. rdar://11096639

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153269 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
aa206ffa6bf160f90d0d3aae5745ae4abf2d98fa 22-Mar-2012 Eric Christopher <echristo@apple.com> In erroneous inline assembly we could mistakenly try to access the
metadata operand as an actual operand, leading to an assert. Error
out in this case.

rdar://11007633

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153234 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
544b9b426f0dfa1beef6dc3640607dee3ca1160e 22-Mar-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Fold "urem x, pow2" -> "and x, pow2-1". This should fix the 271%
execution-time regression for nsieve-bits on the ARMv7 -O0 -g nightly tester.
This may also improve compile-time on architectures that would otherwise
generate a libcall for urem (e.g., ARM) or fall back to the DAG selector.
rdar://10810716


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153230 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
331ff3b1d1a08b4a39cea7cdc0c9a8567a5ba1b4 21-Mar-2012 Jim Grosbach <grosbach@apple.com> Checking a build_vector for an all-ones value.

Type legalization can zero-extend the elements of the build_vector node, so,
for example, we may have an <8 x i8> with i32 elements of value 255. That
should return 'true' for the vector being all ones.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f70af52a8fc735a84aa8d63b84dd56abd0b9e77c 21-Mar-2012 Andrew Trick <atrick@apple.com> misched: fix LiveInterval update for bottom-up scheduling

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153162 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
aad37f1925621cb1f9f2bb2c899b517bf1df344a 21-Mar-2012 Andrew Trick <atrick@apple.com> misched: trace LiveIntervals after scheduling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153161 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
1ce062fe567a08678d20149781c5e308e03d7d83 21-Mar-2012 Andrew Trick <atrick@apple.com> misched: obvious iterator update fixes for bottom-up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153160 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
0b0d899f917d4771c940e7fa92990d981822a6db 21-Mar-2012 Andrew Trick <atrick@apple.com> misched: cleanup main loop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153159 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
e0b51ab8d3484b5b526a942f26c4db8082fed1e1 21-Mar-2012 Andrew Trick <atrick@apple.com> misched: fix LI update for bottom-up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153158 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
21e42d0ea55c31ac4d57578f5116fa606d5c87ee 20-Mar-2012 Bill Wendling <isanbard@gmail.com> It's possible to have a constant expression who's size is quite big (e.g.,
i128). In that case, we may not be able to print out the MCExpr as an
expression. For instance, we could have an MCExpr like this:

0xBEEF0000BEEF0000 | (0xBEEF0000BEEF0000 << 64)

The MCExpr printer handles sizes up to 64-bits, but this expression would
require 128-bits. In this situation, try to evaluate the constant expression and
emit that as the value into 64-bit chunks.
<rdar://problem/11070338>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153081 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0c9da210f703f0cc98f7e198db1b68073091ce25 20-Mar-2012 Craig Topper <craig.topper@gmail.com> When combining (vextract shuffle (load ), <1,u,u,u>), 0) -> (load ), add users of the final load to the worklist too. Needed by changes I'm preparing to make to X86 backend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153078 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8c5293c9556317143505c085cf428e11962e1273 20-Mar-2012 Eric Christopher <echristo@apple.com> Do everything up to generating code to try to get a register for
a variable. The previous code would break the debug info changing
code invariant. This will regress debug info for arguments where
we elide the alloca created.

Fixes rdar://11066468

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153074 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c415af225d9546a66ac9f7368a973e0be25b438d 20-Mar-2012 Eric Christopher <echristo@apple.com> Untabify.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153073 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
4476bae1b42bdc7d2c87c0524148d6ad9224357b 20-Mar-2012 Eric Christopher <echristo@apple.com> Add another debugging statement here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
4e27027562d6843364e0ab744f97958b6abca08d 20-Mar-2012 Eric Christopher <echristo@apple.com> Use lookUpRegForValue here instead of duplicating the code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153071 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
cfe2998c3e1a9ea66c9bab3bcf3f93960be304fd 20-Mar-2012 Pete Cooper <peter_cooper@apple.com> f16 FDIV can now be legalized by promoting to f32

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153064 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
23f1cbbd686513ae5defbd3afdf5e286befe8a76 19-Mar-2012 Lang Hames <lhames@gmail.com> Add an option to the MI scheduler to cut off scheduling after a fixed number of
instructions have been scheduled. Handy for tracking down scheduler bugs, or
bugs exposed by scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153045 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
00294caadb5cdb4cafeb5e1c05486a395fef590c 19-Mar-2012 Duncan Sands <baldrick@free.fr> Fix DAG combine which creates illegal vector shuffles. Patch by Heikki Kultala.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153035 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cff4ad768ec721b72498dc6b605d882e36c1fb14 17-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> CriticalAntiDepBreaker: Replace a SmallSet of regs with a much denser BitVector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152999 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
85f9cef27e6b2605e67e94afc949f5b5f5b90668 17-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> MachineInstr: Inline the fast path (non-bundle instruction) of hasProperty.

This is particularly helpful as both arguments tend to be constants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152991 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a82d526b31cd9825684fdee5c3372bf55dad4f57 16-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> ScheduleDAGInstrs: When adding uses we add them into a set that's empty at the beginning, no need to maintain another set for the added regs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152934 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
861ea230a7841fe4ccc8a1cd5460354e59aeed3c 16-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> Limit the number of memory operands in MachineInstr to 2^16 and store the number in padding.

Saves one machine word on MachineInstr (88->80 bytes on x86_64, 48->44 on i386).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152930 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
87f3dbc446181dc5b1c525bd28ca89760f63bc76 16-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> CriticalAntiDepBreaker: BasicBlock::size is an expensive operation, reuse the cached value.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152927 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
d3a7486ef351697450cfe87b6cce82a3eb906874 16-Mar-2012 Andrew Trick <atrick@apple.com> misched: add DAG edges from vreg defs to ExitSU.

These edges are not really necessary, but it is consistent with the
way we currently create physreg edges. Scheduler heuristics that
expect a DAG edge to the block terminator could benefit from this
change. Although in the future I hope we have a better mechanism for
modeling latency across scheduling regions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152895 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
bace5da91dbfc15d04c0e9897805ed4c5c0461ad 16-Mar-2012 Chad Rosier <mcrosier@apple.com> Revert r152705, which reapplied r152486 as this appears to be causing failures
on our internal nightly testers. So, basically revert r152486 again.

Abbreviated original commit message:
Implement a more intelligent way of spilling uses across an invoke boundary.

It looks as if Chander's inlining work, r152737, exposed an issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152887 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
b99ea7cb3fe8af46bdc2ad68550632f5c16bdaa9 16-Mar-2012 NAKAMURA Takumi <geek4civic@gmail.com> Revert r152613 (and r152614), "Inline the d'tor and add an anchor instead." for workaround of g++-4.4's miscompilation.

It caused MSP430DAGToDAGISel::SelectIndexedBinOp() to be miscompiled.
When two ReplaceUses()'s are expanded as inline, vtable in base class is stored to latter (ISelUpdater)ISU.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152877 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2125d5a7e58eb21f34c2a21913d6f1074c63b5cd 16-Mar-2012 Eric Christopher <echristo@apple.com> For types with a parent of the compile unit make sure and emit
the DECL information.

rdar://10855921

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152876 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
ccaea7dc0bbc75e5d4ee92fb8cc6af0f928d056f 15-Mar-2012 Eric Christopher <echristo@apple.com> We actually handle AllocaInst via getRegForValue below just fine.

Part of rdar://8905263

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152845 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
bb54d21495ba5ce60931bc872e3e3df67386cb97 15-Mar-2012 Eric Christopher <echristo@apple.com> Add some debugging output into fast isel as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152844 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8f2a88d734601fe498564889bb2af877f4653ad9 15-Mar-2012 Eric Christopher <echristo@apple.com> Add another debug statement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b82062f65265666690270f3358b0d0f508d3fbba 15-Mar-2012 Eric Christopher <echristo@apple.com> Tabs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152842 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
7cc5177d460333ca9a2f3c0783dd0d0490456867 15-Mar-2012 Eric Christopher <echristo@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152841 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
6431ff96be8f2f7bf3428fdaa3ad4d30bf2c1db3 15-Mar-2012 Nadav Rotem <nadav.rotem@intel.com> When optimizing certain BUILD_VECTOR nodes into other BUILD_VECTOR nodes, add the new node into the work list because there is a potential for further optimizations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152784 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8d101c31d293bcb8ece8fecdb3325cd0728bed08 15-Mar-2012 Eric Christopher <echristo@apple.com> Revert the removal of DW_AT_MIPS_linkage_name when we aren't putting
out the DW_AT_name. Older gdbs unfortunately still use it to
disambiguate member functions in templated classes (gdb.cp/templates.exp).

rdar://11043421 (which is now deferred for a bit)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152782 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
5a89434236a4d6ad5fa6a570cbf3e717b757a148 15-Mar-2012 Bill Wendling <isanbard@gmail.com> Add a xform to the DAG combiner.

Transform:

(fsub x, (fadd x, y)) -> (fneg y) and
(fsub x, (fadd y, x)) -> (fneg y)

if 'unsafe math' is specified.
<rdar://problem/7540295>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152777 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
689e0b42630f31f74d21041881b21412427924f7 14-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> Silence operator precedence warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152711 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
30442f95573d7e0f505c573bd7462b77769010fa 14-Mar-2012 Bill Wendling <isanbard@gmail.com> Reapply r152486 with a fix for the nightly testers.

There were cases where a value could be used and it's both crossing an invoke
and NOT crossing an invoke. This could happen in the landing pads. In that case,
we will demote the value to the stack like we did before.
<rdar://problem/10609139>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152705 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
7bf116acd417e50f6fac677b9cb9204ee7f35c00 14-Mar-2012 Bill Wendling <isanbard@gmail.com> Insert the debugging instructions in one fell-swoop so that it doesn't call the
expensive "getFirstTerminator" call. This reduces the time of compilation in
PR12258 from >10 minutes to < 10 seconds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152704 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
17d35e57a585e869dc3084666abd17f173723735 14-Mar-2012 Andrew Trick <atrick@apple.com> misched: implemented a framework for top-down or bottom-up scheduling.

New flags: -misched-topdown, -misched-bottomup. They can be used with
the default scheduler or with -misched=shuffle. Without either
topdown/bottomup flag -misched=shuffle now alternates scheduling
direction.

LiveIntervals update is unimplemented with bottom-up scheduling, so
only -misched-topdown currently works.

Capped the ScheduleDAG hierarchy with a concrete ScheduleDAGMI class.
ScheduleDAGMI is aware of the top and bottom of the unscheduled zone
within the current region. Scheduling policy can be plugged into
the ScheduleDAGMI driver by implementing MachineSchedStrategy.
ConvergingScheduler is now the default scheduling algorithm.
It exercises the new driver but still does no reordering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152700 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
asses.cpp
cheduleDAGInstrs.cpp
cb058d51db44d47b57fc4705fea00209174d6577 14-Mar-2012 Andrew Trick <atrick@apple.com> misched comments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152699 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
fc7e9ef23941e8a9ab3055e9f50ac4704b6d24a2 14-Mar-2012 Eric Christopher <echristo@apple.com> Remove the DW_AT_MIPS_linkage name attribute when we don't need it
output (we're emitting a specification already and the information
isn't changing).

Saves 1% on the debug information for a build of llvm.

Fixes rdar://11043421

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152697 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
a03d366c8887755080cf21e11c43d76d22610fdf 13-Mar-2012 Evan Cheng <evan.cheng@apple.com> Fortify r152675 a bit. Although I'm not able to come up with a test case that would trigger the truncation case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152678 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
84387ea5f547f3b63dc701fdcac163b8dc797e5d 13-Mar-2012 Evan Cheng <evan.cheng@apple.com> DAG combine incorrectly optimize (i32 vextract (v4i16 load $addr), c) to
(i16 load $addr+c*sizeof(i16)) and replace uses of (i32 vextract) with the
i16 load. It should issue an extload instead: (i32 extload $addr+c*sizeof(i16)).

rdar://11035895


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152675 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
eabae1d07bffac60d9f4f2473cf6736d6a1c372d 13-Mar-2012 Bill Wendling <isanbard@gmail.com> s/SjLjEHPass/SjLjEHPrepare/
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152658 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
jLjEHPrepare.cpp
7d6fc212c2c9c363ed3166966b1db14710325c5c 13-Mar-2012 Bill Wendling <isanbard@gmail.com> Add a return type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152614 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bf565702dcffb57a96612b529b68b4375244084f 13-Mar-2012 Bill Wendling <isanbard@gmail.com> Inline the d'tor and add an anchor instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152613 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
091306099d7aaf8d68c3c5f44cdaf3e3e91d9f77 13-Mar-2012 Bill Wendling <isanbard@gmail.com> Refactor the SelectionDAG's 'dump' methods into their own .cpp file.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152611 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGDumper.cpp
6fa87df0d6948d9957eb16042b088e9d6e859854 13-Mar-2012 Lang Hames <lhames@gmail.com> Fixed typo in comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152610 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.h
9eb5f170a219decc4ee07b57b0403d3836a8d946 12-Mar-2012 Bill Wendling <isanbard@gmail.com> Revert due to nightly test failures.

--- Reverse-merging r152486 into '.':
U lib/CodeGen/SjLjEHPrepare.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152571 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
74612c250bac1f62a2b74c85411cf7180cd8cd78 11-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> DwarfDebug: Store the filename/dirname pair as a zero-separated string in a stringmap, instead of using a highly inefficient std::map of a pair of std::strings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152541 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
3d3abe0852d5f499bed7ab014519dd582a0a795d 11-Mar-2012 Stepan Dyatkovskiy <stpworld@narod.ru> llvm::SwitchInst
Renamed methods caseBegin, caseEnd and caseDefault with case_begin, case_end, and case_default.
Added some notes relative to case iterators.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152532 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
1e8db1a4faac5c9fdd486a6ddcdec1909f12e789 10-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> Microoptimize getVRegDef. def_begin isn't free, don't compute it twice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152492 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
fbf9ff462134a635eb0fc3bc86c70cc59fb065d1 10-Mar-2012 Bill Wendling <isanbard@gmail.com> Implement a more intelligent way of spilling uses across an invoke boundary.

The old way of determine when and where to spill a value that was used inside of
a landing pad resulted in spilling that value everywhere and not just at the
invoke edge.

This algorithm determines which values are used within a landing pad. It then
spills those values before the invoke and reloads them before the uses. This
should prevent excessive spilling in many cases, e.g. inside of loops.
<rdar://problem/10609139>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152486 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
ff0275ea53842101645000d1d7fefe85e007fb03 10-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Report the defining instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152460 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
64ffa83c9bf5a1f0c064295de9b3eba7b0f09a99 10-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SSA verification to MachineVerifier.

Somehow we never verified SSA dominance before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152458 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
1efd6b94a917449da5007fd332cd895692aa0319 10-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use SmallPtrSet instead of DenseSet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152457 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
d5f769065152d6d9331817c439caf9df0a5e8d69 10-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> Give dagcombiner's worklist some inline capacity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9ab3dbe617af06627fed2455c93ab9dc6b459951 10-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Assert on SSA errors in LiveVariables.

All uses of a virtual register must be dominated by its def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152449 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
fe4d6df5c706c2ada666d95c25b8f460e30b1336 09-Mar-2012 Andrew Trick <atrick@apple.com> misched: handle scheduler that insert instructions at empty region boundaries.

And add comments, since this is obviously confusing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152445 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
1fabd9f85e8ac728c35cb63c70d8aac2c94c92a8 09-Mar-2012 Andrew Trick <atrick@apple.com> misched: handle scheduling region boundaries nicely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152393 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
68675c6c5b173021807e4e12cd250eeba63f6d0d 09-Mar-2012 Andrew Trick <atrick@apple.com> misched interface: rename Begin/End to RegionBegin/RegionEnd since they are not private.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152382 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
d24da97bbf86b87929ef8c57bdf3a009d48bfba7 09-Mar-2012 Andrew Trick <atrick@apple.com> misched comments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152374 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
7799eb40d43a1b0b0fef10bfcd7963f9cfe6c362 09-Mar-2012 Andrew Trick <atrick@apple.com> revert 152356: verify misched changes using -misched=shuffle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152373 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
d04ec0c855176ebddd459c044bdd24f49938fae4 09-Mar-2012 Andrew Trick <atrick@apple.com> misched: allow the default scheduler to be one chosen by the target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152360 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
9ad62b3c09e03368246753c1052674eaf9b0d161 09-Mar-2012 Evan Cheng <evan.cheng@apple.com> Cache MBB->begin. It's possible the scheduler / bundler may change MBB->begin().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152356 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
fac259814923d091942b230e7bd002a8d1130bc3 08-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t to store instruction implicit uses and defs. Reduces static data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152301 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
egAllocFast.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
c10fa6c801e48771b5eade50afc2fe6abaf08227 08-Mar-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Taken into account Duncan's comments for r149481 dated by 2nd Feb 2012:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120130/136146.html

Implemented CaseIterator and it solves almost all described issues: we don't need to mix operand/case/successor indexing anymore. Base iterator class is implemented as a template since it may be initialized either from "const SwitchInst*" or from "SwitchInst*".

ConstCaseIt is just a read-only iterator.
CaseIt is read-write iterator; it allows to change case successor and case value.

Usage of iterator allows totally remove resolveXXXX methods. All indexing convertions done automatically inside the iterator's getters.

Main way of iterator usage looks like this:
SwitchInst *SI = ... // intialize it somehow

for (SwitchInst::CaseIt i = SI->caseBegin(), e = SI->caseEnd(); i != e; ++i) {
BasicBlock *BB = i.getCaseSuccessor();
ConstantInt *V = i.getCaseValue();
// Do something.
}

If you want to convert case number to TerminatorInst successor index, just use getSuccessorIndex iterator's method.
If you want initialize iterator from TerminatorInst successor index, use CaseIt::fromSuccessorIndex(...) method.

There are also related changes in llvm-clients: klee and clang.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152297 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c174eaf9481e3f7a6695d4f19e62e2b6f005c4e9 08-Mar-2012 Andrew Trick <atrick@apple.com> misched interface: Expose the MachineScheduler pass.

Allow targets to provide their own schedulers (subclass of
ScheduleDAGInstrs) to the misched pass. Select schedulers using
-misched=...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152278 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
7afcda0c582f57a46de32e88ad6c6d5b25d513ce 08-Mar-2012 Andrew Trick <atrick@apple.com> Cleanup VLIWPacketizer to use the updated ScheduleDAGInstrs interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152262 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
ed395c8c475692f5a43eb4b5c5562503d67616d0 08-Mar-2012 Andrew Trick <atrick@apple.com> misched prep: Expose the ScheduleDAGInstrs interface so targets may
implement their own MachineScheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152261 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
achineScheduler.cpp
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
ed8a0ecaa82726c88d1962a7df060390eb6e9c22 08-Mar-2012 Andrew Trick <atrick@apple.com> misched prep: Remove LLVM_LIBRARY_VISIBILITY from ScheduleDAGInstrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152260 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
d790cada339d7af81650084b9bb6b2ad65566fbb 08-Mar-2012 Andrew Trick <atrick@apple.com> misched prep: Comment the ScheduleDAGInstrs interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152259 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
035ec40eaf1dcd8f4809fb183098259f2dec75b9 08-Mar-2012 Andrew Trick <atrick@apple.com> misched prep: Cleanup ScheduleDAGInstrs interface.

ScheduleDAGInstrs will be the main interface for MI-level
schedulers. Make sure it's readable: one page of protected fields, one
page of public methids.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152258 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
21c535579b7737f1f394d08881b3d99837207733 08-Mar-2012 Andrew Trick <atrick@apple.com> misched prep: remove extra "protected"

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152257 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
cf46b5acfd6e0ab5d21ec3160cec195d0eb77b0b 08-Mar-2012 Andrew Trick <atrick@apple.com> misched prep: rename InsertPos to End.

ScheduleDAGInstrs knows nothing about how instructions will be moved or inserted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152256 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
953be893e8cffa0ef9bf410036cd96aeb526e98a 08-Mar-2012 Andrew Trick <atrick@apple.com> misched preparation: rename core scheduler methods for consistency.

We had half the API with one convention, half with another. Now was a
good time to clean it up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152255 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
atencyPriorityQueue.cpp
achineScheduler.cpp
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ResourcePriorityQueue.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGVLIW.cpp
b53a1d67b13fa2f036e18180523ea336100e5240 07-Mar-2012 Chandler Carruth <chandlerc@gmail.com> Try to clarify this comment some.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152221 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
fc22625eb04d39b0de77090702cf50a9bcda3ddb 07-Mar-2012 Chandler Carruth <chandlerc@gmail.com> Remove another outbreak of customized (and completely broken) hashing.
This one is particularly annoying because the hashing algorithm is
highly specialized, with a strange "equivalence" definition that subsets
the fields involved.

Still, this looks at the exact same set of data as the old code, but
without bitwise or-ing over parts of it and other mixing badness. No
functionality changed here. I've left a substantial fixme about the fact
that there is a cleaner and more principled way to do this, but it
requires making the equality definition actual stable for particular
types...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152218 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
5b2749abf585f9e28656c289001c2327eed401af 07-Mar-2012 Bill Wendling <isanbard@gmail.com> Where the BranchFolding pass removes a branch then adds another better branch,
the DebugLoc information can be maintained throughout by grabbing the DebugLoc
before the RemoveBranch and then passing the result to the InsertBranch.
Patch by Andrew Stanford-Jason!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152212 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
8c1161a262bb0195b47082ec04fa4398a1313ea1 07-Mar-2012 Andrew Trick <atrick@apple.com> Fix cmake

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152210 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
6fd7dd6ba57c1b5ba1f12e7e9da574b9dbd8ae09 07-Mar-2012 Andrew Trick <atrick@apple.com> comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152209 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
47c144505b9be28ed22c626b3a407c11dba2fec5 07-Mar-2012 Andrew Trick <atrick@apple.com> misched preparation: clarify ScheduleDAG and ScheduleDAGInstrs roles.

ScheduleDAG is responsible for the DAG: SUnits and SDeps. It provides target hooks for latency computation.

ScheduleDAGInstrs extends ScheduleDAG and defines the current scheduling region in terms of MachineInstr iterators. It has access to the target's scheduling itinerary data. ScheduleDAGInstrs provides the logic for building the ScheduleDAG for the sequence of MachineInstrs in the current region. Target's can implement highly custom schedulers by extending this class.

ScheduleDAGPostRATDList provides the driver and diagnostics for current postRA scheduling. It maintains a current Sequence of scheduled machine instructions and logic for splicing them into the block. During scheduling, it uses the ScheduleHazardRecognizer provided by the target.

Specific changes:
- Removed driver code from ScheduleDAG. clearDAG is the only interface needed.

- Added enterRegion/exitRegion hooks to ScheduleDAGInstrs to delimit the scope of each scheduling region and associated DAG. They should be used to setup and cleanup any region-specific state in addition to the DAG itself. This is necessary because we reuse the same ScheduleDAG object for the entire function. The target may extend these hooks to do things at regions boundaries, like bundle terminators. The hooks are called even if we decide not to schedule the region. So all instructions in a block are "covered" by these calls.

- Added ScheduleDAGInstrs::begin()/end() public API.

- Moved Sequence into the driver layer, which is specific to the scheduling algorithm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152208 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
achineScheduler.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAGISel.cpp
7b58ae77acb63db29116e548393ddd2127909425 07-Mar-2012 Andrew Trick <atrick@apple.com> ScheduleDAGInstrs comments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152207 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
84b454d1a270a5d685e01686ed15e68c44b0b56a 07-Mar-2012 Andrew Trick <atrick@apple.com> misched preparation: modularize schedule emission.

ScheduleDAG has nothing to do with how the instructions are scheduled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152206 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
73ba69b6843f7f23345b1e8745cb328952cae0d8 07-Mar-2012 Andrew Trick <atrick@apple.com> misched preparation: modularize schedule printing.

ScheduleDAG will not refer to the scheduled instruction sequence.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152205 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
4c727204271067f3dbf50bd23098b2df8e1cc47a 07-Mar-2012 Andrew Trick <atrick@apple.com> misched preparation: modularize schedule verification.

ScheduleDAG will not refer to the scheduled instruction sequence.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152204 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGVLIW.cpp
dbdca36af8ee6028dbea93c639408ba95e5fda2e 07-Mar-2012 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
0df7f8821cc3ce26843b4fb63456cb4ccb7e4153 07-Mar-2012 Andrew Trick <atrick@apple.com> Added -view-misched=dags options.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152178 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
56b94c52c9bf0342106ca7d274b9bb469d5ef619 07-Mar-2012 Andrew Trick <atrick@apple.com> Cleanup in preparation for misched: Move DAG visualization logic.

Soon, ScheduleDAG will not refer to the BB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152177 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
cheduleDAGPrinter.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
8ceaa660bfec72249976c1f411db7f40cbc438bb 07-Mar-2012 Andrew Trick <atrick@apple.com> Added MachineBasicBlock::getFullName() to standardize/factor codegen diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152176 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
acddd4963d2f3b5fd94ab872b4fd393b34c80e5f 07-Mar-2012 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152175 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGISel.cpp
084e179f090f9a47bdf66f49775a125f4a2a8a8c 07-Mar-2012 Andrew Trick <atrick@apple.com> Cleanup: DAG building is specific to either SD or MI scheduling. Not part of the target interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152174 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
electionDAG/ScheduleDAGSDNodes.h
e75537a243858d8293832109e61bafc8484bb52a 07-Mar-2012 Andrew Trick <atrick@apple.com> misched comments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152173 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
6cfb14f6df5fb772395d78b4c908a448010d30b0 07-Mar-2012 Andrew Trick <atrick@apple.com> misched: Use the StartBlock/FinishBlock hooks

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152172 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
8938895a8338e6084eb12a2bb4bf044928436173 07-Mar-2012 Eric Christopher <echristo@apple.com> Add the DW_AT_APPLE_runtime_class attribute to forward declarations
as well as completely defined classes.

This fixes rdar://10956070

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152171 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
03be3622aae67aa095bc047bcac88cdebebaafd6 07-Mar-2012 Evan Cheng <evan.cheng@apple.com> Extend r148086 to check for [r +/- reg] address mode. This fixes queens performance regression (due to increased register pressure from overly aggressive pre-inc formation).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152162 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c511c2827d9cebd16bc63041b5812f1fc5d57e06 06-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Hoist common code out of if statement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152153 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8250d7385a16e8d586f608b3040eb6738bbf8e55 06-Mar-2012 Evan Cheng <evan.cheng@apple.com> Avoid finalizeBundles infinite looping.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152089 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrBundle.cpp
afd3d56b9dc791d37120922318293a021bd35598 06-Mar-2012 Owen Anderson <resistor@mac.com> Make it possible for a target to mark FSUB as Expand. This requires providing a default expansion (FADD+FNEG), and teaching DAGCombine not to form FSUBs post-legalize if they are not legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152079 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
8019aac390baf43b3907d92928bad7fbe62588c6 06-Mar-2012 Stephen Hines <srhines@google.com> Merge with upstream LLVM @152063

Removed call to getsid() from LockFileManager.cpp, since bionic doesn't have
support for it.

Build updates
+TableGenAction.cpp
+X86ModRMFilters.cpp
-InstrEnumEmitter.cpp
-JITDebugRegisterer.cpp
-MCLoggingStreamer.cpp
+Hashing.cpp
-ElfCodeEmitter.cpp
-ElfWriter.cpp
-ObjectCodeEmitter.cpp
+DataStream.cpp
+StreamableMemoryObject.cpp
+CmpInstAnalysis.cpp
+LockFileManager.cpp
+IntrusiveRefCntPtr.cpp
+ThreadSanitizer.cpp
+ARMMachineFunctionInfo.cpp
+ARMELFObjectWriter.cpp
+MipsAnalyzeImmediate.cpp
+MipsMachineFunction.cpp
+X86MachineFunctionInfo.cpp
+X86ELFObjectWriter.cpp
+X86WinCOFFObjectWriter.cpp
+ResourcePriorityQueue.cpp
+ScheduleDAGVLIW.cpp
+MachineCopyPropagation.cpp
+MachineScheduler.cpp
+RegAllocBase.cpp
+libLLVMVectorize

Change-Id: I69e700fe357e275ec509af1daaa7408cd3cde3a1
ndroid.mk
electionDAG/Android.mk
c02a5c5e8d9c1fd2a20ad4aed40f328564e95b40 05-Mar-2012 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge-20120305

Conflicts:
lib/Support/Atomic.cpp

Change-Id: I563b3bc2a82942ccbae5bed42e53b9149a8bf3a0
c6449b636f4984be88f128d0375c056ad05e7e8f 05-Mar-2012 Jim Grosbach <grosbach@apple.com> Make MCRegisterInfo available to the the MCInstPrinter.

Used to allow context sensitive printing of super-register or sub-register
references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152043 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
c27faccb3cf67e469f4217e98c20ef9ff2b95241 05-Mar-2012 Bill Wendling <isanbard@gmail.com> Fix warnings about adding a bool to a string.
Patch by Sean Silva!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152042 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9ebfbf8b9fd5f982e0db9293808bd32168615ba9 05-Mar-2012 Craig Topper <craig.topper@gmail.com> Convert more GenRegisterInfo tables from unsigned to uint16_t to reduce static data size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152016 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
riticalAntiDepBreaker.cpp
eadMachineInstructionElim.cpp
fConversion.cpp
iveVariables.cpp
achineCopyPropagation.cpp
achineInstrBundle.cpp
achineVerifier.cpp
ostRASchedulerList.cpp
rocessImplicitDefs.cpp
egisterCoalescer.cpp
egisterScavenging.cpp
92b7df07afc90ea5ecc1d9c4ede80a3a3468c577 04-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop fixing bad machine code in LiveIntervalAnalysis.

The first def of a virtual register cannot also read the register.
Assert on such bad machine code instead of trying to fix it.
TwoAddressInstructionPass should never create code like that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152010 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8d9c3a4ee739d0cb508e7a982bfbb1fb52cb0ec4 04-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop adding <imp-def> operands when coalescing sub-registers.

We are already setting <undef> flags, and that is good enough. The
<imp-def> operands don't mean anything any more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152009 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
e4fd907e72a599eddfa7a81eac4366b5b82523e3 04-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t to store register overlaps to reduce static data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152001 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
smPrinter/DwarfDebug.cpp
ranchFolding.cpp
allingConvLower.cpp
riticalAntiDepBreaker.cpp
eadMachineInstructionElim.cpp
xecutionDepsFix.cpp
nterferenceCache.cpp
achineCSE.cpp
achineCopyPropagation.cpp
achineInstr.cpp
achineLICM.cpp
achineRegisterInfo.cpp
egAllocBase.cpp
egAllocBasic.cpp
egAllocFast.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
egisterClassInfo.cpp
egisterCoalescer.cpp
egisterScavenging.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
b6632ba380cf624e60fe16b03d6e21b05dd07724 04-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t instead of unsigned to store registers in reg classes. Reduces static data size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151998 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.cpp
egAllocPBQP.cpp
egisterClassInfo.cpp
015f228861ef9b337366f92f637d4e8d624bb006 04-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t to store registers in callee saved register tables to reduce size of static data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151996 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
riticalAntiDepBreaker.cpp
achineFunction.cpp
rologEpilogInserter.cpp
egisterClassInfo.cpp
egisterClassInfo.h
egisterScavenging.cpp
b83e2bbfbc107a71632bd42f2be8186554b16e1f 02-Mar-2012 Eric Christopher <echristo@apple.com> Grammar-o in function name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151875 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
61cafd14491ff7d8183c1593edb7725e8732de38 02-Mar-2012 Eric Christopher <echristo@apple.com> Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151874 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
50e266135edb896e037c1a8f22a2fafac84eea86 02-Mar-2012 Eric Christopher <echristo@apple.com> If the linkage name doesn't exist we're supposed to emit a reference
to the string table for the function name, not the function name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151873 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7550f7dce65f96aa2e95c60b04d6c9650343a5df 02-Mar-2012 Eric Christopher <echristo@apple.com> Revert "Reorder the sections being output to reduce the number of assembler"

The inline table needs to be constructed ahead of time so that it doesn't try to
create new strings while we're emitting everything.

This reverts commit a8ff9bccb399183cdd5f1c3cec2bda763664b4b0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151864 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
12313a56ec1f17cb7636773b1a6448917835f838 01-Mar-2012 Eric Christopher <echristo@apple.com> Reorder the sections being output to reduce the number of assembler
fixups that are being used to determine section offsets. Reduces
the total number of fixups by 50% for a non-trivial testcase.

Part of rdar://10413936

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151852 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
647c0ce48cdbefc22c221ffeb892e73ccd155009 01-Mar-2012 Michael J. Spencer <bigcheesegs@gmail.com> Minimal changes for LLVM to compile under VS11.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151849 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
391016025a72612577cc7b8046fed60bed1aa858 01-Mar-2012 James Molloy <james.molloy@arm.com> Fix a codegen fault in which log2 or exp2 could be dead-code eliminated even though they could have sideeffects.

Only allow log2/exp2 to be converted to an intrinsic if they are declared "readnone".



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
66c994c2dbd1a76418fdd0acb138aa029538ffe5 01-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make InlineSpiller bundle-aware.

Simply treat bundles as instructions. Spill code is inserted between
bundles, never inside a bundle. Rewrite all operands in a bundle at
once.

Don't attempt and memory operand folding inside bundles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151787 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
741981adf3a2bc0c6652c9c4ec846250950f3e68 01-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move getBundleStart() into MachineInstrBundle.h.

This allows the function to be inlined, and makes it suitable for use in
getInstructionIndex().

Also provide a const version. C++ is great for touch typing practice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151782 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
275ff9bb17698a5eee613c20eca31b4835ae60db 01-Mar-2012 Lang Hames <lhames@gmail.com> Don't redundantly copy implicit operands when rematerializing.

While we're at it - don't copy vreg implicit operands while rematerializing.
This fixes PR12138.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151779 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
2987cbcdaef9e14f635b6f9ac32c58ff26a2fc0f 29-Feb-2012 Jean-Baptiste Queru <jbq@google.com> resolved conflicts for merge of 8f698b54 to master

Change-Id: Ie502ec01a03b2f9a8e015a2b83139f56fd84b91e
369c4a40cd8c97e1e513ec8c6eaeee26e6adfc9b 19-Feb-2012 Daniel Malea <daniel.malea@intel.com> Build FileCheck and enable DWARF emission for target eng builds

- conditionally enable AsmPrinter Dwarf bits for eng builds
- build script for FileCheck

Change-Id: I68c5f9b2f28b36a779cf76e9161f740994c619f5
smPrinter/Android.mk
smPrinter/AsmPrinter.cpp
f1820b54e4d08ed78ca76b80b8bebb91cdc798a5 29-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> LegalizeIntegerTypes: Reorder operations in the "big shift by small amount" optimization, making the lives of later passes easier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151722 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
a36fe736458d242e1ae4200c1a8dd42f662851fb 29-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an analyzeVirtReg() function.

This function does more or less the same as
MI::readsWritesVirtualRegister(), but it supports bundles as well.

It also determines if any constraint requires reading and writing
operands to use the same register. Most clients want to know.

Use the more modern MO.readsReg() instead of trying to sort out undefs
and partial redefines. Stop supporting the extra full <imp-def> operand
as an alternative to <def,undef> sub-register defines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151690 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrBundle.cpp
30e98a03a3c524026e2da2607e04bb655b0b6350 29-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move the operand iterator into MachineInstrBundle.h where it belongs.

Extract a base class and provide four specific sub-classes for iterating
over const/non-const bundles/instructions.

This eliminates the mystery bool constructor argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151684 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
1485455be0310c6b24f096823029e08867531016 28-Feb-2012 Lang Hames <lhames@gmail.com> Kill off LiveRangeEdit::getNewVRegs and LiveRangeEdit::getUselessVRegs. These
methods are no longer needed now that LinearScan has gone away.

(Contains tweaks trivialSpillEverywhere to enable the removal of getNewVRegs).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151658 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
iveRangeEdit.h
egAllocBasic.cpp
piller.cpp
4bfcd4acbc7d12aa55f8de9af84a38422f0f6d83 28-Feb-2012 Evan Cheng <evan.cheng@apple.com> Re-commit r151623 with fix. Only issue special no-return calls if it's a direct call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151645 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
a3b2121ccf4f048640b4d79689b0e4a3906143f2 28-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Fix off-by one in comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151644 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
3bf15ced2b91661ac314911c1f28332da0e1c37c 28-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> LegalizeIntegerTypes: Reenable the large shift with small amount optimization.

To avoid problems with zero shifts when getting the bits that move between words
we use a trick: first shift the by amount-1, then do another shift by one. When
amount is 0 (and size 32) we first shift by 31, then by one, instead of by 32.

Also fix a latent bug that emitted the low and high words in the wrong order
when shifting right.

Fixes PR12113.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151637 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
20bd5296cec8d8d597ab9db2aca7346a88e580c8 28-Feb-2012 Daniel Dunbar <daniel@zuster.org> Revert r151623 "Some ARM implementaions, e.g. A-series, does return stack prediction. ...", it is breaking the Clang build during the Compiler-RT part.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
1c239200e41a816dcd15f1c9a1ed911cb399bb2e 28-Feb-2012 Nadav Rotem <nadav.rotem@intel.com> Code cleanup following CR by Duncan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151627 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
21ef70ed4f655151a983788ce634787c995c7e2f 28-Feb-2012 Nadav Rotem <nadav.rotem@intel.com> Fix a bug in the code that builds SDNodes from vector GEPs.

When the GEP index is a vector of pointers, the code that calculated the size
of the element started from the vector type, and not the contained pointer type.
As a result, instead of looking at the data element pointed by the vector, this
code used the size of the vector. This works for 32bit members (on 32bit
systems), but not for other types. Added code to peel the vector type and
added a test.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151626 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
ec52aaa12f57896fc806e849fa21a61603050ac4 28-Feb-2012 Evan Cheng <evan.cheng@apple.com> Some ARM implementaions, e.g. A-series, does return stack prediction. That is,
the processor keeps a return addresses stack (RAS) which stores the address
and the instruction execution state of the instruction after a function-call
type branch instruction.

Calling a "noreturn" function with normal call instructions (e.g. bl) can
corrupt RAS and causes 100% return misprediction so LLVM should use a
unconditional branch instead. i.e.
mov lr, pc
b _foo
The "mov lr, pc" is issued in order to get proper backtrace.

rdar://8979299


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151623 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
2129a0f6773b3625ddc5d541fe454a9a923cec2a 28-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle regmasks in MachineCSE.

Don't attempt to extend physreg live ranges across calls.

<rdar://problem/10942095>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151610 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
9ca12d2e2f14b0b59c839943e58d8aa5d1a271cb 28-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle regmasks in the machine code verifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151607 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
921c9bd91f59937e25e754e19832c40b2f130d63 28-Feb-2012 Chad Rosier <mcrosier@apple.com> Fix 80-column violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151599 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
b266cd0e9824db48804c785b2c48b43be0c0f7dd 27-Feb-2012 Evan Cheng <evan.cheng@apple.com> Fix for PR12090: clear def maps of aliases when visiting a copy. e.g.
%S5<def> = COPY %S0<kill>
First clear def map of Q1, etc.

No small test case available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151574 91177308-0d34-0410-b5e6-96231b3b80d8
achineCopyPropagation.cpp
121b179edf28040b8fa4c99e0835e4560cf3a5d4 27-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Update machine code verifier.

After the SlotIndex slot names were updated, it is possible to apply
stricter checks to live intervals.

Also treat bundles as bags of operands when checking live intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151531 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
c69cbd0a7431b047dbc4a9758e81bf122926ba0a 25-Feb-2012 Lang Hames <lhames@gmail.com> Make the peephole optimizer clear kill flags on a vreg if it's about to add new
uses of the vreg, since the old kills may no longer be valid. This was causing
-verify-machineinstrs to complain about uses after kills, and could potentially
have been causing subtle register allocation issues, but I haven't come across a
test case yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151425 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
3b26eb62946a64409f81c8089a362eb582114342 25-Feb-2012 Lang Hames <lhames@gmail.com> Fixed typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151417 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
f79b489571610cc5a97c050415b982e94a9989fd 24-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add missing static

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151396 91177308-0d34-0410-b5e6-96231b3b80d8
egisterClassInfo.cpp
27bc818eaf73efe169f95c4dd8f564fd051dd824 24-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a -stress-regalloc=<N> option.

This will limit all register classes to N registers in order to stress
test register allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151379 91177308-0d34-0410-b5e6-96231b3b80d8
egisterClassInfo.cpp
f77c03a8599ca354393292bb6c918ea8dab6a21d 24-Feb-2012 Hal Finkel <hfinkel@anl.gov> Don't crash when a glue node contains an internal CopyToReg

This is necessary to support the existing ppc lowering code for indirect calls.
Fixes PR12071.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
8b93ff298cbaa8a16f950374e1be1f7e5114da8f 24-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> SDAGBuilder: Remove register sets that were never read and prune dead code surrounding it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
aaad5f2b9a86982c3bc5198d404a1a8c850521cd 24-Feb-2012 Nick Lewycky <nicholas@mxc.ca> ScheduleDAGInstrs.h:155: warning: suggest parentheses around `&&' within `||'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151355 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
702d489a959b202ab06ce4bafa0bcb1fbfd2c3e4 24-Feb-2012 Andrew Trick <atrick@apple.com> PostRA sched: speed up physreg tracking by not abusing SparseSet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151348 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
d18134f11621c2ff4d2bde6effb9c7115944f9fe 24-Feb-2012 Pete Cooper <peter_cooper@apple.com> Turn avx insert intrinsic calls into INSERT_SUBVECTOR DAG nodes and remove duplicate patterns for selecting the intrinsics

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151342 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
178606d92e636bb91ffbce3c4387ce059ed32953 24-Feb-2012 Eric Christopher <echristo@apple.com> If the Address of a variable is an argument then treat the entire
variable declaration as an argument because we want that address
anyhow for our debug information.

This seems to fix rdar://9965111, at least we have more debug
information than before and from reading the assembly it appears
to be the correct location.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151335 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
5b13ed1ac9745f21f30ddb07015cf27959c194c4 24-Feb-2012 Eric Christopher <echristo@apple.com> Tabs, formatting and long lines oh my!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151334 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
9e8ceb0bac778595c5dbabe900819c3f575c5e5f 24-Feb-2012 Bill Wendling <isanbard@gmail.com> Allow an integer to be converted into an MMX type when it's used in an inline
asm.
<rdar://problem/10106006>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151303 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b6bd8ccd02f7c2febee19b1eae2cb1ce90ad4001 23-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> BitVectorize loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151274 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
46252d8ea1d264ca341e3ca3e7f4e3c82e32940e 23-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> post-ra-sched: Turn the KillIndices vector into a bitvector, it only stored two meaningful states.

Rename it to LiveRegs to make it more clear what's stored inside.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151273 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
49b726c339b6f3b9c51638bd0f453610f9765f2d 23-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> post-ra-sched: Replace a std::set of regs with a bitvector.

Assuming that a single std::set node adds 3 control words, a bitvector
can store (3*8+4)*8=224 registers in the allocated memory of a single
element in the std::set (x86_64). Also we don't have to call malloc
for every register added.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151269 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
976647d95da89e38c66d9ed869a9d345b36d386d 23-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make calls scheduling boundaries post-ra.

Before register allocation, instructions can be moved across calls in
order to reduce register pressure. After register allocation, we don't
gain a lot by moving callee-saved defs across calls. In fact, since the
scheduler doesn't have a good idea how registers are used in the callee,
it can't really make good scheduling decisions.

This changes the schedule in two ways: 1. Latencies to call uses and
defs are no longer accounted for, causing some random shuffling around
calls. This isn't really a problem since those uses and defs are
inaccurate proxies for what happens inside the callee. They don't
represent registers used by the call instruction itself.

2. Instructions are no longer moved across calls. This didn't happen
very often, and the scheduling decision was made on dubious information
anyway.

As with any scheduling change, benchmark numbers shift around a bit,
but there is no positive or negative trend from this change.

This makes the post-ra scheduler 5% faster for ARM targets.

The secret motivation for this patch is the introduction of register
mask operands representing call clobbers. The most efficient way of
handling regmasks in ScheduleDAGInstrs is to model them as barriers for
physreg live ranges, but not for virtreg live ranges. That's fine
pre-ra, but post-ra it would have the same effect as this patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151265 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
92fc97afa742000aeb81d862abbaaba50b27a000 23-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Strip a layer of boilerplate from the VLIWPacketizer by storing the scheduler as an opaque pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151252 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
1d2d5a0227d6f1381f3ffa9c331045bdfa409ee8 23-Feb-2012 Anton Korobeynikov <asl@math.spbu.ru> Fix to make sure that a comdat group gets generated correctly for a static member
of instantiated C++ templates.

Patch by Kristof Beyls!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151250 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
0822e010d1b55eb24e746a575a31235f45110ac3 23-Feb-2012 Eric Christopher <echristo@apple.com> More newline cleanups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151235 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
244136770babf37d53db6b57a9e575097c73e3d0 23-Feb-2012 Eric Christopher <echristo@apple.com> Add some handy-dandy newlines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151234 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
63d578b5aa0f07a0789d3bae84750ea145ec06b1 23-Feb-2012 Andrew Trick <atrick@apple.com> misched: cleanup reaching def computation

Ignore undef uses completely.
Use a more explicit SlotIndex API.
Add more explicit comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151233 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
81a682a4c004b0f44452ef824637a1b6face178f 23-Feb-2012 Andrew Trick <atrick@apple.com> PostRASched: Convert physreg def/use tracking to Jakob's SparseSet.

Added array subscript to SparseSet for convenience.
Slight reorg to make it easier to manage the def/use sets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151228 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
f19a5926cb1fcd145a61116b7dd2b18312e76fd7 23-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle regmasks in FixupKills.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151226 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
bbad2f1040fea671b4413f53b3fd816cb7bd2443 23-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle regmasks in CriticalAntiDepBreaker.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151223 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
cf14613455bc32b6a17821808595263e061335bc 23-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Track reserved registers separately from RegsAvailable.

The bulk masking operations from register mask operands don't account
for reserved registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151222 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
02634be4d4c8a72b652ae3e76b327a12593b03d4 22-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't compute latencies for regmask operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151211 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
be2af7ee781cd0083124514f497b8cf3070776ec 22-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle regmasks in RegisterScavenging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151210 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
8ae3ac7a8c2112ab739b4a0dc24f28b2bbb84117 22-Feb-2012 Andrew Trick <atrick@apple.com> misched: Use SparseSet for VRegDegs for constant time clear().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151205 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
d55a2664f9493a4c3be242a75d339fac0ebe2e21 22-Feb-2012 Hal Finkel <hfinkel@anl.gov> Allow the use of an alternate symbol for calculating a function's size.

The standard function epilog includes a .size directive, but ppc64 uses
an alternate local symbol to tag the actual start of each function.

Until recently, binutils accepted the .size directive as:
.size test1, .Ltmp0-test1
however, using this directive with recent binutils will result in the error:
.size expression for XXX does not evaluate to a constant
so we must use the label which actually tags the start of the function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151200 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c9c137b463b953fbf8942f655d67f6dc1a0f7965 22-Feb-2012 Michael J. Spencer <bigcheesegs@gmail.com> Properly emit _fltused with FastISel. Refactor to share code with SDAG.
Patch by Joe Groff!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151183 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
2fc0977a988a49dacb0ca0954e40ddc4e8849d4c 22-Feb-2012 Andrew Trick <atrick@apple.com> Comment from code review

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151178 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
90f20044ade3712c8b0c3f4ebe47d57ad15ae6ce 22-Feb-2012 Chad Rosier <mcrosier@apple.com> Remove extra semi-colons.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151169 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
91ba63d230bfc3e035d2851d039e08f34f0b9bbd 22-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> 80 col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151167 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
8b6fe6b651064da51bb9bc63ece8bf1f2a36d66a 22-Feb-2012 Eric Christopher <echristo@apple.com> Only add DW_AT_prototyped if we're working with a C-like language.
Worth another 45k (1%) off of a large C++ testcase.

rdar://10909458

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151144 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
438b092a4bba8d766316542ced10b7b028bad82c 22-Feb-2012 Eric Christopher <echristo@apple.com> Add the source language into the compile unit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151143 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
e2dc9336d15ad3ca4f38d296d17f6682829b80b4 22-Feb-2012 Eric Christopher <echristo@apple.com> Remove extra semi-colon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151142 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
cc77b54036cfaaab9e0d9f2c731efbd2b7753cc9 22-Feb-2012 Andrew Trick <atrick@apple.com> misched: DAG builder should not track dependencies for SSA defs.

The vast majority of virtual register definitions don't need an entry
in the DAG builder's VRegDefs set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151136 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
b4566a999970b514d7c6973d99e293a6625d3f70 22-Feb-2012 Andrew Trick <atrick@apple.com> Initialize SUnits before DAG building.

Affect on SD scheduling and postRA scheduling:
Printing the DAG will display the nodes in top-down topological order.
This matches the order within the MBB and makes my life much easier in general.

Affect on misched:
We don't need to track virtual register uses at all. This is awesome.
I also intend to rely on the SUnit ID as a topo-sort index. So if A < B then we cannot have an edge B -> A.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151135 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
atencyPriorityQueue.cpp
achineScheduler.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
44d23825d61d530b8d562329ec8fc2d4f843bb8d 22-Feb-2012 Craig Topper <craig.topper@gmail.com> Make all pointers to TargetRegisterClass const since they are all pointers to static data that should not be modified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151134 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
electionDAG/FastISel.cpp
a240743ad954c657015b3ee3631e30fd6a2e86b2 22-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use SparseSet for the RAFast live virtual register map.

This makes RAFast 4% faster, and it gets rid of the dodgy DenseMap
iteration.

This also revealed that RAFast would sometimes dereference DenseMap
iterators after erasing other elements from the map. That does seem to
work in the current DenseMap implementation, but SparseSet doesn't allow
it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151111 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
4586d257abf13b57d115d6bac9fb38ddc811acaf 21-Feb-2012 Lang Hames <lhames@gmail.com> Add API "handleMoveIntoBundl" for updating liveness when moving instructions into
bundles. This method takes a bundle start and an MI being bundled, and makes
the intervals for the MI's operands appear to start/end on the bundle start.

Also fixes some minor cosmetic issues (whitespace, naming convention) in the
HMEditor code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151099 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
35f225aa2c04ca2420161cca812cb3eb611bde51 21-Feb-2012 Eric Christopher <echristo@apple.com> There's no need for a DW_AT_byte_size on a pointer type.

Part of rdar://10493979 where it reduces by about .5% (10k)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151097 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
19273aec441411b4d571fdb87c6daa0fbe7a33a0 21-Feb-2012 Andrew Trick <atrick@apple.com> Clear virtual registers after they are no longer referenced.

Passes after RegAlloc should be able to rely on MRI->getNumVirtRegs() == 0.
This makes sharing code for pre/postRA passes more robust.
Now, to check if a pass is running before the RA pipeline begins, use MRI->isSSA().
To check if a pass is running after the RA pipeline ends, use !MRI->getNumVirtRegs().

PEI resets virtual regs when it's done scavenging.

PTX will either have to provide its own PEI pass or assign physregs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151032 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
rologEpilogInserter.cpp
egAllocBasic.cpp
egAllocFast.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
cheduleDAGInstrs.cpp
e8ccb049136506cb71b84a55000bad3c1440ee7c 21-Feb-2012 Andrew Trick <atrick@apple.com> StackSlotColoring does not use a VirtRegMap

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151031 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
fd6d3217d3b577e704ff4826775b5938c23b9e73 21-Feb-2012 Lang Hames <lhames@gmail.com> Fix some bugs in HMEditor's moveAllOperandsInto logic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151006 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
01b623c8c2d1bd015a8bb20eafee3322575eff8f 21-Feb-2012 Evan Cheng <evan.cheng@apple.com> Fix machine-cp by having it to check sub-register indicies. e.g.
ecx = mov eax
al = mov ch
The second copy is not a nop because the sub-indices of ecx,ch is not the
same of that of eax/al.

Re-enabled machine-cp.
PR11940


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151002 91177308-0d34-0410-b5e6-96231b3b80d8
achineCopyPropagation.cpp
asses.cpp
6259dcdc576f4e35cdab27465a355630950b621b 20-Feb-2012 James Molloy <james.molloy@arm.com> Teach the DAGCombiner that certain loadext nodes followed by ANDs can be converted to zeroexts.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
df7e8bd7020c300a3c17f5858d281828a5e0cf87 20-Feb-2012 Evan Cheng <evan.cheng@apple.com> Make post-ra tail duplication bundle safe. No test case as recent codegen
flow changes have already hidden the bug. rdar://10893812


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150949 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
7db76e7ca39905bbe3cb79158af0a93ca66faff8 19-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Silence operator precedence warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150921 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b0934ab7d811e23bf530371976b8b35f3242169c 19-Feb-2012 Ahmed Charles <ace2001ac@gmail.com> Remove dead code. Improve llvm_unreachable text. Simplify some control flow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150918 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
trongPHIElimination.cpp
6aceab139205255ac44182f51819b9b8716cf477 19-Feb-2012 Lang Hames <lhames@gmail.com> Add machinery for pushing live ranges onto bundle starts while bundling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150915 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4a0b2d658ae9e296598f8c8ac36c7fe571a7eec5 19-Feb-2012 Lang Hames <lhames@gmail.com> Simplify moveEnteringDownFrom rules.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150914 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
038d2d5cede26b1ab63a732348b60ffc430dd7b0 19-Feb-2012 Lang Hames <lhames@gmail.com> Skip through instructions rather than operands when looking for last use slot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150912 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ac027144e8e22563c9bb057598c710aac57c072f 19-Feb-2012 Lang Hames <lhames@gmail.com> Fix TODO and trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150910 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
55fed62c9eca0c8ebcaa6cc2fd65a173d37b3951 19-Feb-2012 Lang Hames <lhames@gmail.com> Defer sanity checks on live intervals until after all have been updated. Hold (LiveInterval, LiveRange) pairs to update, rather than vregs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150909 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ecb50624d1e99596fdb289200cd1473cec84e097 18-Feb-2012 Lang Hames <lhames@gmail.com> Bring HMEditor into line with LLVM coding standards.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150851 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9b5d6b860c7264e1dd8c5b757dfb4458dccdc27e 18-Feb-2012 Eric Christopher <echristo@apple.com> Ignore the lifetime intrinsics in fast-isel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150848 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
0b923d9ee9e406c7dadc0803106656391a0ffd68 17-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't print out pointer values in SUnit::dump().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150842 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
0310038d5a4fe71c62f78470907c61188c613fa3 17-Feb-2012 Matt Beaumont-Gay <matthewbg@google.com> Sink variable into assert

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150841 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
fbc8dd306aa7699a866db278db08d842762b2dc2 17-Feb-2012 Lang Hames <lhames@gmail.com> Add support for regmask slots to HMEditor. Also fixes a comment error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150840 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d9f0ff56a1878347fe5a0f162ef8c2ef2b63aeb5 17-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Transfer regmasks to MRI.

MRI keeps track of which physregs have been used. Make sure it gets
updated with all the regmask-clobbered registers.

Delete the closePhysRegsUsed() function which isn't necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150830 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
egAllocFast.cpp
irtRegMap.cpp
3dc7c5138d219048d69952bead22f75efb984fa3 17-Feb-2012 Lang Hames <lhames@gmail.com> Refactor 'handleMove' code in live intervals. Clients of LiveIntervals won't see
any changes.

Internally this adds a private inner class HMEditor, to LiveIntervals. HMEditor provides
an API for updating live intervals when code is moved or bundled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150826 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7842a741eb0e1baa35af8c3bb5884655c1edaa9e 17-Feb-2012 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150820 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
iveRangeEdit.cpp
egisterCoalescer.h
0f7de3542f792da8abced2ad1809b2dfa8a4daff 17-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r150288, "Allow Post-RA LICM to hoist reserved register reads."

This caused miscompilations on out-of-tree targets, and possibly i386 as
well.

I'll find some other way of hoisting %rip-relative loads from loops
containing calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150816 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
50f603fff686df4a5ffaf01aa7af43aa64cf4615 17-Feb-2012 David Chisnall <csdavec@swan.ac.uk> ... and it's probably best to use the correct alignment, rather than just guessing that it's the same as the size.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150813 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
ca5b752d1873707c5c7d846515998ccf5002edca 17-Feb-2012 David Chisnall <csdavec@swan.ac.uk> It turns out that putting an 8-byte symbol in a 4-byte section makes Solaris ld sulk. GNU ld is perfectly happy with it, which is worrying for a whole other set of reasons...

Thanks to Anton, Duncan and Rafael for helping me track this down.
Pointy hat to Rafael for introducing the bug in the first place.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150811 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
00195d828b934455da597dbba72f1aade4e53393 17-Feb-2012 Lang Hames <lhames@gmail.com> Reverse iterator - should be incrementing rather than decrementing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150778 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
29879d7f86cac0f6a546675c5172a22ab7176519 17-Feb-2012 Lang Hames <lhames@gmail.com> MachineScheduler shouldn't use/preserve LiveDebugVariables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150773 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
5d0827582ff5b22d92af7a24d61584c73d0bb8fa 17-Feb-2012 Lang Hames <lhames@gmail.com> Oops - isRegLiveIntoSuccessor is used in non-assert builds now. Remove NDEBUG guards.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150771 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c2e08db4e5a8e1b3c253fb07c6eb736dfb66fe59 17-Feb-2012 Lang Hames <lhames@gmail.com> Re-enable 150652 and 150654 - Make FPSCR non-reserved, and make MachineCSE bail on reserved registers. This *should* be safe as of r150786.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150769 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
af8b34dae90fd6d146a3b4a83b50751ed21f07c8 17-Feb-2012 Lang Hames <lhames@gmail.com> Turn off assertion, conservatively compute liveness for live-in un-allocatable registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150768 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1a7ea9dd0431287a7346cd107680deb444d39f51 16-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Disable machine copy propagation for now. It's known to be buggy (PR11940) and introduces subtle miscompiles in many places.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150703 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
6afa3f744a57933aef57b94a8e7a7148065c432c 16-Feb-2012 James Molloy <james.molloy@arm.com> Remove extraneous #include and spelling mistake introduced in r150669.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150670 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6660c05da33a93a011977454239cead97c3ff579 16-Feb-2012 James Molloy <james.molloy@arm.com> Modify the algorithm when traversing the DAGCombiner's worklist to be O(log N) for all operations. This fixes a horrible worst case with lots of nodes where 99% of the time was being spent in std::remove.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150669 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1834df8384354217c59e1c5dd8bc091c11b8ca43 16-Feb-2012 Lang Hames <lhames@gmail.com> Oop - r150653 + r150654 broke one of my test cases. Backing out for now...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150655 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
f7e31b9e81da165da0e18895713385af73e3b5ee 16-Feb-2012 Lang Hames <lhames@gmail.com> MachineCSE shouldn't extend the live ranges of reserved or allocatable registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150653 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
a230262791397c88beeb7ca9bb97c8a8a026e848 16-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle register masks in branch folding.

Don't attempt to move instructions with regmask operands. They are most
likely calls anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150634 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
e746186ed4f61bf5eba13112cb8419c95cf58e52 16-Feb-2012 Andrew Trick <atrick@apple.com> Fix library visibility problems with VLIWPacketizer.

The existing framework for postra scheduling is library local. We want to keep it that way. Soon we will have a more general MachineScheduler interface. At that time, various bits will be exposed to targets. In the meantime, the VLIWPacketizer wants to use ScheduleDAGInstrs directly, so it needs to wrapped in a PIMPL to avoid exposing it to the target interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150633 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
cc2037be2cf0159e9f7a917a4db434258fe6eb6b 16-Feb-2012 Lang Hames <lhames@gmail.com> Make LiveIntervals::handleMove() bundle aware.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150630 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
2de3ff50439918b5a822b3d06d4d7c5826e11e6c 15-Feb-2012 Bill Wendling <isanbard@gmail.com> Use 'getDataNoRel' for the section kind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150628 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
cc72913268ccf5e0fb2785496a1dee764ecce5ff 15-Feb-2012 Lang Hames <lhames@gmail.com> Fix assertion condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150627 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
057d521e3d91a894f6c38fcbc21ee5950fbdf7b1 15-Feb-2012 Bill Wendling <isanbard@gmail.com> Modify the code that emits the module flags to use the new module flags accessor
method. This allows the target lowering code to not have to deal with MDNodes.

Also, avoid leaking memory like a sieve by not creating a global variable for
the image info section, but just emitting the code directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150624 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
argetLoweringObjectFileImpl.cpp
68c36e0c26d6abc6e19ac66a24061d8c4a187767 15-Feb-2012 Andrew Trick <atrick@apple.com> Don't expose DefaultVLIWScheduler

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150619 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
862fd5f77a1657380242cdcb9b0a7f9225dae426 15-Feb-2012 Lang Hames <lhames@gmail.com> Remove overly conservative assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150608 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ebafa0c61170682ec0d7025f46f187a164b0db7e 15-Feb-2012 Andrew Trick <atrick@apple.com> Generic "VLIW" packetizer based on a DFA generated from target itinerary.

Patch by Sundeep!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150607 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
900d7b78e6cacca6c6062abf803d7ab1a4e39b38 15-Feb-2012 Andrew Trick <atrick@apple.com> Revert r150565 again. Appears to be a stage2 failure with dragonegg.

I'll put MachineLICM back before PEI. All my arm/x86 benchmarks look good, but buildbots don't like it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150568 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
788066a1f46872d076d4c7ae561b76237a625b69 15-Feb-2012 Andrew Trick <atrick@apple.com> Reapply r150565 with the typo fix properly merged.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150567 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
40bb92a5cc199d5973b7306345e3329c3477ac86 15-Feb-2012 Andrew Trick <atrick@apple.com> reverting r150565. Premature push.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150566 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
352aa4f67f968ca1a45f7cef0fd480b9c94f5bbe 15-Feb-2012 Andrew Trick <atrick@apple.com> Move PostRAMachineLICM into MachineLateOptimization. It now runs after PEI!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150565 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
79bf288584215f3f3c49050ac1691a6b29c56fec 15-Feb-2012 Andrew Trick <atrick@apple.com> Allow CodeGen (llc) command line options to work as expected.

The llc command line options for enabling/disabling passes are local to CodeGen/Passes.cpp. This patch associates those options with standard pass IDs so they work regardless of how the target configures the passes.

A target has two ways of overriding standard passes:
1) Redefine the pass pipeline (override TargetPassConfig::add%Stage)
2) Replace or suppress individiual passes with TargetPassConfig::substitutePass.

In both cases, the command line options associated with the pass override the target default.

For example, say a target wants to disable machine instruction scheduling by default:

- The target calls disablePass(MachineSchedulerID) but otherwise does not override any TargetPassConfig methods.

- Without any llc options, no scheduler is run.

- With -enable-misched, the standard machine scheduler is run and honors the -misched=... flag to select the scheduler variant, which may be used for performance evaluation or testing.

Sorry overridePass is ugly. I haven't thought of a better way without replacing the cl::opt framework. I hope to do that one day...

I haven't figured out why CodeGen uses char& for pass IDs. AnalysisID is much easier to use and less bug prone. I'm using it wherever I can for internal implementation. Maybe later we can change the global pass ID definitions as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150563 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
5e108eeeef34dd2afa00d1da77bca47188de4244 15-Feb-2012 Andrew Trick <atrick@apple.com> Added TargetPassConfig::disablePass/substitutePass as a general mechanism to override specific passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150562 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
f58e37f957191a3e41f605628c6169fbb1d4f922 15-Feb-2012 Lang Hames <lhames@gmail.com> Don't emit live ranges for physregs live-ins that are dead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150553 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
da7984fbbac967ddbe5de4e789f8f37c673a7d75 15-Feb-2012 Lang Hames <lhames@gmail.com> Disentangle moving a machine instr from updating LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150552 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineScheduler.cpp
bbfa5c02be2ef2a9ff965a4dcfe9e99665dcf0ef 15-Feb-2012 Pete Cooper <peter_cooper@apple.com> Added hook to let targets custom lower splitting of illegal vectors

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150550 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
d5d61edfc66887b3b1962251da877b284b1478ab 15-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix global live range splitting regmask accuracy.

Pretend that regmask interference ends at the 'dead' slot, even when
there is other interference ending at the 'reg' slot of the same
instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150531 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.cpp
cac5fa39bd861861018bb2c3f0b36cc71c2caa38 15-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix details in local live range splitting with regmasks.

Perform all comparisons at instruction granularity, and make sure
register masks on uses count in both gaps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150530 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
1cf8b0f2a5435d8444b6cc7d4a27eef424398273 15-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle regmasks in findRegisterDefOperandIdx().

Only accept register masks when looking for an 'overlapping' def. When
Overlap is not set, the function searches for a proper definition of
Reg.

This means MI->modifiesRegister() considers register masks, but
MI->definesRegister() doesn't.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150529 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
6b7913893bcd47f52eff71e39e50c42511c4ed36 15-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the proper clobber check in handleLiveInRegister().

When a physreg is live in to a basic block, look for any instruction in
the block that clobbers the physreg.

The instruction doesn't have to properly redefine the register, any
overlapping clobber is OK.

This slightly changes live ranges when compiling with register masks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150528 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f658af5484855b37c6c651e9e5e671982d39af26 15-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Dump live intervals in numerical order.

The old DenseMap hashed order was very confusing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150527 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
94b6e1418202e9f6cf54856d5ec2891c9012777a 15-Feb-2012 Lang Hames <lhames@gmail.com> Don't create a new copy of reserved regs - we already have one handy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150525 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b464d3ff72790260e8c2068afe856fd7299a6834 14-Feb-2012 Bill Wendling <isanbard@gmail.com> Add code to the target lowering object file module to handle module flags.

The MachO back-end needs to emit the garbage collection flags specified in the
module flags. This is a WIP, so the front-end hasn't been modified to emit these
flags just yet. Documentation and front-end switching to occur soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150507 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
argetLoweringObjectFileImpl.cpp
03698deb25215bf3b4aa2e3ff731ea38923a928c 14-Feb-2012 Lang Hames <lhames@gmail.com> Update MachineVerifier to check the new physreg live-in rules.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150496 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
342c64c90418a97ec26303c27d1829edd994d9a9 14-Feb-2012 Lang Hames <lhames@gmail.com> Tighten physical register invariants: Allocatable physical registers can
only be live in to a block if it is the function entry point or a landing pad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150494 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8b7c3d0ee42938a9e6ca37239cc327bd9f4c0cd0 14-Feb-2012 Nadav Rotem <nadav.rotem@intel.com> Fix PR12000. Some vector operations may use scalar operands with types
that are greater than the vector element type. For example BUILD_VECTOR
of type <1 x i1> with a constant i8 operand.
This patch fixes the assertion.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150477 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
fc52a5232300c27d57a8a9b6cd4b8cdd5d51127a 14-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Turn push_back loops into append/insert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150471 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
0796134bde31f6d58d077f556fd08ca3734a9e6e 14-Feb-2012 Lang Hames <lhames@gmail.com> Rename getExceptionAddressRegister() to getExceptionPointerRegister() for consistency with setExceptionPointerRegister(...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150460 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
cd339b71ff23327f2ef6a4c964ff3ceea20733bf 14-Feb-2012 Lang Hames <lhames@gmail.com> Use convenience function for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150457 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
bdf9db6f4905fcbbcdbdfed328ea8b36b655dd45 14-Feb-2012 Bill Wendling <isanbard@gmail.com> Don't reserve the R0 and R1 registers here. We don't use these registers, and
marking them as "live-in" into a BB ruins some invariants that the back-end
tries to maintain.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150437 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
150a371569d100e14a438cd4f89904da24c6cb20 14-Feb-2012 Bill Wendling <isanbard@gmail.com> Don't recalculate the size of the vector each time through the loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150436 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
16a7ff31655aa2de65d86472edcb71cf2df3ac3a 14-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add register mask support to ScheduleDAGRRList.

The scheduler will sometimes check the implicit-def list on instructions
to properly handle pre-colored DAG edges.

Also check any register mask operands for physreg clobbers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d35576b3c026cb323c4c240f0b20cf56089a1e5b 13-Feb-2012 Andrew Trick <atrick@apple.com> LiveIntervalAnalysis does not depend on MachineLoopInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150411 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3ed4dee530984b7087dd3bbf4cfd8a3f1947c8e0 13-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Check regmask interference for -join-physregs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150404 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
0877fdf30bb626217f635547ca90741a8c7558ad 13-Feb-2012 Nadav Rotem <nadav.rotem@intel.com> Fix a bug in DAGCombine for the optimization of BUILD_VECTOR. We cant generate a shuffle node from two vectors of different types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2ee746b87d9471d2dc024827cacdc46114ed3708 12-Feb-2012 Nadav Rotem <nadav.rotem@intel.com> This patch addresses the problem of poor code generation for the zext
v8i8 -> v8i32 on AVX machines. The codegen often scalarizes ANY_EXTEND nodes.
The DAGCombiner has two optimizations that can mitigate the problem. First,
if all of the operands of a BUILD_VECTOR node are extracted from an ZEXT/ANYEXT
nodes, then it is possible to create a new simplified BUILD_VECTOR which uses
UNDEFS/ZERO values to eliminate the scalar ZEXT/ANYEXT nodes.
Second, another dag combine optimization lowers BUILD_VECTOR into a shuffle
vector instruction.

In the case of zext v8i8->v8i32 on AVX, a value in an XMM register is to be
shuffled into a wide YMM register.

This patch modifes the second optimization and allows the creation of
shuffle vectors even when the newly generated vector and the original vector
from which we extract the values are of different types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d4a19b6a72d19a6f90b676aac37118664b7b7a84 11-Feb-2012 Anton Korobeynikov <asl@math.spbu.ru> Add support for implicit TLS model used with MS VC runtime.
Patch by Kai Nacke!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150307 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
746f24b732830f434032de5d2d321e6ad1f8e782 11-Feb-2012 Andrew Trick <atrick@apple.com> Add TargetPassConfig hooks for scheduling/bundling.

In case the MachineScheduling pass I'm working on doesn't work well
for another target, they can completely override it. This also adds a
hook immediately after the RegAlloc pass to cleanup immediately after
vregs go away. We may want to fold it into the postRA hook later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150298 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
5637379000b9a40f2bfee8ea238dc0d3955535ce 11-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow Post-RA LICM to hoist reserved register reads.

When using register masks, registers like %rip are clobbered by the
register mask. LICM should still be able to hoist instructions reading
%rip from a loop containing calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150288 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
a6d513f47467b90344a74624d4fb77673942e3ce 11-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle register masks in local live range splitting.

Again the goal is to produce identical assembly with register mask
operands enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150287 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
fd3d4cf0ef5237bd517559703bea2310f1841a5d 11-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't read PreRegAlloc before it is initialized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150286 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
938200859ec714f59f8f93acceb999e212e9c539 10-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a static MachineOperand::clobbersPhysReg().

It can be necessary to detach a register mask pointer from its
MachineOperand. This method is convenient for checking clobbered
physregs on a detached bitmask pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150261 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.cpp
6ef7da0197735a16aa534e9e2c80709d3d6e8c56 10-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add register mask support to InterferenceCache.

This makes global live range splitting behave identically with and
without register mask operands.

This is not necessarily the best way of using register masks for live
range splitting. It would be more efficient to first split global live
ranges around calls (i.e., register masks), and reserve the fine grained
per-physreg interference guidance for global live ranges that do not
cross calls.

For now the goal is to produce identical assembly when enabling register
masks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150259 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.cpp
nterferenceCache.h
egAllocGreedy.cpp
3bf7a1cc3c090e766b8912c6a14c3e2ec5dde7f8 10-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150258 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.h
c667ba69ac342563c0886e20509e68705d78a0a5 10-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Put instruction names into an indexed string table on the side, removing a pointer from MCInstrDesc.

Make them accessible through MCInstrInfo. They are only used for debugging purposes so this doesn't
have an impact on performance. X86MCTargetDesc.o goes from 630K to 461K on x86_64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150245 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/SelectionDAG.cpp
06efdd238ed7d14eaabc3b074c3b0b292c1c3127 10-Feb-2012 Andrew Trick <atrick@apple.com> comment grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150233 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
8dd26253f54247e77e5accfdd70e7b4bf27b39c2 10-Feb-2012 Andrew Trick <atrick@apple.com> RegAlloc superpass: includes phi elimination, coalescing, and scheduling.

Creates a configurable regalloc pipeline.

Ensure specific llc options do what they say and nothing more: -reglloc=... has no effect other than selecting the allocator pass itself. This patch introduces a new umbrella flag, "-optimize-regalloc", to enable/disable the optimizing regalloc "superpass". This allows for example testing coalscing and scheduling under -O0 or vice-versa.

When a CodeGen pass requires the MachineFunction to have a particular property, we need to explicitly define that property so it can be directly queried rather than naming a specific Pass. For example, to check for SSA, use MRI->isSSA, not addRequired<PHIElimination>.

CodeGen transformation passes are never "required" as an analysis

ProcessImplicitDefs does not require LiveVariables.

We have a plan to massively simplify some of the early passes within the regalloc superpass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150226 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineScheduler.cpp
HIElimination.cpp
asses.cpp
rocessImplicitDefs.cpp
egAllocBasic.cpp
egAllocFast.cpp
egAllocGreedy.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
woAddressInstructionPass.cpp
16f72dd68653bd4984363483cfc15ce91fa613d4 10-Feb-2012 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150225 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
4465b6f6b2ebd061f4f321e666b47d540651f686 10-Feb-2012 Lang Hames <lhames@gmail.com> Remove unused 'isAlias' parameter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150224 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9f10ac63a3a2a74ac381a05d8ba0f7b1b455a6b6 10-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Constrain the regmask search space for local live ranges.

When checking a local live range for interference, restrict the binary
search to the single block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150220 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
34e85d0307e3c17e5061622dccf8a20e5457b099 10-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Cache basic block boundaries for faster RegMaskSlots access.

Provide API to get a list of register mask slots and bits in a basic
block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150219 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ebf2750a70df4261d3e66144ea6bcb49d41f6efb 10-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Optimize LiveIntervals::intervalIsInOneMBB().

No looping and binary searches necessary.

Return a pointer to the containing block instead of just a bool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150218 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f378f5fae3b7c35fc0f8996accf121ffe59093e2 10-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Cache iterators. Some of these are expensive to create.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150214 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
e7c2c15b0cfa14d6b273e0e95d9de133cc958da8 09-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add register mask support to RAGreedy.

This only adds the interference checks required for correctness.
We still need to take advantage of register masks for the
interference driven live range splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150191 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
72a043f9d61aac53305102687a024a08d1fd8dad 09-Feb-2012 Lang Hames <lhames@gmail.com> Preserve physreg kills in MachineBasicBlock::SplitCriticalEdge.

Failure to preserve kills was causing LiveIntervals to miss some EFLAGS live
ranges. Unfortunately I've been unable to reduce a good test case yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150152 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
fb08b90bf402bcd08a3474772d505294d9d7aa79 09-Feb-2012 Lang Hames <lhames@gmail.com> Fix kill flags when moving instructions using LiveIntervals::moveInstr(...).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150150 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
394d71271164b9268291a2f8be1190fd4138bb77 09-Feb-2012 Lang Hames <lhames@gmail.com> Remove assertion. Not all use operands are reads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150149 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f7b96311d20dc19647833ec23fc6d7870b2ffb10 09-Feb-2012 Andrew Trick <atrick@apple.com> Improve TargetPassConfig. No intended functionality.

Split CodeGen into stages.
Distinguish between optimization and correctness.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150122 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
78b2961f4dd525da338c976f22cede6253a24369 09-Feb-2012 Andrew Trick <atrick@apple.com> comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150121 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
f56ce5312448e5876ee1822facab48385ea5c0c0 09-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Erase dead copies that are clobbered by a call.

This does make a difference, at least when using RABasic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150118 91177308-0d34-0410-b5e6-96231b3b80d8
achineCopyPropagation.cpp
39284d191af214f99736e6836be4f4ff9e8f1378 09-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Never delete instructions that define reserved registers.

I think this was already the intention, but DeadMachineInstructionElim
was accidentally tracking the liveness of reserved registers. Now,
instructions with reserved defs are never deleted.

This prevents the call stack adjustment instructions from getting
deleted when enabling register masks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150116 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
a8fc171b3f703ad8bda50a22e9227eee0822eeec 08-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle register masks in MachineCopyPropagation.

For simplicity, treat calls with register masks as basic block
boundaries. This means we can't copy propagate callee-saved registers
across calls, but I don't think that is a big deal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150108 91177308-0d34-0410-b5e6-96231b3b80d8
achineCopyPropagation.cpp
1dd8c8560d45d36a8e507cd014352f1d313f9f9e 08-Feb-2012 Andrew Trick <atrick@apple.com> Codegen pass definition cleanup. No functionality.

Moving toward a uniform style of pass definition to allow easier target configuration.
Globally declare Pass ID.
Globally declare pass initializer.
Use INITIALIZE_PASS consistently.
Add a call to the initializer from CodeGen.cpp.
Remove redundant "createPass" functions and "getPassName" methods.

While cleaning up declarations, cleaned up comments (sorry for large diff).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150100 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
odePlacementOpt.cpp
eadMachineInstructionElim.cpp
xpandISelPseudos.cpp
xpandPostRAPseudos.cpp
CStrategy.cpp
fConversion.cpp
ocalStackSlotAllocation.cpp
achineBlockPlacement.cpp
achineCSE.cpp
achineCopyPropagation.cpp
achineInstrBundle.cpp
achineLICM.cpp
achineSink.cpp
ptimizePHIs.cpp
asses.cpp
eepholeOptimizer.cpp
ostRASchedulerList.cpp
rologEpilogInserter.cpp
rologEpilogInserter.h
tackSlotColoring.cpp
ailDuplication.cpp
9d41bd5c78b99750d820e01bcd4a4e479b713d4c 08-Feb-2012 Andrew Trick <atrick@apple.com> Move pass configuration out of pass constructors: MachineLICM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150099 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
asses.cpp
9f17cf625dc8be1e92cd2755e2d118ce38fc7268 08-Feb-2012 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150098 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
32986572bfe5a30c500d03b8d55174720f08f0bf 08-Feb-2012 Andrew Trick <atrick@apple.com> Move pass configuration out of pass constructors: StackSlotColoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150097 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
tackSlotColoring.cpp
c7d081b5946b9ff9f7400d5b41f36cad3fc317aa 08-Feb-2012 Andrew Trick <atrick@apple.com> Move pass configuration out of pass constructors: PostRAScheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150096 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
ostRASchedulerList.cpp
61f1e3db43e556f495b6b9360d2f550291f78471 08-Feb-2012 Andrew Trick <atrick@apple.com> Move pass configuration out of pass constructors: BranchFolderPass

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150095 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
odeGen.cpp
asses.cpp
1df91b0e54bc62f8fc7a06a4f75220e40aa2dfe0 08-Feb-2012 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150094 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
eadMachineInstructionElim.cpp
CStrategy.cpp
achineCSE.cpp
achineCopyPropagation.cpp
achineSink.cpp
eepholeOptimizer.cpp
tackSlotColoring.cpp
ffea03f2165c5a4fda672495bf853aa2d8c7d1b5 08-Feb-2012 Andrew Trick <atrick@apple.com> Added TargetPassConfig::setOpt

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150093 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
asses.cpp
ebe18ef5c286bb7c33f6c43f1963a7d22cd73f40 08-Feb-2012 Andrew Trick <atrick@apple.com> Added Pass::createPass(ID) to handle pass configuration by ID

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150092 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
d2a7bedbc9d3db35ff424a6a2d257c72341af224 08-Feb-2012 Andrew Trick <atrick@apple.com> Move pass configuration out of pass constructors: TailDuplicate::PreRegAlloc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150091 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
ailDuplication.cpp
a94e635cec8dff2c9b39343643fe204dfab390dc 08-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add Register mask support to RABasic.

When a virtual register is live across a call, limit the search space to
call-preserved registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150081 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
3fd3a840c50fe4ede1b200be18990bc955c536fd 08-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep track of register masks in LiveIntervalAnalysis.

Build an ordered vector of register mask operands (i.e., calls) when
computing live intervals. Provide a checkRegMaskInterference() function
that computes a bit mask of usable registers for a live range.

This is a quick way of determining of a live range crosses any calls,
and restricting it to the callee saved registers if it does.
Previously, we had to discover call clobbers for each candidate register
independently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150077 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
99a7a13f4aa5bf8f272c95f7b09ba997d2b30a35 08-Feb-2012 Andrew Trick <atrick@apple.com> Added MachineInstr::isBundled() to check if an instruction is part of a bundle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150044 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
291411c7a164dd1b347b5ef21e062120efac3db7 08-Feb-2012 Andrew Trick <atrick@apple.com> misched: bug in debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150043 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
ea4312722bc3756053dc4a506320641911cd3470 08-Feb-2012 Andrew Trick <atrick@apple.com> stale comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150041 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
30d409ca097e35c51964c9dac642804e5e495906 08-Feb-2012 Devang Patel <dpatel@apple.com> Remove tabs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150012 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
25600cf50df79a6e7f8365a3ca7e940592e8ca74 06-Feb-2012 Andrew Trick <atrick@apple.com> Expose TargetPassConfig to PEI Pass

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149927 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
hrinkWrapping.cpp
6939fde29cdd04cec9f440a9351c1c4340850e20 06-Feb-2012 Andrew Trick <atrick@apple.com> Add TargetPassConfig to the PassManager for use inside passes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149926 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
fb5d511c0d91b22e49b32452e8e6dea202318d80 06-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't explicitly renumber slot indices.

We have automatic local renumbering now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149920 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
602cb9d9f2307913aa816abbe37fc158c79feb0a 06-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make sure a reserved register has a live interval before merging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149910 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
8833ef03b9ceaa52063116819fff8b3d16fd8933 06-Feb-2012 Bill Wendling <isanbard@gmail.com> [unwind removal] Remove all of the code for the dead 'unwind' instruction. There
were no 'unwind' instructions being generated before this, so this is in effect
a no-op.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149906 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
aa5abe88d6aa445afa593476a665e3ab14b3524c 06-Feb-2012 Bill Wendling <isanbard@gmail.com> [unwind removal] We no longer have 'unwind' instructions being generated, so
remove the code that handles them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149901 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
6588abf377b7381274236e651462ec83052f6013 06-Feb-2012 Devang Patel <dpatel@apple.com> DebugInfo: Provide a new hook to encode relationship between a property and an ivar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149874 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
aae875c27ce59e1c98dbc4a2358a006f2edef433 06-Feb-2012 Craig Topper <craig.topper@gmail.com> Move some llvm_unreachable's from r149849 out of switch statements to satisfy -Wcovered-switch-default

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149860 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
5b8a1db7ea6510a2589f710d50754599da742de9 05-Feb-2012 Duncan Sands <baldrick@free.fr> Persuade GCC that there is nothing worth warning about here (there isn't).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149834 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
cc870a8f936bfc478b7d3d39724dd604a9de8f76 05-Feb-2012 Nadav Rotem <nadav.rotem@intel.com> Add additional documentation to the extract-and-trunc dagcombine optimization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149823 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5e25ee8a1fcf8288d00d731b0f7ab7976f33b123 05-Feb-2012 Craig Topper <craig.topper@gmail.com> Convert assert(0) to llvm_unreachable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149816 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
fConversion.cpp
achineFunction.cpp
achineModuleInfo.cpp
egAllocPBQP.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/SelectionDAG.cpp
18c7f80b3e83ab584bd8572695a3cde8bafd9d3c 05-Feb-2012 Chris Lattner <sabre@nondot.org> reapply the patches reverted in r149470 that reenable ConstantDataArray,
but with a critical fix to the SelectionDAG code that optimizes copies
from strings into immediate stores: the previous code was stopping reading
string data at the first nul. Address this by adding a new argument to
llvm::getConstantStringInfo, preserving the behavior before the patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149800 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAG.cpp
0aad7d274d6dfb0de1ebc00600cecf5e229b7c43 04-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Drop the REDEF_BY_EC VNInfo flag.

A live range that has an early clobber tied redef now looks like a
normal tied redef, except the early clobber def uses the early clobber
slot.

This is enough to handle any strange interference problems.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149769 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
egisterCoalescer.cpp
7e899cbb9127c02c58f6e774186a533b0d00681d 04-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Correctly terminate a physreg redefined by an early clobber.

I don't have a test that fails because of this, but a test case like
CodeGen/X86/2009-12-01-EarlyClobberBug.ll exposes the problem. EAX is
redefined by a tied early clobber operand on inline asm, and the live
range should look like this:

%EAX,inf = [48r,64e:0)[64e,80r:1) 0@48r 1@64e

Previously, the two values got merged:

%EAX,inf = [48r,80r:0) 0@48r

With this bug fixed, the REDEF_BY_EC VNInfo flag is no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149768 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c0dc1b7f9725433325ea06e1272ba7fd411c2eb1 04-Feb-2012 Nick Lewycky <nicholas@mxc.ca> Fix a leak!

Andy, in a previous commit you made this into an ImmutablePass so that you could
add it to the PassManager, then in the next commit you left it a Pass but
removed the code that added it to the PM. If you do add it to the PM then the PM
should take care of deleting it, but it's also true that nothing in codegen
needs this object to exist after it's done its work here. It's not clear to me
which design you want; this should likely either cease to be a Pass or be added
to the PM where other parts of CodeGen will request it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149765 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
3b1088a2cc15a39c7a7b8dd95a56143f1dda6863 04-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't store COPY pointers in VNInfo.

If a value is defined by a COPY, that instuction can easily and cheaply
be found by getInstructionFromIndex(VNI->def).

This reduces the size of VNInfo from 24 to 16 bytes, and improves
llc compile time by 3%.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149763 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveIntervalAnalysis.cpp
iveRangeCalc.cpp
egisterCoalescer.cpp
piller.cpp
plitKit.cpp
trongPHIElimination.cpp
061efcfb3e79899493d857f49e50d09f29037e0a 04-Feb-2012 Andrew Trick <atrick@apple.com> TargetPassConfig: confine the MC configuration to TargetMachine.

Passes prior to instructon selection are now split into separate configurable stages.
Header dependencies are simplified.
The bulk of this diff is simply removal of the silly DisableVerify flags.

Sorry for the target header churn. Attempting to stabilize them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149754 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
asses.cpp
d5422654016b3ac7494db1d2ba16bd8febadb0a8 04-Feb-2012 Andrew Trick <atrick@apple.com> Move TargetPassConfig implementation into Passes.cpp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149753 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
asses.cpp
7461334084aa77286b6f9af596fb0f6ba0465685 04-Feb-2012 Andrew Trick <atrick@apple.com> Make TargetPassConfig an ImmutablePass so CodeGenPasses can query options

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149752 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
LVMTargetMachine.cpp
asses.cpp
9e11eb1ddb2988d0a751fdcfe433bc816c83f1f2 04-Feb-2012 Devang Patel <dpatel@apple.com> Emit new property tag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149737 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
2f2d1d7ec0a0178c76c29a13ab39d3f33d9b097b 04-Feb-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] HandlePHINodesInSuccessorBlocks() can promite i8 and i16 types too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149730 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
9119b039d46e95ed95d9a20f9f7ee52e414ca16d 04-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Trim headers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149722 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d491da3f93a51d811b42f59f375e0b1883b06832 03-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete some dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149717 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
77180e0b402fff318cffd89a2251e46b3dce4064 03-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle register mask operands in setPhysRegsDeadExcept().

Calls that use register mask operands don't have implicit defs for
returned values. The register mask operand handles the call clobber,
but it always behaves like a set of dead defs.

Add live implicit defs for any implicitly defined physregs that are
actually used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149715 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a37818dbb119bda75273f16b8484732e742cdbb7 03-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> ArrayRef'ize MI::setPhysRegsDeadExcept().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149709 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
59cb77fb11ec547f60ef0ff4a8ccf3bd8007ae46 03-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle all live physreg defs in the same place.

SelectionDAG has 4 different ways of passing physreg defs to users.
Collect all of the uses at the same time, and pass all of them to
MI->setPhysRegsDeadExcept() to mark the remaining defs dead.

The setPhysRegsDeadExcept() function will soon add the required
implicit-defs to instructions with register mask operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149708 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/InstrEmitter.cpp
f1f78d5266dd67e25f23904578d69384bb53a6f7 03-Feb-2012 Andrew Trick <atrick@apple.com> Initialize all common codegen passes before configuration so we can use their PassIDs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149705 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
7e413e9c94294f17daa64ac9fda09a738e20caa5 03-Feb-2012 Nadav Rotem <nadav.rotem@intel.com> The type-legalizer often scalarizes code. One of the common patterns is extract-and-truncate.
In this patch we optimize this pattern and convert the sequence into extract op of a narrow type.
This allows the BUILD_VECTOR dag optimizations to construct efficient shuffle operations in many cases.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
843ee2e6a46b2b2d74a84c2eea68dec35cb359cc 03-Feb-2012 Andrew Trick <atrick@apple.com> Added TargetPassConfig. The first little step toward configuring codegen passes.

Allows command line overrides to be centralized in LLVMTargetMachine.cpp.
LLVMTargetMachine can intercept common passes and give precedence to command line overrides.
Allows adding "internal" target configuration options without touching TargetOptions.
Encapsulates the PassManager.
Provides a good point to initialize all CodeGen passes so that Pass ID's can be used in APIs.
Allows modifying the target configuration hooks without rebuilding the world.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149672 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
8247e0dca6759d9a22ac4c5cf305fac052b285ac 03-Feb-2012 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149671 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
woAddressInstructionPass.cpp
6c2cf8b1fbcf70fd9db6fe44032c1ceaa2299760 03-Feb-2012 Akira Hatanaka <ahatanaka@mips.com> Add a new MachineJumpTableInfo entry type, EK_GPRel64BlockAddress, which is
needed to emit a 64-bit gp-relative relocation entry. Make changes necessary
for emitting jump tables which have entries with directive .gpdword. This patch
does not implement the parts needed for direct object emission or JIT.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149668 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
478a8a02bc0f2e739ed8f4240152e99837e480b9 03-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Require non-NULL register masks.

It doesn't seem worthwhile to give meaning to a NULL register mask
pointer. It complicates all the code using register mask operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149646 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
achineInstr.cpp
achineLICM.cpp
eec68e7ffa22d489562a58299cd2fc6f089b893b 02-Feb-2012 Lang Hames <lhames@gmail.com> Re-apply the coalescer fix from r149147. Commit r149597 should have fixed the llvm-gcc and clang self-host issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149598 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
d88710a3e0847baec0847b802637a48b71718d4d 02-Feb-2012 Lang Hames <lhames@gmail.com> Break as soon as the MustMapCurValNos flag is set - no need to reiterate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149596 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
02e08d5b4d9d368418debaf9ff2b3f07425ee0b6 02-Feb-2012 Lang Hames <lhames@gmail.com> PR11868. The previous loop in LiveIntervals::join would sometimes fall over if
more than two adjacent ranges needed to be merged. The new version should be
able to handle an arbitrary sequence of adjancent ranges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149588 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
ebf8c27caea0a1c55df649c78ced28d9fa78093e 01-Feb-2012 Andrew Trick <atrick@apple.com> fix cmake

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149553 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
ee498d3254b86bceb4f441741e9f442990647ce6 01-Feb-2012 Andrew Trick <atrick@apple.com> VLIW specific scheduler framework that utilizes deterministic finite automaton (DFA).

This new scheduler plugs into the existing selection DAG scheduling framework. It is a top-down critical path scheduler that tracks register pressure and uses a DFA for pipeline modeling.

Patch by Sergei Larin!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149547 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
electionDAG/ResourcePriorityQueue.cpp
electionDAG/ScheduleDAGVLIW.cpp
electionDAG/SelectionDAGISel.cpp
24473120a253a05f3601cd3373403b47e6d03d41 01-Feb-2012 Stepan Dyatkovskiy <stpworld@narod.ru> SwitchInst refactoring.
The purpose of refactoring is to hide operand roles from SwitchInst user (programmer). If you want to play with operands directly, probably you will need lower level methods than SwitchInst ones (TerminatorInst or may be User). After this patch we can reorganize SwitchInst operands and successors as we want.

What was done:

1. Changed semantics of index inside the getCaseValue method:
getCaseValue(0) means "get first case", not a condition. Use getCondition() if you want to resolve the condition. I propose don't mix SwitchInst case indexing with low level indexing (TI successors indexing, User's operands indexing), since it may be dangerous.
2. By the same reason findCaseValue(ConstantInt*) returns actual number of case value. 0 means first case, not default. If there is no case with given value, ErrorIndex will returned.
3. Added getCaseSuccessor method. I propose to avoid usage of TerminatorInst::getSuccessor if you want to resolve case successor BB. Use getCaseSuccessor instead, since internal SwitchInst organization of operands/successors is hidden and may be changed in any moment.
4. Added resolveSuccessorIndex and resolveCaseIndex. The main purpose of these methods is to see how case successors are really mapped in TerminatorInst.
4.1 "resolveSuccessorIndex" was created if you need to level down from SwitchInst to TerminatorInst. It returns TerminatorInst's successor index for given case successor.
4.2 "resolveCaseIndex" converts low level successors index to case index that curresponds to the given successor.

Note: There are also related compatability fix patches for dragonegg, klee, llvm-gcc-4.0, llvm-gcc-4.2, safecode, clang.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149481 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
91766fe066efe6e0969ba805a2e3726a70ed34a3 01-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert Chris' commits up to r149348 that started causing VMCoreTests unit test to fail.

These are:

r149348
r149351
r149352
r149354
r149356
r149357
r149361
r149362
r149364
r149365

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149470 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAG.cpp
ab78e20ce085763b4fc9948eaa715fb7e49341c8 31-Jan-2012 Andrew Trick <atrick@apple.com> Obvious unnecessary loop removal. Follow through from previous checkin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149398 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
1b2f643753a2974540934ac0f1e3ffd182b0571c 31-Jan-2012 Chris Lattner <sabre@nondot.org> with recent changes, ConstantArray is never a "string". Remove the associated
methods and constant fold the clients to false.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149362 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b3d58474c83499621ae1e2d76dc87587910abe55 31-Jan-2012 Andrew Trick <atrick@apple.com> RAFast: Generalize the logic for return operands.

This removes implicit assumption about the form of MI coming into regalloc. In particular, it should be independent of ProcessImplicitDefs which will eventually become a standard part of coming out of SSA--unless we simply can eliminate IMPLICIT_DEF completely. Current unit tests expose this once I remove incidental pass ordering restrictions.

This is not a final fix. Just a temporary workaround until I figure out the right way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149360 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
f0e1053a63f5522ecfe1df8fe3ea07b24cb6b193 31-Jan-2012 Chris Lattner <sabre@nondot.org> remove the last vestiges of llvm::GetConstantStringInfo, in CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4a6facbc574c37ec81380d31d8f1372ea10ebf29 31-Jan-2012 Chris Lattner <sabre@nondot.org> rework this logic to not depend on the last argument to GetConstantStringInfo,
which is going away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c63352f6336ab67cdba6d4702dc2bed5fdca1091 31-Jan-2012 Chris Lattner <sabre@nondot.org> don't emit a 1-byte object as a .fill. This is silly and causes
CodeGen/X86/global-sections.ll to fail with CDArray



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149343 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
efd564fbd6b38964f717bf1c34f37f441eb5cf36 31-Jan-2012 Bill Wendling <isanbard@gmail.com> Remove the now-dead llvm.eh.exception and llvm.eh.selector intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149331 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
9a5c0e8d9378d11cb5250265cf521db32968a56e 31-Jan-2012 Bill Wendling <isanbard@gmail.com> Remove the eh.exception and eh.selector intrinsics. Also remove a hack to copy
over the catch information. The catch information is now tacked to the invoke
instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149326 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGISel.cpp
d49db36badcfa29022b99325135c3ca429150be0 31-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Use the correct ShiftAmtTy for creating shifts after legalization. PR11881. Not committing a testcase because I think it will be too fragile.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149315 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
beb05952ce27b4039c9d8bea929f154edeb19ca0 31-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Chris's constant data sequence refactoring actually enabled printing
vectors of all one bits to be printed more cleverly in the AsmPrinter.
Unfortunately, the byte value for all one bits is the same with
-fsigned-char as the error return of '-1'. Force this to be the unsigned
byte value when returning it to avoid this problem, and update the test
case for the shiny new behavior.

Yay for building LLVM and Clang with -funsigned-char.

Chris, please review, and let me know if there is any reason to not
desire this change. It seems good on the surface, and certainly intended
based on the code written.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149299 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
baffe7a6f3c3f9588048db37a59b9b2f52ffe248 30-Jan-2012 Matt Beaumont-Gay <matthewbg@google.com> Here's a new one: GCC was complaining about an only-used-in-asserts
*function*. Wrap the function in #ifndef NDEBUG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149259 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b66fb5acbe4bfde5264fdbbfe7f9f478ed94c68d 30-Jan-2012 Chris Lattner <sabre@nondot.org> when verbose asm is on, print integers in ConstantDataSequentials just
like normal integers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149223 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6e64c381daa30a63608bfa3443e67c39e6df2d64 30-Jan-2012 Chris Lattner <sabre@nondot.org> don't lose tail padding on ConstantDataAggregate vec3's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149222 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9f946a24d9e69559d1e0aeb6d128c2fa19846c92 29-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix some scavenger performance issues.

- Don't call malloc+free in the very hot forward().
- Don't call isTiedToDefOperand().
- Don't create BitVector temporaries.
- Merge DeadRegs into KillRegs.
- Eliminate the early clobber checks, they were irrelevant to scavenging.
- Remove unnecessary code from -Asserts builds.

This speeds up ARM PEI by 3.4x and overall llc -O0 codegen time by 11%.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149189 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
685c23e75842e64145fe319efd792abe72a827dd 29-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid creating BitVector temporaries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149188 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
0ae06de09417ea8119ef26c57d60877ad4ce9fa2 28-Jan-2012 Bill Wendling <isanbard@gmail.com> Reapply r149159 with a fix to add to a PHI node with a non-null parent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149164 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
1c1c5bba577c710bdea01d084418d62281481cad 28-Jan-2012 Lang Hames <lhames@gmail.com> Remove code that adds live ranges for dead defs. It seems to be breaking things.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149163 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
afcb5b5ee854474a50dc4642a6e6ecc15acfe8cc 28-Jan-2012 Bill Wendling <isanbard@gmail.com> Revert r149159 until I can fix tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149162 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
b0064c6d8b50b43f56aabaebfd0e0ac274501a59 28-Jan-2012 Bill Wendling <isanbard@gmail.com> Don't always create a separate block for the call to _Unwind_Resume.

Sometimes there is only one 'resume' instruction per function. In those
situations, we don't need a separate block for the call to _Unwind_Resume. In
fact, it adds a lot of overhead to code-gen if we do that -- especially at -O0.
If we have a single 'resume' instruction, just generate the call within that
block.
<rdar://problem/10694814>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149159 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
3f8d3c7d72367244e56efd9ce2c64ef5905cb377 28-Jan-2012 Lang Hames <lhames@gmail.com> Silence warning about parens for && within ||

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149152 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
907cc8f38df212a87a6028682d91df01ba923f4f 27-Jan-2012 Lang Hames <lhames@gmail.com> Add a "moveInstr" method to LiveIntervals. This can be used to move instructions
around within a basic block while maintaining live-intervals.

Updated ScheduleTopDownLive in MachineScheduler.cpp to use the moveInstr API
when reordering MIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149147 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineScheduler.cpp
egisterCoalescer.cpp
ff21bb53ae9496b0e24d0ea0cb392fae1d49128b 27-Jan-2012 Lang Hames <lhames@gmail.com> Backing out ill-considered 'refactor'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149146 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
c5c2fcd307695c40b00a64152d83c7af13c446c0 27-Jan-2012 Lang Hames <lhames@gmail.com> Move some duplicate loops in the coalescer into their own function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149144 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
b3396dc0034db4520525e600565337f0929066b4 27-Jan-2012 Lang Hames <lhames@gmail.com> Physreg dead defs should be handled too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149118 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
a78fa8cc2dd6d2ffe5e4fe605f38aae7b3d2fb7a 27-Jan-2012 Chris Lattner <sabre@nondot.org> continue making the world safe for ConstantDataVector. At this point,
we should (theoretically optimize and codegen ConstantDataVector as well
as ConstantVector.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149116 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
4cc4666268c6c62de763c46fefe304adf08a01a1 27-Jan-2012 Bill Wendling <isanbard@gmail.com> Place the GEP instructions nearer to the instructions which use them.

GEP instructions are there for the compiler and shouldn't really output much
code (if any at all). When a GEP is stored in the entry block, Fast ISel (for
one) will not know that it could fold it into further uses. For instance, inside
of the EH handling code. This results in a lot of unnecessary spills and loads
which bloat code and slows down pretty much everything.
<rdar://problem/10694814>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149114 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
6b2760759b23b8b96beb43966b9b8088e832efc7 27-Jan-2012 Chris Lattner <sabre@nondot.org> make sure the file's matching header is #include'd first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149113 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
73858d16893e4cddd97f358a19b48bd4bc57ee97 27-Jan-2012 Chris Lattner <sabre@nondot.org> Rewrite CanShareConstantPoolEntry to be implemented in terms of the
mid-level constant folding APIs instead of doing its own analysis.
This makes it more general (e.g. can now share a <2 x i64> with a
<4 x i32>) and avoid duplicating a bunch of logic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149111 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
3b0714d993a37c722603f7cbfab71848a99e91cd 27-Jan-2012 Lang Hames <lhames@gmail.com> Rewrite instruction operands in AdjustCopiesBackFrom. Fixes PR11861.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149097 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
6b0dc92043ab1f63d78b8796098575e1d777b701 26-Jan-2012 Chris Lattner <sabre@nondot.org> progress making the world safe to ConstantDataVector. While
we're at it, allow PatternMatch's "neg" pattern to match integer
vector negations, and enhance ComputeNumSigned bits to handle
shl of vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149082 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
5b676ce7932cf60d4fd6d101323d8d54b8395804 26-Jan-2012 Chris Lattner <sabre@nondot.org> tidy up forward declarations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149078 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
6a5d0e2a98003f5235ed8c3b9a439ad85d3d91d9 26-Jan-2012 Chad Rosier <mcrosier@apple.com> Update comment for r149070.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149075 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
0162ff421deb2e7bee16aff5ed6a0a8029bcbfbe 26-Jan-2012 Chad Rosier <mcrosier@apple.com> Replace the use of isPredicable() with isPredicated() in
MachineBasicBlock::canFallThrough(). We're interested in the state of the
instruction (i.e., is this a barrier or not?), not if the instruction is
predicable or not.
rdar://10501092

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149070 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
1a96c914315b0286d84c507d696484e2c95875a4 26-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Clear kill flags before propagating a copy.

The live range of the source register may be extended when a redundant
copy is eliminated. Make sure any kill flags between the two copies are
cleared.

This fixes PR11765.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149069 91177308-0d34-0410-b5e6-96231b3b80d8
achineCopyPropagation.cpp
achineInstr.cpp
34982576a43887e7f062ed0a3571af2cbab003f3 26-Jan-2012 James Molloy <james.molloy@arm.com> Add support for the R_ARM_TARGET1 relocation, which should be given to relocations applied to all C++ constructors and destructors.

This enables the linker to match concrete relocation types (absolute or relative) with whatever library or C++ support code is being linked against.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149057 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
56243b89e7d5072d2d5498f806679d19ea483dac 26-Jan-2012 Chris Lattner <sabre@nondot.org> eliminate the Constant::getVectorElements method. There are better (and
more robust) ways to do what it was doing now. Also, add static methods
for decoding a ShuffleVector mask.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149028 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e8838d5c5f6cae7daa2507a114c896dc5a4ae097 26-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Improve sub-register def handling in ProcessImplicitDefs.

This boils down to using MachineOperand::readsReg() more.

This fixes PR11829 where a use ended up after the first def when
lowering REG_SEQUENCE instructions involving IMPLICIT_DEFs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148996 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
4a99f59aef358fb93eac180e49f6dcef03822046 25-Jan-2012 Anton Korobeynikov <asl@math.spbu.ru> Properly emit ctors / dtors with priorities into desired sections
and let linker handle the rest.

This finally fixes PR5329



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148990 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
argetLoweringObjectFileImpl.cpp
58a3685916e2badd7fdec557641b056c1540c0c3 25-Jan-2012 Lang Hames <lhames@gmail.com> Don't add live ranges for aliases of physregs that are live in to the
function. They don't appear to be used, and are inconsistent with handling of
other physreg intervals (i.e. intervals that are not live-in) where ranges are
not inserted for aliases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148986 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6c76e80753cfc83dc6804fcd5d949c517dfe3434 25-Jan-2012 Lang Hames <lhames@gmail.com> Always break upon finding a vreg operand (in Release as well as +Asserts). Remove assertion which can no longer trigger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148984 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4ca829e89567f002fc74eb0e3e532a7c7662e031 25-Jan-2012 Chris Lattner <sabre@nondot.org> use ConstantVector::getSplat in a few places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148929 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0f193b8a6846dab25323788638e760ae03b7cd87 25-Jan-2012 Chris Lattner <sabre@nondot.org> Use the right method to get the # elements in a CDS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148897 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAGBuilder.cpp
d36f5af224594719a10d8b190daf4b56cdb7377f 25-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Set correct <def,undef> flags when lowering REG_SEQUENCE.

A REG_SEQUENCE instruction is lowered into a sequence of partial defs:

%vreg7:ssub_0<def,undef> = COPY %vreg20:ssub_0
%vreg7:ssub_1<def> = COPY %vreg2
%vreg7:ssub_2<def> = COPY %vreg2
%vreg7:ssub_3<def> = COPY %vreg2

The first def needs an <undef> flag to indicate it is the beginning of
the live range, while the other defs are read-modify-write. Previously,
we depended on LiveIntervalAnalysis to notice and fix the missing
<def,undef>, but that solution was never robust, it was causing problems
with ProcessImplicitDefs and the lowering of chained REG_SEQUENCE
instructions.

This fixes PR11841.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148879 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
1ce6a36610f06a1fb4047ddde1e9bc2f071c0bfb 25-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the standard MachineFunction::print() after SlotIndexes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148878 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
10c6fdcd111d447de79613495219af8de3a2fb7e 24-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix old doxygen comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148825 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.h
1ee0ecf84a07693c3a517ba030fac8ac1f9f3fbc 24-Jan-2012 Chris Lattner <sabre@nondot.org> add more support for ConstantDataSequential


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148802 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
53fa1ae51008d22ce5d2aa6fbf22c1afc4ec1401 24-Jan-2012 Evgeniy Stepanov <eugeni.stepanov@gmail.com> An option to selectively enable part of ARM EHABI support.

This change adds an new option --arm-enable-ehabi-descriptors that
enables emitting unwinding descriptors. This provides a mode with a
working backtrace() without the (currently broken) exception support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148800 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
e697b4f486770dd640a47f39e8f0155b6d679b2d 24-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Bit pack DIE structures better.

16 bits are sufficient to store attributes, tags and forms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148799 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
8a6983493595a896cfca8392a2676bf425349cee 24-Jan-2012 Eric Christopher <echristo@apple.com> Remove generation of DW_AT_sibling. Nothing as far as I can tell uses it.
Saves about 1.5% on debug info size.

rdar://10278198

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148794 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
9e631da253bff90d9da5ace21bd73f1c838e72eb 24-Jan-2012 Chris Lattner <sabre@nondot.org> Add AsmPrinter (aka MCLowering) support for ConstantDataSequential,
and clean up some other misc stuff. Unlike ConstantArray, we will
prefer to emit .fill directives for "String" arrays that all have
the same value, since they are denser than emitting a .ascii


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148793 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
defe12df51249200214b7781ebe23345df474655 24-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Preserve <def,undef> flags in CoalesceExtSubRegs.

This won't have an effect until EliminateRegSequences() starts setting
the undef flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148779 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
3eb4be0ace6263f35a2f3aae9e964a752ebe55af 24-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Revert r148686 (and r148694, a fix to it) due to a serious layering
violation -- MC cannot depend on CodeGen.

Specifically, the MCTargetDesc component of each target is actually
a subcomponent of the MC library. As such, it cannot depend on the
target-independent code generator, because MC itself cannot depend on
the target-independent code generator. This change moved a flag from the
ARM MCTargetDesc file ARMMCAsmInfo.cpp to the CodeGen layer in
ARMException.cpp, leaving behind an 'extern' to refer back to it. That
layering order isn't viable givin the constraints outlined above.
Commandline flags are designed to be static specifically to avoid these
types of bugs.

Fixing this is likely going to require some non-trivial refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148759 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
4302a4965c4fffcecee23210dd1910d8d2c88259 23-Jan-2012 Bill Wendling <isanbard@gmail.com> Remove extraneous ';'s.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148740 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.h
e0bd8c3a2608f39f341eb3440df723dc48d435a5 23-Jan-2012 Lang Hames <lhames@gmail.com> copyImplicitOps is redundant here - the loop above already copies these ops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148725 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
d0848a6398e0830898463ceb0041d4d7b163512d 23-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR11829. PostRA LICM was too aggressive.

This fixes a typo in r148589.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148724 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
39f66601938e88a4e287986fab58a0d5053f8f8e 23-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148723 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
7908480e4caf2f7ecb0b62c900039d49e7d51ebb 23-Jan-2012 Evgeniy Stepanov <eugeni.stepanov@gmail.com> An option to selectively enable parts of ARM EHABI support.

This change adds an new value to the --arm-enable-ehabi option that
disables emitting unwinding descriptors. This mode gives a working
backtrace() without the (currently broken) exception support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148686 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
4a309f3d25f3a28065a8ccbd7067afaad745e2d1 22-Jan-2012 Anton Korobeynikov <asl@math.spbu.ru> Add an option to disable buggy copy propagation pass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148662 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
7423db2dcf3434e74456e379751459f0d579da46 21-Jan-2012 Evan Cheng <evan.cheng@apple.com> Fix an obvious typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148622 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
8c47ad8c4708286bda9362f8089f84a3d7e41056 21-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle register masks in LiveVariables.

A register mask operand kills any live physreg that isn't preserved.
Unlike an implicit-def operand, the clobbered physregs are never live
afterwards.

This means LiveVariables has to track a much smaller number of live
physregs, and it should spend much less time in addRegisterDead().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148609 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
4888d5e98c7ae1fed28e41d75a65ddf70b25b03d 20-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete an unused member variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148594 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
a3c4ca9c7ba4bb98eb1c240726c8f4fb7e60f1c7 20-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Support register masks in MachineLICM.

Only PostRA LICM is affected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148589 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
6b88c180dad5eaa8361c5de2fa01c997f4f83368 20-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle register masks in DeadMachineInstructionElim.

Don't track live physregs that are clobbered by a register mask operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148588 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
4d6ccb5f68cd7c6418a209f1fa4dbade569e4493 20-Jan-2012 David Blaikie <dblaikie@gmail.com> More dead code removal (using -Wunreachable-code)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148578 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
ranchFolding.cpp
CStrategy.cpp
achineSSAUpdater.cpp
seudoSourceValue.cpp
electionDAG/InstrEmitter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
plitKit.cpp
argetLoweringObjectFileImpl.cpp
164b86b4399559e45fab7846f1e3e09119cab4e2 20-Jan-2012 Kostya Serebryany <kcc@google.com> Extend Attributes to 64 bits

Problem: LLVM needs more function attributes than currently available (32 bits).
One such proposed attribute is "address_safety", which shows that a function is being checked for address safety (by AddressSanitizer, SAFECode, etc).

Solution:
- extend the Attributes from 32 bits to 64-bits
- wrap the object into a class so that unsigned is never erroneously used instead
- change "unsigned" to "Attributes" throughout the code, including one place in clang.
- the class has no "operator uint64 ()", but it has "uint64_t Raw() " to support packing/unpacking.
- the class has "safe operator bool()" to support the common idiom: if (Attributes attr = getAttrs()) useAttrs(attr);
- The CTOR from uint64_t is marked explicit, so I had to add a few explicit CTOR calls
- Add the new attribute "address_safety". Doing it in the same commit to check that attributes beyond first 32 bits actually work.
- Some of the functions from the Attribute namespace are worth moving inside the class, but I'd prefer to have it as a separate commit.

Tested:
"make check" on Linux (32-bit and 64-bit) and Mac (10.6)
built/run spec CPU 2006 on Linux with clang -O2.


This change will break clang build in lib/CodeGen/CGCall.cpp.
The following patch will fix it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148553 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
b618ea5ff97182381107ab6bf52b0c2d8f783d7d 20-Jan-2012 Bill Wendling <isanbard@gmail.com> When lowering the 'resume' instruction, look to see if we can eliminate the
'insertvalue' instructions that recreate the structure returned by the
'landingpad' instruction. Because the 'insertvalue' instruction isn't supported
by FastISel, this can save a bit of time during -O0 compilation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148520 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ef2887d3486a1814e5a4c1c1c6acc7d815334c80 19-Jan-2012 Evan Cheng <evan.cheng@apple.com> More bundle related API additions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148465 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrBundle.cpp
3f9c251e40dac7503f7ae455fab89bdc359c7b85 19-Jan-2012 Evan Cheng <evan.cheng@apple.com> Rewriter should definitly rewrite instructions inside bundles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148464 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
a2e435cd23427eef7d8e86c72bb94c756e60e473 19-Jan-2012 Evan Cheng <evan.cheng@apple.com> Enhance finalizeBundle to return end of bundle iterator because it makes sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148462 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrBundle.cpp
bca15f9c8059ccb9244853f86593c35ac35c8801 19-Jan-2012 Evan Cheng <evan.cheng@apple.com> - Slight change to finalizeBundle() interface. LastMI is not exclusive (pointing
to instruction right after the last instruction in the bundle.
- Add a finalizeBundle() variant that doesn't specify LastMI. Instead, the code
will find the last instruction in the bundle by following the 'InsideBundle'
marker. This is useful in case bundles are formed early (i.e. during MI
scheduling) but finalized later (i.e. after register allocator has finished
rewriting virtual registers with physical registers).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148444 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrBundle.cpp
9b159710ebe8a37cba38ca0c5b465e362bd68af7 19-Jan-2012 Evan Cheng <evan.cheng@apple.com> Rename Finalizebundle to finalizeBundle to conform to coding guideline.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148440 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrBundle.cpp
9cf37e8b48732fccd4c301ed51aafed7074bd84e 19-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a RegisterMaskSDNode class.

This SelectionDAG node will be attached to call nodes by LowerCall(),
and eventually becomes a MO_RegisterMask MachineOperand on the
MachineInstr representing the call instruction.

LowerCall() will attach a register mask that depends on the calling
convention.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
bfab85e9b187f8e59c7638c15347319799097ae1 18-Jan-2012 Lang Hames <lhames@gmail.com> Fixed macro condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148408 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
819026f2f8b13ac7f6051727fce54b95868c3d85 18-Jan-2012 Nadav Rotem <nadav.rotem@intel.com> Fix a bug in the type-legalization of vector integers. When we bitcast one vector type to another, we must not bitcast the result if one type is widened while the other is promoted.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
cd7f02bb43ec07e0a2bd6d90177b353c94408586 18-Jan-2012 Pete Cooper <peter_cooper@apple.com> Fix ISD::REG_SEQUENCE to accept physical registers and change TwoAddressInstructionPass to insert copies for any physical reg operands of the REG_SEQUENCE

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148377 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
woAddressInstructionPass.cpp
ba05c91ed28e70505ac854dce976ac14f4c6e602 17-Jan-2012 Nadav Rotem <nadav.rotem@intel.com> Transform: (EXTRACT_VECTOR_ELT( VECTOR_SHUFFLE )) -> EXTRACT_VECTOR_ELT.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148337 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d3b588965daf43d5fd13c7bf6603c9f8017a041c 17-Jan-2012 Craig Topper <craig.topper@gmail.com> Teach DAG combiner to turn a BUILD_VECTOR of UNDEFs into an UNDEF of vector type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148297 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c6cf11b41243967b16211848b50876aab47e86df 17-Jan-2012 Andrew Trick <atrick@apple.com> misched: Inital interface and implementation for ScheduleTopDownLive and ShuffleInstructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148291 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
42b7a71dc7381d1f38bf7b7201fc26dd80453364 17-Jan-2012 Andrew Trick <atrick@apple.com> Renamed MachineScheduler to ScheduleTopDownLive.

Responding to code review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148290 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
achineScheduler.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
c1b1c7b205589c9a081e1cbd33fb56506fc287b3 17-Jan-2012 Andrew Trick <atrick@apple.com> Moving options declarations around.

More short term hackery until we have a way to configure passes that work on LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148289 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
egAllocGreedy.cpp
21506061ef031a01fce5cc1781f30780fbecb59b 17-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Add 148175 back. I am unable to reproduce any non determinism in a dragonegg
or clang bootstrap.

I will keep an eye on the bots.

Original message:
Only emit the Leh_func_endN symbol when needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148283 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
f57e1c29dde4666ea4ec397dde72f991e5b9f854 17-Jan-2012 Pete Cooper <peter_cooper@apple.com> Changed flag operand of ISD::FP_ROUND to TargetConstant as it should not get checked for legalisation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148275 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e02a17c4efb843b8627f3d819c62f88a7f2fb457 17-Jan-2012 Lang Hames <lhames@gmail.com> Fix typo in comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148268 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
2dd674fdce68f8fd59d78a3bbab2cf5b8d220290 17-Jan-2012 David Blaikie <dblaikie@gmail.com> Removing unused default switch cases in switches over enums that already account for all enumeration values explicitly.

(This time I believe I've checked all the -Wreturn-type warnings from GCC & added the couple of llvm_unreachables necessary to silence them. If I've missed any, I'll happily fix them as soon as I know about them)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148262 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
504d1d2fa4103bddcc6e1ad26697029c79b4aeb7 16-Jan-2012 Hal Finkel <hfinkel@anl.gov> AggressiveAntiDepBreaker needs to skip debug values because a debug value does not have a corresponding SUnit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148260 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
c035c940a656f34a58ebe22fcc5f9b2a7d8e97fb 16-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract method for detecting constant unallocatable physregs.

It is safe to move uses of such registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148259 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
achineRegisterInfo.cpp
achineSink.cpp
argetInstrInfoImpl.cpp
63c66724235ace1860e60a11ce2756d577387b29 16-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Give better scavenger errors by invoking the verifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148251 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
7739cad69d2590f556afc9fc3048f967b5a3f4f6 16-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a new kind of MachineOperand: MO_RegisterMask.

Register masks will be used as a compact representation of large clobber
lists. Currently, an x86 call instruction has some 40 operands
representing call-clobbered registers. That's more than 1kB of useless
operands per call site.

A register mask operand references a bit mask of call-preserved
registers, everything else is clobbered. The bit mask will typically
come from TargetRegisterInfo::getCallPreservedMask().

By abandoning ImplicitDefs for call-clobbered registers, it also becomes
possible to share call instruction descriptions between calling
conventions, and we can get rid of the WINCALL* instructions.

This patch introduces the new operand kind. Future patches will add
RegMask support to target-independent passes before finally the fixed
clobber lists can be removed from call instruction descriptions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148250 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
810d6d3354a31f24125abef831e4afccbbbe973d 16-Jan-2012 David Blaikie <dblaikie@gmail.com> Refactor variables unused under non-assert builds (& remove two entirely unused variables).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148230 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
bf42139989695b35cf3e21be2e756bdc8c315ffb 16-Jan-2012 Pete Cooper <peter_cooper@apple.com> Changed intrinsic ID operand to a target constant as its not used in any arithmetic so should not be checked in legalisation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
cc6165695fa1713230184d743368b8b3642faa5d 15-Jan-2012 Nadav Rotem <nadav.rotem@intel.com> [AVX] Optimize x86 VSELECT instructions using SimplifyDemandedBits.
We know that the blend instructions only use the MSB, so if the mask is
sign-extended then we can convert it into a SHL instruction. This is a
common pattern because the type-legalizer sign-extends the i1 type which
is used by the LLVM-IR for the condition.

Added a new optimization in SimplifyDemandedBits for SIGN_EXTEND_INREG -> SHL.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148225 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
ed4c8c633c52a40ad1a3e8687f290be4aeb1f0e8 15-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Return an ArrayRef from ShuffleVectorSDNode::getMask and push it through CodeGen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148218 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ae4746b29a3f418dde0b8e2820019ec07303594e 15-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> DAGCombiner: Deduplicate code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148217 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
799ea5ccc0a1d6b00f45191855056fb07cd641bc 15-Jan-2012 Craig Topper <craig.topper@gmail.com> Truncate of undef is just undef of smaller size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148205 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c464e998e6db00e72c65f9ae10e4a40bf34ceb83 14-Jan-2012 Duncan Sands <baldrick@free.fr> Speculatively revert commit 148175 (rafael), to see if this fixes
non-determinism in the 32 bit dragonegg buildbot. Original commit
message:
Only emit the Leh_func_endN symbol when needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148191 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
da223448043e860d1f997b6a72f35c9d4da7ea29 14-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Only emit the Leh_func_endN symbol when needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148175 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
3c58ba8ea7ec097d69d7f7be5930a4a4d7405a18 14-Jan-2012 Andrew Trick <atrick@apple.com> misched: Initial code for building an MI level scheduling DAG

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148174 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
7ebcaf4cf929ef041ae6c9c07b897e4d0aa8ad06 14-Jan-2012 Andrew Trick <atrick@apple.com> Move physreg dependency generation into aptly named addPhysRegDeps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148173 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
5e920d7c83c20474fc3470209869978628ccf8da 14-Jan-2012 Andrew Trick <atrick@apple.com> misched: Added ScheduleDAGInstrs::IsPostRA

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148172 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
e9ef4ed13ba84ef27da831afa27b7955c8f09530 14-Jan-2012 Andrew Trick <atrick@apple.com> misched: Invoke the DAG builder on each sequence of schedulable instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148171 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
5edf2f03d525600c8c4aa0a2411666e647b8f154 14-Jan-2012 Andrew Trick <atrick@apple.com> Move things around to make the file navigable, even though it will probably be split up later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148170 91177308-0d34-0410-b5e6-96231b3b80d8
achineScheduler.cpp
bfe8afaaec03795fe6c78daa9817e54c186a699d 14-Jan-2012 Evan Cheng <evan.cheng@apple.com> After r147827 and r147902, it's now possible for unallocatable registers to be
live across BBs before register allocation. This miscompiled 197.parser
when a cmp + b are optimized to a cbnz instruction even though the CPSR def
is live-in a successor.
cbnz r6, LBB89_12
...
LBB89_12:
ble LBB89_1

The fix consists of two parts. 1) Teach LiveVariables that some unallocatable
registers might be liveouts so don't mark their last use as kill if they are.
2) ARM constantpool island pass shouldn't form cbz / cbnz if the conditional
branch does not kill CPSR.

rdar://10676853


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148168 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
54f7533e36b7dab074f78790c01b98ba69e0d02d 14-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove previous commit while I debug the bot failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148156 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
cf05d039614879e908e3c31196cef1a7f392495c 13-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove label that is not used anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148150 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
23d1c5ce8ab0ec52dc56073a60dbfb80f2c4c1e6 13-Jan-2012 Andrew Trick <atrick@apple.com> Remove pointless mode line in .cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148143 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.cpp
96f678f2d78ae9a2a8c99ca612bf59c056b36797 13-Jan-2012 Andrew Trick <atrick@apple.com> Added the MachineSchedulerPass skeleton.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148105 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
achineScheduler.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
524ff020f3776d4aa52d94d7c8ee2de7d370de55 13-Jan-2012 Andrew Trick <atrick@apple.com> wrong filename

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148103 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.cpp
07680ec7a1ea86e8280c924e84e0eb2455e2483c 13-Jan-2012 Andrew Trick <atrick@apple.com> 80-col violation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148102 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
c4b527ac06c8e2e7c43020a56f000a53ab1dc9de 13-Jan-2012 Evan Cheng <evan.cheng@apple.com> DAGCombine's logic for forming pre- and post- indexed loads / stores were being
overly conservative. It was concerned about cases where it would prohibit
folding simple [r, c] addressing modes. e.g.
ldr r0, [r2]
ldr r1, [r2, #4]
=>
ldr r0, [r2], #4
ldr r1, [r2]
Change the logic to look for such cases which allows it to form indexed memory
ops more aggressively.

rdar://10674430


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148086 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bf5b13d07ec942c865479448e1b9344fe0c9509f 13-Jan-2012 Bill Wendling <isanbard@gmail.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148065 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
86b1a7d61413aed40a68f98f1e8f17fd79ebd7a2 13-Jan-2012 Bill Wendling <isanbard@gmail.com> Fix the code that was WRONG.

The registers are placed into the saved registers list in the reverse order,
which is why the original loop was written to loop backwards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148064 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d578b905de8f9dece45aab2496a88ac548c67348 12-Jan-2012 Pete Cooper <peter_cooper@apple.com> Added FPOW, FEXP, FLOG to PromoteNode so that custom actions can be set to Promote for those operations.

Sorry, no test case yet


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c16c25fbc3b53da99dcaf27685a6116249f79b30 12-Jan-2012 Evan Cheng <evan.cheng@apple.com> When hoisting common code, watch out for uses which are marked "kill". If the
killed registers are needed below the insertion point, then unset the kill
marker.

Sorry I'm not able to find a reduced test case.

rdar://10660944


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148043 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
f0a95356d649dc0fb65691c4acebee450f3529b4 12-Jan-2012 Evan Cheng <evan.cheng@apple.com> Allow targets to select source order pre-RA scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148033 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b20b518f800293ea6b2bed04134c71293ac52403 12-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make SplitAnalysis::UseSlots private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148031 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.h
9384111e90cb840e7eb867098f19910cf4c4a11d 12-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Make data structures private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147979 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
a8bd9a68f7c00fe1d895bb5e27ff804aa33abd64 11-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Sink spillInterferences into RABasic.

This helper method is too simplistic for RAGreedy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147976 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.cpp
egAllocBase.h
egAllocBasic.cpp
078203f301baaa1fc96e172708f4bf7f9c7dcf82 11-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147975 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
ccc9581e8b79b4216cb1143344bdae9342722d5d 11-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move RegAllocBase into its own cpp file separate from RABasic.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147972 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
egAllocBase.cpp
egAllocBasic.cpp
c8d12eee12bbd0dca3def72d52e410eaf4e61b2d 11-Jan-2012 Nadav Rotem <nadav.rotem@intel.com> On AVX, we can load v8i32 at a time. The bug happens when two uneven loads are used.
When we load the v12i32 type, the GenWidenVectorLoads method generates two loads: v8i32 and v4i32
and attempts to use CONCAT_VECTORS to join them. In this fix I concat undef values to widen
the smaller value. The test "widen_load-2.ll" also exposes this bug on AVX.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
f103b3d1b99db0ae314c36d8b4ae71427816379e 11-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Teach the X86 instruction selection to do some heroic transforms to
detect a pattern which can be implemented with a small 'shl' embedded in
the addressing mode scale. This happens in real code as follows:

unsigned x = my_accelerator_table[input >> 11];

Here we have some lookup table that we look into using the high bits of
'input'. Each entity in the table is 4-bytes, which means this
implicitly gets turned into (once lowered out of a GEP):

*(unsigned*)((char*)my_accelerator_table + ((input >> 11) << 2));

The shift right followed by a shift left is canonicalized to a smaller
shift right and masking off the low bits. That hides the shift right
which x86 has an addressing mode designed to support. We now detect
masks of this form, and produce the longer shift right followed by the
proper addressing mode. In addition to saving a (rather large)
instruction, this also reduces stalls in Intel chips on benchmarks I've
measured.

In order for all of this to work, one part of the DAG needs to be
canonicalized *still further* than it currently is. This involves
removing pointless 'trunc' nodes between a zextload and a zext. Without
that, we end up generating spurious masks and hiding the pattern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147936 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2aad2f6e601328d15033944ea51ad6f66a7f3c0a 11-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Detect when a value is undefined on an edge to a landing pad.

Consider this code:

int h() {
int x;
try {
x = f();
g();
} catch (...) {
return x+1;
}
return x;
}

The variable x is undefined on the first edge to the landing pad, but it
has the f() return value on the second edge to the landing pad.

SplitAnalysis::getLastSplitPoint() would assume that the return value
from f() was live into the landing pad when f() throws, which is of
course impossible.

Detect these cases, and treat them as if the landing pad wasn't there.
This allows spill code to be inserted after the function call to f().

<rdar://problem/10664933>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147912 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
74c4f97a466513e45e66e04469973fdcd5865300 11-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Exclusively use SplitAnalysis::getLastSplitPoint().

Delete the alternative implementation in LiveIntervalAnalysis.

These functions computed the same thing, but SplitAnalysis caches the
result.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147911 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
plitKit.cpp
plitKit.h
f96703e62f2302cfe2465fb0fddaf62259eee62c 11-Jan-2012 Evan Cheng <evan.cheng@apple.com> Avoid CSE of instructions which define physical registers across MBBs unless
the physical registers are not allocatable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147902 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
75fda5dcaebf3daafdbd06f44e89c7683b1be770 10-Jan-2012 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147884 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
732f05c41f177a0bc4d47e93a5d02120f146cb4c 10-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Add 'llvm_unreachable' to passify GCC's understanding of the constraints
of several newly un-defaulted switches. This also helps optimizers
(including LLVM's) recognize that every case is covered, and we should
assume as much.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147861 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
LVMTargetMachine.cpp
achineInstr.cpp
electionDAG/TargetLowering.cpp
piller.cpp
2bd335470f8939782f3df7f6180282d3825d4f09 10-Jan-2012 David Blaikie <dblaikie@gmail.com> Remove unnecessary default cases in switches that cover all enum values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147855 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
LVMTargetMachine.cpp
achineInstr.cpp
coreboardHazardRecognizer.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/TargetLowering.cpp
piller.cpp
6c0366cb2588ae49ef6e2f892db2099d41d85391 10-Jan-2012 Nadav Rotem <nadav.rotem@intel.com> Fix a bug in the legalization of shuffle vectors. When we emulate shuffles using BUILD_VECTORS we may be using a BV of different type. Make sure to cast it back.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147851 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
97b5beb7fe7bb776654b04ae6c18af6ea15c74f7 10-Jan-2012 Evan Cheng <evan.cheng@apple.com> Allow machine-cse to look across MBB boundary when cse'ing instructions that
define physical registers. It's currently very restrictive, only catching
cases where the CE is in an immediate (and only) predecessor. But it catches
a surprising large number of cases.

rdar://10660865


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147827 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
9cce24a257108ec50f65652d233b9ffadc691682 10-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove the logging streamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147820 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
e811d0dd30e8949df5d72bedfaa46dc579dad97e 08-Jan-2012 Evan Cheng <evan.cheng@apple.com> Avoid eraseing copies from a reserved register unless the definition can be
safely proven not to have been clobbered. No small test case possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147751 91177308-0d34-0410-b5e6-96231b3b80d8
achineCopyPropagation.cpp
704e1a0f044614e6d2da236380c890fa5f2d1e03 07-Jan-2012 Craig Topper <craig.topper@gmail.com> Replace some uses of hasNUsesOfValue(0, X) with !hasAnyUseOfValue(X)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147733 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cc274526ef801c23083bb76e335bb5152dddcc58 07-Jan-2012 Craig Topper <craig.topper@gmail.com> Add some DAG combines for SUBC/SUBE. If nothing uses the carry/borrow out of subc, turn it into a sub. Turn (subc x, x) into 0 with no borrow. Turn (subc x, 0) into x with no borrow. Turn (subc -1, x) into (xor x, -1) with no borrow. Turn sube with no borrow in into subc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147728 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
34786a3ad760b9901912f70a8a17fd85e0643f21 07-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Optimize reserved register coalescing.

Reserved registers don't have proper live ranges, their LiveInterval
simply has a snippet of liveness for each def. Virtual registers with a
single value that is a copy of a reserved register (typically %esp) can
be coalesced with the reserved register if the live range doesn't
overlap any reserved register defs.

When coalescing with a reserved register, don't modify the reserved
register live range. Just leave it as a bunch of dead defs. This
eliminates quadratic coalescer behavior in i386 functions with many
function calls.

PR11699

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147726 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
4281e20aab7f1fe1b35b31c9237ad89c20937e02 07-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the 'regalloc' debug tag for most register allocator tracing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147725 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egisterCoalescer.cpp
irtRegMap.cpp
70017fb01bba634649f7f3b1dee33c6cda0721d0 07-Jan-2012 Evan Cheng <evan.cheng@apple.com> Revert part of r147716. Looks like x87 instructions kill markers are all messed
up so branch folding pass can't use the scavenger. :-( This doesn't breaks
anything currently. It just means targets which do not carefully update kill
markers cannot run post-ra scheduler (not new, it has always been the case).

We should fix this at some point since it's really hacky.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147719 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
977679d6034791fd48a344e5b990503ba50fc242 07-Jan-2012 Evan Cheng <evan.cheng@apple.com> Added a late machine instruction copy propagation pass. This catches
opportunities that only present themselves after late optimizations
such as tail duplication .e.g.
## BB#1:
movl %eax, %ecx
movl %ecx, %eax
ret

The register allocator also leaves some of them around (due to false
dep between copies from phi-elimination, etc.)

This required some changes in codegen passes. Post-ra scheduler and the
pseudo-instruction expansion passes have been moved after branch folding
and tail merging. They were before branch folding before because it did
not always update block livein's. That's fixed now. The pass change makes
independently since we want to properly schedule instructions after
branch folding / tail duplication.

rdar://10428165
rdar://10640363



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147716 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ranchFolding.cpp
MakeLists.txt
riticalAntiDepBreaker.cpp
LVMTargetMachine.cpp
achineCopyPropagation.cpp
egisterScavenging.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
9c7b3da04ab39646e6d6687c309153410dafb916 07-Jan-2012 Andrew Trick <atrick@apple.com> Missing raw_ostream.h breaks MSVC build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147703 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
4bf76e0e28c2cc358e1106b64cad2fa59714df53 07-Jan-2012 Chad Rosier <mcrosier@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e016789b7380b2a452f81ce15c2e382e62ede120 07-Jan-2012 Eric Christopher <echristo@apple.com> Add a comment and ensure that anyone else looking at this code doesn't start
to bleed from the eyes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147695 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
fa03db0d2d896a689ac58cb63ec9e1b10af72868 07-Jan-2012 Eric Christopher <echristo@apple.com> Use const vector references instead of a vector copy. Spotted by Devang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147694 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
547abbb40bc9d986446fa493b0caae5ed1f346f2 07-Jan-2012 Eric Christopher <echristo@apple.com> Use -> instead of (*iter).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147693 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
b937b76045d4442165009c8e6276c7c8df9efa78 06-Jan-2012 Andrew Trick <atrick@apple.com> Tracing to help investigate issues with SjLj spill code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147682 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
7eabae3f50d43af1b76f2bcc5ac6c47700d12b8b 06-Jan-2012 Eric Christopher <echristo@apple.com> Fix a leak I noticed while reviewing the accelerator table changes. Passes
lldb testsuite.

rdar://10652330

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147673 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
c36145f19c1e164f7d630b813e9970600d8f2976 06-Jan-2012 Eric Christopher <echristo@apple.com> As part of the ongoing work in finalizing the accelerator tables, extend
the debug type accelerator tables to contain the tag and a flag
stating whether or not a compound type is a complete type.

rdar://10652330

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147651 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
1031111f84a1e3377417b607ca45d5ec61e4e3c7 05-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Kill ObjectCodeEmitter and BinaryObject, they were unused and superseded by MC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147618 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
bjectCodeEmitter.cpp
611caf5f91c4abe934480259043fcbb30ea07e3a 05-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove the old ELF writer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147615 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
LF.h
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
fcb0a278951d5e6bd878e183f2f1e9b3abf2e200 05-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Remove an unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147605 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
62dfc511524b28a9411f62e19d48120066c1e41b 05-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Prevent a DAGCombine from firing where there are two uses of
a combined-away node and the result of the combine isn't substantially
smaller than the input, it's just canonicalized. This is the first part
of a significant (7%) performance gain for Snappy's hot decompression
loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
877ae2ee17cb89c57310c65fb4046e49020a0b55 05-Jan-2012 Andrew Trick <atrick@apple.com> Minor postra scheduler cleanup. It could result in more precise antidependence latency on ARM in exceedingly rare cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147594 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
d9e5c764bfea339fc5082bf17e558db959fd6d28 05-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Freeze reserved registers before starting register allocation.

The register allocators don't currently support adding reserved
registers while they are running. Extend the MRI API to keep track of
the set of reserved registers when register allocation started.

Target hooks like hasFP() and needsStackRealignment() can look at this
set to avoid reserving more registers during register allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147577 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
egAllocBasic.cpp
egAllocFast.cpp
egAllocPBQP.cpp
515783466c24f9c5a9e6d9c7eb5ee7e4ab256358 04-Jan-2012 Craig Topper <craig.topper@gmail.com> Allow vector shuffle normalizing to use concat vector even if the sources are commuted in the shuffle mask.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147527 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
481b79c95003a3a72b315dbda966779392ee0c19 04-Jan-2012 Craig Topper <craig.topper@gmail.com> Implement VECTOR_SHUFFLE canonicalizations during DAG combine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147525 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fcd70900630abd4a29d0b3fa9db6169159ddfb3c 04-Jan-2012 Chris Lattner <sabre@nondot.org> Turn a few more inline asm errors into "emitErrors" instead of fatal errors.

Before we'd get:

$ clang t.c
fatal error: error in backend: Invalid operand for inline asm constraint 'i'!

Now we get:

$ clang t.c
t.c:16:5: error: invalid operand for inline asm constraint 'i'!
"movq (%4), %%mm0\n"
^

Which at least gets us the inline asm that is the problem.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147502 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
2d44e02533cdc2ae011121ef651dda93769ced2b 03-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Assert when reserved registers have been assigned.

This can only happen if the set of reserved registers changes during
register allocation.

<rdar://problem/10625436>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147486 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
316477dd543b5ae30b832ed4c7708f7aaa51747c 03-Jan-2012 Nadav Rotem <nadav.rotem@intel.com> Fix incorrect widening of the bitcast sdnode in case the incoming operand is integer-promoted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
517c4d7fdac82151f6f009ec5ba62f8727658678 03-Jan-2012 Owen Anderson <resistor@mac.com> Remove the restriction that target intrinsics can only involve legal types. Targets can perfects well support intrinsics on illegal types, as long as they are prepared to perform custom expansion during type legalization. For example, a target where i64 is illegal might still support the i64 intrinsic operation using pairs of i32's. ARM already does some expansions like this for non-intrinsic operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147472 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
567cdbab28077ea1801ebff3d4291d4006d88ca3 03-Jan-2012 Lang Hames <lhames@gmail.com> Clarified assert text.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147471 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5eb2e957b36ee1b9f1965e4acacca61a93e8aace 03-Jan-2012 Nick Lewycky <nicholas@mxc.ca> Fix typo in ruler. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147454 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
ce58a03587ca46d9c9fe48e2bf433bcd57bb2b3a 03-Jan-2012 Elena Demikhovsky <elena.demikhovsky@intel.com> Fixed a bug in SelectionDAG.cpp.
The failure seen on win32, when i64 type is illegal.
It happens on stage of conversion VECTOR_SHUFFLE to BUILD_VECTOR.

The failure message is:
llc: SelectionDAG.cpp:784: void VerifyNodeCommon(llvm::SDNode*): Assertion `(I->getValueType() == EltVT || (EltVT.isInteger() && I->getValueType().isInteger() && EltVT.bitsLE(I->getValueType()))) && "Wrong operand type!"' failed.

I added a special test that checks vector shuffle on win32.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147445 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
acae2a63b9ba943d37914813c601eb5fa9d84c22 01-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Revert 147399. It broke CodeGen/ARM/vext.ll.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147400 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ac12855066ce2cfee11e68dcf0c15936f0730e6b 01-Jan-2012 Elena Demikhovsky <elena.demikhovsky@intel.com> Fixed a bug in SelectionDAG.cpp.
The failure seen on win32, when i64 type is illegal.
It happens on stage of conversion VECTOR_SHUFFLE to BUILD_VECTOR.

The failure message is:
llc: SelectionDAG.cpp:784: void VerifyNodeCommon(llvm::SDNode*): Assertion `(I->getValueType() == EltVT || (EltVT.isInteger() && I->getValueType().isInteger() && EltVT.bitsLE(I->getValueType()))) && "Wrong operand type!"' failed.

I added a special test that checks vector shuffle on win32.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6059b836959f4c1f1da651779d03d0de37f74a8f 28-Dec-2011 Nadav Rotem <nadav.rotem@intel.com> PR11662.

Promotion of the mask operand needs to be done using PromoteTargetBoolean, and not padded with garbage.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147309 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
d6e2560e7aea0e6c6bca950966252552f1caec63 26-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Make sure DAGCombiner doesn't introduce multiple loads from the same memory location. PR10747, part 2.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147283 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fbb6f593c264551a5d585a6c97ff03420b142ea3 25-Dec-2011 Nadav Rotem <nadav.rotem@intel.com> Fix a typo in the widening of vectors in PromoteIntRes. Patch by Shemer Anat.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147272 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
9421406aada374f79ce2f8e576824463f7830981 23-Dec-2011 Dylan Noblesmith <nobled@dreamwidth.org> drop unneeded config.h includes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147197 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGPrinter.cpp
3cfecf5cc2279cbbcdd497f2898161e40e690c86 22-Dec-2011 Pete Cooper <peter_cooper@apple.com> Hoisted some loop invariant smallvector lookups out of a MachineLICM loop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147127 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
acde91e2735cf2841a306a7c7af7af8c31f34a4a 22-Dec-2011 Pete Cooper <peter_cooper@apple.com> Changed MachineLICM to use a worklist list MachineCSE instead of recursion.

Fixes <rdar://problem/10584116>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147125 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
d4895ded27179c47ef7327e3322b6a11a905eb9f 22-Dec-2011 Jakub Staszak <kubastaszak@gmail.com> Revert patch from 147090. There is not point to make code less readable if we
don't get any serious benefit there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147101 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
73db975498bc0e117a0854ab2e0cecad51ad17bf 21-Dec-2011 Jakub Staszak <kubastaszak@gmail.com> - Change a few operator[] to lookup which is cheaper.
- Add some constantness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147090 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
b638c789be6db2a42f5c6f4de5263021da1942a3 21-Dec-2011 Lang Hames <lhames@gmail.com> Oops - LiveIntervalUnion.cpp file does use std::find. Moving STL header include to LiveIntervalUnion.cpp file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147089 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
bac22fac7d46aa496248ae9659e34f21718b6b42 21-Dec-2011 Lang Hames <lhames@gmail.com> Remove disused STL header include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147088 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
a2a98fd0ddd2ae277be7cdd62aae92f6c5155e07 21-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move common code into an MRI function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147071 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
rologEpilogInserter.cpp
aa13482784d100a8f4aef20f5b647192754a1a1d 20-Dec-2011 Lang Hames <lhames@gmail.com> Fix assert condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146987 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeCalc.cpp
25101bb2a799a36be9f077ee2fc2dcf0df2b6efb 20-Dec-2011 Jakub Staszak <kubastaszak@gmail.com> Add some constantness to BranchProbabilityInfo and BlockFrequnencyInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146986 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineBlockFrequencyInfo.cpp
achineBranchProbabilityInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
cfb75fba735edd44841eb21c72c3a9736a7d9af2 20-Dec-2011 Chandler Carruth <chandlerc@gmail.com> Fix up the CMake build for the new files added in r146960, they're
likely to stay either way that discussion ends up resolving itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146966 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
2d24e2a396a1d211baaeedf32148a3b657240170 20-Dec-2011 David Blaikie <dblaikie@gmail.com> Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146960 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
ITCodeEmitter.cpp
exicalScopes.cpp
iveRangeEdit.cpp
iveRangeEdit.h
achineBranchProbabilityInfo.cpp
achineCodeEmitter.cpp
achineFunction.cpp
achinePassRegistry.cpp
cheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
piller.cpp
piller.h
e3376ecd504300ae529c902135f51baffbdc2824 20-Dec-2011 Dan Gohman <gohman@apple.com> Add basic generic CodeGen support for half.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146927 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/TargetLowering.cpp
8787c5f24e175a36f645784d533384f9f7cd86fc 19-Dec-2011 Evan Cheng <evan.cheng@apple.com> Add a if-conversion optimization that allows 'true' side of a diamond to be
unpredicated. That is, turn
subeq r0, r1, #1
addne r0, r1, #1
into
sub r0, r1, #1
addne r0, r1, #1

For targets where conditional instructions are always executed, this may be
beneficial. It may remove pseudo anti-dependency in out-of-order execution
CPUs. e.g.
op r1, ...
str r1, [r10] ; end-of-life of r1 as div result
cmp r0, #65
movne r1, #44 ; raw dependency on previous r1
moveq r1, #12

If movne is unpredicated, then
op r1, ...
str r1, [r10]
cmp r0, #65
mov r1, #44 ; r1 written unconditionally
moveq r1, #12

Both mov and moveq are no longer depdendent on the first instruction. This gives
the out-of-order execution engine more freedom to reorder them.

This has passed entire LLVM test suite. But it has not been enabled for any ARM
variant pending more performance evaluation.

rdar://8951196


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146914 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
1e2ec6abd4e150ac87d6cde3133fa9895f63c74c 19-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Attempt to fix PR11607 by shuffling around which class defines which methods.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146897 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
0488d6ee5deed63cc46efb5931d5761ab6f9c64c 19-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle sub-register operands in recomputeRegClass().

Now that getMatchingSuperRegClass() returns accurate results, it can be
used to compute constraints imposed by instructions using a sub-register
of a virtual register.

This means we can recompute the register class of any virtual register
by combining the constraints from all its uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146874 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
34706936412b9e9ff73511fed58e97bf6e100e69 18-Dec-2011 Joerg Sonnenberger <joerg@bec.de> Allow inlining of functions with returns_twice calls, if they have the
attribute themselve.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146851 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
tackSlotColoring.cpp
8f7d12ccfd8feb258bdf4e582592bc00beacc7c6 17-Dec-2011 Rafael Espindola <rafael.espindola@gmail.com> Add back the MC bits of 126425. Original patch by Nathan Jeffords. I added the
asm parsing and testcase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146801 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
1a8e8869cafa16d94afcb6f73bc3e0f2f72f70f1 17-Dec-2011 Eric Christopher <echristo@apple.com> Resolve part of a fixme and add a new one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146784 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
44625f91c57638d178fcb464681ae5a293a1f100 17-Dec-2011 Eric Christopher <echristo@apple.com> Add a fixme here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146783 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
abbb200feb492cb1951d089eb8d9e596db38c38c 17-Dec-2011 Eric Christopher <echristo@apple.com> Extraneous whitespace and 80-col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146780 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
34da4702daf3f3bc3c4ad163e56d75ac3ee0c4f4 16-Dec-2011 Logan Chien <loganchien@google.com> Apply changes to migrate to llvm upstream r146714.

Change-Id: I422992072f519c9352fe4d527719422134297b41
ndroid.mk
a1e6e241a813f81be2d2f36ab60c950ca297574b 16-Dec-2011 Logan Chien <loganchien@google.com> Merge with LLVM upstream r146714 (Dec 16th 2011)

Change-Id: Ied458adb08bf9a69250cbcee9b14b44d17e8701a
028700f544deeea423ce9b516e190e4e970e3c6c 15-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Move parts of lib/Target that use CodeGen into lib/CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146702 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
argetFrameLoweringImpl.cpp
argetInstrInfoImpl.cpp
argetOptionsImpl.cpp
0508d047fefef36d4f943ee13c82c18cf3a943ab 15-Dec-2011 Devang Patel <dpatel@apple.com> Update DebugLoc while merging nodes at -O0.

Patch by Kyriakos Georgiou!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146670 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
ca072a39778933df4264ae393bd0ca797db59df6 15-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Don't try to form FGETSIGN after legalization; it is possible in some cases, but the existing code can't do it correctly. PR11570.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
4e0adfa7f7fa5617a7a06028cdad0e4a50cac22a 15-Dec-2011 Owen Anderson <resistor@mac.com> Enable synthesis of FLOG2 and FEXP2 SelectionDAG nodes from libm calls. These are already marked as illegal by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146623 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f0426601977c3e386d2d26c72a2cca691dc42072 15-Dec-2011 Dan Gohman <gohman@apple.com> Move Instruction::isSafeToSpeculativelyExecute out of VMCore and
into Analysis as a standalone function, since there's no need for
it to be in VMCore. Also, update it to use isKnownNonZero and
other goodies available in Analysis, making it more precise,
enabling more aggressive optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146610 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
5211134fbd35bf0befc60888860010b23c27ee5a 15-Dec-2011 Devang Patel <dpatel@apple.com> Do not sink instruction, if it is not profitable.

On ARM, peephole optimization for ABS creates a trivial cfg triangle which tempts machine sink to sink instructions in code which is really straight line code. Sometimes this sinking may alter register allocator input such that use and def of a reg is divided by a branch in between, which may result in extra spills. Now mahine sink avoids sinking if final sink destination is post dominator.

Radar 10266272.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146604 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
69fdcd7f902256d6deec8f085f5bb12bd39f762e 14-Dec-2011 Bill Wendling <isanbard@gmail.com> Reapply r146481 with a fix to create the Builder value in the correct place and
with the correct iterator.
<rdar://problem/10530851>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146600 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
020f4106f820648fd7e91956859844a80de13974 14-Dec-2011 Evan Cheng <evan.cheng@apple.com> Model ARM predicated write as read-mod-write. e.g.
r0 = mov #0
r0 = moveq #1

Then the second instruction has an implicit data dependency on the first
instruction. Sadly I have yet to come up with a small test case that
demonstrate the post-ra scheduler taking advantage of this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146583 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
d2cda5ce516ed85be66dfab06ed67cdae01e6500 14-Dec-2011 NAKAMURA Takumi <geek4civic@gmail.com> llvm/lib/CodeGen: Fix cmake build since r146542.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146550 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
e08db65c48854748612ba69ee1e50e8d1b2cf43d 14-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Add missing cases to SDNode::getOperationName(). Patch by Micah Villmow.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
12dfdb424ddcfabb347f168f9332795ba443ccd3 14-Dec-2011 Evan Cheng <evan.cheng@apple.com> Allow target to specify register output dependency. Still default to one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146547 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
dbdc616ed5eb1c92d75465333b0d96b0185f8c8f 14-Dec-2011 Bill Wendling <isanbard@gmail.com> Revert r146481 to review possible miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146546 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
ddfd1377d2e4154d44dc3ad217735adc15af2e3f 14-Dec-2011 Evan Cheng <evan.cheng@apple.com> - Add MachineInstrBundle.h and MachineInstrBundle.cpp. This includes a function
to finalize MI bundles (i.e. add BUNDLE instruction and computing register def
and use lists of the BUNDLE instruction) and a pass to unpack bundles.
- Teach more of MachineBasic and MachineInstr methods to be bundle aware.
- Switch Thumb2 IT block to MI bundles and delete the hazard recognizer hack to
prevent IT blocks from being broken apart.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146542 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineInstrBundle.cpp
achineVerifier.cpp
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
argetInstrInfoImpl.cpp
798313d6c1f48634f0964d82c6b31364058a280f 14-Dec-2011 Nick Lewycky <nicholas@mxc.ca> DW_AT_virtuality is also defined to be constant, not flag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146534 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
5bd83345c7ba2c15a062495a0267d1dc1d478aac 13-Dec-2011 Chad Rosier <mcrosier@apple.com> [fast-isel] Remove SelectInsertValue() as fast-isel wasn't designed to handle
instructions that define aggregate types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146492 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
4762f7525162ddcd3a527677ed8a2d53856f21d9 13-Dec-2011 Bill Wendling <isanbard@gmail.com> Avoid using the 'insertvalue' instruction here.

Fast ISel isn't able to handle 'insertvalue' and it causes a large slowdown
during -O0 compilation. We don't necessarily need to generate an aggregate of
the values here if they're just going to be extracted directly afterwards.
<rdar://problem/10530851>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146481 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
13aaca5edf538f967c16b8bdbfe293e2f9d75fc1 13-Dec-2011 Nick Lewycky <nicholas@mxc.ca> DW_AT_accessibility is "constant" class, not form class, so it may not use
DW_FORM_flag. Use DW_FORM_data1 for one byte.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146475 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
63974b2144c87c962effdc0508c27643c8ad98b6 13-Dec-2011 Chandler Carruth <chandlerc@gmail.com> Initial CodeGen support for CTTZ/CTLZ where a zero input produces an
undefined result. This adds new ISD nodes for the new semantics,
selecting them when the LLVM intrinsic indicates that the undef behavior
is desired. The new nodes expand trivially to the old nodes, so targets
don't actually need to do anything to support these new nodes besides
indicating that they should be expanded. I've done this for all the
operand types that I could figure out for all the targets. Owners of
various targets, please review and let me know if any of these are
incorrect.

Note that the expand behavior is *conservatively correct*, and exactly
matches LLVM's current behavior with these operations. Ideally this
patch will not change behavior in any way. For example the regtest suite
finds the exact same instruction sequences coming out of the code
generator. That's why there are no new tests here -- all of this is
being exercised by the existing test suite.

Thanks to Duncan Sands for reviewing the various bits of this patch and
helping me get the wrinkles ironed out with expanding for each target.
Also thanks to Chris for clarifying through all the discussions that
this is indeed the approach he was looking for. That said, there are
likely still rough spots. Further review much appreciated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146466 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
f2a745efe50dfd57f0e83e5f3ed964611cba6077 13-Dec-2011 Chad Rosier <mcrosier@apple.com> [fast-isel] Guard "exhastive" fast-isel output with -fast-isel-verbose2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146453 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b0c594fd422417e1e290da166b566c7bee74644b 12-Dec-2011 Daniel Dunbar <daniel@zuster.org> LLVMBuild: Introduce a common section which currently has a list of the
subdirectories to traverse into.
- Originally I wanted to avoid this and just autoscan, but this has one key
flaw in that new subdirectories can not automatically trigger a rerun of the
llvm-build tool. This is particularly a pain when switching back and forth
between trees where one has added a subdirectory, as the dependencies will
tend to be wrong. This will also eliminates FIXME implicitly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146436 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
4777ebb767d1b590c05d502c4a7f6adef4e6d5d1 12-Dec-2011 Pete Cooper <peter_cooper@apple.com> Fixed register allocator splitting a live range on a spilling variable.

If we create new intervals for a variable that is being spilled, then those new intervals are not guaranteed to also spill. This means that anything reading from the original spilling value might not get the correct value if spills were missed.

Fixes <rdar://problem/10546864>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146428 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
4ab406d7fc06b1272d02cd8be46f0c5ebe51a3da 12-Dec-2011 Daniel Dunbar <daniel@zuster.org> LLVMBuild: Remove trailing newline, which irked me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146409 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/LLVMBuild.txt
LVMBuild.txt
electionDAG/LLVMBuild.txt
4552d3e22abbb4e6a9078b5ff9e7c59e44e29fca 10-Dec-2011 Chad Rosier <mcrosier@apple.com> [fast-isel] SelectInsertValue seems to be causing miscompiles for ARM. Disable while I investigate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146331 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
b435aa2c1de2ff28e51b1ce881e9f10f8b51d8e3 10-Dec-2011 Chad Rosier <mcrosier@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146327 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
cd462d055ffc18a526a9a1d343261d8550e99280 09-Dec-2011 Chad Rosier <mcrosier@apple.com> [fast-isel] Add support for selecting insertvalue.
rdar://10530851

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146276 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
32f9763017f4329a0da75648655d63c9d7b91130 09-Dec-2011 Evan Cheng <evan.cheng@apple.com> Move isUnpredicatedTerminator() default implementation to TargetInstrInfoImpl to break Target's dependency on CodeGen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146247 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
f5b9a74f0a13afe3b7a8388be81e4062b63e4c30 09-Dec-2011 Devang Patel <dpatel@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146226 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
2b1d77355bdeb9b7515b16bdd049c39ed78fca4b 09-Dec-2011 Devang Patel <dpatel@apple.com> Update stale comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146220 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
2dd0353fec61b412e521013049d6a03de29aa8c7 09-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Fix a couple of logic bugs in TargetLowering::SimplifyDemandedBits. PR11514.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146219 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7f7f0902a640c26e9ce70b5869fc7de3b8b27918 09-Dec-2011 Devang Patel <dpatel@apple.com> Revert r146184. I am seeing performance regression cause by this patch in one test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146205 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
243eb9ecbbc6775e346e94025bd255bbceac9fca 08-Dec-2011 Owen Anderson <resistor@mac.com> Enhance both TargetLibraryInfo and SelectionDAGBuilder so that the latter can use the former to prevent the formation of libm SDNode's when -fno-builtin is passed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146193 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
e265bcf1a609c81c197971cd392e98a12d97162d 08-Dec-2011 Devang Patel <dpatel@apple.com> Refactor. No intentional functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146187 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
73e08d3507d9ca22d89886a7d7e1e4e9278bee98 08-Dec-2011 Chad Rosier <mcrosier@apple.com> Add rather verbose stats for fast-isel failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146186 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cf405ba7a6e9448b753d9b72940059530c70ea90 08-Dec-2011 Devang Patel <dpatel@apple.com> Filter "sink to" candidate blocks sooner. This avoids unnecessary computation to determine whether the block dominates all uses or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146184 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
4a4fdf3476473021f62d5b02e8ee8802f5b25e5a 08-Dec-2011 Owen Anderson <resistor@mac.com> Teach SelectionDAG to match more calls to libm functions onto existing SDNodes. Mark these nodes as illegal by default, unless the target declares otherwise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
43d5d4ca1c93529c43e78cc5aa03c4ee10a6b0d8 08-Dec-2011 Evan Cheng <evan.cheng@apple.com> Make MachineInstr instruction property queries more flexible. This change all
clients to decide whether to look inside bundled instructions and whether
the query should return true if any / all bundled instructions have the
queried property.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146168 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
44bac7cd659090f15face5171e3c346983aeb521 08-Dec-2011 Nadav Rotem <nadav.rotem@intel.com> Fix a bug in the integer-promotion of bitcast operations on vector types.
We must not issue a bitcast operation for integer-promotion of vector types, because the
location of the values in the vector may be different.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
8f391d9330e1a4ed66e72ceac28ed70814f05623 08-Dec-2011 Pete Cooper <peter_cooper@apple.com> Reverting r145899 as it breaks clang self-hosting

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146136 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
0e6307f6423a7ee39b80f8dc3caef00ad11e0266 07-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Make sure we correctly set LiveRegGens when a call is unscheduled. <rdar://problem/10460321>. No testcase because this is very sensitive to scheduling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146087 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
30c44e18bf28c3f5feda56e97695e2b72de7fedb 07-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Fix an assertion in the scheduler. PR11386. No testcase included because it's rather delicate.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146083 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
e77ae2d692a25034da908151761c0f6b7e071779 07-Dec-2011 Nick Lewycky <nicholas@mxc.ca> These global variables aren't thread-safe, STATISTIC is. Andy Trick tells me
that he isn't using these any more, so just delete them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146076 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
feb468ab24a9e85b4d27faa6badfb57a2414610c 07-Dec-2011 Jakub Staszak <kubastaszak@gmail.com> Remove unneeded semicolon.
Skip two looking up at BlockChain.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146053 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
5a96b3dad2f634c9081c8b2b6c2575441dc5a2bd 07-Dec-2011 Evan Cheng <evan.cheng@apple.com> Add bundle aware API for querying instruction properties and switch the code
generator to it. For non-bundle instructions, these behave exactly the same
as the MC layer API.

For properties like mayLoad / mayStore, look into the bundle and if any of the
bundled instructions has the property it would return true.
For properties like isPredicable, only return true if *all* of the bundled
instructions have the property.
For properties like canFoldAsLoad, isCompare, conservatively return false for
bundles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146026 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
ranchFolding.cpp
riticalAntiDepBreaker.cpp
eadMachineInstructionElim.cpp
xecutionDepsFix.cpp
xpandISelPseudos.cpp
xpandPostRAPseudos.cpp
CStrategy.cpp
fConversion.cpp
nlineSpiller.cpp
iveDebugVariables.cpp
iveIntervalAnalysis.cpp
iveRangeEdit.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineCSE.cpp
achineInstr.cpp
achineLICM.cpp
achineSink.cpp
achineVerifier.cpp
eepholeOptimizer.cpp
ostRASchedulerList.cpp
rologEpilogInserter.cpp
egAllocFast.cpp
egisterCoalescer.cpp
cheduleDAGInstrs.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGISel.cpp
hrinkWrapping.cpp
plitKit.cpp
ailDuplication.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
1c663fee566546fc5622ffb4f169438bbd495fbf 07-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Zap unnecessary isIntDivCheap() check. PR11485. No testcase because this doesn't affect any in-tree target.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146015 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
04003451986868d201a2893c2ff2eaa0fb869aee 07-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add missing check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146004 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f91abd22be9c98abcba50952cfcd39d5264417b6 07-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Support vector bitcasts in the AsmPrinter. PR11495.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146001 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2068215e8515203ab4839ee494cdc53dfd0cdf02 07-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineOperand IsInternalRead flag.

This flag is used when bundling machine instructions. It indicates
whether the operand reads a value defined inside or outside its bundle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145997 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
26323442d5b8373391d9899159974c1f38f6f4d5 07-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Fix an optimization involving EXTRACT_SUBVECTOR in DAGCombine so it behaves correctly. PR11494.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145996 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c9040b3b1308bf84a26522040ba9b4d2fff59634 07-Dec-2011 Jakub Staszak <jstaszak@apple.com> Remove unneeded type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145995 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
e6d81ad6a572f2492885f36fc5571225e963d39d 07-Dec-2011 Jakub Staszak <jstaszak@apple.com> - Remove unneeded #includes.
- Remove unused types/fields.
- Add some constantness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145993 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
7c2a4a30e0e16762c75adacebd05ec9fcbccf16b 06-Dec-2011 Evan Cheng <evan.cheng@apple.com> First chunk of MachineInstr bundle support.
1. Added opcode BUNDLE
2. Taught MachineInstr class to deal with bundled MIs
3. Changed MachineBasicBlock iterator to skip over bundled MIs; added an iterator to walk all the MIs
4. Taught MachineBasicBlock methods about bundled MIs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145975 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineLICM.cpp
HIElimination.cpp
egisterCoalescer.cpp
cheduleDAGInstrs.cpp
electionDAG/SelectionDAGISel.cpp
ailDuplication.cpp
f2e944523c18c20192f675901d64c69d9602ff47 06-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Pretty-print basic block alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145965 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
464f3a332f81364ee09794f9502f0b25671149c6 06-Dec-2011 Sebastian Pop <spop@codeaurora.org> use space star instead of star space

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145944 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
f6f77e90a18142e196cbc2a6ee87cdf7461b17df 06-Dec-2011 Sebastian Pop <spop@codeaurora.org> add missing point at the end of sentences

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145943 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
89dae971b18a86c7191f85bee8afcf385af5ce92 06-Dec-2011 Evan Cheng <evan.cheng@apple.com> Mix some minor misuse of MachineBasicBlock iterator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145903 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
d3743fc092c5b547552857abd45e1863eecb0377 06-Dec-2011 Pete Cooper <peter_cooper@apple.com> Removed isWinToJoinCrossClass from the register coalescer.

The new register allocator is much more able to split back up ranges too constrained by register classes.

Fixes <rdar://problem/10466609>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145899 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
bae56b4c216ac8b4573fb90e7d1a63acace6f53d 06-Dec-2011 Lang Hames <lhames@gmail.com> Kill off the LoopSplitter. It's not being used or maintained.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145897 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
egAllocPBQP.cpp
plitter.cpp
plitter.h
9ad7e07a0fb565a8935ceaa2d266bd6e505203af 06-Dec-2011 Lang Hames <lhames@gmail.com> Update PBQP's analysis usage to reflect the requirements of the inline spiller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145893 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
8c741b8064f1116d8d8dc435b60b75abdf5c4d57 06-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use logarithmic units for basic block alignment.

This was actually a bit of a mess. TLI.setPrefLoopAlignment was clearly
documented as taking log2(bytes) units, but the x86 target would still
set a preferred loop alignment of '16'.

CodePlacementOpt passed this number on to the basic block, and
AsmPrinter interpreted it as bytes.

Now both MachineFunction and MachineBasicBlock use logarithmic
alignments.

Obviously, MachineConstantPool still measures alignments in bytes, so we
can emulate the thrill of using as.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145889 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1608769abeb1430dc34f31ffac0d9850f99ae36a 05-Dec-2011 Nadav Rotem <nadav.rotem@intel.com> Add support for vectors of pointers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145801 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
309bedd7bc37554cdb41c76737284150dc842a4a 04-Dec-2011 Eric Christopher <echristo@apple.com> Add inline subprogram names to the name lookup table since they may
not get there any other way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145789 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0cb2a45cceaefb48ec7efb902c453aaae4e24cb2 04-Dec-2011 Anton Korobeynikov <asl@math.spbu.ru> Emit the ctors in the proper order on ARM/EABI.
Maybe some targets should use this as well.

Patch by Evgeniy Stepanov!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145781 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a86bfc1071f7e05631e0af81e2c6249f552c9ec5 03-Dec-2011 Benjamin Kramer <benny.kra@googlemail.com> Simplify code. No functionality change.

-3% on ARMDissasembler.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145773 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
8a8d479214745c82ef00f08d4e4f1c173b5f9ce2 02-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Move global variables in TargetMachine into new TargetOptions class. As an API
change, now you need a TargetOptions object to create a TargetMachine. Clang
patch to follow.

One small functionality change in PTX. PTX had commented out the machine
verifier parts in their copy of printAndVerify. That now calls the version in
LLVMTargetMachine. Users of PTX who need verification disabled should rely on
not passing the command-line flag to enable it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145714 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
smPrinter/DwarfDebug.cpp
LVMTargetMachine.cpp
rologEpilogInserter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
db809e0eb7055a5247c80500fe0ba0ac22199722 02-Dec-2011 Hal Finkel <hfinkel@anl.gov> make sure ScheduleDAGInstrs::EmitSchedule does not crash when the first instruction in Sequence is a Noop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145677 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
fe0926d7738ec9b1f85b12b8507d5d5bbdfbd32b 01-Dec-2011 Dylan Noblesmith <nobled@dreamwidth.org> CodeGen: fix CMake build

Missing file from r145629.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145634 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
dc81e5da271ed394e2029c83458773c4ae2fc5f4 01-Dec-2011 Anshuman Dasgupta <adasgupt@codeaurora.org> Add a deterministic finite automaton based packetizer for VLIW architectures


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145629 91177308-0d34-0410-b5e6-96231b3b80d8
FAPacketizer.cpp
ae6f2cb1fc520aa56777dab1e7603aee9429f6dd 29-Nov-2011 Chad Rosier <mcrosier@apple.com> If fast-isel fails, remove dead instructions generated during the failed
attempt.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145425 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d782bae970e888572f0458ac05369bbd7752f05a 29-Nov-2011 Daniel Dunbar <daniel@zuster.org> build/CMake: Finish removal of add_llvm_library_dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145420 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
electionDAG/CMakeLists.txt
d7c2494b3cba8dce914a7d16cfca11ffcd223d4e 29-Nov-2011 Bill Wendling <isanbard@gmail.com> On MachO, the pointer to the personality function should always be in the
non_lazy_symbol_pointers section (__IMPORT,__pointers). Ignore the 'hidden' part
since that will place it in the wrong section.
<rdar://problem/10443720>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145356 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
c4c2a024857ca92687728f573a3017091a79eaf4 28-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Make SelectionDAG::InferPtrAlignment use llvm::ComputeMaskedBits instead of duplicating the logic for globals. Make llvm::ComputeMaskedBits handle GlobalVariables slightly more aggressively, to match what InferPtrAlignment knew how to do.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145304 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ed1c0c7f5817be939872b462be984534bd48bb9b 28-Nov-2011 Evan Cheng <evan.cheng@apple.com> Revert r145273 and fix in SelectionDAG::InferPtrAlignment() instead.
Conservatively returns zero when the GV does not specify an alignment nor is it
initialized. Previously it returns ABI alignment for type of the GV. However, if
the type is a "packed" type, then the under-specified alignments is attached to
the load / store instructions. In that case, the alignment of the type cannot be
trusted.
rdar://10464621


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
1c487869f5d47a7ad89d21ed9912bf89f25e3b72 28-Nov-2011 Evan Cheng <evan.cheng@apple.com> DAG combine should not increase alignment of loads / stores with alignment less
than ABI alignment. These are loads / stores from / to "packed" data structures.
Their alignments are intentionally under-specified.

rdar://10301431


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
aa5656c6b9161608005cf8dc85027c160a925e58 28-Nov-2011 Chad Rosier <mcrosier@apple.com> 80-column.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145267 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c80383095e1fd6a5567a0126b3ee551df8a2aacd 28-Nov-2011 Bill Wendling <isanbard@gmail.com> Remove dead llvm.eh.sjlj.dispatchsetup intrinsic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
51901d85f718a7e293f52a7908eab9fe1c0c94a0 27-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Prevent rotating the blocks of a loop (and thus getting a backedge to be
fallthrough) in cases where we might fail to rotate an exit to an outer
loop onto the end of the loop chain.

Having *some* rotation, but not performing this rotation, is the primary
fix of thep performance regression with -enable-block-placement for
Olden/em3d (a whopping 30% regression). Still working on reducing the
test case that actually exercises this and the new rotation strategy out
of this code, but I want to check if this regresses other test cases
first as that may indicate it isn't the correct fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145195 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
fac1305da162259d17baa6700ecb5d148b86ef08 27-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Take two on rotating the block ordering of loops. My previous attempt
was centered around the premise of laying out a loop in a chain, and
then rotating that chain. This is good for preserving contiguous layout,
but bad for actually making sane rotations. In order to keep it safe,
I had to essentially make it impossible to rotate deeply nested loops.
The information needed to correctly reason about a deeply nested loop is
actually available -- *before* we layout the loop. We know the inner
loops are already fused into chains, etc. We lose information the moment
we actually lay out the loop.

The solution was the other alternative for this algorithm I discussed
with Benjamin and some others: rather than rotating the loop
after-the-fact, try to pick a profitable starting block for the loop's
layout, and then use our existing layout logic. I was worried about the
complexity of this "pick" step, but it turns out such complexity is
needed to handle all the important cases I keep teasing out of benchmarks.

This is, I'm afraid, a bit of a work-in-progress. It is still
misbehaving on some likely important cases I'm investigating in Olden.
It also isn't really tested. I'm going to try to craft some interesting
nested-loop test cases, but it's likely to be extremely time consuming
and I don't want to go there until I'm sure I'm testing the correct
behavior. Sadly I can't come up with a way of getting simple, fine
grained test cases for this logic. We need complex loop structures to
even trigger much of it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145183 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
7096692fd9ab5753f17500a27d400d1544b6d3d8 27-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Fix an impressive type-o / spell-o Duncan noticed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145181 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
2eb5a744b18d429928751b06e205cbb88f668ae7 27-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Rework a bit of the implementation of loop block rotation to not rely so
heavily on AnalyzeBranch. That routine doesn't behave as we want given
that rotation occurs mid-way through re-ordering the function. Instead
merely check that there are not unanalyzable branching constructs
present, and then reason about the CFG via successor lists. This
actually simplifies my mental model for all of this as well.

The concrete result is that we now will rotate more loop chains. I've
added a test case from Olden highlighting the effect. There is still
a bit more to do here though in order to regain all of the performance
in Olden.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145179 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
2e38cf961d6d80c88290ca6b8d867e021f80b763 27-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Introduce a loop block rotation optimization to the new block placement
pass. This is designed to achieve one of the important optimizations
that the old code placement pass did, but more simply.

This is a somewhat rough and *very* conservative version of the
transform. We could get a lot fancier here if there are profitable cases
to do so. In particular, this only looks for a single pattern, it
insists that the loop backedge being rotated away is the last backedge
in the chain, and it doesn't provide any means of doing better in-loop
placement due to the rotation. However, it appears that it will handle
the important loops I am finding in the LLVM test suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145158 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
0861f5793a1834f02b522fb86fb037cd592c134f 27-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Move code into anonymous namespaces.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145154 91177308-0d34-0410-b5e6-96231b3b80d8
plitter.cpp
1429059dc0129c1cec938c29d6fce89e14293241 25-Nov-2011 Logan Chien <loganchien@google.com> Merge with LLVM upstream r145126 (Nov 25th 2011)

Change-Id: I30d08ae004a4c3c74092ad2537ab30cce4280e1d
4aae4f90071f64854ec771496bd164149b0a1352 24-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Fix a silly use-after-free issue. A much earlier version of this code
need lots of fanciness around retaining a reference to a Chain's slot in
the BlockToChain map, but that's all gone now. We can just go directly
to allocating the new chain (which will update the mapping for us) and
using it.

Somewhat gross mechanically generated test case replicates the issue
Duncan spotted when actually testing this out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145120 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
a2deea1dcf8363f46bda8935283c5c701b5a278d 24-Nov-2011 Chandler Carruth <chandlerc@gmail.com> When adding blocks to the list of those which no longer have any CFG
conflicts, we should only be adding the first block of the chain to the
list, lest we try to merge into the middle of that chain. Most of the
places we were doing this we already happened to be looking at the first
block, but there is no reason to assume that, and in some cases it was
clearly wrong.

I've added a couple of tests here. One already worked, but I like having
an explicit test for it. The other is reduced from a test case Duncan
reduced for me and used to crash. Now it is handled correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145119 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
598894ff2547aaa0a32ded145063f3bfe042f620 23-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Relax an invariant that block placement was trying to assert a bit
further. This invariant just wasn't going to work in the face of
unanalyzable branches; we need to be resillient to the phenomenon of
chains poking into a loop and poking out of a loop. In fact, we already
were, we just needed to not assert on it.

This was found during a bootstrap with block placement turned on.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145100 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
521fc5bcd73489f604a0b3251247c5ef21b5a0a5 23-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Handle the case of a no-return invoke correctly. It actually still has
successors, they just are all landing pad successors. We handle this the
same way as no successors. Comments attached for the next person to wade
through here and another lovely test case courtesy of Benjamin Kramer's
bugpoint reduction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145098 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
23d66a58b7900784a5808d24ce2d4a449f869aa8 23-Nov-2011 Bob Wilson <bob.wilson@apple.com> Enable stack protectors for all arrays, not just char arrays. rdar://5875909
Patch by Bill Wendling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145097 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
7f5e43f61d3b28a03537c29156b0bad7dd3476e4 23-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR11422.

This was a bug in keeping track of the available domains when merging
domain values.

The wrong domain mask caused ExecutionDepsFix to try to move VANDPSYrr
to the integer domain which is only available in AVX2.

Also add an assertion to catch future attempts at emitting AVX2
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145096 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
47fb954f7437250eda152ed4165af5ac1c0ec366 23-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Fix a crash in block placement due to an inner loop that happened to be
reversed in the function's original ordering, and we happened to
encounter it while handling an outer unnatural CFG structure.

Thanks to the test case reduced from GCC's source by Benjamin Kramer.
This may also fix a crasher in gzip that Duncan reduced for me, but
I haven't yet gotten to testing that one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145094 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
3b7b209bf86d3e81d61cc195020bd4891467291b 22-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Fix a devilish miscompile exposed by block placement. The
updateTerminator code didn't correctly handle EH terminators in one very
specific case. AnalyzeBranch would find no terminator instruction, and
so the fallback in updateTerminator is to assume fallthrough. This is
correct, but the destination of the fallthrough was assumed to be the
first successor.

This is *almost always* true, but in certain cases the loop
transformations will cause the landing pad to be the first successor!
Instead of this brittle logic, actually look through the successors for
a non-landing-pad accessor, and to assert if more than one is found.

This will hopefully fix some (if not all) of the self host miscompiles
with block placement. Thanks to Benjamin Kramer for reporting, Nick
Lewycky for an initial stab at a reduction, and Duncan for endless
advice on EH (which I know nothing about) as well as reviewing the
actual fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145062 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
f264568bae482601431e4ac923172fa3671eb9e7 22-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Fix an obvious omission in the SelectionDAGBuilder where we were
dropping weights on the floor for invokes. This was impeding my writing
further test cases for invoke when interacting with probabilities and
block placement.

No test case as there doesn't appear to be a way to test this stuff. =/
Suggestions for a test case of course welcome. I hope to be able to add
test cases that indirectly cover this eventually by adding probabilities
to the exceptional edge and reordering blocks as a result.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145060 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
254a13282c97469973b4fa8cc0e110ed6160642c 22-Nov-2011 Rafael Espindola <rafael.espindola@gmail.com> If a register is both an early clobber and part of a tied use, handle the use
before the clobber so that we copy the value if needed.

Fixes pr11415.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145056 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
b0dadb9dd52aed7a82e24542be8adf881d91c929 20-Nov-2011 Chandler Carruth <chandlerc@gmail.com> The logic for breaking the CFG in the presence of hot successors didn't
properly account for the *global* probability of the edge being taken.
This manifested as a very large number of unconditional branches to
blocks being merged against the CFG even though they weren't
particularly hot within the CFG.

The fix is to check whether the edge being merged is both locally hot
relative to other successors for the source block, and globally hot
compared to other (unmerged) predecessors of the destination block.

This introduces a new crasher on GCC single-source, but it's currently
behind a flag, and Ben has offered to work on the reduction. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145010 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
03300ecaee3ef853669582bcadec34170dbf515f 19-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Move the handling of unanalyzable branches out of the loop-driven chain
formation phase and into the initial walk of the basic blocks. We
essentially pre-merge all blocks where unanalyzable fallthrough exists,
as we won't be able to update the terminators effectively after any
reorderings. This is quite a bit more principled as there may be CFGs
where the second half of the unanalyzable pair has some analyzable
predecessor that gets placed first. Then it may get placed next,
implicitly breaking the unanalyzable branch even though we never even
looked at the part that isn't analyzable. I've included a test case that
triggers this (thanks Benjamin yet again!), and I'm hoping to synthesize
some more general ones as I dig into related issues.

Also, to make this new scheme work we have to be able to handle branches
into the middle of a chain, so add this check. We always fallback on the
incoming ordering.

Finally, this starts to really underscore a known limitation of the
current implementation -- we don't consider broken predecessors when
merging successors. This can caused major missed opportunities, and is
something I'm planning on looking at next (modulo more bug reports).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144994 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
ce35d8b5a1071bb8ccf70bf8be3952dd0c4f2f15 18-Nov-2011 Devang Patel <dpatel@apple.com> DISubrange supports unsigned lower/upper array bounds, so let's not fake it in the end while emitting DWARF. If a FE needs to encode signed lower/upper array bounds then we need to extend DISubrange or ad DISignedSubrange.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144937 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
478b06c9801f0b75c5216ce0886ac3d630d4fc7b 17-Nov-2011 Chad Rosier <mcrosier@apple.com> When fast iseling a GEP, accumulate the offset rather than emitting a series of
ADDs. MaxOffs is used as a threshold to limit the size of the offset. Tradeoffs
being: (1) If we can't materialize the large constant then we'll cause fast-isel
to bail. (2) Too large of an offset can't be directly encoded in the ADD
resulting in a MOV+ADD. Generally not a bad thing because otherwise we would
have had ADD+ADD, but on Thumb this turns into a MOVS+MOVT+ADD. Working on a fix
for that. (3) Conversely, too low of a threshold we'll miss opportunities to
coalesce ADDs.
rdar://10412592



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144886 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
4db4addcd49310599d2df8c6824dc188aaccb613 17-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Make sure to replace the chain properly when DAGCombining a LOAD+EXTRACT_VECTOR_ELT into a single LOAD. Fixes PR10747/PR11393.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144863 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
053e69ad5704a8e0e5f50d8b18f8917377ffacfb 16-Nov-2011 Chad Rosier <mcrosier@apple.com> Add fast-isel stats to determine who's doing all the work, the
target-independent selector or the target-specific selector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144833 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
f91488cc1027267fa21665818d3c90bb8b2a25ce 16-Nov-2011 Chad Rosier <mcrosier@apple.com> Fix the stats collection for fast-isel. The failed count was only accounting
for a single miss and not all predecessor instructions that get selected by
the selection DAG instruction selector. This is still not exact (e.g., over
states misses when folded/dead instructions are present), but it is a step in
the right direction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144832 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c3aa7c5c5aa1e06aa8a728149c6696401bd08faa 16-Nov-2011 Evan Cheng <evan.cheng@apple.com> Disable expensive two-address optimizations at -O0. rdar://10453055

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144806 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
14117c44770c32b56de143a0eff8c2d0fd694e0d 16-Nov-2011 Evan Cheng <evan.cheng@apple.com> Disable the assertion again. Looks like fastisel is still generating bad kill markers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144804 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b95fc31aa2e5a0a0b9ee1909d1cb949577c5aa16 16-Nov-2011 Evan Cheng <evan.cheng@apple.com> Sink codegen optimization level into MCCodeGenInfo along side relocation model
and code model. This eliminates the need to pass OptLevel flag all over the
place and makes it possible for any codegen pass to use this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144788 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineFunctionAnalysis.cpp
f1b41dd38d2b2713e3870f384525b020bbac05f6 16-Nov-2011 Bob Wilson <bob.wilson@apple.com> Record landing pads with a SmallSetVector to avoid multiple entries.

There may be many invokes that share one landing pad, and the previous code
would record the landing pad once for each invoke. Besides the wasted
effort, a pair of volatile loads gets inserted every time the landing pad is
processed. The rest of the code can get optimized away when a landing pad
is processed repeatedly, but the volatile loads remain, resulting in code like:

LBB35_18:
Ltmp483:
ldr r2, [r7, #-72]
ldr r2, [r7, #-68]
ldr r2, [r7, #-72]
ldr r2, [r7, #-68]
ldr r2, [r7, #-72]
ldr r2, [r7, #-68]
ldr r2, [r7, #-72]
ldr r2, [r7, #-68]
ldr r2, [r7, #-72]
ldr r2, [r7, #-68]
ldr r2, [r7, #-72]
ldr r2, [r7, #-68]
ldr r2, [r7, #-72]
ldr r2, [r7, #-68]
ldr r2, [r7, #-72]
ldr r2, [r7, #-68]
ldr r4, [r7, #-72]
ldr r2, [r7, #-68]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144787 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
20c918dfed5830f6d0c54c9c38817bd660cb6a13 16-Nov-2011 Bob Wilson <bob.wilson@apple.com> Update the SP in the SjLj jmpbuf whenever it changes. <rdar://problem/10444602>

This same basic code was in the older version of the SjLj exception handling,
but it was removed in the recent revisions to that code. It needs to be there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144782 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
0a405ae78a244ba55dfafdcac16585c262269e21 16-Nov-2011 Evan Cheng <evan.cheng@apple.com> Revert r144568 now that r144730 has fixed the fast-isel kill marker bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144776 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
9bad88a9def4abaa87e7e5e7178bd680354043f8 16-Nov-2011 Evan Cheng <evan.cheng@apple.com> If the 2addr instruction has other kills, don't move it below any other uses since we don't want to extend other live ranges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144772 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
2bee6a8bb74724263eadd550ee76417d6e6465a9 16-Nov-2011 Evan Cheng <evan.cheng@apple.com> RescheduleKillAboveMI() must backtrack to before the rescheduled DBG_VALUE instructions. rdar://10451185

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144771 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
ae7db7af44c9155092d4b80cb4d5d333469f4320 16-Nov-2011 Evan Cheng <evan.cheng@apple.com> Process all uses first before defs to accurately capture register liveness. rdar://10449480

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144770 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
d577df8e5ada3f4f97fa90bdc46c6f9b1db1dee1 16-Nov-2011 Eli Friedman <eli.friedman@gmail.com> CONCAT_VECTORS can have more than two operands. PR11389.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
b91b6001a63ea22cdad1a5392cb2b8a604d8219c 16-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add a couple asserts so it will be easier to debug if we accidentally pass indexed loads/stores to the legalizer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144767 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
99aa14ff64c92eab347d23696e358361d3bd90ea 16-Nov-2011 Owen Anderson <resistor@mac.com> Rename MVT::untyped to MVT::Untyped to match similar nomenclature.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144747 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
electionDAG/ScheduleDAGRRList.cpp
8368f74c434db60c36a4044dfe80d4abee49ce27 16-Nov-2011 Eric Christopher <echristo@apple.com> Stabilize the output of the dwarf accelerator tables. Fixes a comparison
failure during bootstrap with it turned on.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144731 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
22b34cce4d270f787d4c991baee596a9e3b7f836 16-Nov-2011 Chad Rosier <mcrosier@apple.com> GEPs with all zero indices are trivially coalesced by fast-isel. For example,

%arrayidx135 = getelementptr inbounds [4 x [4 x [4 x [4 x i32]]]]* %M0, i32 0, i64 0
%arrayidx136 = getelementptr inbounds [4 x [4 x [4 x i32]]]* %arrayidx135, i32 0, i64 %idxprom134

Prior to this commit, the GEP instruction that defines %arrayidx136 thought that
%arrayidx135 was a trivial kill. The GEP that defines %arrayidx135 doesn't
generate any code and thus %M0 gets folded into the second GEP. Thus, we need
to look through GEPs with all zero indices.
rdar://10443319

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144730 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
2d496897934adfc0e3e1563dd64d9a7122971e22 15-Nov-2011 Pete Cooper <peter_cooper@apple.com> Added custom lowering for load->dec->store sequence in x86 when the EFLAGS registers is used
by later instructions.

Only done for DEC64m right now.

Fixes <rdar://problem/6172640>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144705 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d2df64f56970aa07d2d8733543e4baf6c7009e91 15-Nov-2011 Devang Patel <dpatel@apple.com> Insert modified DBG_VALUE into LiveDbgValueMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144696 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
6c5b2dcd8385e2465f1b9f628d4368fa7c5a3c77 15-Nov-2011 Rafael Espindola <rafael.espindola@gmail.com> We currently use a callback to handle an IL pass deleting a BB that still
has a reference to it. Unfortunately, that doesn't work for codegen passes
since we don't get notified of MBB's being deleted (the original BB stays).

Use that fact to our advantage and after printing a function, check if
any of the IL BBs corresponds to a symbol that was not printed. This fixes
pr11202.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144674 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a7b0cb759433c715065440ee2a963a04db7f2b0b 15-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Remove all remaining uses of Value::getNameStr().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144648 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
achineFunction.cpp
achineVerifier.cpp
ostRASchedulerList.cpp
electionDAG/SelectionDAGISel.cpp
hrinkWrapping.cpp
argetLoweringObjectFileImpl.cpp
25ad1cc32af8d526eb72893a513a486bc28c5106 15-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Twinify GraphWriter a little bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144647 91177308-0d34-0410-b5e6-96231b3b80d8
dgeBundles.cpp
achineFunction.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGPrinter.cpp
d1bfc301986c5e3203ec57cba4122342f7dca108 15-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Check all overlaps when looking for used registers.

A function using any RC alias is enough to enable the ExeDepsFix pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144636 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
2151acf5fb0137bacdaa0efcb1a03905c99772e6 15-Nov-2011 Logan Chien <loganchien@google.com> Enable promote elements since the upstream has fixed it.

Change-Id: I7e4068c124ac330d021b52b877926ae719c7cb37
electionDAG/TargetLowering.cpp
36abbec01815964352d4f3d391c0a03896c0095a 15-Nov-2011 Logan Chien <loganchien@google.com> Apply changes to migrate to llvm upstream r144606.

Change-Id: Id22edd55de42831bdc3fc1a143ebec10cf8476d2
ndroid.mk
f4a5084d06438fcd7f91684b6236b66c4c202e16 15-Nov-2011 Jay Foad <jay.foad@gmail.com> Make use of MachinePointerInfo::getFixedStack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144635 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
8c2e35269c10914c16f351449fb9b8108ccb2556 15-Nov-2011 Jay Foad <jay.foad@gmail.com> Remove some unnecessary includes of PseudoSourceValue.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGPrinter.cpp
f9c1b92c27bf4ac40a52e0f1ef6d006d7e74bed3 15-Nov-2011 Logan Chien <loganchien@google.com> Merge with LLVM upstream r144606 (Nov 15th 2011)

Conflicts:
Makefile.rules
configure
docs/ReleaseNotes.html
lib/Analysis/ScalarEvolution.cpp
lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
lib/CodeGen/ExecutionDepsFix.cpp
lib/CodeGen/MachineBlockPlacement.cpp
lib/CodeGen/MachineBranchProbabilityInfo.cpp
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/ExecutionEngine/JIT/LLVMBuild.txt
lib/MC/LLVMBuild.txt
lib/MC/MCDisassembler/LLVMBuild.txt
lib/MC/MCDwarf.cpp
lib/Object/LLVMBuild.txt
lib/Target/ARM/ARMExpandPseudoInsts.cpp
lib/Target/ARM/ARMFastISel.cpp
lib/Target/ARM/ARMInstrInfo.td
lib/Target/ARM/AsmParser/ARMAsmParser.cpp
lib/Target/ARM/Disassembler/ARMDisassembler.cpp
lib/Target/ARM/Disassembler/LLVMBuild.txt
lib/Target/ARM/TargetInfo/LLVMBuild.txt
lib/Target/CBackend/TargetInfo/LLVMBuild.txt
lib/Target/CellSPU/MCTargetDesc/LLVMBuild.txt
lib/Target/CellSPU/TargetInfo/LLVMBuild.txt
lib/Target/CppBackend/TargetInfo/LLVMBuild.txt
lib/Target/LLVMBuild.txt
lib/Target/MBlaze/Disassembler/LLVMBuild.txt
lib/Target/MBlaze/TargetInfo/LLVMBuild.txt
lib/Target/MSP430/MCTargetDesc/LLVMBuild.txt
lib/Target/MSP430/TargetInfo/LLVMBuild.txt
lib/Target/Mips/CMakeLists.txt
lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp
lib/Target/Mips/Mips64InstrInfo.td
lib/Target/Mips/MipsAsmPrinter.cpp
lib/Target/Mips/MipsISelLowering.cpp
lib/Target/Mips/MipsMCInstLower.cpp
lib/Target/Mips/TargetInfo/LLVMBuild.txt
lib/Target/PTX/LLVMBuild.txt
lib/Target/PTX/PTXAsmPrinter.cpp
lib/Target/PTX/TargetInfo/LLVMBuild.txt
lib/Target/PowerPC/TargetInfo/LLVMBuild.txt
lib/Target/Sparc/TargetInfo/LLVMBuild.txt
lib/Target/X86/TargetInfo/LLVMBuild.txt
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrSSE.td
lib/Target/XCore/MCTargetDesc/LLVMBuild.txt
lib/Target/XCore/TargetInfo/LLVMBuild.txt
lib/Transforms/IPO/LLVMBuild.txt
lib/Transforms/Utils/LLVMBuild.txt
test/CodeGen/ARM/2011-10-26-memset-with-neon.ll
test/CodeGen/ARM/2011-11-07-PromoteVectorLoadStore.ll
test/CodeGen/ARM/fast-isel-cmp-imm.ll
test/CodeGen/ARM/fast-isel-ldrh-strh-arm.ll
test/CodeGen/CellSPU/call_indirect.ll
test/CodeGen/X86/avx2-logic.ll
test/CodeGen/X86/block-placement.ll
test/CodeGen/X86/sse-domains.ll
test/CodeGen/X86/sse3.ll
test/CodeGen/X86/vec_shuffle-39.ll
test/MC/ARM/neon-vld-encoding.s
test/MC/ARM/neon-vst-encoding.s
tools/llvm-config-2/llvm-config.cpp
utils/TableGen/LLVMBuild.txt

Change-Id: I70f454db6fc79d7799f56d0f6f2eb7b99561c504
f178418729d91e2f15a8eb27c0e4787b8ec7a3ce 15-Nov-2011 Evan Cheng <evan.cheng@apple.com> Set SeenStore to true to prevent loads from being moved; also eliminates a non-deterministic behavior.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144628 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
3273c8937b8c3ebdd1cfc0c67054ce5571f0afc9 15-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Rather than trying to use the loop block sequence *or* the function
block sequence when recovering from unanalyzable control flow
constructs, *always* use the function sequence. I'm not sure why I ever
went down the path of trying to use the loop sequence, it is
fundamentally not the correct sequence to use. We're trying to preserve
the incoming layout in the cases of unreasonable control flow, and that
is only encoded at the function level. We already have a filter to
select *exactly* the sub-set of blocks within the function that we're
trying to form into a chain.

The resulting code layout is also significantly better because of this.
In several places we were ending up with completely unreasonable control
flow constructs due to the ordering chosen by the loop structure for its
internal storage. This change removes a completely wasteful vector of
basic blocks, saving memory allocation in the common case even though it
costs us CPU in the fairly rare case of unnatural loops. Finally, it
fixes the latest crasher reduced out of GCC's single source. Thanks
again to Benjamin Kramer for the reduction, my bugpoint skills failed at
it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144627 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
c2ecf3efbf375fc82bb1cea6afd7448498f9ae75 15-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Break false dependencies before partial register updates.

Two new TargetInstrInfo hooks lets the target tell ExecutionDepsFix
about instructions with partial register updates causing false unwanted
dependencies.

The ExecutionDepsFix pass will break the false dependencies if the
updated register was written in the previoius N instructions.

The small loop added to sse-domains.ll runs twice as fast with
dependency-breaking instructions inserted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144602 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
2947f730a96fc602ea008bba1929ae4f0638850a 15-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Track register ages more accurately.

Keep track of the last instruction to define each register individually
instead of per DomainValue. This lets us track more accurately when a
register was last written.

Also track register ages across basic blocks. When entering a new
basic block, use the least stale predecessor def as a worst case
estimate for register age.

The register age is used to arbitrate between conflicting domains. The
most recently defined register wins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144601 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
8aee7d8f9eab71a29f8f3a5a541144bef4fb5ac4 14-Nov-2011 Evan Cheng <evan.cheng@apple.com> Avoid dereferencing off the beginning of lists.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144569 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
41e00172c51a1666cbcda5df2c6f45d685068fbb 14-Nov-2011 Evan Cheng <evan.cheng@apple.com> At -O0, multiple uses of a virtual registers in the same BB are being marked
"kill". This looks like a bug upstream. Since that's going to take some time
to understand, loosen the assertion and disable the optimization when
multiple kills are seen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144568 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
2a4410df44cd710e20b3f12873c35405830d66fb 14-Nov-2011 Evan Cheng <evan.cheng@apple.com> Teach two-address pass to re-schedule two-address instructions (or the kill
instructions of the two-address operands) in order to avoid inserting copies.
This fixes the few regressions introduced when the two-address hack was
disabled (without regressing the improvements).
rdar://10422688


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144559 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
f054e198197122011fc80b673f35333bc3e58c98 14-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix early-clobber handling in shrinkToUses.

I broke this in r144515, it affected most ARM testers.

<rdar://problem/10441389>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144547 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f2a027ee44593147a4aee5566a13f682a1964773 11-Nov-2011 Stephen Hines <srhines@google.com> Update LLVM to svn 144354.

Change-Id: I1935ffce1c5d5eec52ad8b69bab9ee0c281aef16
ndroid.mk
smPrinter/Android.mk
electionDAG/Android.mk
4fffbb4e26c7ee764a853e54ba11aa57087b6ab1 11-Nov-2011 Eric Christopher <echristo@apple.com> If we have a DIE with an AT_specification use that instead of the normal
addr DIE when adding to the dwarf accelerator tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144354 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
e699247c88cc3321e6c92c7506c900ca90f1c17f 10-Nov-2011 Rafael Espindola <rafael.espindola@gmail.com> Check in getOrCreateSubprogramDIE if a declaration exists and if so output
it first.

This is a more general fix to pr11300.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144324 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
a69e037083e51d56fee1ef0961ad71b441d6f5f1 10-Nov-2011 Eric Christopher <echristo@apple.com> Make types and namespaces take multiple DIEs for the accelerator tables
as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144319 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
6dfcce76e9e12730c6b67d7a04eca32dd331711b 10-Nov-2011 Eric Christopher <echristo@apple.com> Move type handling to make sure we get all created types that aren't
forward decls and have names into the dwarf accelerator types table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144306 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
c63f8b0fdb11d1723f070de38a3d68de95981990 10-Nov-2011 Eric Christopher <echristo@apple.com> Rework adding function names to the dwarf accelerator tables, allow
multiple dies per function and support C++ basenames.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144304 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
d8a251a964945b5b17620350fdfd866c140b7a5c 10-Nov-2011 Evan Cheng <evan.cheng@apple.com> Use a bigger hammer to fix PR11314 by disabling the "forcing two-address
instruction lower optimization" in the pre-RA scheduler.

The optimization, rather the hack, was done before MI use-list was available.
Now we should be able to implement it in a better way, perhaps in the
two-address pass until a MI scheduler is available.

Now that the scheduler has to backtrack to handle call sequences. Adding
artificial scheduling constraints is just not safe. Furthermore, the hack
is not taking all the other scheduling decisions into consideration so it's just
as likely to pessimize code. So I view disabling this optimization goodness
regardless of PR11314.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144267 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d7a241e7722755e09ccb1220eb3ac8b5131c6827 10-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Strip old implicit operands after foldMemoryOperand.

The TII.foldMemoryOperand hook preserves implicit operands from the
original instruction. This is not what we want when those implicit
operands refer to the register being spilled.

Implicit operands referring to other registers are preserved.

This fixes PR11347.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144247 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
a5592b776d4df9af5a422df9133943dd461544ab 09-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add check so we don't try to perform an impossible transformation. Fixes issue from PR11319.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144216 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
8b990fb13ec620eca9c31d1f7d6e2109ac8c374b 09-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144194 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
12ecbb08fc3659c6e55f1534fa5d8f122d320b07 09-Nov-2011 Duncan Sands <baldrick@free.fr> Speculatively revert commit 144124 (djg) in the hope that the 32 bit
dragonegg self-host buildbot will recover (it is complaining about object
files differing between different build stages). Original commit message:

Add a hack to the scheduler to disable pseudo-two-address dependencies in
basic blocks containing calls. This works around a problem in which
these artificial dependencies can get tied up in calling seqeunce
scheduling in a way that makes the graph unschedulable with the current
approach of using artificial physical register dependencies for calling
sequences. This fixes PR11314.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144188 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
48d9a37d968b5ce6c9eed249f5a3b95fa0bd2014 09-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Take advantage of the zero byte in StringMap when emitting dwarf stringpool entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144184 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d4807991d8782772c32e24cb6e17e8c2d1853531 09-Nov-2011 Devang Patel <dpatel@apple.com> Remove extra ';'


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144172 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.h
4cbab6932e3badf961f31658e8b378450132665f 09-Nov-2011 Eric Christopher <echristo@apple.com> Remove the pubnames section, no one consumes it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144169 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
fc7b08da019fcb14f7ca3f0db77b10384809fd8b 09-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Collapse DomainValues across loop back-edges.

During the initial RPO traversal of the basic blocks, remember the ones
that are incomplete because of back-edges from predecessors that haven't
been visited yet.

After the initial RPO, revisit all those loop headers so the incoming
DomainValues on the back-edges can be properly collapsed.

This will properly fix execution domains on software pipelined code,
like the included test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144151 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
608948e2c6b62b5a5055b10b07d1c07da4b59472 09-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Link to the live DomainValue after merging.

When merging two uncollapsed DomainValues, place a link to the active
DomainValue from the passive DomainValue. This allows old stale
references to the passive DomainValue to be updated to point to the
active DomainValue.

The new resolve() function finds the active DomainValue and updates the
pointer.

This change makes old live-out lists more useful since they may contain
uncollapsed DomainValues that have since been merged into other
DomainValues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144149 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
d658dd4797ceb57789179c90cb3c2f21897d756d 09-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Track reference count independently from clear().

This allows clear() to be called on a DomainValue with references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144147 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
0ed5f64f1ddf838857a4ce95353906c08b6fafc6 08-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Call release() directly when cleaning up the remaining DomainValues.

There is no need to involve the LiveRegs array and kill() any longer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144133 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
d0ba114a13b4910d965e64d1ba3f1a2d46933bdf 08-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename all methods to follow style guide.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144132 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
e67e6f16c005165232cf46e2fc0d77e6a7ed7dbf 08-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle reference counts in one function: release().

This new function will decrement the reference count, and collapse a
domain value when the last reference is gone.

This simplifies DomainValue reference counting, and decouples it from
the LiveRegs array.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144131 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
b213765260884e182eb3cf4867181c66a7eb4f83 08-Nov-2011 Eric Christopher <echristo@apple.com> Also add the linkage name to the name accelerator tables if it exists
and is different than the normal name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144130 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
a1c31670bc6b110a738165631f18dce1de36544c 08-Nov-2011 Dan Gohman <gohman@apple.com> Add a hack to the scheduler to disable pseudo-two-address dependencies in
basic blocks containing calls. This works around a problem in which
these artificial dependencies can get tied up in calling seqeunce
scheduling in a way that makes the graph unschedulable with the current
approach of using artificial physical register dependencies for calling
sequences. This fixes PR11314.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f1e88bba7b7dcc346b415c6551c458e40b740127 08-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Clear old DomainValue after merging.

The old value may still be referenced by some live-out list, and we
don't wan't to collapse those instructions twice.

This fixes the "Can only swizzle VMOVD" assertion in some armv7 SPEC
builds.

<rdar://problem/10413292>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144117 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
c57daf29566e89d93a9d5e00314b947d9fc5b104 08-Nov-2011 Eric Christopher <echristo@apple.com> Add the base ObjC method name to the names lookup table as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144105 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
22d43e3f0991cb2710cdb79eb6c37ae8ba53e4f4 08-Nov-2011 Lang Hames <lhames@gmail.com> Lower mem-ops to unaligned i32/i16 load/stores on ARM where supported.

Add support for trimming constants to GetDemandedBits. This fixes some funky
constant generation that occurs when stores are expanded for targets that don't
support unaligned stores natively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144102 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
67f02679340e056f50120a84b128b3c6188d693d 08-Nov-2011 Pete Cooper <peter_cooper@apple.com> Added invariant field to the DAG.getLoad method and changed all calls.

When this field is true it means that the load is from constant (runt-time or compile-time) and so can be hoisted from loops or moved around other memory accesses


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144100 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
68e7c6959f1a3d0542e752b34f1a7816ccdd75bf 08-Nov-2011 Eric Christopher <echristo@apple.com> A few more places where we can avoid multiple size queries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144099 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
5cba0ca062c582fdc6462dbf3407cde17970c4e0 08-Nov-2011 Eric Christopher <echristo@apple.com> Don't evaluate Data.size() on every iteration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144095 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
a26ebbe5cc71869e8fc0194756f6584f7c4b4d03 08-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add a bunch of calls to RemoveDeadNode in LegalizeDAG, so legalization doesn't get confused by CSE later on. Fixes PR11318.

Re-commit of r144034, with an extra fix so that RemoveDeadNode doesn't blow up.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144055 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
986fcd68d34814f40d35413b30a69254a3daefe7 08-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Revert r144034 while I try to track down a crash.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144044 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f581dc9bc08dd1f09915d7ba280ce77a4923fb6b 08-Nov-2011 Bill Wendling <isanbard@gmail.com> This code is dead, what with the new EH model and the auto-upgraders in place.
Delete!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144043 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
751936b14d14c89e74e23a5073b9ae4373288898 08-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Kill and collapse outstanding DomainValues.

DomainValues that are only used by "don't care" instructions are now
collapsed to the first possible execution domain after all basic blocks
have been processed. This typically means the PS domain on x86.

For example, the vsel_i64 and vsel_double functions in sse2-blend.ll are
completely collapsed to the PS domain instead of containing a mix of
execution domains created by isel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144037 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
2278edcb4a5a89eabc1bbe5a54535c7848e4f61a 07-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add a bunch of calls to RemoveDeadNode in LegalizeDAG, so legalization doesn't get confused by CSE later on. Fixes PR11318.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144034 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8b2139f5e988cd975f74dec8238aa74541a7658d 07-Nov-2011 Eric Christopher <echristo@apple.com> Add all completed and named types to the dwarf type accelerator tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144027 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
16fb58ad0ba061c7059b1cb5fd53a9b46a33d5c3 07-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a reverse post order instead of a DFS order.

The enterBasicBlock() function is combining live-out values from
predecessor blocks. The RPO traversal means that more predecessors
have been visited when that happens, only back-edges are missing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144025 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
69ff8cf1ab1470541fc43ecf083670ce95a773af 07-Nov-2011 Eric Christopher <echristo@apple.com> Move the hash function to using and taking a StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144024 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.h
26bab293425c448bb5c2b63838d123543d6fd0ec 07-Nov-2011 Eric Christopher <echristo@apple.com> Simple destructor to delete the hash data we created earlier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144023 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
d6a721a10a161a0919c06d5790088ad4d8e40666 07-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract two methods. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144020 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
731f8d28dedbbb1e7136ff450d5a5d06404aff32 07-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> MBB doesn't need to be a class member.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144015 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
f318b3db94d3336dd82dc4574e2741b70e0be294 07-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix pass name after the source was moved.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144014 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
80f3344904fb0678f06a2e69067421990d2e39df 07-Nov-2011 Eric Christopher <echristo@apple.com> Use StringRef::startswith to do some string comparisons.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143982 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1f857842c5408e2ae4412123142132ef87edc6ce 07-Nov-2011 Eric Christopher <echristo@apple.com> Avoid the use of a local temporary for comment twines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143974 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
408c5673bbf5f504e2ef411738127d83d5e71de0 07-Nov-2011 Eric Christopher <echristo@apple.com> Allow for the case where the name of the subprogram is "".

Fixes a self-host error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143970 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
47f1ffe0789ece734d58f5c476db7513e559a30c 07-Nov-2011 Richard Osborne <richard@xmos.com> Don't introduce custom nodes after legalization in TargetLowering::BuildSDIV()
and TargetLowering::BuildUDIV(). Fixes PR11283


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
0565071e15ddcb379568d87b3a2725aab501e476 07-Nov-2011 Eric Christopher <echristo@apple.com> Remove unnecessary addition to API. Replace with something much simpler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143925 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
74851494443271fd4935594e4632ef6f27a230a2 07-Nov-2011 Eric Christopher <echristo@apple.com> Add new files to cmake.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143924 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
fcb83a41ff8645804794400d6a8c0d77ccc93042 07-Nov-2011 Eric Christopher <echristo@apple.com> Add the support code to enable the dwarf accelerator tables. Upcoming patches
to fix the types section (all types, not just global types), and testcases.

The code to do the final emission is disabled by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143923 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
3dec3fd0e97ff2eb6bb39cbcb0d89ad154aec604 07-Nov-2011 Eric Christopher <echristo@apple.com> Add a new dwarf accelerator table prototype with the goal of replacing
the pubnames and pubtypes tables. LLDB can currently use this format
and a full spec is forthcoming and submission for standardization is planned.

A basic summary:

The dwarf accelerator tables are an indirect hash table optimized
for null lookup rather than access to known data. They are output into
an on-disk format that looks like this:

.-------------.
| HEADER |
|-------------|
| BUCKETS |
|-------------|
| HASHES |
|-------------|
| OFFSETS |
|-------------|
| DATA |
`-------------'

where the header contains a magic number, version, type of hash function,
the number of buckets, total number of hashes, and room for a special
struct of data and the length of that struct.

The buckets contain an index (e.g. 6) into the hashes array. The hashes
section contains all of the 32-bit hash values in contiguous memory, and
the offsets contain the offset into the data area for the particular
hash.

For a lookup example, we could hash a function name and take it modulo the
number of buckets giving us our bucket. From there we take the bucket value
as an index into the hashes table and look at each successive hash as long
as the hash value is still the same modulo result (bucket value) as earlier.
If we have a match we look at that same entry in the offsets table and
grab the offset in the data for our final match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143921 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
51b8262989192fc12300402296602ac57f288faf 07-Nov-2011 Eric Christopher <echristo@apple.com> Expose a way to get the beginning of the dwarf string section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143920 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
e56902effc5e67c0a1c53a712f8d67b55aa9ce97 07-Nov-2011 Eric Christopher <echristo@apple.com> Fix up comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143919 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b2d6f982de5813bb3b8ddd1001c27d090d8930eb 07-Nov-2011 Eric Christopher <echristo@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143918 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
916f8baa0d9d984e37c02c70d67f04992352568e 05-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Add an option to pad an uleb128 to MCObjectWriter and remove the uleb128 encoding from the DWARF asm printer.

As a side effect we now print dwarf ulebs with .ascii directives.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143809 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
4eb73c59bcd1055e9a3f324d836ce3898fbb7c81 05-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Add more PRI.64 macros for MSVC and use them throughout the codebase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143799 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
daef113e7190442de92b85ad3b187fd8ee7dae7b 05-Nov-2011 Pete Cooper <peter_cooper@apple.com> Added missing &. Fixes <rdar://problem/10393723>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143753 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
5ad16989828cd342609b2035ec54e5c75b4e01f9 04-Nov-2011 Rafael Espindola <rafael.espindola@gmail.com> Emit declarations before definitions if they are available. This causes DW_AT_specification to
point back in the file in the included testcase. Fixes PR11300.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143726 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
dd21ce80415edf09fa66a0bfebc812ce682409bf 03-Nov-2011 Dan Gohman <gohman@apple.com> Reapply r143206, with fixes. Disallow physical register lifetimes
across calls, and only check for nested dependences on the special
call-sequence-resource register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143660 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
4e6a98b84017a74a3f78bee72a70499d785757ba 03-Nov-2011 Pete Cooper <peter_cooper@apple.com> Reverted r143600 - selector reference change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143646 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
00ade8bab0045bde35b13d2489021b8642aeb0cc 03-Nov-2011 Daniel Dunbar <daniel@zuster.org> build: Add initial cut at LLVMBuild.txt files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143634 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/LLVMBuild.txt
LVMBuild.txt
electionDAG/LLVMBuild.txt
6fbf5c114c68f0c4099b464754be033a46781cf8 03-Nov-2011 Pete Cooper <peter_cooper@apple.com> Treat objc selector reference globals as invariant so that MachineLICM can hoist them out of loops. Fixes <rdar://problem/6027699>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143600 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
37ecce1958a0da3b707b61a2710964c46b6dcd08 03-Nov-2011 Bill Wendling <isanbard@gmail.com> An array of chars of length 8 will also cause the stack protector to be inserted
into the function. Reflect that here so that the array will be placed next to
the SP.
<rdar://problem/10128329>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143590 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
2443f9532abf55cb26e4c8e7c485df79e7855368 02-Nov-2011 Nick Lewycky <nicholas@mxc.ca> Don't emit a directory entry for the value in DW_AT_comp_dir, that is always
implied by directory index zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143570 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8f27862ad87f3147119f78e004533ff1d8bad1f2 02-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Begin collecting some of the statistics for block placement discussed on
the mailing list. Suggestions for other statistics to collect would be
awesome. =]

Currently these are implemented as a separate pass guarded by a separate
flag. I'm not thrilled by that, but I wanted to be able to collect the
statistics for the old code placement as well as the new in order to
have a point of comparison. I'm planning on folding them into the single
pass if / when there is only one pass of interest.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143537 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
LVMTargetMachine.cpp
achineBlockPlacement.cpp
183a3672cf6988c80178ceb19fe05ec1cad45e90 01-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Update split candidate correctly when interference cache is full.

No test case, spotted by inspection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143407 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
4c6720ffff2343038bfb4810c7c6efc06ebf2181 31-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Cleanup. Document. Make sure that this build_vector optimization only runs before the op legalizer and that the used type is legal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143358 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
90d4087f0dc58f0b20c8f39afa1f4c430b5839d6 30-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Silence compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143308 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
81d934ef0702acfdc709b03f484fb220df91213c 29-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Add a new DAGCombine optimization for BUILD_VECTOR.
If all of the inputs are zero/any_extended, create a new simple BV
which can be further optimized by other BV optimizations.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143297 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2ad3a89681d15d30b76c36bbd6355ddd78be7e45 29-Oct-2011 Dan Gohman <gohman@apple.com> Revert r143206, as there are still some failing tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143262 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
26b4f62e52845638a6e353b58ea72326a0aa7b06 28-Oct-2011 Dan Gohman <gohman@apple.com> Reapply r143177 and r143179 (reverting r143188), with scheduler
fixes: Use a separate register, instead of SP, as the
calling-convention resource, to avoid spurious conflicts with
actual uses of SP. Also, fix unscheduling of calling sequences,
which can be triggered by pseudo-two-address dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143206 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
93ce5f573eaaafeabfc41bf60e63fb215a9be288 28-Oct-2011 NAKAMURA Takumi <geek4civic@gmail.com> Dwarf: [PR11022] Fix emitting DW_AT_const_value(>i64), to be host-endian-neutral.

Don't assume APInt::getRawData() would hold target-aware endianness nor host-compliant endianness. rawdata[0] holds most lower i64, even on big endian host.

FIXME: Add a testcase for big endian target.

FIXME: Ditto on CompileUnit::addConstantFPValue() ?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143194 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
b008e84283246609598c7a54aabec162e526d446 28-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Use BranchProbability compare operators.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143190 91177308-0d34-0410-b5e6-96231b3b80d8
achineBranchProbabilityInfo.cpp
48665489a07cf7db7fb78f70e9cabb730f29e32e 28-Oct-2011 Duncan Sands <baldrick@free.fr> Speculatively disable Dan's commits 143177 and 143179 to see if
it fixes the dragonegg self-host (it looks like gcc is miscompiled).
Original commit messages:
Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW
on every node as it legalizes them. This makes it easier to use
hasOneUse() heuristics, since unneeded nodes can be removed from the
DAG earlier.

Make LegalizeOps visit the DAG in an operands-last order. It previously
used operands-first, because LegalizeTypes has to go operands-first, and
LegalizeTypes used to be part of LegalizeOps, but they're now split.
The operands-last order is more natural for several legalization tasks.
For example, it allows lowering code for nodes with floating-point or
vector constants to see those constants directly instead of seeing the
lowered form (often constant-pool loads). This makes some things
somewhat more complicated today, though it ought to allow things to be
simpler in the future. It also fixes some bugs exposed by Legalizing
using RAUW aggressively.

Remove the part of LegalizeOps that attempted to patch up invalid chain
operands on libcalls generated by LegalizeTypes, since it doesn't work
with the new LegalizeOps traversal order. Instead, define what
LegalizeTypes is doing to be correct, and transfer the responsibility
of keeping calls from having overlapping calling sequences into the
scheduler.

Teach the scheduler to model callseq_begin/end pairs as having a
physical register definition/use to prevent calls from having
overlapping calling sequences. This is also somewhat complicated, though
there are ways it might be simplified in the future.

This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others.
Please direct high-level questions about this patch to management.

Delete #if 0 code accidentally left in.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143188 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
a4f0ca4a19c91ec0a6a99538f55c3648f0f3eed6 28-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Always use the string pool, even when it makes the .o larger. This may help
tools that read the debug info in the .o files by making the DIE sizes more
consistent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143186 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
da230071f0303ae6b210f89b27f14a46f417d5e4 28-Oct-2011 Dan Gohman <gohman@apple.com> Delete #if 0 code accidentally left in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143179 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0ffd02dc922213fed7eb0d055d76e260027adcdd 28-Oct-2011 Dan Gohman <gohman@apple.com> Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW
on every node as it legalizes them. This makes it easier to use
hasOneUse() heuristics, since unneeded nodes can be removed from the
DAG earlier.

Make LegalizeOps visit the DAG in an operands-last order. It previously
used operands-first, because LegalizeTypes has to go operands-first, and
LegalizeTypes used to be part of LegalizeOps, but they're now split.
The operands-last order is more natural for several legalization tasks.
For example, it allows lowering code for nodes with floating-point or
vector constants to see those constants directly instead of seeing the
lowered form (often constant-pool loads). This makes some things
somewhat more complicated today, though it ought to allow things to be
simpler in the future. It also fixes some bugs exposed by Legalizing
using RAUW aggressively.

Remove the part of LegalizeOps that attempted to patch up invalid chain
operands on libcalls generated by LegalizeTypes, since it doesn't work
with the new LegalizeOps traversal order. Instead, define what
LegalizeTypes is doing to be correct, and transfer the responsibility
of keeping calls from having overlapping calling sequences into the
scheduler.

Teach the scheduler to model callseq_begin/end pairs as having a
physical register definition/use to prevent calls from having
overlapping calling sequences. This is also somewhat complicated, though
there are ways it might be simplified in the future.

This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others.
Please direct high-level questions about this patch to management.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143177 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
2be084a25b1f79f17520d824d0feb8c7854b5f31 27-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Teach our Dwarf emission to use the string pool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143097 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
56b16aed0966010a2f355fe8167ccbf9622f4672 27-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Don't crash on 128-bit sdiv by constant. Found by inspection.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143095 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3835309e48a98f541d52a640424791e712a09ace 27-Oct-2011 Lang Hames <lhames@gmail.com> Rename NonScalarIntSafe to something more appropriate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143080 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2e5d3abd4e9f450ae30362d440a09aca26fc9c30 27-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Reflow lines, fix comments for doxygen style, fix whitespace. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143074 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
005192a3bfd0029ff01dd80df06c3ae6d6b459f4 26-Oct-2011 Duncan Sands <baldrick@free.fr> Simplify SplitVecRes_UnaryOp by removing all the code that is
trying to legalize the operand types when only the result type
is required to be legalized - the type legalization machinery
will get round to the operands later if they need legalizing.
There can be a point to legalizing operands in parallel with
the result: when this saves compile time or results in better
code. There was only one case in which this was true: when
the operand is also split, so keep the logic for that bit.
As a result of this change, additional operand legalization
methods may need to be introduced to handle nodes where the
result and operand types can differ, like SIGN_EXTEND, but
the testsuite doesn't contain any tests where this is the case.
In any case, it seems better to require such methods (and die
with an assert if they doesn't exist) than to quietly produce
wrong code if we forgot to special case the node in
SplitVecRes_UnaryOp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
3beff0b3d8dd6c1afa62dc6dc1908ee12fffabc3 26-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't use floating point to do an integer's job.

This code makes different decisions when compiled into x87 instructions
because of different rounding behavior. That caused phase 2/3
miscompares on 32-bit Linux when the phase 1 compiler was built with gcc
(using x87), and the phase 2 compiler was built with clang (using SSE).

This fixes PR11200.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143006 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
2442bb2dfc33d75f8acc5a045d4ca5000083f3d1 26-Oct-2011 Evan Cheng <evan.cheng@apple.com> Disable LICM speculation in high register pressure situation again now that Devang has fixed other issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143003 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
c9cd0b24214174c7cd0aacdb59c7e4a973f62b36 26-Oct-2011 Bill Wendling <isanbard@gmail.com> Reapply r142920 with fix:

An MBB which branches to an EH landing pad shouldn't be considered for tail merging.

In SjLj EH, the jump to the landing pad is not done explicitly through a branch
statement. The EH landing pad is added as a successor to the throwing
BB. Because of that however, the branch folding pass could mistakenly think that
it could merge the throwing BB with another BB. This isn't safe to do.
<rdar://problem/10334833>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143001 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
e87bae364273f1154c1f7b7c4a86cba684d638c7 25-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Remove a couple redundant checks.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142959 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8b4d0f91d01f70f59ff7273a1e918d644e969acc 25-Oct-2011 Jim Grosbach <grosbach@apple.com> Make assert() message more informative.

PR11217.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142956 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
93bec3a742d1350a853f6acb74f3de3104818058 25-Oct-2011 Duncan Sands <baldrick@free.fr> Revert commit 142891. Takumi bisected the tablegen miscompiles
down to this commit. Original commit message:

An MBB which branches to an EH landing pad shouldn't be considered for tail merging.

In SjLj EH, the jump to the landing pad is not done explicitly through a branch
statement. The EH landing pad is added as a successor to the throwing
BB. Because of that however, the branch folding pass could mistakenly think that
it could merge the throwing BB with another BB. This isn't safe to do.
<rdar://problem/10334833>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142920 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
db66fb51c47acb2faea916752a90c4baa8f9d0e3 25-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Remove dead enum value. There is no DIESectionOffset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142912 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
e0c998db1fd339c3818e360d7769e375ac296d06 25-Oct-2011 Eric Christopher <echristo@apple.com> Remove unused forward decl.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142892 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
dbdf2008cf077f2b23c7c8fc52db95e0581c1117 25-Oct-2011 Bill Wendling <isanbard@gmail.com> An MBB which branches to an EH landing pad shouldn't be considered for tail merging.

In SjLj EH, the jump to the landing pad is not done explicitly through a branch
statement. The EH landing pad is added as a successor to the throwing
BB. Because of that however, the branch folding pass could mistakenly think that
it could merge the throwing BB with another BB. This isn't safe to do.
<rdar://problem/10334833>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142891 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
c5a8e00ca0bf183012dcf0069ff79c7b655e5cf4 25-Oct-2011 Bill Wendling <isanbard@gmail.com> Check the visibility of the global variable before placing it into the stubs
table. A hidden variable could potentially end up in both lists.
<rdar://problem/10336715>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142869 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
830c86601a5b23245db942f9dea322fff197bd41 24-Oct-2011 Douglas Gregor <dgregor@apple.com> Really unbreak CMake build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142822 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
05b663d8a9d66acaa1883a31dfce9da7da046842 24-Oct-2011 Douglas Gregor <dgregor@apple.com> Unbreak CMake build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142821 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
ea971ef42153132e1ea67873e38c90b3bd4310db 24-Oct-2011 Dan Gohman <gohman@apple.com> Delete the top-down "Latency" scheduler. Top-down scheduling doesn't handle
physreg dependencies, and upcoming codegen changes will require proper
physreg dependence handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142816 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
4c79255574ff3c1e7693f070d3e0c7c2e31bf6d4 24-Oct-2011 Dan Gohman <gohman@apple.com> Delete the Latency scheduling preference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142815 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
887422c3752cbefb67e6a4367358a38bfcd99c0a 24-Oct-2011 Dan Gohman <gohman@apple.com> Change this overloaded use of Sched::Latency to be an overloaded
use of Sched::ILP instead, as Sched::Latency is going away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142813 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
fc0f6d4cf7cfb1f10663472eaf4acde2def926ad 24-Oct-2011 Dan Gohman <gohman@apple.com> Change the default scheduler from Latency to ILP, since Latency
is going away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142810 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
1b9cf532a9d73e862bb2582c26a173e71d614172 24-Oct-2011 Bill Wendling <isanbard@gmail.com> Cleanup. Get rid of the old SjLj EH lowering code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142800 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
fcc70a0e836d657f659184e0cff6655200087b61 24-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Sink an otherwise unused variable's initializer into the asserts that
used it. Fixes an unused variable warning from GCC on release builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142799 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
608a61f637d61dbd44f03e42b50d58c32e7b82b3 23-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Now that we have comparison on probabilities, add some static functions
to get important constant branch probabilities and use them for finding
the best branch out of a set of possibilities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142762 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
90be3bf90f7eb90eab4ab6945c4f8a862cbd8d1d 23-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Remove a commented out line of code that snuck by my auditing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142761 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
56b150b1969637892ab3484e08e69e9d12c9cf24 23-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Completely re-write the algorithm behind MachineBlockPlacement based on
discussions with Andy. Fundamentally, the previous algorithm is both
counter productive on several fronts and prioritizing things which
aren't necessarily the most important: static branch prediction.

The new algorithm uses the existing loop CFG structure information to
walk through the CFG itself to layout blocks. It coalesces adjacent
blocks within the loop where the CFG allows based on the most likely
path taken. Finally, it topologically orders the block chains that have
been formed. This allows it to choose a (mostly) topologically valid
ordering which still priorizes fallthrough within the structural
constraints.

As a final twist in the algorithm, it does violate the CFG when it
discovers a "hot" edge, that is an edge that is more than 4x hotter than
the competing edges in the CFG. These are forcibly merged into
a fallthrough chain.

Future transformations that need te be added are rotation of loop exit
conditions to be fallthrough, and better isolation of cold block chains.
I'm also planning on adding statistics to model how well the algorithm
does at laying out blocks based on the probabilities it receives.

The old tests mostly still pass, and I have some new tests to add, but
the nested loops are still behaving very strangely. This almost seems
like working-as-intended as it rotated the exit branch to be
fallthrough, but I'm not convinced this is actually the best layout. It
is well supported by the probabilities for loops we currently get, but
those are pretty broken for nested loops, so this may change later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142743 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
047485288f31849a3e66fa0563287523b635c68f 22-Oct-2011 Bill Wendling <isanbard@gmail.com> Make sure that the landing pads themselves have no PHI instructions in them.

The assumption in the back-end is that PHIs are not allowed at the start of the
landing pad block for SjLj exceptions.
<rdar://problem/10313708>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142689 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
50e0b213c6f1bd67b676df51a20856087c47ce5a 21-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Fix pr11194. When promoting and splitting integers we need to use
ZExtPromotedInteger and SExtPromotedInteger based on the operation we legalize.

SetCC return type needs to be legalized via PromoteTargetBoolean.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142660 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
c18a0906dacc5afb5772098f2d489ae5962e2184 21-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> 1. Fix the widening of SETCC in WidenVecOp_SETCC. Use the correct return CC type.
2. Fix a typo in CONCAT_VECTORS which exposed the bug in #1.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142648 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
1ff890ac0d8f1414f12bcefcefe03d0fd0316e8f 21-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Add loop aligning to MachineBlockPlacement based on review discussion so
it's a bit more plausible to use this instead of CodePlacementOpt. The
code for this was shamelessly stolen from CodePlacementOpt, and then
trimmed down a bit. There doesn't seem to be much utility in returning
true/false from this pass as we may or may not have rewritten all of the
blocks. Also, the statistic of counting how many loops were aligned
doesn't seem terribly important so I removed it. If folks would like it
to be included, I'm happy to add it back.

This was probably the most egregious of the missing features, and now
I'm going to start gathering some performance numbers and looking at
specific loop structures that have different layout between the two.

Test is updated to include both basic loop alignment and nested loop
alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142645 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
527334f7b96896ebb2388b8f96538326b8cc7812 21-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Implement a block placement pass based on the branch probability and
block frequency analyses. This differs substantially from the existing
block-placement pass in LLVM:

1) It operates on the Machine-IR in the CodeGen layer. This exposes much
more (and more precise) information and opportunities. Also, the
results are more stable due to fewer transforms ocurring after the
pass runs.
2) It uses the generalized probability and frequency analyses. These can
model static heuristics, code annotation derived heuristics as well
as eventual profile loading. By basing the optimization on the
analysis interface it can work from any (or a combination) of these
inputs.
3) It uses a more aggressive algorithm, both building chains from tho
bottom up to maximize benefit, and using an SCC-based walk to layout
chains of blocks in a profitable ordering without O(N^2) iterations
which the old pass involves.

The pass is currently gated behind a flag, and not enabled by default
because it still needs to grow some important features. Most notably, it
needs to support loop aligning and careful layout of loop structures
much as done by hand currently in CodePlacementOpt. Once it supports
these, and has sufficient testing and quality tuning, it should replace
both of these passes.

Thanks to Nick Lewycky and Richard Smith for help authoring & debugging
this, and to Jakob, Andy, Eric, Jim, and probably a few others I'm
forgetting for reviewing and answering all my questions. Writing
a backend pass is *sooo* much better now than it used to be. =D

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142641 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
LVMTargetMachine.cpp
achineBlockPlacement.cpp
e2338a7e52b768ef65b6c00e03a8ab34986b7796 21-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Remove a now dead function, fixing -Wunused-function warnings from
Clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142631 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
c762bb3e5e4c67063d135312abe691d1c425fb96 20-Oct-2011 Dan Gohman <gohman@apple.com> Delete the list-tdrr scheduler. Top-down schedulers are going away
because they don't support physical register dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f2a8d74936c4305461fdb98860c66f846f1bdbb9 20-Oct-2011 Chad Rosier <mcrosier@apple.com> Revert r142579, "Fix a type in the legalization of CONCAT_VECTORS". This is
causing one of the unit tests to infinitely loop, which resulted in the
buildbots stalling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
626011e7eb2323340260fd19b383686ad9a343ef 20-Oct-2011 Devang Patel <dpatel@apple.com> As Evan suggested, loads from constant pool are safe to speculate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142593 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
5e31f2f800bab77260176d39935c746b66a1889d 20-Oct-2011 Devang Patel <dpatel@apple.com> Add a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142592 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
7d068452f6f82f7be4ff6facf921ee558b24b088 20-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Fix a type in the legalization of CONCAT_VECTORS.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142579 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
3a8e6b7385b5470e5954cc36a5c6a556d7b90e04 19-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Improve code generation for vselect on SSE2:
When checking the availability of instructions using the TLI, a 'promoted'
instruction IS available. It means that the value is bitcasted to another type
for which there is an operation. The correct check for the availablity of an
instruction is to check if it should be expanded.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142542 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
f5e47ac596c698f1659c86bdad3a60056e68439c 14-Nov-2011 Chandler Carruth <chandlerc@gmail.com> It helps to deallocate memory as well as allocate it. =] This actually
cleans up all the chains allocated during the processing of each
function so that for very large inputs we don't just grow memory usage
without bound.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144533 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
bc83fcd9bd95f8eff83cd5ad77b0aa5312d8a6a5 14-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Remove an over-eager assert that was firing on one of the ARM regression
tests when I forcibly enabled block placement.

It is apparantly possible for an unanalyzable block to fallthrough to
a non-loop block. I don't actually beleive this is correct, I believe
that 'canFallThrough' is returning true needlessly for the code
construct, and I've left a bit of a FIXME on the verification code to
try to track down why this is coming up.

Anyways, removing the assert doesn't degrade the correctness of the algorithm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144532 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
fa97658b1c71f747cfe0f3e1f1bcbd86d7fa9f75 14-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Begin chipping away at one of the biggest quadratic-ish behaviors in
this pass. We're leaving already merged blocks on the worklist, and
scanning them again and again only to determine each time through that
indeed they aren't viable. We can instead remove them once we're going
to have to scan the worklist. This is the easy way to implement removing
them. If this remains on the profile (as I somewhat suspect it will), we
can get a lot more clever here, as the worklist's order is essentially
irrelevant. We can use swapping and fold the two loops to reduce
overhead even when there are many blocks on the worklist but only a few
of them are removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144531 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
340d596509129de8c3fa9dbe4184a2b148b78757 14-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Under the hood, MBPI is doing a linear scan of every successor every
time it is queried to compute the probability of a single successor.
This makes computing the probability of every successor of a block in
sequence... really really slow. ;] This switches to a linear walk of the
successors rather than a quadratic one. One of several quadratic
behaviors slowing this pass down.

I'm not really thrilled with moving the sum code into the public
interface of MBPI, but I don't (at the moment) have ideas for a better
interface. My direction I'm thinking in for a better interface is to
have MBPI actually retain much more state and make *all* of these
queries cheap. That's a lot of work, and would require invasive changes.
Until then, this seems like the least bad (ie, least quadratic)
solution. Suggestions welcome.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144530 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
c4e15628255b24cb17138404abe3d94bde811e25 14-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Reuse the logic in getEdgeProbability within getHotSucc in order to
correctly handle blocks whose successor weights sum to more than
UINT32_MAX. This is slightly less efficient, but the entire thing is
already linear on the number of successors. Calling it within any hot
routine is a mistake, and indeed no one is calling it. It also
simplifies the code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144527 91177308-0d34-0410-b5e6-96231b3b80d8
achineBranchProbabilityInfo.cpp
2770c141856eefda6a192622bf5fd5b06bef4963 14-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Fix an overflow bug in MachineBranchProbabilityInfo. This pass relied on
the sum of the edge weights not overflowing uint32, and crashed when
they did. This is generally safe as BranchProbabilityInfo tries to
provide this guarantee. However, the CFG can get modified during codegen
in a way that grows the *sum* of the edge weights. This doesn't seem
unreasonable (imagine just adding more blocks all with the default
weight of 16), but it is hard to come up with a case that actually
triggers 32-bit overflow. Fortuately, the single-source GCC build is
good at this. The solution isn't very pretty, but its no worse than the
previous code. We're already summing all of the edge weights on each
query, we can sum them, check for an overflow, compute a scale, and sum
them again.

I've included a *greatly* reduced test case out of the GCC source that
triggers it. It's a pretty lame test, as it clearly is just barely
triggering the overflow. I'd like to have something that is much more
definitive, but I don't understand the fundamental pattern that triggers
an explosion in the edge weight sums.

The buggy code is duplicated within this file. I'll colapse them into
a single implementation in a subsequent commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144526 91177308-0d34-0410-b5e6-96231b3b80d8
achineBranchProbabilityInfo.cpp
194eb71a11a77c7fb576780783a77e64924dfb10 14-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use getVNInfoBefore() when it makes sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144517 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveInterval.cpp
achineVerifier.cpp
plitKit.cpp
b5856c83ff4fd796c3eabccca2ed3b06173aeb51 14-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Teach machine block placement to cope with unnatural loops. These don't
get loop info structures associated with them, and so we need some way
to make forward progress selecting and placing basic blocks. The
technique used here is pretty brutal -- it just scans the list of blocks
looking for the first unplaced candidate. It keeps placing blocks like
this until the CFG becomes tractable.

The cost is somewhat unfortunate, it requires allocating a vector of all
basic block pointers eagerly. I have some ideas about how to simplify
and optimize this, but I'm trying to get the logic correct first.

Thanks to Benjamin Kramer for the reduced test case out of GCC. Sadly
there are other bugs that GCC is tickling that I'm reducing and working
on now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144516 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
6c9cc21d85cdef79b971f710ace287f3a2f847a3 14-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use kill slots instead of the previous slot in shrinkToUses.

It's more natural to use the actual end points.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144515 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c0f05b3c3fe191b09e04a5f3d16be9f4f8cc036e 13-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Cleanup some 80-columns violations and poor formatting. These snuck by
when I was reading through the code for style.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144513 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
1f81e316b042c02c841801a71e7439e166ffa2a0 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Terminate all dead defs at the dead slot instead of the 'next' slot.

This makes no difference for normal defs, but early clobber dead defs
now look like:

[Slot_EarlyClobber; Slot_Dead)

instead of:

[Slot_EarlyClobber; Slot_Register).

Live ranges for normal dead defs look like:

[Slot_Register; Slot_Dead)

as before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144512 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveIntervalAnalysis.cpp
plitKit.cpp
d14614e6777771f8fec3062bcaf2986c189ac84d 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify early clobber slots a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144507 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
10252db69bdddb445e53892b388fbe5921114b86 13-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Enhance the assertion mechanisms in place to make it easier to catch
when we fail to place all the blocks of a loop. Currently this is
happening for unnatural loops, and this logic helps more immediately
point to the problem.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144504 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
2debd48ca790ac01be6e12e094fdf4fdcadc8364 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename SlotIndexes to match how they are used.

The old naming scheme (load/use/def/store) can be traced back to an old
linear scan article, but the names don't match how slots are actually
used.

The load and store slots are not needed after the deferred spill code
insertion framework was deleted.

The use and def slots don't make any sense because we are using
half-open intervals as is customary in C code, but the names suggest
closed intervals. In reality, these slots were used to distinguish
early-clobber defs from normal defs.

The new naming scheme also has 4 slots, but the names match how the
slots are really used. This is a purely mechanical renaming, but some
of the code makes a lot more sense now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144503 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveDebugVariables.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveRangeEdit.cpp
achineVerifier.cpp
egisterCoalescer.cpp
enderMachineFunction.cpp
lotIndexes.cpp
piller.cpp
plitKit.cpp
plitter.cpp
trongPHIElimination.cpp
6527ecc9189058b762c699521462956995f59dd8 13-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Teach MBP to force-merge layout successors for blocks with unanalyzable
branches that also may involve fallthrough. In the case of blocks with
no fallthrough, we can still re-order the blocks profitably. For example
instruction decoding will in some cases continue past an indirect jump,
making laying out its most likely successor there profitable.

Note, no test case. I don't know how to write a test case that exercises
this logic, but it matches the described desired semantics in
discussions with Jakob and others. If anyone has a nice example of IR
that will trigger this, that would be lovely.

Also note, there are still assertion failures in real world code with
this. I'm digging into those next, now that I know this isn't the cause.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144499 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
f3fc0050abc1698504cbaede7766c4180c076928 13-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Hoist another gross nested loop into a helper method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144498 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
729bec89bd8c4368a741359fb882967ce01a6909 13-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Add a missing doxygen comment for a helper method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144497 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
9fd4e056e433b286f0e6576046ef2242365bfc38 13-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Hoist a nested loop into its own method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144496 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
df234353fb396e84e7a3a1cdd94f73681e65bd88 13-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Rewrite #3 of machine block placement. This is based somewhat on the
second algorithm, but only loosely. It is more heavily based on the last
discussion I had with Andy. It continues to walk from the inner-most
loop outward, but there is a key difference. With this algorithm we
ensure that as we visit each loop, the entire loop is merged into
a single chain. At the end, the entire function is treated as a "loop",
and merged into a single chain. This chain forms the desired sequence of
blocks within the function. Switching to a single algorithm removes my
biggest problem with the previous approaches -- they had different
behavior depending on which system triggered the layout. Now there is
exactly one algorithm and one basis for the decision making.

The other key difference is how the chain is formed. This is based
heavily on the idea Andy mentioned of keeping a worklist of blocks that
are viable layout successors based on the CFG. Having this set allows us
to consistently select the best layout successor for each block. It is
expensive though.

The code here remains very rough. There is a lot that needs to be done
to clean up the code, and to make the runtime cost of this pass much
lower. Very much WIP, but this was a giant chunk of code and I'd rather
folks see it sooner than later. Everything remains behind a flag of
course.

I've added a couple of tests to exercise the issues that this iteration
was motivated by: loop structure preservation. I've also fixed one test
that was exhibiting the broken behavior of the previous version.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144495 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
569561c7eedbd96b8f78c30505d2bdc265a1efc5 13-Nov-2011 NAKAMURA Takumi <geek4civic@gmail.com> Prune more RALinScan. RALinScan was also here!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144487 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
0cb80d9f0f71ff3faaf890bb9f023e53f4e8e3dc 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> More dead code elimination in VirtRegMap.

This thing is looking a lot like a virtual register map now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144486 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
cb39064e7aee2273da1d00e6b800db84ddc34b6b 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop tracking spill slot uses in VirtRegMap.

Nobody cared, StackSlotColoring scans the instructions to find used stack
slots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144485 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveDebugVariables.cpp
egAllocGreedy.cpp
piller.cpp
irtRegMap.cpp
irtRegMap.h
3cb0b0edd9ec537a9415eaff97edd042a07fd16e 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove dead code and data from VirtRegMap.

Most of this stuff was supporting the old deferred spill code insertion
mechanism. Modern spillers just edit machine code in place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144484 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
929e4da68ba95f0616172d326b8547f888f5eb37 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop tracking unused registers in VirtRegMap.

The information was only used by the register allocator in
StackSlotColoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144482 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
irtRegMap.cpp
irtRegMap.h
334575e79b93500547e73519f5a68c7d99d1efaf 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the -color-ss-with-regs option.

It was off by default.

The new register allocators don't have the problems that made it
necessary to reallocate registers during stack slot coloring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144481 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
6e49be7101a69b0af3a435060aa3b2b02c5d4c17 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete VirtRegRewriter.

And there was much rejoicing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144480 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
irtRegRewriter.cpp
irtRegRewriter.h
c3f2722615c600ac2cca9ac7aad6b7e05b840c97 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch PBQP to VRM's trivial rewriter.

The very complicated VirtRegRewriter is going away.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144479 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
f5eeaf221c0b8acdc1ffbd5cefe01b61474cb7e8 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete the old spilling framework from LiveIntervalAnalysis.

This is dead code, all register allocators use InlineSpiller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144478 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5d9b1091811106ebad0517a7e0c7936a95cb38ad 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete the 'standard' spiller with used the old spilling framework.

The current register allocators all use the inline spiller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144477 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
cfa81014099254bd42f246a4d434dc2ca1463c6c 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch PBQP to the modern InlineSpiller framework.

It is worth noting that the old spiller would split live ranges around
basic blocks. The new spiller doesn't do that.

PBQP should do its own live range splitting with
SplitEditor::splitSingleBlock() if desired. See
RAGreedy::tryBlockSplit().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144476 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
799c1ede712854f56ed85b74702e611b88b49436 12-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete the linear scan register allocator.

RegAllocGreedy has been the default for six months now.

Deleting RegAllocLinearScan makes it possible to also delete
VirtRegRewriter and clean up the spiller code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144475 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
asses.cpp
egAllocLinearScan.cpp
d1ac3a47f2c2993e8bbda0a9f1c843e9efd0f00f 12-Nov-2011 Rafael Espindola <rafael.espindola@gmail.com> The dwarf standard says that the only differences between a out-of-line
instance and a concrete inlined instance are the use of DW_TAG_subprogram
instead of DW_TAG_inlined_subroutine and the who owns the tree.

We were also omitting DW_AT_inline from the abstract roots. To fix this,
make sure we mark abstract instance roots with DW_AT_inline even when
we have only out-of-line instances referring to them with DW_AT_abstract_origin.

FileCheck is not a very good tool for tests like this, maybe we should add
a -verify mode to llvm-dwarfdump.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144441 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
501852423d34578bc41a745681783b04124dd0db 12-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Don't try to form pre/post-indexed loads/stores until after LegalizeDAG runs. Fixes PR11029.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144438 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGISel.cpp
0e3642a58746a26f50709179a2bcb25f335e2dac 12-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Some cleanup and bulletproofing for node replacement in LegalizeDAG. To maintain LegalizeDAG invariants, whenever we a node is replaced, we must attempt to delete it, and if it still
has uses after it is replaced (which can happen in rare cases due to CSE), we must revisit it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144432 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7b8c2f8587763e0a8ce48f9b7b67287930129c8d 11-Nov-2011 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Add a custom safepoint method, in order for language implementers to decide which machine instruction gets to be a safepoint.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144399 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
d61c34ba30888c49f4f223422f30b018a41594da 11-Nov-2011 Eric Christopher <echristo@apple.com> Initialize variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144360 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
d117fbb2311f6b05770ee680135eaac4eb6d16d1 11-Nov-2011 Eric Christopher <echristo@apple.com> If we have a DIE with an AT_specification use that instead of the normal
addr DIE when adding to the dwarf accelerator tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144354 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
01b55b4a808d04cbff7b62f55eaeb62019340bc0 10-Nov-2011 Rafael Espindola <rafael.espindola@gmail.com> Check in getOrCreateSubprogramDIE if a declaration exists and if so output
it first.

This is a more general fix to pr11300.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144324 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
8bd36eafca6992754006cbace5ba471884631d08 10-Nov-2011 Eric Christopher <echristo@apple.com> Make types and namespaces take multiple DIEs for the accelerator tables
as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144319 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
1b3f9198ab3880be34b6252423b9e388b5cd6a5e 10-Nov-2011 Eric Christopher <echristo@apple.com> Move type handling to make sure we get all created types that aren't
forward decls and have names into the dwarf accelerator types table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144306 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
0ffe2b4dd6f26fa19827f85bf9e4a766539a859c 10-Nov-2011 Eric Christopher <echristo@apple.com> Rework adding function names to the dwarf accelerator tables, allow
multiple dies per function and support C++ basenames.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144304 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
623a7e146bd86747dc46a6f8bb9993fc217d6b78 10-Nov-2011 Evan Cheng <evan.cheng@apple.com> Use a bigger hammer to fix PR11314 by disabling the "forcing two-address
instruction lower optimization" in the pre-RA scheduler.

The optimization, rather the hack, was done before MI use-list was available.
Now we should be able to implement it in a better way, perhaps in the
two-address pass until a MI scheduler is available.

Now that the scheduler has to backtrack to handle call sequences. Adding
artificial scheduling constraints is just not safe. Furthermore, the hack
is not taking all the other scheduling decisions into consideration so it's just
as likely to pessimize code. So I view disabling this optimization goodness
regardless of PR11314.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144267 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
17afb0664861507c9bd968f1678d8cca69b2851d 10-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Strip old implicit operands after foldMemoryOperand.

The TII.foldMemoryOperand hook preserves implicit operands from the
original instruction. This is not what we want when those implicit
operands refer to the register being spilled.

Implicit operands referring to other registers are preserved.

This fixes PR11347.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144247 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
0948f0acca745eef8db6922edfd8836f717396b4 09-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add check so we don't try to perform an impossible transformation. Fixes issue from PR11319.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144216 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
983c4578b0e84eb3b4ae319b49a8079c5cd322c6 09-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144194 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ef0b3ca3a8935b5390633dc7bb4adcdb99e0c26a 09-Nov-2011 Duncan Sands <baldrick@free.fr> Speculatively revert commit 144124 (djg) in the hope that the 32 bit
dragonegg self-host buildbot will recover (it is complaining about object
files differing between different build stages). Original commit message:

Add a hack to the scheduler to disable pseudo-two-address dependencies in
basic blocks containing calls. This works around a problem in which
these artificial dependencies can get tied up in calling seqeunce
scheduling in a way that makes the graph unschedulable with the current
approach of using artificial physical register dependencies for calling
sequences. This fixes PR11314.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144188 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
0c45f7d1a7a158e94817b21b9cca5456414a4760 09-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Take advantage of the zero byte in StringMap when emitting dwarf stringpool entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144184 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7deb94ae9fbafe44094e4cd58a7cdc2efcb40e73 09-Nov-2011 Logan Chien <loganchien@google.com> Disable vector element type promotion by default.

Promote element is an optimization which tries to promote
the vector type with small element type to the vector type
with large element type, such as <2 x i8> -> <2 x i32>.
However, the code generator (instruction selector and
type legalizer) of ARM is not ready for this optimization.
As a result, ARM backend is not working when NEON is enabled.
By disabling this optimization, it is possible to enable
NEON for ARM.

Note: This is only a workaround for b/5270646 , and should
be reverted after the upstream completes the implementation
of the promote elements optimization on ARM target.

Change-Id: I80d5a33634e4eececd54d1c55f524ecda48ef877
electionDAG/TargetLowering.cpp
c6bcf4315c568610b89e4c79898cfe36ff2e4905 09-Nov-2011 Devang Patel <dpatel@apple.com> Remove extra ';'


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144172 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.h
dfa30e1ab243990eda4732a6dffb91e965e7a755 09-Nov-2011 Eric Christopher <echristo@apple.com> Remove the pubnames section, no one consumes it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144169 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
f4c4768fb2277cb940a90cb2f0e9a747ebc671c3 09-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Collapse DomainValues across loop back-edges.

During the initial RPO traversal of the basic blocks, remember the ones
that are incomplete because of back-edges from predecessors that haven't
been visited yet.

After the initial RPO, revisit all those loop headers so the incoming
DomainValues on the back-edges can be properly collapsed.

This will properly fix execution domains on software pipelined code,
like the included test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144151 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
dbc372f47e3a77343e6ef1ab4a88bc46f532f774 09-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Link to the live DomainValue after merging.

When merging two uncollapsed DomainValues, place a link to the active
DomainValue from the passive DomainValue. This allows old stale
references to the passive DomainValue to be updated to point to the
active DomainValue.

The new resolve() function finds the active DomainValue and updates the
pointer.

This change makes old live-out lists more useful since they may contain
uncollapsed DomainValues that have since been merged into other
DomainValues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144149 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
737e9a2db27b9c3b212ff64fda7af5537ecbfb45 09-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Track reference count independently from clear().

This allows clear() to be called on a DomainValue with references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144147 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
0fdb05deb9ccbebe55c05f2fb4af6ea813c97a98 08-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Call release() directly when cleaning up the remaining DomainValues.

There is no need to involve the LiveRegs array and kill() any longer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144133 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
6bcb9a783b3220561ee3413322ad1037983d63cb 08-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename all methods to follow style guide.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144132 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
35e932483a86a2b417d874648b903f6290ec3157 08-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle reference counts in one function: release().

This new function will decrement the reference count, and collapse a
domain value when the last reference is gone.

This simplifies DomainValue reference counting, and decouples it from
the LiveRegs array.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144131 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
74d8a87f40dd89ec263071c0af4d77104b166f4a 08-Nov-2011 Eric Christopher <echristo@apple.com> Also add the linkage name to the name accelerator tables if it exists
and is different than the normal name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144130 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
9cae2d2225ba58a70ef8ff057feab6873f4af520 08-Nov-2011 Dan Gohman <gohman@apple.com> Add a hack to the scheduler to disable pseudo-two-address dependencies in
basic blocks containing calls. This works around a problem in which
these artificial dependencies can get tied up in calling seqeunce
scheduling in a way that makes the graph unschedulable with the current
approach of using artificial physical register dependencies for calling
sequences. This fixes PR11314.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
e1b3e11c15b705ad55c5ff2b04a0b790599013ea 08-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Clear old DomainValue after merging.

The old value may still be referenced by some live-out list, and we
don't wan't to collapse those instructions twice.

This fixes the "Can only swizzle VMOVD" assertion in some armv7 SPEC
builds.

<rdar://problem/10413292>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144117 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
67a917d495d38004e3a4a134eec81b312a71a164 08-Nov-2011 Eric Christopher <echristo@apple.com> Add the base ObjC method name to the names lookup table as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144105 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5207bf2177e9ef1e68d9408ea4b44f1c8a5ef9c0 08-Nov-2011 Lang Hames <lhames@gmail.com> Lower mem-ops to unaligned i32/i16 load/stores on ARM where supported.

Add support for trimming constants to GetDemandedBits. This fixes some funky
constant generation that occurs when stores are expanded for targets that don't
support unaligned stores natively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144102 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d752e0f7e64585839cb3a458ef52456eaebbea3c 08-Nov-2011 Pete Cooper <peter_cooper@apple.com> Added invariant field to the DAG.getLoad method and changed all calls.

When this field is true it means that the load is from constant (runt-time or compile-time) and so can be hoisted from loops or moved around other memory accesses


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144100 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
30b4d8b83b7b3995ac1b53f35d3110d48676b187 08-Nov-2011 Eric Christopher <echristo@apple.com> A few more places where we can avoid multiple size queries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144099 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
ec8ffc29c04e5e11d8637f1ba1df67d97bafb499 08-Nov-2011 Eric Christopher <echristo@apple.com> Don't evaluate Data.size() on every iteration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144095 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
2efa35f779213a828fa15d6aa3a508fc81d75d73 08-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add a bunch of calls to RemoveDeadNode in LegalizeDAG, so legalization doesn't get confused by CSE later on. Fixes PR11318.

Re-commit of r144034, with an extra fix so that RemoveDeadNode doesn't blow up.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144055 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
58dd0fec4d4b8b1dc87e8a6a080b776d0d425cad 08-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Revert r144034 while I try to track down a crash.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144044 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e13eba26711c8ea48059697e406f90cebccc9243 08-Nov-2011 Bill Wendling <isanbard@gmail.com> This code is dead, what with the new EH model and the auto-upgraders in place.
Delete!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144043 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
b26c7727c9a45613d9bae69995cfd719c57c5614 08-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Kill and collapse outstanding DomainValues.

DomainValues that are only used by "don't care" instructions are now
collapsed to the first possible execution domain after all basic blocks
have been processed. This typically means the PS domain on x86.

For example, the vsel_i64 and vsel_double functions in sse2-blend.ll are
completely collapsed to the PS domain instead of containing a mix of
execution domains created by isel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144037 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
1b4f6f2532e9a6a99fcab5fde5b4a2187c9c9c2b 07-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add a bunch of calls to RemoveDeadNode in LegalizeDAG, so legalization doesn't get confused by CSE later on. Fixes PR11318.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144034 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
56c2b109f73f895b591d2303128c8adcf0bc2c3d 07-Nov-2011 Eric Christopher <echristo@apple.com> Add all completed and named types to the dwarf type accelerator tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144027 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
a59ce0379134b249a3c949f7dcd6ec3566c4d7e3 07-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a reverse post order instead of a DFS order.

The enterBasicBlock() function is combining live-out values from
predecessor blocks. The RPO traversal means that more predecessors
have been visited when that happens, only back-edges are missing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144025 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
2dd5e1e64d718a0aeaaf988a54d5acc0ec70f243 07-Nov-2011 Eric Christopher <echristo@apple.com> Move the hash function to using and taking a StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144024 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.h
e77546c3c3634863a79ffc3adea52882685db454 07-Nov-2011 Eric Christopher <echristo@apple.com> Simple destructor to delete the hash data we created earlier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144023 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
25265d0e7af83f30e64851458c29c5b0c01befeb 07-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract two methods. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144020 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
d8f9f342307b1351a05c081cd5c7fe92678d3c1f 07-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> MBB doesn't need to be a class member.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144015 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
cd7dcad82a30363132d2dbabb45d60f1d2164a92 07-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix pass name after the source was moved.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144014 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
2ea402541fa1bd2aa9942abf7b281ef01f9a10ff 07-Nov-2011 Eric Christopher <echristo@apple.com> Use StringRef::startswith to do some string comparisons.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143982 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c545322c276f933759e4140027e5f84e480d15d6 07-Nov-2011 Eric Christopher <echristo@apple.com> Avoid the use of a local temporary for comment twines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143974 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
7135457efff83960bfad420f2dc3a5b4b58e8d07 07-Nov-2011 Eric Christopher <echristo@apple.com> Allow for the case where the name of the subprogram is "".

Fixes a self-host error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143970 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
19a4daff9bbe18dab2620e25ac6cbf0635639ec6 07-Nov-2011 Richard Osborne <richard@xmos.com> Don't introduce custom nodes after legalization in TargetLowering::BuildSDIV()
and TargetLowering::BuildUDIV(). Fixes PR11283


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
76a4e1a0682c8e855f8b7c0a05d802dce8c07d7a 07-Nov-2011 Eric Christopher <echristo@apple.com> Remove unnecessary addition to API. Replace with something much simpler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143925 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
2c802b7e88718f2c033fe1e7e602e341501b5d80 07-Nov-2011 Eric Christopher <echristo@apple.com> Add new files to cmake.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143924 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
09ac3d841367d5d56328eade506c951e0dc3a72d 07-Nov-2011 Eric Christopher <echristo@apple.com> Add the support code to enable the dwarf accelerator tables. Upcoming patches
to fix the types section (all types, not just global types), and testcases.

The code to do the final emission is disabled by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143923 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.h
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
bcbd3a4637f33036d05833364e180f9dfaabb67c 07-Nov-2011 Eric Christopher <echristo@apple.com> Add a new dwarf accelerator table prototype with the goal of replacing
the pubnames and pubtypes tables. LLDB can currently use this format
and a full spec is forthcoming and submission for standardization is planned.

A basic summary:

The dwarf accelerator tables are an indirect hash table optimized
for null lookup rather than access to known data. They are output into
an on-disk format that looks like this:

.-------------.
| HEADER |
|-------------|
| BUCKETS |
|-------------|
| HASHES |
|-------------|
| OFFSETS |
|-------------|
| DATA |
`-------------'

where the header contains a magic number, version, type of hash function,
the number of buckets, total number of hashes, and room for a special
struct of data and the length of that struct.

The buckets contain an index (e.g. 6) into the hashes array. The hashes
section contains all of the 32-bit hash values in contiguous memory, and
the offsets contain the offset into the data area for the particular
hash.

For a lookup example, we could hash a function name and take it modulo the
number of buckets giving us our bucket. From there we take the bucket value
as an index into the hashes table and look at each successive hash as long
as the hash value is still the same modulo result (bucket value) as earlier.
If we have a match we look at that same entry in the offsets table and
grab the offset in the data for our final match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143921 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfAccelTable.cpp
smPrinter/DwarfAccelTable.h
d8a8752d5b7f546fd7ebb295366a43b2b76afbd6 07-Nov-2011 Eric Christopher <echristo@apple.com> Expose a way to get the beginning of the dwarf string section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143920 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6370118b16da30f20b5a68ccb814f3a8b8bc58b6 07-Nov-2011 Eric Christopher <echristo@apple.com> Fix up comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143919 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
33aa20f737e9ebb3c29c93508da0c041a6a772c7 07-Nov-2011 Eric Christopher <echristo@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143918 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
c25c90897781f116d5dbabab170bafcf65900fa7 05-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Add an option to pad an uleb128 to MCObjectWriter and remove the uleb128 encoding from the DWARF asm printer.

As a side effect we now print dwarf ulebs with .ascii directives.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143809 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
41a964931a0e0943ceef28b0c691843bf8ca87b7 05-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Add more PRI.64 macros for MSVC and use them throughout the codebase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143799 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
9c58aa743d5232a3eb78c0ee329281709a50b2f6 05-Nov-2011 Pete Cooper <peter_cooper@apple.com> Added missing &. Fixes <rdar://problem/10393723>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143753 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
b0527283682c5f44fae24ae0a7e2e794f019fade 04-Nov-2011 Rafael Espindola <rafael.espindola@gmail.com> Emit declarations before definitions if they are available. This causes DW_AT_specification to
point back in the file in the included testcase. Fixes PR11300.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143726 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
65fd6564b8aedd053845c81ede1ac594acb470e4 03-Nov-2011 Dan Gohman <gohman@apple.com> Reapply r143206, with fixes. Disallow physical register lifetimes
across calls, and only check for nested dependences on the special
call-sequence-resource register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143660 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
71fccadbed49b555d9582198ee58301494109410 03-Nov-2011 Pete Cooper <peter_cooper@apple.com> Reverted r143600 - selector reference change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143646 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a3a2dfd4a2a8265a9a0c962cb776e2e6ba123956 03-Nov-2011 Daniel Dunbar <daniel@zuster.org> build: Add initial cut at LLVMBuild.txt files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143634 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/LLVMBuild.txt
LVMBuild.txt
electionDAG/LLVMBuild.txt
d1ffc739c1f88352c79a63ff17b828b3a529777e 03-Nov-2011 Pete Cooper <peter_cooper@apple.com> Treat objc selector reference globals as invariant so that MachineLICM can hoist them out of loops. Fixes <rdar://problem/6027699>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143600 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9c674bb012c23622bd31d5e82cb0baeda9aac3a5 03-Nov-2011 Bill Wendling <isanbard@gmail.com> An array of chars of length 8 will also cause the stack protector to be inserted
into the function. Reflect that here so that the array will be placed next to
the SP.
<rdar://problem/10128329>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143590 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
6c1a703e5418b2ba9d7b47b0c9345e9928ea5a68 02-Nov-2011 Nick Lewycky <nicholas@mxc.ca> Don't emit a directory entry for the value in DW_AT_comp_dir, that is always
implied by directory index zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143570 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
37efc9fe42a4867c81526cac7fca9fe0ea04a484 02-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Begin collecting some of the statistics for block placement discussed on
the mailing list. Suggestions for other statistics to collect would be
awesome. =]

Currently these are implemented as a separate pass guarded by a separate
flag. I'm not thrilled by that, but I wanted to be able to collect the
statistics for the old code placement as well as the new in order to
have a point of comparison. I'm planning on folding them into the single
pass if / when there is only one pass of interest.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143537 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
LVMTargetMachine.cpp
achineBlockPlacement.cpp
7bdf0060a00f04ad03d3c6f294d8db6f4951dbc2 01-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Update split candidate correctly when interference cache is full.

No test case, spotted by inspection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143407 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
f47368bbbe1ebcf77efd202362bfd1125a2126c7 31-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Cleanup. Document. Make sure that this build_vector optimization only runs before the op legalizer and that the used type is legal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143358 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
50bf86ea8a757be4059a56a2c38270873dcf9e2e 30-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Silence compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143308 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b00418af67b36dcd7d70a268ebba3480c1011348 29-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Add a new DAGCombine optimization for BUILD_VECTOR.
If all of the inputs are zero/any_extended, create a new simple BV
which can be further optimized by other BV optimizations.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143297 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6f3ddef7c51f03945644ad0e69068dfb24d4b092 29-Oct-2011 Dan Gohman <gohman@apple.com> Revert r143206, as there are still some failing tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143262 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
bf923b815d6da97367e3eedab69230918bf128a3 28-Oct-2011 Dan Gohman <gohman@apple.com> Reapply r143177 and r143179 (reverting r143188), with scheduler
fixes: Use a separate register, instead of SP, as the
calling-convention resource, to avoid spurious conflicts with
actual uses of SP. Also, fix unscheduling of calling sequences,
which can be triggered by pseudo-two-address dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143206 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
c3e48c38bf87ad081904eccf16e4ddd99c36d070 28-Oct-2011 NAKAMURA Takumi <geek4civic@gmail.com> Dwarf: [PR11022] Fix emitting DW_AT_const_value(>i64), to be host-endian-neutral.

Don't assume APInt::getRawData() would hold target-aware endianness nor host-compliant endianness. rawdata[0] holds most lower i64, even on big endian host.

FIXME: Add a testcase for big endian target.

FIXME: Ditto on CompileUnit::addConstantFPValue() ?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143194 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
91bbe237167bf84ce41d01eff3c028ff2b10be26 28-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Use BranchProbability compare operators.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143190 91177308-0d34-0410-b5e6-96231b3b80d8
achineBranchProbabilityInfo.cpp
62c1d00dfd38996f381edae55e1028b8e52a1107 28-Oct-2011 Duncan Sands <baldrick@free.fr> Speculatively disable Dan's commits 143177 and 143179 to see if
it fixes the dragonegg self-host (it looks like gcc is miscompiled).
Original commit messages:
Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW
on every node as it legalizes them. This makes it easier to use
hasOneUse() heuristics, since unneeded nodes can be removed from the
DAG earlier.

Make LegalizeOps visit the DAG in an operands-last order. It previously
used operands-first, because LegalizeTypes has to go operands-first, and
LegalizeTypes used to be part of LegalizeOps, but they're now split.
The operands-last order is more natural for several legalization tasks.
For example, it allows lowering code for nodes with floating-point or
vector constants to see those constants directly instead of seeing the
lowered form (often constant-pool loads). This makes some things
somewhat more complicated today, though it ought to allow things to be
simpler in the future. It also fixes some bugs exposed by Legalizing
using RAUW aggressively.

Remove the part of LegalizeOps that attempted to patch up invalid chain
operands on libcalls generated by LegalizeTypes, since it doesn't work
with the new LegalizeOps traversal order. Instead, define what
LegalizeTypes is doing to be correct, and transfer the responsibility
of keeping calls from having overlapping calling sequences into the
scheduler.

Teach the scheduler to model callseq_begin/end pairs as having a
physical register definition/use to prevent calls from having
overlapping calling sequences. This is also somewhat complicated, though
there are ways it might be simplified in the future.

This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others.
Please direct high-level questions about this patch to management.

Delete #if 0 code accidentally left in.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143188 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
6a7efcfc02ea5370fb0da66d750165a3ffe93ab7 28-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Always use the string pool, even when it makes the .o larger. This may help
tools that read the debug info in the .o files by making the DIE sizes more
consistent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143186 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfCompileUnit.cpp
3799efab8c028c8928bf55ddd7d39da0e6b62cea 28-Oct-2011 Dan Gohman <gohman@apple.com> Delete #if 0 code accidentally left in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143179 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2ba60e593012ba9b2a9d20b86733eadca288bcb2 28-Oct-2011 Dan Gohman <gohman@apple.com> Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW
on every node as it legalizes them. This makes it easier to use
hasOneUse() heuristics, since unneeded nodes can be removed from the
DAG earlier.

Make LegalizeOps visit the DAG in an operands-last order. It previously
used operands-first, because LegalizeTypes has to go operands-first, and
LegalizeTypes used to be part of LegalizeOps, but they're now split.
The operands-last order is more natural for several legalization tasks.
For example, it allows lowering code for nodes with floating-point or
vector constants to see those constants directly instead of seeing the
lowered form (often constant-pool loads). This makes some things
somewhat more complicated today, though it ought to allow things to be
simpler in the future. It also fixes some bugs exposed by Legalizing
using RAUW aggressively.

Remove the part of LegalizeOps that attempted to patch up invalid chain
operands on libcalls generated by LegalizeTypes, since it doesn't work
with the new LegalizeOps traversal order. Instead, define what
LegalizeTypes is doing to be correct, and transfer the responsibility
of keeping calls from having overlapping calling sequences into the
scheduler.

Teach the scheduler to model callseq_begin/end pairs as having a
physical register definition/use to prevent calls from having
overlapping calling sequences. This is also somewhat complicated, though
there are ways it might be simplified in the future.

This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others.
Please direct high-level questions about this patch to management.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143177 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
390c40d96adb2eb4a778a0890c6c8743057e289e 27-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Teach our Dwarf emission to use the string pool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143097 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
fd58cd75630b1a2ace727d6caaee8c9308ba0240 27-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Don't crash on 128-bit sdiv by constant. Found by inspection.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143095 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
15701f8969fcb36899a75ca2df6fdcbc52141106 27-Oct-2011 Lang Hames <lhames@gmail.com> Rename NonScalarIntSafe to something more appropriate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143080 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
746cb670c3cd4f79b288d56d8e9f195685a5381a 27-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Reflow lines, fix comments for doxygen style, fix whitespace. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143074 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
a921a468542a804ccebb680935175798ac48868b 26-Oct-2011 Duncan Sands <baldrick@free.fr> Simplify SplitVecRes_UnaryOp by removing all the code that is
trying to legalize the operand types when only the result type
is required to be legalized - the type legalization machinery
will get round to the operands later if they need legalizing.
There can be a point to legalizing operands in parallel with
the result: when this saves compile time or results in better
code. There was only one case in which this was true: when
the operand is also split, so keep the logic for that bit.
As a result of this change, additional operand legalization
methods may need to be introduced to handle nodes where the
result and operand types can differ, like SIGN_EXTEND, but
the testsuite doesn't contain any tests where this is the case.
In any case, it seems better to require such methods (and die
with an assert if they doesn't exist) than to quietly produce
wrong code if we forgot to special case the node in
SplitVecRes_UnaryOp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
794439183a29102c784484720c3d0b1960b297e6 26-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't use floating point to do an integer's job.

This code makes different decisions when compiled into x87 instructions
because of different rounding behavior. That caused phase 2/3
miscompares on 32-bit Linux when the phase 1 compiler was built with gcc
(using x87), and the phase 2 compiler was built with clang (using SSE).

This fixes PR11200.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143006 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
73b5bb38650a1a1441fcf210c79f188d08990946 26-Oct-2011 Evan Cheng <evan.cheng@apple.com> Disable LICM speculation in high register pressure situation again now that Devang has fixed other issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143003 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
a823e3d42c48ceeb2f5011f7402031bf02fa0fe1 26-Oct-2011 Bill Wendling <isanbard@gmail.com> Reapply r142920 with fix:

An MBB which branches to an EH landing pad shouldn't be considered for tail merging.

In SjLj EH, the jump to the landing pad is not done explicitly through a branch
statement. The EH landing pad is added as a successor to the throwing
BB. Because of that however, the branch folding pass could mistakenly think that
it could merge the throwing BB with another BB. This isn't safe to do.
<rdar://problem/10334833>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143001 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
9312613137caf4f1e7b4747964b8daf3de79c190 25-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Remove a couple redundant checks.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142959 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ca30f75703fa4f032b256bba445608c79e2bd82c 25-Oct-2011 Jim Grosbach <grosbach@apple.com> Make assert() message more informative.

PR11217.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142956 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
51583ce4b6938a44a246df65977e29e0509a7f5b 25-Oct-2011 Duncan Sands <baldrick@free.fr> Revert commit 142891. Takumi bisected the tablegen miscompiles
down to this commit. Original commit message:

An MBB which branches to an EH landing pad shouldn't be considered for tail merging.

In SjLj EH, the jump to the landing pad is not done explicitly through a branch
statement. The EH landing pad is added as a successor to the throwing
BB. Because of that however, the branch folding pass could mistakenly think that
it could merge the throwing BB with another BB. This isn't safe to do.
<rdar://problem/10334833>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142920 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
000b9bdd3396ca322413c4e419d41cd3a6235e74 25-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Remove dead enum value. There is no DIESectionOffset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142912 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
fd747b24a3fb08805336f2070b9316ded6b57810 25-Oct-2011 Eric Christopher <echristo@apple.com> Remove unused forward decl.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142892 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
86ed4089e367956ea7134dd7e99334a084fec6df 25-Oct-2011 Bill Wendling <isanbard@gmail.com> An MBB which branches to an EH landing pad shouldn't be considered for tail merging.

In SjLj EH, the jump to the landing pad is not done explicitly through a branch
statement. The EH landing pad is added as a successor to the throwing
BB. Because of that however, the branch folding pass could mistakenly think that
it could merge the throwing BB with another BB. This isn't safe to do.
<rdar://problem/10334833>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142891 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
671215464c8335e383fa2db90df2eab73ef83b10 25-Oct-2011 Bill Wendling <isanbard@gmail.com> Check the visibility of the global variable before placing it into the stubs
table. A hidden variable could potentially end up in both lists.
<rdar://problem/10336715>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142869 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
88d734de43984df03ed909f9163986fe873b8d1e 24-Oct-2011 Douglas Gregor <dgregor@apple.com> Really unbreak CMake build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142822 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
91336cde455c21429ae89c075a435503d1e84686 24-Oct-2011 Douglas Gregor <dgregor@apple.com> Unbreak CMake build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142821 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
83dae4466e3abfd1493453588809e9f9ff10ebca 24-Oct-2011 Dan Gohman <gohman@apple.com> Delete the top-down "Latency" scheduler. Top-down scheduling doesn't handle
physreg dependencies, and upcoming codegen changes will require proper
physreg dependence handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142816 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
d5333d6922fa5ce8954df600a61605e4ca1d92f6 24-Oct-2011 Dan Gohman <gohman@apple.com> Delete the Latency scheduling preference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142815 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
692c1d85353249124caa1885cfeda513146c6d81 24-Oct-2011 Dan Gohman <gohman@apple.com> Change this overloaded use of Sched::Latency to be an overloaded
use of Sched::ILP instead, as Sched::Latency is going away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142813 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
8c2d270ae8b460912633883f24346c0763373a56 24-Oct-2011 Dan Gohman <gohman@apple.com> Change the default scheduler from Latency to ILP, since Latency
is going away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142810 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d2dae0cfa00ca3c5164b2543ed712ace6c08386b 24-Oct-2011 Bill Wendling <isanbard@gmail.com> Cleanup. Get rid of the old SjLj EH lowering code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142800 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
e4617c04c863b2fb342d08408d45ba3bf50b97a0 24-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Sink an otherwise unused variable's initializer into the asserts that
used it. Fixes an unused variable warning from GCC on release builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142799 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
66d847c8ffff5199248fccc10cb27f80c5cf9ebe 23-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Now that we have comparison on probabilities, add some static functions
to get important constant branch probabilities and use them for finding
the best branch out of a set of possibilities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142762 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
4f780536953cdd3d92c21111301763ddd57ab720 23-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Remove a commented out line of code that snuck by my auditing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142761 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
3071363bcdfd75e81326b4033970d8bee5b1b376 23-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Completely re-write the algorithm behind MachineBlockPlacement based on
discussions with Andy. Fundamentally, the previous algorithm is both
counter productive on several fronts and prioritizing things which
aren't necessarily the most important: static branch prediction.

The new algorithm uses the existing loop CFG structure information to
walk through the CFG itself to layout blocks. It coalesces adjacent
blocks within the loop where the CFG allows based on the most likely
path taken. Finally, it topologically orders the block chains that have
been formed. This allows it to choose a (mostly) topologically valid
ordering which still priorizes fallthrough within the structural
constraints.

As a final twist in the algorithm, it does violate the CFG when it
discovers a "hot" edge, that is an edge that is more than 4x hotter than
the competing edges in the CFG. These are forcibly merged into
a fallthrough chain.

Future transformations that need te be added are rotation of loop exit
conditions to be fallthrough, and better isolation of cold block chains.
I'm also planning on adding statistics to model how well the algorithm
does at laying out blocks based on the probabilities it receives.

The old tests mostly still pass, and I have some new tests to add, but
the nested loops are still behaving very strangely. This almost seems
like working-as-intended as it rotated the exit branch to be
fallthrough, but I'm not convinced this is actually the best layout. It
is well supported by the probabilities for loops we currently get, but
those are pretty broken for nested loops, so this may change later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142743 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
0ad56122e585d3d27ea852115390a9e53cabc9d5 22-Oct-2011 Bill Wendling <isanbard@gmail.com> Make sure that the landing pads themselves have no PHI instructions in them.

The assumption in the back-end is that PHIs are not allowed at the start of the
landing pad block for SjLj exceptions.
<rdar://problem/10313708>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142689 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
a054bcb4cf26f9710bf6b7b256ba7313260a7335 21-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Fix pr11194. When promoting and splitting integers we need to use
ZExtPromotedInteger and SExtPromotedInteger based on the operation we legalize.

SetCC return type needs to be legalized via PromoteTargetBoolean.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142660 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
4bd222ae26d0411d5c67fd0ab5c043422b5f201b 21-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> 1. Fix the widening of SETCC in WidenVecOp_SETCC. Use the correct return CC type.
2. Fix a typo in CONCAT_VECTORS which exposed the bug in #1.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142648 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
4a85cc982a977ddeb0249eb9304326deabe3a7a5 21-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Add loop aligning to MachineBlockPlacement based on review discussion so
it's a bit more plausible to use this instead of CodePlacementOpt. The
code for this was shamelessly stolen from CodePlacementOpt, and then
trimmed down a bit. There doesn't seem to be much utility in returning
true/false from this pass as we may or may not have rewritten all of the
blocks. Also, the statistic of counting how many loops were aligned
doesn't seem terribly important so I removed it. If folks would like it
to be included, I'm happy to add it back.

This was probably the most egregious of the missing features, and now
I'm going to start gathering some performance numbers and looking at
specific loop structures that have different layout between the two.

Test is updated to include both basic loop alignment and nested loop
alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142645 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockPlacement.cpp
db35087d21f09fdde81cab7e12fc0bcd8b7d00e9 21-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Implement a block placement pass based on the branch probability and
block frequency analyses. This differs substantially from the existing
block-placement pass in LLVM:

1) It operates on the Machine-IR in the CodeGen layer. This exposes much
more (and more precise) information and opportunities. Also, the
results are more stable due to fewer transforms ocurring after the
pass runs.
2) It uses the generalized probability and frequency analyses. These can
model static heuristics, code annotation derived heuristics as well
as eventual profile loading. By basing the optimization on the
analysis interface it can work from any (or a combination) of these
inputs.
3) It uses a more aggressive algorithm, both building chains from tho
bottom up to maximize benefit, and using an SCC-based walk to layout
chains of blocks in a profitable ordering without O(N^2) iterations
which the old pass involves.

The pass is currently gated behind a flag, and not enabled by default
because it still needs to grow some important features. Most notably, it
needs to support loop aligning and careful layout of loop structures
much as done by hand currently in CodePlacementOpt. Once it supports
these, and has sufficient testing and quality tuning, it should replace
both of these passes.

Thanks to Nick Lewycky and Richard Smith for help authoring & debugging
this, and to Jakob, Andy, Eric, Jim, and probably a few others I'm
forgetting for reviewing and answering all my questions. Writing
a backend pass is *sooo* much better now than it used to be. =D

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142641 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
LVMTargetMachine.cpp
achineBlockPlacement.cpp
2e5a5ee613fae456a8ed4282acede56860682f4f 21-Oct-2011 Logan Chien <loganchien@google.com> Apply changes to migrate to upstream Oct 20th 2011.

Change-Id: I2bb819151f3fa5ce18690ef373bf071205d3f278
ndroid.mk
smPrinter/Android.mk
electionDAG/Android.mk
ec0e5475fdb9d7d3a4d8206d84f469bc83be1cf1 21-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Remove a now dead function, fixing -Wunused-function warnings from
Clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142631 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
ff764815e6531be6b2d944bd6a3f1fcfc682db01 20-Oct-2011 Dan Gohman <gohman@apple.com> Delete the list-tdrr scheduler. Top-down schedulers are going away
because they don't support physical register dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
e65177f965063c16321166c13d90a91aa57b5ee8 20-Oct-2011 Chad Rosier <mcrosier@apple.com> Revert r142579, "Fix a type in the legalization of CONCAT_VECTORS". This is
causing one of the unit tests to infinitely loop, which resulted in the
buildbots stalling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
06e16bbec02d289552f942abe7a6353b51cdb5ea 20-Oct-2011 Devang Patel <dpatel@apple.com> As Evan suggested, loads from constant pool are safe to speculate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142593 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
e6de9f30cbdbeca7f6632420f2cd5728d9a2dc1c 20-Oct-2011 Devang Patel <dpatel@apple.com> Add a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142592 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
28e65b52458f944c8204fecf7eab466c90b6686f 20-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Fix a type in the legalization of CONCAT_VECTORS.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142579 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
815af82b74fa0901e818f5d16ee418675f399101 19-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Improve code generation for vselect on SSE2:
When checking the availability of instructions using the TLI, a 'promoted'
instruction IS available. It means that the value is bitcasted to another type
for which there is an operation. The correct check for the availablity of an
instruction is to check if it should be expanded.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142542 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
0ebc07a576037e4e36f68bf5cece32740ca120c0 19-Oct-2011 Logan Chien <loganchien@google.com> Merge with LLVM upstream 2011/10/20 (r142530)

Conflicts:
lib/Support/Unix/Host.inc

Change-Id: Idc00db3b63912dca6348bddd9f8a1af2a8d5d147
ca58c722674ed7b564f68d1d9697cd01504edef2 19-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Add support for the vector-widening of vselect and vector-setcc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142488 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
20b2b788b4f3914757789fe1ee835b70759ce4ec 19-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Missed a spot!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142436 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
024170f859112518adb5796060607574bf1e6015 19-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Fix some typo/formatting issues. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142435 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.h
fbf19ef1860e33b202ff73a269b8b0bf9157460e 19-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Fix a bug in the legalization of vector anyext-load and trunc-store. Mem Index starts with zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142434 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
db2b18febaea04d01b3dcb24fc44d5be7bd27a00 18-Oct-2011 Bob Wilson <bob.wilson@apple.com> Fix a DAG combiner assertion failure when constant folding BUILD_VECTORS.

svn r139159 caused SelectionDAG::getConstant() to promote BUILD_VECTOR operands
with illegal types, even before type legalization. For this testcase, that led
to one BUILD_VECTOR with i16 operands and another with promoted i32 operands,
which triggered the assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142370 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
17001ce25cc205ac1cd2604492c2bce310964220 18-Oct-2011 Duncan Sands <baldrick@free.fr> Fix a bunch of unused variable warnings when doing a release
build with gcc-4.6.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
46bb70cd23762d58173dbbc4c5a1bd6964624381 18-Oct-2011 Hal Finkel <hfinkel@anl.gov> Fix comment to refer to correct instruction

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142334 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
d5d52132d78e006842a0cf9b6ef5a9feec661711 18-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Minor style cleanup, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142307 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
44d798d9763bc32aaf49fe7c10d604845f4b6685 18-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Add support for a new extension to the .file directive:

.file filenumber "directory" "filename"

This removes one join+split of the directory+filename in MC internals. Because
bitcode files have independent fields for directory and filenames in debug info,
this patch may change the .o files written by existing .bc files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142300 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
LVMTargetMachine.cpp
13a7121858238bc3490b27206a609bf8a2ce1f21 18-Oct-2011 Bill Wendling <isanbard@gmail.com> Now Igor, throw the switch...give my creation life!

Use the custom inserter for the ARM setjmp intrinsics. Instead of creating the
SjLj dispatch table in IR, where it frequently violates serveral assumptions --
in particular assumptions made by the landingpad instruction about what can
branch to a landing pad and what cannot. Performing this in the back-end allows
us to violate these assumptions without the IR getting angry at us.

It also allows us to perform a small optimization. We can shove the address of
the dispatch's basic block into the function context and not have to add code
around the setjmp to check for the return value and jump to the dispatch.

Neat, huh?
<rdar://problem/10116753>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142294 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
419eb3668b5cec965a1764f626084d647462a9c6 17-Oct-2011 Cameron Zwarich <zwarich@apple.com> When deleting a phi cycle after looking through copies, constrain the register
to match its final use.

With this change, all of test-suite compiles for Thumb2 with -verify-coalescing
enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142287 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizePHIs.cpp
1025cce290d99fd325bccd0c1e89dab49eea8140 17-Oct-2011 Evan Cheng <evan.cheng@apple.com> Constraint register class with constrainRegClass() to CSE a virtual into another. rdar://10293289

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142234 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
3c5e60994f53eef2808a33b5ca6c3dffc2168054 17-Oct-2011 Bill Wendling <isanbard@gmail.com> Correct over-zealous removal of hack.

Some code want to check that *any* call within a function has the 'returns
twice' attribute, not just that the current function has one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142221 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
728662f9e869251ff9b5a847b0cb0daa99d1d250 17-Oct-2011 Bill Wendling <isanbard@gmail.com> Now that we have the ReturnsTwice function attribute, this method is
obsolete. Check the attribute instead.
<rdar://problem/8031714>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142212 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
60655413ceecfeb15a5abe6aa2fe6be249f85fab 17-Oct-2011 Chad Rosier <mcrosier@apple.com> Removed set, but unused variable.

Patch by Joe Abbey <jabbey@arxan.com>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142206 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
6c15fec3c5b4770570a4d681762a7bd510e65077 17-Oct-2011 Devang Patel <dpatel@apple.com> It is safe to speculate load from GOT. This fixes performance regression caused by r141689.

Radar 10281206.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142202 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
8fb06b3e8f7fc92e472e17fecf5ee3ba44fbb6ab 16-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Enable element promotion type legalization by deafault.
Changed tests which assumed that vectors are legalized by widening them.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142152 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
962bad70f4277841cf6278306caa93ebce304b48 16-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Let printf do the formatting instead aligning strings ourselves.

While at it, merge some format strings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142140 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
47b8798c0bf0944b24051bc21d85d93a2732676a 16-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Twinify better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142139 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
e9b58d0aac4e89b53a4be0e6f289b66649e1512b 15-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Move the legalization of vector loads and stores into LegalizeVectorOps. In some
cases we need the second type-legalization pass in order to support all cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142060 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorOps.cpp
4ed1fb009543effaeb31547fd1d4795a649c3b93 15-Oct-2011 Bill Wendling <isanbard@gmail.com> Clear out the landing pad to call site map for each function.

This isn't put into the 'clear()' method because the information needs to stick
around (at least for a little bit) after the selection DAG is built.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142032 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b10946a5a938a433ca4d7301b8b5ff5a8c11a7ff 14-Oct-2011 Evan Cheng <evan.cheng@apple.com> A few 80-col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141988 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
ac7caa0d436fa9fe96234c4e009cdacd7cd6b124 14-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Update live-in lists when splitting critical edges.

Fixes PR10814. Patch by Jan Sjödin!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141960 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
312b7c950a27f72a811b3fdbed26e2e08eb20c31 14-Oct-2011 Jim Grosbach <grosbach@apple.com> Fix typo. "__sync_fetch_and-xor_4" should be "__sync_fetch_and_xor_4".

Pointed out by George Russell.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141956 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
a80444f88d88d88513b096c97474c453a4c3bcf6 14-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add value numbers when spilling dead defs.

When spilling around an instruction with a dead def, remember to add a
value number for the def.

The missing value number wouldn't normally create problems since there
would be an incoming live range as well. However, due to another bug
we could spill a dead V_SET0 instruction which doesn't read any values.

The missing value number caused an empty live range to be created which
is dangerous since it doesn't interfere with anything.

This fixes part of PR11125.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141923 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
fe28ef41e34e842e6b77d9aa4bdf2bc2d6f17cae 13-Oct-2011 Eric Christopher <echristo@apple.com> Don't forget to reconstruct D after changing the scope that we're
looking at.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141892 91177308-0d34-0410-b5e6-96231b3b80d8
exicalScopes.cpp
326e491ce7f7ad61014339c36a8cd90b33af98b9 13-Oct-2011 Cameron Zwarich <zwarich@apple.com> Use an existing method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141855 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
dec1b10161a3bc1b49ab8d35e1bd6488486dfd4a 13-Oct-2011 Nick Lewycky <nicholas@mxc.ca> If MI is deleted then remove it from the set. If a new MI is created, it could
have the same address as the one we deleted, and we don't want that in the set
yet. Noticed by inspection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141849 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
ea3abd553668e272772f04ae1536034cd37e70d1 13-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Tabs to spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141844 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
3821b1885e13dcdda6aa2853f1317d3288256685 13-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Add missing braces to pacify GCC's -Wparentheses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141842 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
dee83c90bb7bda57f6d0db2d8f9138f411ecdbbc 13-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also inflate register classes around inline asm.

Now that MI->getRegClassConstraint() can also handle inline assembly,
don't bail when recomputing the register class of a virtual register
used by inline asm.

This fixes PR11078.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141836 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
f5916976e9057177100badee7b7388bd7ba76ac3 13-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineInstr::getRegClassConstraint().

Most instructions have some requirements for their register operands.
Usually, this is expressed as register class constraints in the
MCInstrDesc, but for inline assembly the constraints are encoded in the
flag words.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141835 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9dfaacb696d1ad850f9f5f49a94fdb81cf8ae018 13-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract a method for finding the inline asm flag operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141834 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
459b74b9644c4741d93fe73adc2b06ca6bdb366d 13-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Encode register class constreaints in inline asm instructions.

The inline asm operand constraint is initially encoded in the virtual
register for the operand, but that register class may change during
coalescing, and the original constraint is lost.

Encode the original register class as part of the flag word for each
inline asm operand. This makes it possible to recover the actual
constraint required by inline asm, just like we can for normal
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141833 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/SelectionDAGBuilder.cpp
f6fb7ed53c786228445fc55e8d495ccead59b9ae 13-Oct-2011 Bill Wendling <isanbard@gmail.com> We need to verify that the machine instruction we're using as a replacement for
our current machine instruction defines a register with the same register class
as what's being replaced. This showed up in the SPEC 403.gcc benchmark, where it
would ICE because a tail call was expecting one register class but was given
another. (The machine instruction verifier catches this situation.)
<rdar://problem/10270968>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141830 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
5c75af6eb72bd74bc35f46e5037dd5646e04f3b6 13-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Use a utility from MathExtras to clarify a check and avoid undefined behavior. Based on patch by Ahmed Charles.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141829 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7007e4c5564f32fe4f06765a9740218039e7b492 12-Oct-2011 Evan Cheng <evan.cheng@apple.com> Disable machine LICM speculation check (for profitability) until I have time to investigate the regressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141813 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
980df169203a5f60793e758cdc5cbcad853ca9eb 12-Oct-2011 Cameron Zwarich <zwarich@apple.com> To find the exiting VN of a LiveInterval from a block, use the previous slot
rather than the previous index. If a block has a single instruction, the
previous index may be in a different basic block.

I have no clue how this used to work on all of test-suite, because now this
failure is seen quite often when trying to compile code with -strong-phi-elim.
This fixes PR10252.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141812 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
9e15d658c99c3f0717cb83cc2bd2aa29abdbcdbb 12-Oct-2011 Dan Gohman <gohman@apple.com> Fix a thinko that Nick noticed. The previous code actually worked as
intended, but only by accident.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a2e87912d826b1843bb5b1058670f09b87aea905 12-Oct-2011 Bill Wendling <isanbard@gmail.com> Expand the check for a landing pad so that it looks at the basic block's
containing loop's header to see if that's a landing pad. If it is, then we don't
want to hoist instructions out of the loop and above the header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141767 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
22e8a366adf5a4c78148928ff64e7e00c1088492 12-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use an existing function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141763 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7efba85d414949febe51100e298077233526787c 12-Oct-2011 Evan Cheng <evan.cheng@apple.com> Fix r141744.
1. The speculation check may not have been performed if the BB hasn't had a load
LICM candidate.
2. If the candidate would be CSE'ed, then go ahead and speculatively LICM the
instruction even if it's in high register pressure situation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141747 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
fad62874883ab78af47b4eeba042775a67ea7515 12-Oct-2011 Evan Cheng <evan.cheng@apple.com> Refine r141689 with a tri-state variable.
Also teach MachineLICM to avoid "speculation" when register pressure is high.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141744 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
6618a241f7ba2571a1a55b3733c4441d467baf42 12-Oct-2011 Eric Christopher <echristo@apple.com> Add a new wrapper node for a DILexicalBlock that encapsulates it and a
file. Since it should only be used when necessary propagate it through
the backend code generation and tweak testcases accordingly.

This helps with code like in clang's test/CodeGen/debug-info-line.c where
we have multiple #line directives within a single lexical block and want
to generate only a single block that contains each file change.

Part of rdar://10246360

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141729 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
exicalScopes.cpp
5ba7b501fd4b88e3fea590499e9464b4b2c153a4 12-Oct-2011 Eric Christopher <echristo@apple.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141728 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c83693f5b0aa26de55881345a79f4202ef9c3088 12-Oct-2011 Bill Wendling <isanbard@gmail.com> N.B. This is with the new EH scheme:

The blocks with invokes have branches to the dispatch block, because that more
correctly models the behavior of the CFG. The dispatch of course has edges to
the landing pads. Those landing pads could contain invokes, which then have
branches back to the dispatch. This creates a loop. The machine LICM pass looks
at this loop and thinks it can hoist elements out of it. But because the
dispatch is an alternate entry point into the program, the hoisted instructions
won't be executed.

I wasn't able to get a testcase which was small and could reproduce all of the
time. The function_try_block.cpp in llvm-test was where this showed up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141726 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
2e350479478ccf809e2142a4f0ad8062342577cc 11-Oct-2011 Devang Patel <dpatel@apple.com> Add dominance check for the instruction being hoisted.

For example, MachineLICM should not hoist a load that is not guaranteed to be executed.
Radar 10254254.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141689 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
6fe4e515470a9c2ffa1324261674dde0ede32e72 11-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Add support for legalization of vector SHL/SRA/SRL instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
884b918c2d7ed8dbd804bda72f25729f84a16ab0 11-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Add support for legalization of vector trunc-store where the saved scalar type is illegal (for example, v2i16 on systems where the smallest store size is i32)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141661 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c2b2e1333d66e37c657e25fc09dc79e4ea1d79d9 11-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Cleanup the trunc-store legalization code and add asserts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141659 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
db7334dbc55fb4b86fa3db19bff08ec02ba474d5 11-Oct-2011 Devang Patel <dpatel@apple.com> Revert r141569 and r141576.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141594 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
735fe0f9d00facc5961fbb8b822844f5088cd81d 10-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Give targets a chance to expand even standard pseudos.

Allow targets to expand COPY and other standard pseudo-instructions
before they are expanded with copyPhysReg().

This allows the target to examine the COPY instruction for extra
operands indicating it can be widened to a preferable super-register
copy. See the ARM -widen-vmovs option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141578 91177308-0d34-0410-b5e6-96231b3b80d8
xpandPostRAPseudos.cpp
6b50bc9d88538c155503582b095fdba518070257 10-Oct-2011 Devang Patel <dpatel@apple.com> If loop header is also loop exiting block then it may not be safe to hoist instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141576 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
9ac743a4ee61cb845bbe22a2f6898f38c2adafce 10-Oct-2011 Devang Patel <dpatel@apple.com> Add dominance check for the instruction being hoisted.

For example, MachineLICM should not hoist a load that is not guaranteed to be executed.
Radar 10254254.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141569 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
d5d170097241534401bbbebb4be59451d5c312ca 08-Oct-2011 Bill Wendling <isanbard@gmail.com> Use the code that lowers the arguments and spills any values which are alive
across unwind edges. This is for the back-end which expects such things.

The code is from the original SjLj EH pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141463 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
ce370cfd891386d613d4bd0d28449d2705705d16 07-Oct-2011 Bill Wendling <isanbard@gmail.com> Thread the chain through the eh.sjlj.setjmp intrinsic, like it's documented to
do. This will be useful later on with the new SJLJ stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141416 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e8deca83c157999062b4894163fd6b5023c5cf91 07-Oct-2011 Andrew Trick <atrick@apple.com> PostRA scheduler fix. Clear stale loop dependencies.

Fixes <rdar://problem/10235725>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141357 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
4563bbaba7fad4403acf0236cbd75805c68f2a90 07-Oct-2011 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141356 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
8540101252d3ff69f288e83821aa9f27b366227b 07-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Remove the old atomic instrinsics. autoupgrade functionality is included with this patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141333 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
30e6740f2e3d518ce1cfcd484ef728ac5764a645 06-Oct-2011 Bill Wendling <isanbard@gmail.com> Modify the mapping from landing pad to call sites to accept more than one call
site.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141226 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
84fb7dd09e35ee7d32f9d1d88f7dbc3dc706ad7d 06-Oct-2011 Bill Wendling <isanbard@gmail.com> Add an ivar that maps a landing pad's EH symbol to the call sites that may jump
to the landing pad. This will be used by the back-end to generate the jump
tables for dispatching the arriving longjmp in sjlj eh.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141224 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
6f500541eac11413364f1d79320a2307079d3bbd 06-Oct-2011 Bill Wendling <isanbard@gmail.com> Small refactoring. Cache the FunctionInfo->MBB into a local variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141221 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b4a0221e85eeb4015a37f30738099dc680ac32d7 06-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix sub-register operand verification.

PhysReg operands are not allowed to have sub-register indices at all.

For virtual registers with sub-reg indices, check that all registers in
the register class support the sub-reg index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141220 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
2130ab0131ca0c0f5607937fe1f6ed48c28d39a2 06-Oct-2011 Bill Wendling <isanbard@gmail.com> Fix comment to reflect the new EH stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141218 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
6e39290baf236020f130d8695f7624004706bb08 05-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unused DstSubIdx argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141214 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
d2ed2d71c95462a6b14e7c7c8c82cb727ed342eb 05-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify EXTRACT_SUBREG emission.

EXTRACT_SUBREG is emitted as %dst = COPY %src:sub, so there is no need to
constrain the %dst register class. RegisterCoalescer will apply the
necessary constraints if it decides to eliminate the COPY.

The %src register class does need to be constrained to something with
the right sub-registers, though. This is currently done manually with
COPY_TO_REGCLASS nodes. They can possibly be removed after this patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141207 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
2c3bef8a15c84ad8ef043f8e8ff08ffe1b96720b 05-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify INSERT_SUBREG emission.

The register class created by INSERT_SUBREG and SUBREG_TO_REG must be
legal and support the SubIdx sub-registers.

The new getSubClassWithSubReg() hook can compute that.

This may create INSERT_SUBREG instructions defining a larger register
class than the sub-register being inserted. That is OK,
RegisterCoalescer will constrain the register class as needed when it
eliminates the INSERT_SUBREG instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141198 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
b0e1bc7b99809e2b45726affd73f72c60c506ea0 05-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a FIXME.

TwoAddressInstructionPass should annotate instructions with <undef>
flags when it lower REG_SEQUENCE instructions. LiveIntervals should not
be in the business of modifying code (except for kill flags, perhaps).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141187 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
200a8cef256f6aade13692752a8fa8f6120cf04f 05-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also add <imp-use,kill> flags for redefined super-registers.

For example:

%vreg10:dsub_0<def,undef> = COPY %vreg1
%vreg10:dsub_1<def> = COPY %vreg2

is rewritten as:

%D2<def> = COPY %D0, %Q1<imp-def>
%D3<def> = COPY %D1, %Q1<imp-use,kill>, %Q1<imp-def>

The first COPY doesn't care about the previous value of %Q1, so it
doesn't read that register.

The second COPY is a partial redefinition of %Q1, so it implicitly kills
and redefines that register.

This makes it possible to recognize instructions that can harmlessly
clobber the full super-register. The write and don't read the
super-register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141139 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
b077cf338bd85a6a7397ec88d65278f02f0ed06f 05-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also add <def,undef> flags when coalescing sub-registers.

RegisterCoalescer can create sub-register defs when it is joining a
register with a sub-register. Add <undef> flags to these new
sub-register defs where appropriate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141138 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
2fec6c5ff153786744ba7d0d302b73179731c5e9 05-Oct-2011 Owen Anderson <resistor@mac.com> Teach the MC to output code/data region marker labels in MachO and ELF modes. These are used by disassemblers to provide better disassembly, particularly on targets like ARM Thumb that like to intermingle data in the TEXT segment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141135 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a8512edb6d1c52209bad2d6b989599bc4872c913 05-Oct-2011 Bill Wendling <isanbard@gmail.com> Create a mapping between the landing pad basic block and the call site index for later use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141125 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
7016cf66ee21ddf3f7823d4e332b2cb84953bebd 04-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow <undef> flags on def operands as well as uses.

The <undef> flag says that a MachineOperand doesn't read its register,
or doesn't depend on the previous value of its register.

A full register def never depends on the previous register value. A
partial register def may depend on the previous value if it is intended
to update part of a register.

For example:

%vreg10:dsub_0<def,undef> = COPY %vreg1
%vreg10:dsub_1<def> = COPY %vreg2

The first copy instruction defines the full %vreg10 register with the
bits not covered by dsub_0 defined as <undef>. It is not considered a
read of %vreg10.

The second copy modifies part of %vreg10 while preserving the rest. It
has an implicit read of %vreg10.

This patch adds a MachineOperand::readsReg() method to determine if an
operand reads its register.

Previously, this was modelled by adding a full-register <imp-def>
operand to the instruction. This approach makes it possible to
determine directly from a MachineOperand if it reads its register. No
scanning of MI operands is required.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141124 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
da7e6a9c8888fe9c4198214cc19f6f55e21e72e4 04-Oct-2011 Bill Wendling <isanbard@gmail.com> Generic cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141050 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
f8520d564c095e3ee278090b605c4b827604c817 04-Oct-2011 Bill Wendling <isanbard@gmail.com> Don't carry over the dispatchsetup hack from the old system.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141040 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
631d11765b9f7ebdb49679c92bd41083fbab3f62 03-Oct-2011 Bill Wendling <isanbard@gmail.com> Move the grabbing of the jump buffer into the caller function, eliminating the need for returning a std::pair.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141026 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
8cf5e74a9cc7482901125b810f1e482d24e9404d 03-Oct-2011 Eric Christopher <echristo@apple.com> Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141005 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
1aeb7ac6246c39703e08089ab0dc2f35631b8bb5 03-Oct-2011 Eric Christopher <echristo@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141004 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
cbf26e3b574366fabfda50222817950b85517608 01-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> Moved type construction out of the loop and added an assert on the legality of the type. Formatted lines to the 80 char limit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e09b2a0d4964e6a34ea6393e94a9f5a76ba56f1a 01-Oct-2011 Bill Wendling <isanbard@gmail.com> When inferring the pointer alignment, if the global doesn't have an initializer
and the alignment is 0 (i.e., it's defined globally in one file and declared in
another file) it could get an alignment which is larger than the ABI allows for
that type, resulting in aligned moves being used for unaligned loads.

For instance, in file A.c:

struct S s;

In file B.c:
struct {
// something long
};
extern S s;

void foo() {
struct S p = s;
// ...
}

this copy is a 'memcpy' which is turned into a series of 'movaps' instructions
on X86. But this is wrong, because 'struct S' has alignment of 4, not 16.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140902 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8de34006cf4cd67ef11cac59dd037bb722b18166 01-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Promote comment to doxycomment. Adjust whitespace. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140899 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e27e1ca3c90b69e78242c98a669337f84ccded7f 01-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move getCommonSubClass() into TRI.

It will soon need the context.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140896 91177308-0d34-0410-b5e6-96231b3b80d8
iveStackAnalysis.cpp
achineRegisterInfo.cpp
egisterCoalescer.cpp
electionDAG/InstrEmitter.cpp
d398bae0e008f089037e7c3c316e2b6b194daefc 30-Sep-2011 Torok Edwin <edwintorok@gmail.com> Comment grammar fixes.

thanks to Duncan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140850 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
10a11ecb59b8b9d5de462930960df0d4bd4bf801 30-Sep-2011 Torok Edwin <edwintorok@gmail.com> Instead of crashing when MCAsmInfo is NULL, add an assert.

This helps with porting code from 2.9 to 3.0 as TargetSelect.h changed location,
and if you include the old one by accident you will trigger this assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140848 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
bb5a7442e362776621112dc9453e546a55878e79 29-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Clean up uses of switch instructions so they are not dependent on the operand ordering. Patch by Stepan Dyatkovskiy.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140803 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9a7d48ae67d1f151d5339d37ce66c57179de77b4 29-Sep-2011 Duncan Sands <baldrick@free.fr> Place this bracket according to the LLVM style.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140784 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cc84cda91997bf6fc93512a56c3a12eecaaa2d88 29-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove NumImplicitOps which is now unused.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140767 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
12eb3ad5d6b7dea67ef5aa3b0618d95acf3f8acd 29-Sep-2011 Eric Christopher <echristo@apple.com> Use the local we already set up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140745 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3627a462938c92c00053a24828b35da5195d0d68 29-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rewrite MachineInstr::addOperand() to avoid NumImplicitOps.

The function needs to scan the implicit operands anyway, so no
performance is won by caching the number of implicit operands added to
an instruction.

This also fixes a bug when adding operands after an implicit operand has
been added manually. The NumImplicitOps count wasn't kept up to date.

MachineInstr::addOperand() will now consistently place all explicit
operands before all the implicit operands, regardless of the order they
are added. It is possible to change an MI opcode and add additional
explicit operands. They will be inserted before any existing implicit
operands.

The only exception is inline asm instructions where operands are never
reordered. This is because of a hack that marks explicit clobber regs
on inline asm as <implicit-def> to please the fast register allocator.
This hack can go away when InstrEmitter and FastIsel can add exact
<dead> flags to physreg defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140744 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
cc8cf97be434b4e2b9c0388db1bfb709f09098eb 28-Sep-2011 Bill Wendling <isanbard@gmail.com> Have the SjLjEHPrepare pass do some more heavy lifting.

Upon further review, most of the EH code should remain written at the IR
level. The part which breaks SSA form is the dispatch table, so that part will
be moved to the back-end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140730 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
42e5c799b61ce70620d4d4d4d20e847750a185c3 28-Sep-2011 Duncan Sands <baldrick@free.fr> A typeid of zero means a cleanup, not a catch. This case occurs
when there is both a catch and a cleanup. Correct the comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140686 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
adbf7b2c567d42fcb12cfd69c2692da03d34d384 28-Sep-2011 Bill Wendling <isanbard@gmail.com> Strip off pointer casts when looking at the eh.sjlj.functioncontext's argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140678 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
eef108d5608c50742450a36ed6149e040b14a988 28-Sep-2011 Bill Wendling <isanbard@gmail.com> Bitcast the alloca to an i8* to match the intrinsic's signature.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140677 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
6ef94175d1bbab95f195770bb3c559b3ab38c4e5 28-Sep-2011 Bill Wendling <isanbard@gmail.com> Create and use an llvm.eh.sjlj.functioncontext intrinsic.

This intrinsic is used to pass the index of the function context to the back-end
for further processing. The back-end is in charge of filling in the rest of the
entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140676 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
jLjEHPrepare.cpp
2b6bd7ba5819d8c73c89291c6de89a86dbbffe9c 28-Sep-2011 Bill Wendling <isanbard@gmail.com> In the new EH model, setup the function context and the call site info.

The DWARF exception pass uses the call site information, which is set up here. A
pre-RA pass is too late for it to use this information. So create and setup the
function context here, and then insert the call site values here (and map the
call sites for the DWARF EH pass). This is simpler than the original pass, and
doesn't make the CFG lose its SSA-ness.

It's a win-win-win-win-lose-win-win situation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140675 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
4b6736bdb02e21e4611522d033247f015aa6c4aa 28-Sep-2011 Bill Wendling <isanbard@gmail.com> Don't conditionalize execution of the SjLj EH prepare pass.

We may need an SjLj EH preparation pass for some call site information, at least
in the short term.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140674 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
56ab875e554d30feb953052c3133ac36f88a3782 28-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename class and clean up source.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140664 91177308-0d34-0410-b5e6-96231b3b80d8
xecutionDepsFix.cpp
d4d4fca9c368b6d075c45a7e5651f2d0545a6dc1 28-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename SSEDomainFix -> lib/CodeGen/ExecutionDepsFix.

I'll clean up the source in the next commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140663 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
xecutionDepsFix.cpp
0481d29d49cc26a944d0d502360f044cb493a4b5 28-Sep-2011 Bill Wendling <isanbard@gmail.com> This is the start of the new SjLj EH preparation pass, which will replace the
current IR-level pass.

The old SjLj EH pass has some problems, especially with the new EH model. Most
significantly, it violates some of the new restrictions the new model has. For
instance, the 'dispatch' table wants to jump to the landing pad, but we cannot
allow that because only an invoke's unwind edge can jump to a landing pad. This
requires us to mangle the code something awful. In addition, we need to keep the
now dead landingpad instructions around instead of CSE'ing them because the
DWARF emitter uses that information (they are dead because no control flow edge
will execute them - the control flow edge from an invoke's unwind is superceded
by the edge coming from the dispatch).

Basically, this pass belongs not at the IR level where SSA is king, but at the
code-gen level, where we have more flexibility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140646 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
d6d9dd647f6194be8da274420aba3fd5014f994f 27-Sep-2011 Cameron Zwarich <zwarich@apple.com> Remove an invalid assert that is really just asserting when the scheduler emits
a suboptimal schedule.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140643 91177308-0d34-0410-b5e6-96231b3b80d8
coreboardHazardRecognizer.cpp
5405d58e21402a8ba3aaaa580ca65155bee00443 27-Sep-2011 Jim Grosbach <grosbach@apple.com> Rename AddSelectionDAGCSEId() to addSelectionDAGCSEId().

Naming conventions consistency. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a3c42f3d4e5d14c8f4fb9bb123e7759c425d041b 27-Sep-2011 Nadav Rotem <nadav.rotem@intel.com> Cleanup PromoteIntOp_EXTRACT_VECTOR_ELT and PromoteIntRes_SETCC.
Add a new method: getAnyExtOrTrunc and use it to replace the manual check.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140603 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
a1c415cfc2dba4446021f322e4b7a43534a96f1a 27-Sep-2011 Nadav Rotem <nadav.rotem@intel.com> Revert r140463; The patch assumes that <4 x i1> is saved to memory as 4 x i8,
while the decision is to bit-pack small values.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140601 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
439780eeaef1a2c6a1105fb705a27c5c819e8d0e 26-Sep-2011 James Molloy <james.molloy@arm.com> Fix emission of debug data for global variables. getContext() on DIGlobalVariables is not valid any more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140539 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
c291e2f5780c3a8470113a2a58c1fa680cd54b20 25-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add target hook for pseudo instruction expansion.

Many targets use pseudo instructions to help register allocation. Like
the COPY instruction, these pseudos can be expanded after register
allocation. The early expansion can make life easier for PEI and the
post-ra scheduler.

This patch adds a hook that is called for all remaining pseudo
instructions from the ExpandPostRAPseudos pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140472 91177308-0d34-0410-b5e6-96231b3b80d8
xpandPostRAPseudos.cpp
0eba4fe292a0bb343da5fb2667850a39459cef0b 25-Sep-2011 Nadav Rotem <nadav.rotem@intel.com> [vector-select] Address one of the issues in pr10902. EXTRACT_VECTOR_ELEMENT
SDNodes may return values which are wider than the incoming element types. In
this patch we fix the integer promotion of these nodes.

Fixes spill-q.ll when running -promote-elements.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140471 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
74e2d6ea66a9289fc3c00583f3c2b2abd84e1866 25-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up code after renaming LowerSubregs -> ExpandPostRAPseudos.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140470 91177308-0d34-0410-b5e6-96231b3b80d8
xpandPostRAPseudos.cpp
LVMTargetMachine.cpp
fb96574fca53631bb643307c4f1fa8f808d45fc1 25-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename LowerSubregs to ExpandPostRAPseudos.

I'll fix the file contents in the next commit.

This pass is currently expanding the COPY and SUBREG_TO_REG pseudos. I
am going to add a hook so targets can expand more pseudo-instructions
after register allocation.

Many targets have pseudo-instructions that assist the register
allocator. They can be expanded after register allocation, before PEI
and PostRA scheduling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140469 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
xpandPostRAPseudos.cpp
owerSubregs.cpp
17e76bda552d5afa652c4bb45f6dbdad67dc5c20 24-Sep-2011 Nadav Rotem <nadav.rotem@intel.com> Implement Duncan's suggestion to use the result of getSetCCResultType if it is legal
(this is always the case for scalars), otherwise use the promoted result type.

Fix test/CodeGen/X86/vsplit-and.ll when promote-elements is enabled.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
0d5357e3d5bd3edbe4ad09791e69e1fb85d4b17f 24-Sep-2011 Nadav Rotem <nadav.rotem@intel.com> [Vector-Select] Address one of the problems in 10902.

When generating the trunc-store of i1's, we need to use the vector type and not
the scalar type.

This patch fixes the assertion in CodeGen/Generic/bool-vector.ll when
running with -promote-elements.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140463 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5adc07ebe80688a4b4b96dc088341a7d87eb614f 24-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that terminators follow non-terminators.

This exposes a -segmented-stacks bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140429 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
bde81d5be9bdc3837c77f8f3c63c013b6e4bbc8d 24-Sep-2011 Eli Friedman <eli.friedman@gmail.com> PR10998: It is not legal to sink an instruction past the terminator of a block; make sure we don't do that.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140428 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4c19e12d28749c717d3b384962c9ec92796af1c9 23-Sep-2011 Duncan Sands <baldrick@free.fr> Tweak the handling of MERGE_VALUES nodes: remove the need for
DecomposeMERGE_VALUES to "know" that results are legalized in
a particular order, by passing it the number of the result
being legalized (the type legalization core provides this, it
just needs to be passed on).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
c56d65f63cd632ef57d9f80b4539f15a2f937364 23-Sep-2011 Nadav Rotem <nadav.rotem@intel.com> Vector-Select: Address one of the problems in pr10902. Add handling for the
integer-promotion of CONCAT_VECTORS.

Test: test/CodeGen/X86/widen_shuffle-1.ll

This patch fixes the above tests (when running in with -promote-elements).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
7b316c93273b2156f173fb2877c5e482f13f6778 23-Sep-2011 Dan Gohman <gohman@apple.com> Fix SimplifySelectCC to add newly created nodes to the DAGCombiner
worklist, as it may be possible to perform further optimization on them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
08f5cdf5b33b8202edddb24abee6af2a0b3ae49c 22-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Constrain register classes instead of emitting copies.

Sometimes register class constraints are trivial, like GR32->GR32_NOSP,
or GPR->rGPR. Teach InstrEmitter to simply constrain the virtual
register instead of emitting a copy in these cases.

Normally, these copies are handled by the coalescer. This saves some
coalescer work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
91fb536a345dc268e5b73dbddb9bee4cba87b28f 22-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a MinNumRegs argument to MRI::constrainRegClass().

The function will refuse to use a register class with fewer registers
than MinNumRegs. This can be used by clients to avoid accidentally
increase register pressure too much.

The default value of MinNumRegs=0 doesn't affect how constrainRegClass()
works.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140339 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
711395527e6b19d4bf26e22586f2c13591970ba6 22-Sep-2011 Bill Wendling <isanbard@gmail.com> Use the C personality function instead of the C++ personality function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140318 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
1dd4e56d5565d59e9d40ad9e088a05e06f4b70f8 22-Sep-2011 Devang Patel <dpatel@apple.com> Do not unnecessarily use AT_specification DIE because it does not add any value.

Few weeks ago, llvm completely inverted the debug info graph. Earlier each debug info node used to keep track of its compile unit, now compile unit keeps track of important nodes. One impact of this change is that the global variable's do not have any context, which should be checked before deciding to use AT_specification DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140282 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
3ca2ad11567f83883ae2719c5fac5afc30c7b3d1 22-Sep-2011 Bill Wendling <isanbard@gmail.com> Attempt to update the shadow stack GC pass to the new EH model.

This inserts a cleanup landingpad instruction and a resume to mimic the old
unwind instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140277 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
fe59d853c6bee18aeca1da5f703fc442068853a7 21-Sep-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Whitepsace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140275 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
1147248e6f40f2e5655f3d8243fe7ba49ed75d0a 21-Sep-2011 Nadav Rotem <nadav.rotem@intel.com> [VECTOR-SELECT] Address one of the bugs in pr10902.

Vector SetCC result types need to be type-legalized.
This code worked before because scalar result types are known to be legal.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
3be654f8082dcbdff011a6716a7c90486e28fc9e 21-Sep-2011 Andrew Trick <atrick@apple.com> Lower ARM adds/subs to add/sub after adding optional CPSR operand.

This is still a hack until we can teach tblgen to generate the
optional CPSR operand rather than an implicit CPSR def. But the
strangeness is now limited to the selection DAG. ADD/SUB MI's no
longer have implicit CPSR defs, nor do we allow flag setting variants
of these opcodes in machine code. There are several corner cases to
consider, and getting one wrong would previously lead to nasty
miscompilation. It's not the first time I've debugged one, so this
time I added enough verification to ensure it won't happen again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140228 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGISel.cpp
e97190fdf875843e8161a942f2046fd3ef81330f 21-Sep-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add a DAGCombine for subvector extracts to remove useless chains of
subvector inserts and extracts. Initial patch by Rackover, Zvi with
some tweak done by me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
83a8031336a1155e6b0c3e9a84164324e08d1c8b 20-Sep-2011 Andrew Trick <atrick@apple.com> Restore hasPostISelHook tblgen flag.

No functionality change. The hook makes it explicit which patterns
require "special" handling. i.e. it self-documents tblgen
deficiencies. I plan to add verification in ExpandISelPseudos and
Thumb2SizeReduce to catch any missing hasPostISelHooks. Otherwise it's
too fragile.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140160 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGISel.cpp
4815d56bb2c356a610f46753c5f1cefafa113b21 20-Sep-2011 Andrew Trick <atrick@apple.com> ARM isel bug fix for adds/subs operands.

Modified ARMISelLowering::AdjustInstrPostInstrSelection to handle the
full gamut of CPSR defs/uses including instructins whose "optional"
cc_out operand is not really optional. This allowed removal of the
hasPostISelHook to simplify the .td files and make the implementation
more robust.
Fixes rdar://10137436: sqlite3 miscompile


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140134 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGISel.cpp
3af7a67629292840f0dbae8fad4e333b009e69dd 20-Sep-2011 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140133 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGISel.cpp
b6266fb6026bdd900d8f045bf01300ef549e1802 18-Sep-2011 Nadav Rotem <nadav.rotem@intel.com> white space cleanups

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
76f58d20313a23758399a59ceec0fbc6c2c16397 16-Sep-2011 Benjamin Kramer <benny.kra@googlemail.com> Namespacify.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139892 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
ebac0c1747d20e48f359d76dd454444107080d83 16-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Spill mode: Hoist back-copies locally.

The leaveIntvAfter() function normally inserts a back-copy after the
requested instruction, making the back-copy kill the live range.

In spill mode, try to insert the back-copy before the last use instead.
That means the last use becomes the kill instead of the back-copy. This
lowers the register pressure because the last use can now redefine the
same register it was reading.

This will also improve compile time: The back-copy isn't a kill, so
hoisting it in hoistCopiesForSize() won't force a recomputation of the
source live range. Similarly, if the back-copy isn't hoisted by the
splitter, the spiller will not attempt hoisting it locally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139883 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
69cf1cac3f62e60a50ff0aa9808ea4d317e273ef 16-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Disable local spill hoisting for non-killing copies.

If the source register is live after the copy being spilled, there is no
point to hoisting it. Hoisting inside a basic block only serves to
resolve interferences by shortening the live range of the source.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139882 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
331120b1a482b782e8dffce63033bb8514ba2a96 15-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Some legalization fixes for atomic load and store.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139851 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
b9edad0163296e02f7b4dbbc22b50615dede357c 15-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an option to disable spill hoisting.

When -split-spill-mode is enabled, spill hoisting is performed by
SplitKit instead of by InlineSpiller. This hidden command line option
is for testing the splitter spill mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139845 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
01afdb3a45f63af540b43b414c6094220a8f91e7 15-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> VirtRegMap is counting spill slots, not register spills.

Fix the stats counters to reflect that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139819 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
d205f7a940dd38480ff6283328c7d429201cdf27 15-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Count correctly when a COPY turns into a spill or reload.

The number of spills could go negative since a folded COPY is just a
spill, and it may be eliminated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139815 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
79c40a011b15f59e5b128c870c04893c3f1eddf9 15-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Count inserted spills and reloads more accurately.

Adjust counters when removing spill and reload instructions.

We still don't account for reloads being removed by eliminateDeadDefs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139806 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
6b6e32d954233ddeeae7f99e358ff85059f1176a 15-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Trace through sibling PHIs in bulk.

When traceSiblingValue() encounters a PHI-def value created by live
range splitting, don't look at all the predecessor blocks. That can be
very expensive in a complicated CFG.

Instead, consider that all the non-PHI defs jointly dominate all the
PHI-defs. Tracing directly to all the non-PHI defs is much faster that
zipping around in the CFG when there are many PHIs with many
predecessors.

This significantly improves compile time for indirectbr interpreters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139797 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
031432f9ad24963282b7f71bd0592080f6229d20 15-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Speed up LiveIntervals::shrinkToUse with some caching.

Blocks with multiple PHI successors only need to go on the worklist
once. Use a SmallPtrSet to track the live-out blocks that have already
been handled. This is a lot faster than the two live range check we
would otherwise do.

Also stop recomputing hasPHIKill flags. Like RenumberValues(), it is
conservatively correct to leave them in, and they are not used for
anything important.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139792 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9b82d50d209adf915d3c7f871dc82cb73349db80 15-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r139782, "RemoveCopyByCommutingDef doesn't need hasPHIKill()."

It does, after all.

RemoveCopyByCommutingDef rewrites the uses of one particular value
number in A. It doesn't know how to rewrite phi uses, so there can't be
any.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139787 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
df8412c4c1a3a798c5a849ebc3f56904568d40c4 15-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop verifying hasPHIKill() flags.

There is only one legitimate use remaining, in addIntervalsForSpills().
All other calls to hasPHIKill() are only used to update PHIKill flags.

The addIntervalsForSpills() function is part of the old spilling
framework, only used by linearscan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139783 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
de07abe35de24e551783ee20a4213729b3524baa 15-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> RemoveCopyByCommutingDef doesn't need hasPHIKill().

Instead, let HasOtherReachingDefs() test for defs in B that overlap any
phi-defs in A as well. This test is slightly different, but almost
identical.

A perfectly precise test would only check those phi-defs in A that are
reachable from AValNo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139782 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
4ea24e993f179113a9bb76ee152cc490e738c936 15-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> It is safe to remat a value killed by phis.

The source live range is recomputed using shrinkToUses() which does
handle phis correctly. The hasPHIKill() condition was relevant in the
old days when ReMaterializeTrivialDef() tried to recompute the live
range itself.

The shrinkToUses() function will mark the original def as dead when no
more uses and phi kills remain. It is then removed by
runOnMachineFunction().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139781 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
573a32d4870ff4af7f59fc020caf07fb6ef61e37 15-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Leave hasPHIKill flags alone in LiveInterval::RenumberValues.

It is conservatively correct to keep the hasPHIKill flags, even after
deleting PHI-defs.

The calculation can be very expensive after taildup has created a
quadratic number of indirectbr edges in the CFG, and the hasPHIKill flag
isn't used for anything after RenumberValues().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139780 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
b1afbac64b7c4c06959350acc175fb3552012f57 15-Sep-2011 Andrew Trick <atrick@apple.com> [regcoalescing] bug fix for RegistersDefinedFromSameValue.

An improper SlotIndex->VNInfo lookup was leading to unsafe copy removal.
Fixes PR10920 401.bzip2 miscompile with no IV rewrite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139765 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
734a67cda5a02be1654a2f89b811d7b6cbe3f5e5 15-Sep-2011 Devang Patel <dpatel@apple.com> Add support to emit debug info for C++0x nullptr type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139751 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
0d4fea786670473b53d285be378e619399e03488 14-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Ignore the cloning of unknown registers.

THe LRE_DidCloneVirtReg callback may be called with vitual registers
that RAGreedy doesn't even know about yet. In that case, there are no
data structures to update.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139702 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
c4c633852fbb8ab9ef2679b679d2862746d2fa3e 14-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Hoist back-copies to the least busy dominator.

When a back-copy is hoisted to the nearest common dominator, keep
looking up the dominator tree for a less loopy dominator, and place the
back-copy there instead.

Don't do this when a single existing back-copy dominates all the others.
Assume the client knows what he is doing, and keep the dominating
back-copy.

This prevents us from hoisting back-copies into loops in most cases. If
a value is defined in a loop with multiple exits, we may still hoist
back-copies into that loop. That is the speed/size tradeoff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139698 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
436fe8498a0a3368d2690290e805213a0f114d0d 14-Sep-2011 Nadav Rotem <nadav.rotem@intel.com> Add integer promotion support for vselect

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
393bfcb263fa46e4badc73c6aa56306986f94dcf 14-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Distinguish complex mapped values from forced recomputation.

When a ParentVNI maps to multiple defs in a new interval, its live range
may still be derived directly from RegAssign by transferValues().

On the other hand, when instructions have been rematerialized or
hoisted, it may be necessary to completely recompute live ranges using
LiveRangeCalc::extend() to all uses.

Use a bit in the value map to indicate that a live range must be
recomputed. Rename markComplexMapped() to forceRecompute().

This fixes some live range verification errors when
-split-spill-mode=size hoists back-copies by recomputing source ranges
when RegAssign kills can't be moved.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139660 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
b21abfed813fa46976f896439ca2f9fbd2eba9ba 14-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement -split-spill-mode=size.

Whenever the complement interval is defined by multiple copies of the
same value, hoist those back-copies to the nearest common dominator.

This ensures that at most one copy is inserted per value in the
complement inteval, and no phi-defs are needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139651 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
596f447467b35d7513c997cd9098026938676461 14-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Fix check for unaligned load/store so it doesn't catch over-aligned load/store.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139649 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
fe731214d2529f7b30527fc312964af411867dd0 13-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Error out on CodeGen of unaligned load/store. Fix test so it isn't accidentally testing that case.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139641 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8f28aaf72c61a493dfcd1b838ff8c5050352b5cd 13-Sep-2011 Nadav Rotem <nadav.rotem@intel.com> Fix the assertion which checks the size of the input operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139633 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
aec5861bb6ace3734163c000cb75ca2e22e29caa 13-Sep-2011 Nadav Rotem <nadav.rotem@intel.com> Add vselect target support for targets that do not support blend but do support
xor/and/or (For example SSE2).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139623 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
electionDAG/SelectionDAG.cpp
3a2d80df88c28dc8b2d3a855c3ebd7935c8ad125 13-Sep-2011 Devang Patel <dpatel@apple.com> Use a cache to maintain list of machine basic blocks for a given UserValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139616 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
e5a2e366322ef5f0d597b1fb8dbf55f2cf36cf15 13-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SplitEditor::markOverlappedComplement().

This function is used to flag values where the complement interval may
overlap other intervals. Call it from overlapIntv, and use the flag to
fully recompute those live ranges in transferValues().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139612 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
abcc73e8ba3131c7c4f198840ece31453a0101ac 13-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate the extendRange() wrapper.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139608 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
ee5655dca467d3812145a2f965c31edf4875c93e 13-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch extendInBlock() to take a kill slot instead of the last use slot.

Three out of four clients prefer this interface which is consistent with
extendIntervalEndTo() and LiveRangeCalc::extend().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139604 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
iveRangeCalc.cpp
plitKit.cpp
c1c622ef0dd29d1bafd580790aec5231af50abf2 13-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a separate LiveRangeCalc for the complement in spill modes.

The complement interval may overlap the other intervals created, so use
a separate LiveRangeCalc instance to compute its live range.

A LiveRangeCalc instance can only be shared among non-overlapping
intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139603 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
edd4f8ba4bed5b999c6a726b7991241cf1840350 13-Sep-2011 NAKAMURA Takumi <geek4civic@gmail.com> Unbreak msvc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139581 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeCalc.cpp
iveRangeCalc.h
b5a457c4cbc71db6ae313ef1bf8eadac65767ab0 13-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract live range calculations from SplitKit.

SplitKit will soon need two copies of these data structures, and the
algorithms will also be useful when LiveIntervalAnalysis becomes
independent of LiveVariables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139572 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
iveRangeCalc.cpp
iveRangeCalc.h
plitKit.cpp
plitKit.h
3669915c6dc8d57a4525fb0c592e6c8c1df098f5 12-Sep-2011 Bill Wendling <isanbard@gmail.com> Introduce a bit of a hack.

Splitting a landing pad takes considerable care because of PHIs and other
nasties. The problem is that the jump table needs to jump to the landing pad
block. However, the landing pad block can be jumped to only by an invoke
instruction. So we clone the landingpad instruction into its own basic block,
have the invoke jump to there. The landingpad instruction's basic block's
successor is now the target for the jump table.

But because of PHI nodes, we need to create another basic block for the jump
table to jump to. This is definitely a hack, because the values for the PHI
nodes may not be defined on the edge from the jump table. But that's okay,
because the jump table is simply a construct to mimic what is happening in the
CFG. So the values are mysteriously there, even though there is no value for the
PHI from the jump table's edge (hence calling this a hack).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139545 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
a16a25ddeaf495b78b04e2a19feeac00d9824e63 12-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the -compact-regions flag.

It has been enabled by default for a while, it was only there to allow
performance comparisons.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139501 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
708d06f7fb5dfd9c8559aea07b042a88c65645f8 12-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an interface for SplitKit complement spill modes.

SplitKit always computes a complement live range to cover the places
where the original live range was live, but no explicit region has been
allocated.

Currently, the complement live range is created to be as small as
possible - it never overlaps any of the regions. This minimizes
register pressure, but if the complement is going to be spilled anyway,
that is not very important. The spiller will eliminate redundant
spills, and hoist others by making the spill slot live range overlap
some of the regions created by splitting. Stack slots are cheap.

This patch adds the interface to enable spill modes in SplitKit. In
spill mode, SplitKit will assume that the complement is going to spill,
so it will allow it to overlap regions in order to avoid back-copies.
By doing some of the spiller's work early, the complement live range
becomes simpler. In some cases, it can become much simpler because no
extra PHI-defs are required. This will speed up both splitting and
spilling.

This is only the interface to enable spill modes, no implementation yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139500 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
3d4ec14ffc6b957b9418578567a5751ef6f80fdb 12-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Update comments to reflect some (not so) recent changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139498 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.h
2e3734e2d948af7c61c1957742811cdfca0e2516 10-Sep-2011 Richard Trieu <rtrieu@google.com> Fix asserts in CodeGen from:

assert("error");

to:

assert(0 && "error");



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139449 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFCodeEmitter.h
c3ab388ba9574eb93c44ed57ea46acd4f623b5dc 10-Sep-2011 Chris Lattner <sabre@nondot.org> tidy up a bit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9db817fd0ce0949d0358f5cedfd9ca5a9f1726dd 09-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Make the SelectionDAG verify that all the operands of BUILD_VECTOR have the same type. Teach DAGCombiner::visitINSERT_VECTOR_ELT not to make invalid BUILD_VECTORs. Fixes PR10897.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139407 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
1ab7c8ea03d52c6fdae6fe0efae57a36c2f701c3 09-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Reapply r139247: Cache intermediate results during traceSiblingValue.

In some cases such as interpreters using indirectbr, the CFG can be very
complicated, and live range splitting may be forced to insert a large
number of phi-defs. When that happens, traceSiblingValue can spend a
lot of time zipping around in the CFG looking for defs and reloads.

This patch causes more information to be cached in SibValues, and the
cached values are used to terminate searches early. This speeds up
spilling by 20x in one interpreter test case. For more typical code,
this is just a 10% speedup of spilling.

The previous version had bugs that caused miscompilations. They have
been fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139378 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
9aee335c23bec4f6d1b2cab3bca76231d7b0d556 09-Sep-2011 Devang Patel <dpatel@apple.com> Directly point debug info to the stack slot of the arugment, instead of trying to keep track of vreg in which it the arugment is copied. The LiveDebugVariable can keep track of variable's ranges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
0472e040cba6d15ff3810685c3bd1bbdade3e568 07-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r139247 "Cache intermediate results during traceSiblingValue."

It broke the self host and clang-x86_64-darwin10-RA.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139259 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
2c207a0f677a2d78b768acb559e6b9f6f112a50d 07-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Cache intermediate results during traceSiblingValue.

In some cases such as interpreters using indirectbr, the CFG can be very
complicated, and live range splitting may be forced to insert a large
number of phi-defs. When that happens, traceSiblingValue can spend a
lot of time zipping around in the CFG looking for defs and reloads.

This patch causes more information to be cached in SibValues, and the
cached values are used to terminate searches early. This speeds up
spilling by 20x in one interpreter test case. For more typical code,
this is just a 10% speedup of spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139247 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
b950585cc5a0d665e9accfe5ce490cd269756f2e 07-Sep-2011 James Molloy <james.molloy@arm.com> Refactor instprinter and mcdisassembler to take a SubtargetInfo. Add -mattr= handling to llvm-mc. Reviewed by Owen Anderson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139237 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
981a010c095b8fb57422df6fb90b6d802082afc5 07-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Relax the MemOperands on atomics a bit. Fixes -verify-machineinstrs failures for atomic laod/store on ARM.

(The fix for the related failures on x86 is going to be nastier because we actually need Acquire memoperands attached to the atomic load instrs, etc.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139221 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
541a81cc2bb8b66960e788b1d8441536354b79b8 07-Sep-2011 Devang Patel <dpatel@apple.com> While sinking machine instructions, sink matching DBG_VALUEs also otherwise live debug variable pass will drop DBG_VALUEs on the floor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139208 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
28b77e968d2b01fc9da724762bd8ddcd80650e32 06-Sep-2011 Duncan Sands <baldrick@free.fr> Add codegen support for vector select (in the IR this means a select
with a vector condition); such selects become VSELECT codegen nodes.
This patch also removes VSETCC codegen nodes, unifying them with SETCC
nodes (codegen was actually often using SETCC for vector SETCC already).
This ensures that various DAG combiner optimizations kick in for vector
comparisons. Passes dragonegg bootstrap with no testsuite regressions
(nightly testsuite as well as "make check-all"). Patch mostly by
Nadav Rotem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139159 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
4a544a79bd735967f1d33fe675ae4566dbd17813 06-Sep-2011 Duncan Sands <baldrick@free.fr> Split the init.trampoline intrinsic, which currently combines GCC's
init.trampoline and adjust.trampoline intrinsics, into two intrinsics
like in GCC. While having one combined intrinsic is tempting, it is
not natural because typically the trampoline initialization needs to
be done in one function, and the result of adjust trampoline is needed
in a different (nested) function. To get around this llvm-gcc hacks the
nested function lowering code to insert an additional parent variable
holding the adjust.trampoline result that can be accessed from the child
function. Dragonegg doesn't have the luxury of tweaking GCC code, so it
stored the result of adjust.trampoline in the memory GCC set aside for
the trampoline itself (this is always available in the child function),
and set up some new memory (using an alloca) to hold the trampoline.
Unfortunately this breaks Go which allocates trampoline memory on the
heap and wants to use it even after the parent has exited (!). Rather
than doing even more hacks to get Go working, it seemed best to just use
two intrinsics like in GCC. Patch mostly by Sanjoy Das.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139140 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
7ab15f6d4b9b9fd03c8ab6327ac2b1b3c4b4d04b 03-Sep-2011 Owen Anderson <resistor@mac.com> Fix a truly heinous bug in DAGCombine related to AssertZext.
If we have a chain of zext -> assert_zext -> zext -> use, the first zext would get simplified away because of the later zext, and then the later zext would get simplified away because of the assert. The solution is to teach SimplifyDemandedBits that assert_zext demands all of the high bits of its input, rather than only those demanded by its users. No testcase because the only example I have manifests as llvm-gcc miscompiling LLVM, and I haven't found a smaller case that reproduces this problem.
Fixes <rdar://problem/10063365>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139059 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
8040e064346cc3b78dece7d8ac50593a1c834c46 02-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify by using isFullCopy().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139019 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
147272b8a70db7984a6bdfad3b5efabcb794a42e 02-Sep-2011 Duncan Sands <baldrick@free.fr> Darwin wants ctors/dtors to be ordered the other way round to linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139015 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6b13cd415493187b4c597fc1a60fae314067cdb2 02-Sep-2011 Dan Gohman <gohman@apple.com> Revert r131152, r129796, r129761. This code is currently considered
to be unreliable on platforms which require memcpy calls, and it is
complicating broader legalize cleanups. It is hoped that these cleanups
will make memcpy byval easier to implement in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138977 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
36a16015ac108e2f0dd2d6d96a6d364bc74c50d7 02-Sep-2011 Benjamin Kramer <benny.kra@googlemail.com> Don't drop alignment info on local common symbols.

- On COFF the .lcomm directive has an alignment argument.
- On ELF we fall back to .local + .comm

Based on a patch by NAKAMURA Takumi.

Fixes PR9337, PR9483 and PR10128.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138976 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4a0a18af4a9a47466a6077a158387ba4f57bf636 01-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Permit remat of partial register defs when it is safe.

An instruction may define part of a register where the other bits are
undefined. In that case, it is safe to rematerialize the instruction.
For example:

%vreg2:ssub_0<def> = VLDRS <cp#0>, 0, pred:14, pred:%noreg, %vreg2<imp-def>

The extra <imp-def> operand indicates that the instruction does not read
the other parts of the virtual register, so a remat is safe.

This patch simply allows multiple def operands for the virtual register.
It is MI->readsVirtualRegister() that determines if we depend on a
previous value so remat is impossible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138953 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
ae779eea27f41d31268931a6508bd0536cfbc724 01-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r138794, "Do not try to rematerialize a value from a partial definition."

The problem is fixed for all register allocators by r138944, so this
patch is no longer necessary.

<rdar://problem/10032939>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138945 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
9d548d0343774636e72713d678a078c8e808ed29 01-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Prevent remat of partial register redefinitions.

An instruction that redefines only part of a larger register can never
be rematerialized since the virtual register value depends on the old
value in other parts of the register.

This was fixed for the inline spiller in r138794. This patch fixes the
problem for all register allocators, and includes a small test case.

<rdar://problem/10032939>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138944 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
61560e205a7997749f066dcceaadd5f4b9b5e1be 01-Sep-2011 Evan Cheng <evan.cheng@apple.com> Teach MachineLICM reg pressure tracking code to deal with MVT::untyped. Sorry, I can't come up with a small test case. rdar://10043690

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138934 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
340d78f4e7b95c235d0ecf315b755bebefd0a168 01-Sep-2011 Andrew Trick <atrick@apple.com> PreRA scheduler should avoid cloning compares.

Added canClobberReachingPhysRegUse() to handle a particular pattern in
which a two-address instruction could be forced to interfere with
EFLAGS, causing a compare to be unnecessarilly cloned.
Fixes rdar://problem/5875261


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138924 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
94fca8300d61cc038030c31014116df38b74e986 31-Aug-2011 David Greene <greened@obbligato.org> Fix Size Typing

Stores sizes as uint64_t to avoid possible truncation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138901 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
fcd75e5efb482f35cfc22fd4b64e047930130fd6 31-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Misc cleanup; addresses Duncan's comments on r138877.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138887 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
62bb16cfd10dd271eab6c31d982bca4d79138602 31-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Fill in type legalization for MERGE_VALUES in all the various cases. Patch by Micah Villmow. (No testcase because the issue only showed up in an out-of-tree backend.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138877 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
ba567d670d32e102a70b106fbfe284835085cb3f 31-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Generic expansion for atomic load/store into cmpxchg/atomicrmw xchg; implements 64-bit atomic load/store for ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
d92e2e4f88fccd4b3a497d8d9eade7bfd8564798 31-Aug-2011 David Greene <greened@obbligato.org> Compress Repeated Byte Output

Emit a repeated sequence of bytes using .zero. This saves an enormous
amount of asm file space for certain programs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138864 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e81abfd30b7c81735e9f3d79006c2653690aa592 31-Aug-2011 Rafael Espindola <rafael.espindola@gmail.com> Spelling and grammar fixes to problems found by Duncan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138858 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
76927d758657b3a511c73467ec5a7288795c1513 30-Aug-2011 Rafael Espindola <rafael.espindola@gmail.com> Emit segmented-stack specific code into function prologues for
X86. Modify the pass added in the previous patch to call this new
code.

This new prologues generated will call a libgcc routine (__morestack)
to allocate more stack space from the heap when required

Patch by Sanjoy Das.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138812 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
37fefc20d3a1e3934a377567d54a141f67752227 30-Aug-2011 Evan Cheng <evan.cheng@apple.com> Follow up to r138791.

Add a instruction flag: hasPostISelHook which tells the pre-RA scheduler to
call a target hook to adjust the instruction. For ARM, this is used to
adjust instructions which may be setting the 's' flag. ADC, SBC, RSB, and RSC
instructions have implicit def of CPSR (required since it now uses CPSR physical
register dependency rather than "glue"). If the carry flag is used, then the
target hook will *fill in* the optional operand with CPSR. Otherwise, the hook
will remove the CPSR implicit def from the MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138810 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGISel.cpp
e497906e87c8dcf79bfd2f283679da9d99718861 30-Aug-2011 Bob Wilson <bob.wilson@apple.com> Do not try to rematerialize a value from a partial definition.
I don't currently have a good testcase for this; will try to get one
tomorrow. <rdar://problem/10032939>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138794 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
f8e1e3e729473b8b2b7ee6134b6417976af84d05 30-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for IT blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138773 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
fd9c4f76f4a1ec06891a3405198fc907f8253958 28-Aug-2011 Duncan Sands <baldrick@free.fr> Fix PR5329: pay attention to constructor/destructor priority
when outputting them. With this, the entire LLVM testsuite
passes when built with dragonegg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138724 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8557e6c0c17a94ac6655aa6b5f56a23709410081 27-Aug-2011 Bill Wendling <isanbard@gmail.com> These splits should be done whether they are critical edges or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138697 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
e8ef4cc053257c8cc330d4995aa775785e7f3f04 26-Aug-2011 Bill Wendling <isanbard@gmail.com> Update the dominator tree with the correct dominator for the new 'unwind' block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138664 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
51fb91c04c920703fbd4a67ac3f85c0971b2c5a5 26-Aug-2011 Bill Wendling <isanbard@gmail.com> Split the landing pad block only if it's a critical edge. Also intelligently
split it in the other place where we're splitting critical edges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138658 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
069e2ed794a90cb5108a35627ee148866795f140 26-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Atomic load/store on ARM/Thumb.

I don't really like the patterns, but I'm having trouble coming up with a
better way to handle them.

I plan on making other targets use the same legalization
ARM-without-memory-barriers is using... it's not especially efficient, but
if anyone cares, it's not that hard to fix for a given target if there's
some better lowering.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138621 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
09908c4b4a0b25eab4cb496d95d9dcc93f2214f2 26-Aug-2011 Bill Wendling <isanbard@gmail.com> Look at only the terminators of the basic block. Also, if we're using the new EH
scheme, return 'true' so that it doesn't try to run the old EH scheme's fixup on
the new code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138605 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
327236cd6c211e54fc6288b0ac2b413901cc0611 24-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Basic x86 code generation for atomic load and store instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138478 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
3e74d6fdd248e20a280f1dff3da9a6c689c2c4c3 24-Aug-2011 Evan Cheng <evan.cheng@apple.com> Move TargetRegistry and TargetSelect from Target to Support where they belong.
These are strictly utilities for registering targets and components.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138450 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
LVMTargetMachine.cpp
ee61d67c2f1105e23b2ea5110389f3b7b713b504 24-Aug-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138437 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
3ae96d69ef0695460eb3d046427d22dcda10d9f0 24-Aug-2011 Bill Wendling <isanbard@gmail.com> Add the sentinal "no handle" value to the ResumeInst.

A value of -1 at a call site tells the personality function that this call isn't
handled by the current function. Since the ResumeInsts are converted to calls to
_Unwind_SjLj_Resume, add a (volatile) store of -1 to its 'call site'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138416 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
fc8713ff74c2ed83d453057b24c578a0709fc180 24-Aug-2011 Bill Wendling <isanbard@gmail.com> Don't replace *all* uses with the new stuff.

This is not necessarily the first or dominating use of the EH values. The IR
breaks if it's not. So replace the specific value in the instruction with the
new value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138406 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
cfcccef926bd142c885dfa3f506bff933939350c 24-Aug-2011 Bill Wendling <isanbard@gmail.com> Look at the end of the entry block for an invoke.

The invoke could be at the end of the entry block. If it's the only one, then we
won't process all of the landingpad instructions correctly. This code is
currently ugly, but should be made much nicer once the new EH switch is thrown.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138397 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
4477d691ed9fa63f051986dcb98e358054c8281f 23-Aug-2011 Bill Wendling <isanbard@gmail.com> A landingpad instruction is neither folded nor dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138387 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1dafa70585bf9807efefb54c1f311bfe7bd9a3f3 23-Aug-2011 Evan Cheng <evan.cheng@apple.com> Fix 80 col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
aef508dfc1d844bb3a4f7606f54bf4c616c10eff 23-Aug-2011 Bill Wendling <isanbard@gmail.com> Split the landing pad's edge. Then for all uses of a landingpad instruction's
value, we insert a load of the exception object and selector object from memory,
which is where it actually resides. If it's used by a PHI node, we follow that
to where it is being used. Eventually, all landingpad instructions should have
no uses. Any PHI nodes that were associated with those landingpads should be
removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138302 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
cb08f18d5b88ffa4ba8efd7cac0b8820d6f0ec71 23-Aug-2011 Evan Cheng <evan.cheng@apple.com> Follow up to Jim's r138278. This fixes commuteInstruction so it handles two-address instructions correctly. I'll let Jim add a test case. :-)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138289 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
d36b3e36811e8b50476076ee4986068481916f66 22-Aug-2011 Bill Wendling <isanbard@gmail.com> Some whitespace fixes and #include reordering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138256 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
33e94fa99c5771f7c078267a0d201f6389b617b4 22-Aug-2011 Nick Lewycky <nicholas@mxc.ca> Be less redundant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138252 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
93d39be5300702d8c9892ec04a492a6056926462 20-Aug-2011 Devang Patel <dpatel@apple.com> Do not use named md nodes to track variables that are completely optimized. This does not scale while doing LTO with debug info. New approach is to include list of variables in the subprogram info directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138145 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
deaa64546ea1d0922aa4671a05f13be3d7c9d53c 20-Aug-2011 Benjamin Kramer <benny.kra@googlemail.com> Roll back the rest of r126557. It's a hack that will break in some obscure cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138130 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5aa5d574f464ff9ff15a4c01360aaabc9bdc8a8f 19-Aug-2011 Nick Lewycky <nicholas@mxc.ca> Eli points out that this is what report_fatal_error() is for.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138091 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
d133bf8f27af57c9ed807a033f2375d80bf644a2 19-Aug-2011 Nick Lewycky <nicholas@mxc.ca> This is not actually unreachable, so don't use llvm_unreachable for it. Since
the intent seems to be to terminate even in Release builds, just use abort()
directly.

If program flow ever reaches a __builtin_unreachable (which llvm_unreachable is
#define'd to on newer GCCs) then the program is undefined.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138068 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
61b2d7f20780409143f312bcfa29149d237f99d8 19-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add llc flags to disable machine DCE and CSE.

This is useful for unit tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138028 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
a67f14bf53737f9bb0afefa28e08c4aac6ec4804 19-Aug-2011 Benjamin Kramer <benny.kra@googlemail.com> Make a bunch of symbols private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138025 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
cheduleDAG.cpp
201f2463a72f88121a3a31e7386029e99d2d75da 19-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't treat a partial <def,undef> operand as a read.

Normally, a partial register def is treated as reading the
super-register unless it also defines the full register like this:

%vreg110:sub_32bit<def> = COPY %vreg77:sub_32bit, %vreg110<imp-def>

This patch also uses the <undef> flag on partial defs to recognize
non-reading operands:

%vreg110:sub_32bit<def,undef> = COPY %vreg77:sub_32bit

This fixes a subtle bug in RegisterCoalescer where LIS->shrinkToUses
would treat a coalesced copy as still reading the register, extending
the live range artificially.

My test case only works when I disable DCE so a dead copy is left for
RegisterCoalescer, so I am not including it.

<rdar://problem/9967101>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138018 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f1f6de1c9b658c78baa36c1af7a94c1deba91851 19-Aug-2011 Renato Golin <renato.golin@arm.com> add the comments of each declaration follow it, making it easier to read and compare to GCC's result.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138009 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
28bea08e531452992ff1e25e8584883dfbd4c232 19-Aug-2011 Devang Patel <dpatel@apple.com> Eliminate unnecessary forwarding function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138006 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
49e2f03849064d9dc26db3865ae419f17daadca6 19-Aug-2011 Devang Patel <dpatel@apple.com> Add new DIE into the map asap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137998 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
74af88a6661ad5185924bf39164fb4aa144d32cf 19-Aug-2011 Ivan Krasin <krasin@chromium.org> FastISel: avoid function calls between the materialization of the constant and its use.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137993 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
2ac0e6be05d53323d305155fcf53d50c87d6a9b2 17-Aug-2011 Bill Wendling <isanbard@gmail.com> Add the support in code-gen for the landingpad instruction lowering.

The landingpad instruction is lowered into the EXCEPTIONADDR and EHSELECTION
SDNodes. The information from the landingpad instruction is harvested by the
'AddLandingPadInfo' function. The new EH uses the current EH scheme in the
back-end. This will change once we switch over to the new scheme. (Reviewed by
Jakob!)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
a65a3bc1a18c559f52a749dd13063b6ae3fdc779 17-Aug-2011 Bill Wendling <isanbard@gmail.com> Revert patch. Forgot a dependent commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137875 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
4eb20621438eb98fdbcdb0b224de7609d5ef76f2 17-Aug-2011 Bill Wendling <isanbard@gmail.com> Add the body of 'visitLandingPad'.

This generates the SDNodes for the new exception handling scheme. It takes the
two values coming from the landingpad instruction and assigns them to the
EXCEPTIONADDR and EHSELECTION nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137873 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
35adbb3e4829d3a14784c2bb8ec768b6154c2107 17-Aug-2011 Bill Wendling <isanbard@gmail.com> Modify for the new EH scheme.

Things are much saner now. We no longer need to modify the laning pads, because
of the invariants we impose upon them. The only thing DwarfEHPrepare needs to do
is convert the 'resume' instruction into a call to '_Unwind_Resume'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137855 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
94c7ddb6f52a5200983fed0ce74dc602a7737879 17-Aug-2011 Devang Patel <dpatel@apple.com> Until now all debug info MDNodes referred to a root MDNode, a compile unit. This simplified handling of these needs in dwarf writer. However, one side effect of this is that during link time optimization all these MDNodes are _not_ uniqued. In other words there will be N number of MDNodes describing "int", "char" and all other types, which would suddenly grow when each object file starts using libraries like STL.

MDNodes graph structure such that compiler unit keeps track of important MDNodes and update dwarf writer to process mdnodes top-down instead of bottom up.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137778 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1b84cce77f8bccc905b4800927ce9016f76c1c40 16-Aug-2011 Jim Grosbach <grosbach@apple.com> Remove unused Target argument from AsmParser construction methods.

The argument is unused, and is a layering violation in any case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137735 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
e26a1352487c350acaee62bc5f7fa4002b9bf524 16-Aug-2011 Devang Patel <dpatel@apple.com> Remove unnecessary version check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137728 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6d1f5d951bab2222096210e76e6f7e18e88ae547 16-Aug-2011 Nadav Rotem <nadav.rotem@intel.com> Revert r137562 because it caused PR10674

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137719 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
02e603f87a9745768a05411e16c47c558d2cbd6e 16-Aug-2011 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137689 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
3655a21b15e135927826eeb1917b42299ac95d67 16-Aug-2011 Devang Patel <dpatel@apple.com> Continue to hoist uses of getCompileUnit() up. The goal is to get rid of uses of getCompileUnit().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137683 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d30243402bf5db25e8b947bd3de2677d0f6c9637 16-Aug-2011 Devang Patel <dpatel@apple.com> This is somewhat déjà-vu, but avoid using getCompileUnit() as much as possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137668 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d0b5a5ece4f6bf1a29bacefcdd07eaa7ba83e316 16-Aug-2011 Devang Patel <dpatel@apple.com> Refactor. Variables are part of compile unit so let CompileUnit create new variable.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137663 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
7a328270be871f640d94fcebfd48dee02950fb8c 15-Aug-2011 Devang Patel <dpatel@apple.com> There is no need to maintain a set to keep track of variables that use location expressions. In such cases, AT_location attribute's value will be a label.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137659 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c890b19226673d7004eaff7433834b2e5223bdea 15-Aug-2011 Devang Patel <dpatel@apple.com> Fix warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137658 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
ff9dd0ac55bc7eb06e7ba8cccf255e64757863cc 15-Aug-2011 Devang Patel <dpatel@apple.com> Simplify. Let DbgVariable keep track of variable's DBG_VALUE machine instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137656 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
5a1a67cd3f35b82bcae5dc5dce6ffd9b9549a5c0 15-Aug-2011 Devang Patel <dpatel@apple.com> Simplify mapping to variable from its abstract variable info.
When a variable is inlined multiple places, abstract variable keeps name, location, type etc.. info and all other concreate instances of the variable directly refers to abstract variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137637 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
a098c506a24a5f1a4e7c7344b53b2e586801a415 15-Aug-2011 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137632 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
59bc4093d5009ecda4a4f70ed04c78502e28474f 15-Aug-2011 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137631 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6f9d8ffe5e47e3d11176298e849cc8545c2169a2 15-Aug-2011 Devang Patel <dpatel@apple.com> Refactor. Global variables are part of compile unit so let CompileUnit create new global variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137621 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
dbc64af76d769596903485668a1dfc2d6640c4fb 15-Aug-2011 Devang Patel <dpatel@apple.com> Refactor. A subprogram is part of compile unit so let CompileUnit construct new subprogram.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137618 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
5cbba0167165c61deb8f3223143643083013f046 13-Aug-2011 Nadav Rotem <nadav.rotem@intel.com> Fix PR 10635. When generating integer constants, the constant element type may
be illegal, even if the requested vector type is legal. Testcase is one of the
disabled ARM tests in the vector-select patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137562 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e6e8826870bee3facb04f950f0bd725f8a88623d 12-Aug-2011 Bill Wendling <isanbard@gmail.com> Initial commit of the 'landingpad' instruction.

This implements the 'landingpad' instruction. It's used to indicate that a basic
block is a landing pad. There are several restrictions on its use (see
LangRef.html for more detail). These restrictions allow the exception handling
code to gather the information it needs in a much more sane way.

This patch has the definition, implementation, C interface, parsing, and bitcode
support in it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137501 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
cd9f6c53de95f5301c0152cab2ccc78d653d6270 12-Aug-2011 Devang Patel <dpatel@apple.com> Use ArrayRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137485 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3ebb64946bc8e7c8feba1b2044e7a47f80b3a83f 12-Aug-2011 Chris Lattner <sabre@nondot.org> switch to use the new api for structtypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137480 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
2e85b1bfa7412577dd61f21ea10a686d3685144b 12-Aug-2011 Devang Patel <dpatel@apple.com> Provide fast path as Jakob suggested.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137478 91177308-0d34-0410-b5e6-96231b3b80d8
exicalScopes.cpp
c796ae1d68c92026be5d353584b514311cc3eb0d 12-Aug-2011 Nadav Rotem <nadav.rotem@intel.com> Revert r137310 because it does not optimize any code on ToT

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137466 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1f6a329f79b3568d379142f921f59c4143ddaa14 12-Aug-2011 Duncan Sands <baldrick@free.fr> Silence a bunch (but not all) "variable written but not read" warnings
when building with assertions disabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137460 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
egisterScavenging.cpp
cheduleDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAGISel.cpp
9b7ff12dd1e5e93d3305b366f79896308bed4a60 12-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify the interference checking code a bit.

This is possible now that we now longer provide an interface to iterate
the interference overlaps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137397 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
8facc7def811aeb3db20233de0aef1c69f0d1922 12-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the InterferenceResult class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137381 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
fe026e182993a94381d197f140b19b999c3e17ec 12-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate the last use of InterferenceResult.

The Query class now holds two iterators instead of an InterferenceResult
instance. The iterators are used as bookmarks for repeated
collectInterferingVRegs calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137380 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
9942ba9c0ed45c77298cdeb7a9326f04745d5709 11-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove more dead code.

collectInterferingVRegs will be the primary function for interference
checks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137354 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
98985f959c57f2b8c0b6e4b5ee519252e71e9cd9 11-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Privatize an unused part of the LiveIntervalUnion::Query interface.

No clients are iterating over interference overlaps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137350 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
egAllocBasic.cpp
bb688cec09d08fb4c5e17d82c86bba11f0ce3168 11-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove some dead code.

The InterferenceResult iterator turned out to be less important than we
thought it would be. LiveIntervalUnion clients want higher level
information, like the list of interfering virtual registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137346 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
0fa5e053a914cbbea7c66f13da190d96f8fe2a2c 11-Aug-2011 Benjamin Kramer <benny.kra@googlemail.com> Plug a memory leak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137321 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f80a894bf03ea65624a25b8f64bfcc9c6cf7f80f 11-Aug-2011 Nadav Rotem <nadav.rotem@intel.com> [AVX] When joining two XMM registers into a YMM register, make sure that the
lower XMM register gets in first. This will allow the SUBREG pattern to
elliminate the first vector insertion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f4ea68fa5a85d3e883cf35075133e64de4dfc046 11-Aug-2011 Chris Lattner <sabre@nondot.org> fix PR10605 / rdar://9930964 by adding a pretty scary missed check.
It's somewhat surprising anything works without this. Before we would
compile the testcase into:

test: # @test
movl $4, 8(%rdi)
movl 8(%rdi), %eax
orl %esi, %eax
cmpl $32, %edx
movl %eax, -4(%rsp) # 4-byte Spill
je .LBB0_2

now we produce:

test: # @test
movl 8(%rdi), %eax
movl $4, 8(%rdi)
orl %esi, %eax
cmpl $32, %edx
movl %eax, -4(%rsp) # 4-byte Spill
je .LBB0_2



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137303 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5bc942cc3cc970836d48d8ad276ef3b2b1120ffc 11-Aug-2011 Devang Patel <dpatel@apple.com> Stay within 80 columns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137283 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
exicalScopes.cpp
b549bcfe6c19dbb24162c75bbcc06d4a5fa90cb8 10-Aug-2011 Devang Patel <dpatel@apple.com> Distinguish between two copies of one inlined variable. Take 2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137253 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c722c3d5ffd4ad07e17f81c2b2eb7f8074559600 10-Aug-2011 Devang Patel <dpatel@apple.com> While extending definition range of a debug variable, consult lexical scopes also. There is no point extending debug variable out side its lexical block. This provides 6x compile time speedup in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137250 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
9ce256421a90cd0413db220f1d60df65cb8344b6 10-Aug-2011 Devang Patel <dpatel@apple.com> Revert unintentional parts of previous check-in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137249 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
bf47fdb91c3bc7c26fb7eb6096ca3657c69bd26f 10-Aug-2011 Devang Patel <dpatel@apple.com> Start using LexicalScopes utility. No intetional functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137246 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
103b8e653c981fe916b855f1b96cb35e01c4543e 10-Aug-2011 Devang Patel <dpatel@apple.com> Provide utility to extract and use lexical scoping information from machine instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137237 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
exicalScopes.cpp
c66d36028b21077aa1715331c22347b47b4da94f 10-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Trim an unneeded header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137184 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
ailDuplication.cpp
4a74b3b933e2944ff313dc5d24da6f9e8ec4c1c4 09-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Inflate register classes after coalescing.

Coalescing can remove copy-like instructions with sub-register operands
that constrained the register class. Examples are:

x86: GR32_ABCD:sub_8bit_hi -> GR32
arm: DPR_VFP2:ssub0 -> DPR

Recompute the register class of any virtual registers that are used by
less instructions after coalescing.

This affects code generation for the Cortex-A8 where we use NEON
instructions for f32 operations, c.f. fp_convert.ll:

vadd.f32 d16, d1, d0
vcvt.s32.f32 d0, d16

The register allocator is now free to use d16 for the temporary, and
that comes first in the allocation order because it doesn't interfere
with any s-registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137133 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
6d1fd0b979cb88809ebb77a24f4da69e1d67606b 09-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move CalculateRegClass to MRI::recomputeRegClass.

This function doesn't have anything to do with spill weights, and MRI
already has functions for manipulating the register class of a virtual
register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137123 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveRangeEdit.cpp
achineRegisterInfo.cpp
a2b552d0aec83b1d030b878a130c8fefafe4d3c3 09-Aug-2011 Devang Patel <dpatel@apple.com> Print variable's inline location in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137096 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
c19e6dd64fe4fa825c8d79e1d097e301c66eaf72 09-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename member variables to follow coding standards.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137094 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
egisterCoalescer.h
8e0cca6945ec09bad0decf34ecd832f7e84dc7f1 09-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move the RegisterCoalescer private to its implementation file.

RegisterCoalescer.h still has the CoalescerPair class interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137088 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
egisterCoalescer.h
27215676c7114132a0374f7b5c9ea73d9354d329 09-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Refer to the RegisterCoalescer pass by ID.

A public interface is no longer needed since RegisterCoalescer is not an
analysis any more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137082 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
plitter.cpp
2df3f58a0b3937f2cbd76d3417d2905ca86cf8fa 08-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Hoist hasLoadFromStackSlot and hasStoreToStackSlot.

These the methods are target-independent since they simply scan the
memory operands. They can live in TargetInstrInfoImpl.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137063 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
c0405292693dc463cd14ce20b3ead7dcd1260e8e 08-Aug-2011 Devang Patel <dpatel@apple.com> Simplify by creating parent first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137056 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
69145baf36219b07a49d8ce14b4a04870e72a123 06-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix typo. Thanks, Andy!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137023 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
ccfa446450c9e3e0b3591343c4c5bea1e4cdc043 06-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Reject RS_Spill ranges from local splitting as well.

All new local ranges are marked as RS_New now, so there is no need to
attempt splitting of RS_Spill ranges any more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137002 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
a9c41d39d1adc92107e095aca6f851aed71b6a5f 06-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Only mark remainder intervals as RS_Spill after per-block splitting.

The local ranges created get to stay in the RS_New stage, just like for
local and region splitting.

This gives tryLocalSplit a bit more freedom the first time it sees one
of these new local ranges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137001 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
1f8804263ffc5e6843d81f5c7bd9c739aa90fde5 06-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to update LiveDebugVariables after per-block splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136996 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
dab35d33ae17353cb01aaaa42abbcb28b33eb98a 06-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract per-block splitting into its own method.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136994 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
75e28f74b051e72ca3fc1aa38e5e43a5204a65ce 06-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete getMultiUseBlocks and splitSingleBlocks.

These functions are no longer used, and they are easily replaced with a
loop calling shouldSplitSingleBlock and splitSingleBlock.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136993 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
b3ef7f6b97eb4a61bbafc0a97fb94086919dcbd6 06-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also use shouldSplitSingleBlock() in the fallback splitting mode.

Drop the use of SplitAnalysis::getMultiUseBlocks, there is no need to go
through a SmallPtrSet any more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136992 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
2d6d86be84ee355223ccd20b7f87a0c9971c50c9 06-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Split around single instructions to enable register class inflation.

Normally, we don't create a live range for a single instruction in a
basic block, the spiller does that anyway. However, when splitting a
live range that belongs to a proper register sub-class, inserting these
extra COPY instructions completely remove the constraints from the
remainder interval, and it may be allocated from the larger super-class.

The spiller will mop up these small live ranges if we end up spilling
anyway. It calls them snippets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136989 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
f39031b360f135ece3bdc86151804dd1f3f51733 05-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Detect proper register sub-classes.

Some instructions require restricted register classes, but most of the
time that doesn't affect register allocation. For example, some
instructions don't work with the stack pointer, but that is a reserved
register anyway.

Sometimes it matters, GR32_ABCD only has 4 allocatable registers. For
such a proper sub-class, the register allocator should try to enable
register class inflation since that makes more registers available for
allocation.

Make sure only legal super-classes are considered. For example, tGPR is
not a proper sub-class in Thumb mode, but in ARM mode it is.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136981 91177308-0d34-0410-b5e6-96231b3b80d8
egisterClassInfo.cpp
egisterClassInfo.h
54cfeda74574ee167fc1261ddc71d64ee94add11 05-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix liveness computations in BranchFolding.

The old code would look at kills and defs in one pass over the
instruction operands, causing problems with this code:

%R0<def>, %CPSR<def,dead> = tLSLri %R5<kill>, 2, pred:14, pred:%noreg
%R0<def>, %CPSR<def,dead> = tADDrr %R4<kill>, %R0<kill>, pred:14, %pred:%noreg

The last instruction kills and redefines %R0, so it is still live after
the instruction.

This caused a register scavenger crash when compiling 483.xalancbmk for
armv6. I am not including a test case because it requires too much bad
luck to expose this old bug.

First you need to convince the register allocator to use %R0 twice on
the tADDrr instruction, then you have to convince BranchFolding to do
something that causes it to run the register scavenger on he bad block.

<rdar://problem/9898200>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136973 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
4147f39769d404cab02da4beea852ad2600dadbb 05-Aug-2011 Chandler Carruth <chandlerc@gmail.com> Temporarily revert r135528 which distinguishes between two copies of one
inlined variable, based on the discussion in PR10542.

This explodes the runtime of several passes down the pipeline due to
a large number of "copies" remaining live across a large function. This
only shows up with both debug and opt, but when it does it creates
a many-minute compile when self-hosting LLVM+Clang. There are several
other cases that show these types of regressions.

All of this is tracked in PR10542, and progress is being made on fixing
the issue. Once its addressed, the re-instated, but until then this
restores the performance for self-hosting and other opt+debug builds.

Devang, let me know if this causes any trouble, or impedes fixing it in
any way, and thanks for working on this!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136953 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c219d191aadb4f9532bcaea5c5e66f66912656ca 04-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Count the total amount of stack space used in compiled functions.

Patch by Ivan Krasin!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136921 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
4d3586dd230a3b16018da138404dbb87faf2008d 04-Aug-2011 Devang Patel <dpatel@apple.com> Print DBG_VALUE variable's location info as a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136916 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
d9f3fc7faaa7686af3e1a004d86397da9c8e0449 04-Aug-2011 Devang Patel <dpatel@apple.com> Increment counter inside insertDebugValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136915 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
ad90d3a343ca73c32693e2b05b74462ccd9659cd 04-Aug-2011 Devang Patel <dpatel@apple.com> Add counter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136901 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
79513ed8598bd5ebc25b0764961f326d34aaf388 04-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Correctly handle multiple DBG_VALUE instructions at the same SlotIndex.

It is possible to have multiple DBG_VALUEs for the same variable:

32L TEST32rr %vreg0<kill>, %vreg0, %EFLAGS<imp-def>; GR32:%vreg0
DBG_VALUE 2, 0, !"i"
DBG_VALUE %noreg, %0, !"i"

When that happens, keep the last one instead of the first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136842 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
a92afc18a8ff72b905902d75a2a4920d5438ca0c 04-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable compact region splitting by default.

This helps generate better code in functions with high register
pressure.

The previous version of compact region splitting caused regressions
because the regions were a bit too large. A stronger negative bias
applied in r136832 fixed this problem.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136836 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
5787124820f9f544216675c020ff0b33e090d181 04-Aug-2011 Devang Patel <dpatel@apple.com> Do not drop undef debug values. These are used as range termination marker by live debug variable pass.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b87f91b063a0ac853735f2af3bd94fb8551a11ff 04-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more conservative when forming compact regions.

Apply twice the negative bias on transparent blocks when computing the
compact regions. This excludes loop backedges from the region when only
one of the loop blocks uses the register.

Previously, we would include the backedge in the region if the loop
preheader and the loop latch both used the register, but the loop header
didn't.

When both the header and latch blocks use the register, we still keep it
live on the backedge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136832 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
pillPlacement.cpp
pillPlacement.h
32668ea7a290ee1cb6bfe8cd677cdd4e5df05b4d 04-Aug-2011 Chandler Carruth <chandlerc@gmail.com> Fix some warnings from Clang in release builds:

lib/CodeGen/RegAllocGreedy.cpp:1176:18: warning: unused variable 'B' [-Wunused-variable]
if (unsigned B = Cand.getBundles(BundleCand, BestCand)) {
^
lib/CodeGen/RegAllocGreedy.cpp:1188:18: warning: unused variable 'B' [-Wunused-variable]
if (unsigned B = Cand.getBundles(BundleCand, 0)) {
^

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136831 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
0767267790e5cc91ffe3cc318d22f043b2633b26 04-Aug-2011 Jakub Staszak <jstaszak@apple.com> Fix typo in #include which revealed in the case-sensitive filesystem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136828 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
990f78d53bfe3cf2c82147bc34b457b01e651f25 04-Aug-2011 Jakub Staszak <jstaszak@apple.com> Use MachineBranchProbabilityInfo in If-Conversion instead of its own heuristics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136826 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
8ea45231dc6c30d0c4a55ce038a08edccc308a73 03-Aug-2011 Jakub Staszak <jstaszak@apple.com> Add more constantness in BlockFrequencyInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136816 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockFrequencyInfo.cpp
26689ac37ebec3b358588089415509285e558de9 03-Aug-2011 Eli Friedman <eli.friedman@gmail.com> New approach to r136737: insert the necessary fences for atomic ops in platform-independent code, since a bunch of platforms (ARM, Mips, PPC, Alpha are the relevant targets here) need to do essentially the same thing.

I think this completes the basic CodeGen for atomicrmw and cmpxchg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136813 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
cfc55c2fc94a7b58e9b9090bc47eb791e029d7a2 03-Aug-2011 Bob Wilson <bob.wilson@apple.com> Some revisions to Devang's change r136759 for merged global debug info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136802 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
027cbf9329854e6b02d8db36cbe4f361ee0038cd 03-Aug-2011 Devang Patel <dpatel@apple.com> Use byte offset, instead of element number, to access merged global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136759 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3f5beede1bb97ba4e06dc300e00b70e1013e7216 03-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the precomputed def presence in RAGreedy::calcSpillCost.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136742 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
5ebca793db6262386d7464d03cdaefeb5b640ad3 03-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Inform SpillPlacement about blocks with defs.

This information is not used for anything yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136741 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
fe62d92b7bbaf73e576bec0c0b11cfa6c191aa87 03-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename {First,Last}Use to {First,Last}Instr.

With a 'FirstDef' field right there, it is very confusing that FirstUse
refers to an instruction that may be a def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136739 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
77ee1140a3297e6fbd6cb7cf586872af6d00d07e 03-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a BlockInfo::FirstDef field.

This is either an invalid SlotIndex, or valno->def for the first value
defined inside the block. PHI values are not counted as defined inside
the block.

The FirstDef field will be used when estimating the cost of spilling
around a block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136736 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
4751eb760e7f4e51cfd594cbe46c7d0d7865d693 03-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete BlockInfo::LiveThrough. It wasn't used any more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136735 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
0e0a8806d49038b60a0c20427d9f410b01cbb012 02-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extend the SpillPlacement interface with two new features.

The PrefBoth constraint is used for blocks that ideally want a live-in
value both on the stack and in a register. This would be used by a block
that has a use before interference forces a spill.

Secondly, add the ChangesValue flag to BlockConstraint. This tells
SpillPlacement if a live-in value on the stack can be reused as a
live-out stack value for free. If the block redefines the virtual
register, a spill would be required for that.

This extra information will be used by SpillPlacement to more accurately
calculate spill costs when a value can exist both on the stack and in a
register.

The simplest example is a basic block that reads the virtual register,
but doesn't change its value. Spilling around such a block requires a
reload, but no spill in the block.

The spiller already knows this, but the spill placer doesn't. That can
sometimes lead to suboptimal regions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136731 91177308-0d34-0410-b5e6-96231b3b80d8
pillPlacement.cpp
pillPlacement.h
6cdc1f43e6a6dd7ba38a334b0b2f8fa70d4dc4cd 02-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Don't create a ridiculous EXTRACT_ELEMENT. PR10563.

The testcase looks extremely fragile, so I'm adding an assertion which should catch any cases like this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136711 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b899d959332871eb62dc22a9ffd81e0e97d96710 01-Aug-2011 Jay Foad <jay.foad@gmail.com> Remove an unnecessary cast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136609 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
dccc03b2423fe65efb5963ae816b99c24fc53374 31-Jul-2011 Bill Wendling <isanbard@gmail.com> Add the 'resume' instruction for the new EH rewrite.

This adds the 'resume' instruction class, IR parsing, and bitcode reading and
writing. The 'resume' instruction resumes propagation of an existing (in-flight)
exception whose unwinding was interrupted with a 'landingpad' instruction (to be
added later).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136589 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
hadowStackGC.cpp
c47690264abd6ec6bdeab86ce057e99bb5d39fe4 31-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Time the emission of debug values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136584 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
21384c4ea8e1a8097a1feef1813c1414af9dae2a 30-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r136528 "Enable compact region splitting by default."

While this generally helped x86-64, there was some large regressions
for i386.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136571 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
10c6d12a9fd4dab411091f64db4db69670b88850 30-Jul-2011 Bill Wendling <isanbard@gmail.com> Revert r136253, r136263, r136269, r136313, r136325, r136326, r136329, r136338,
r136339, r136341, r136369, r136387, r136392, r136396, r136429, r136430, r136444,
r136445, r136446, r136253 pending review.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136556 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
hadowStackGC.cpp
4af0f5fecb42563ff3ca5bd7fddb2f4f111e2fef 30-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Don't check liveness of unallocatable registers."

The ARM target depends on CPSR liveness being tracked after register
allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136548 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
egisterScavenging.cpp
eeb57c7701ded683d660ed616966cfe7b1750337 30-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't check liveness of unallocatable registers.

This includes registers like EFLAGS and ST0-ST7. We don't check for
liveness issues in the verifier and scavenger because registers will
never be allocated from these classes.

While in SSA form, we do care about the liveness of unallocatable
unreserved registers. Liveness of EFLAGS and ST0 neds to be correct for
MachineDCE and MachineSinking.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136541 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
egisterScavenging.cpp
93e6f02759a9d98c0c0621540382074219aa374a 30-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Check for multiple defs in the machine code verifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136535 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
73e7dced3892f2abb4344526147d4df0f62aee61 30-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an isSSA() flag to MachineRegisterInfo.

This flag is true from isel to register allocation when the machine
function is required to be in SSA form. The TwoAddressInstructionPass
and PHIElimination passes clear the flag.

The SSA flag wil be used by the machine code verifier to check for SSA
form, and eventually an assertion can enforce it in +Asserts builds.
This will catch the common target error of creating machine code with
multiple defs of a virtual register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136532 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
HIElimination.cpp
woAddressInstructionPass.cpp
c8f34de5d615b858319f33d4e19c24622d971416 30-Jul-2011 Jakub Staszak <jstaszak@apple.com> Do not lose branch weights when lowering SwitchInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136529 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
9162abb39f13146c0dea159e92ac291e4ea900bf 30-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable compact region splitting by default.

This helps generate better code in functions with high register
pressure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136528 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
95ece8efc0eac972366f1a5e97e3c7ae69a73600 29-Jul-2011 Jakub Staszak <jstaszak@apple.com> Remove unneeded const_cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136506 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3bbb6f79b718e5d972ac3e1c949f3139419b4603 29-Jul-2011 Nick Lewycky <nicholas@mxc.ca> Fix a lot of typos, improve (but not necessarily fix) grammaros and reflow some
lines. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136458 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
55ba816883842e793cdeb32fcb805c4e011b527f 29-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Misc optimizer+codegen work for 'cmpxchg' and 'atomicrmw'. They appear to be
working on x86 (at least for trivial testcases); other architectures will
need more work so that they actually emit the appropriate instructions for
orderings stricter than 'monotonic'. (As far as I can tell, the ARM, PPC,
Mips, and Alpha backends need such changes.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136457 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
741bf790b85595659c91d511c4ff60975180449f 29-Jul-2011 Bill Wendling <isanbard@gmail.com> Use the pointer type size.

With this, we can now compile a simple EH program.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136446 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7d44c453511ce4c43e0a3c128f018f04c330d390 29-Jul-2011 Bill Wendling <isanbard@gmail.com> And now something that compiles...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136445 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
744b4bd170365a1e2953e8d28b676a26ee5425ba 29-Jul-2011 Bill Wendling <isanbard@gmail.com> Make sure to sext or trunc the result from the register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136444 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
ac03e736c77bcf7e8deb515fc16a7e55d343dc8d 29-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Rewrite the CMake build to use explicit dependencies between libraries,
specified in the same file that the library itself is created. This is
more idiomatic for CMake builds, and also allows us to correctly specify
dependencies that are missed due to bugs in the GenLibDeps perl script,
or change from compiler to compiler. On Linux, this returns CMake to
a place where it can relably rebuild several targets of LLVM.

I have tried not to change the dependencies from the ones in the current
auto-generated file. The only places I've really diverged are in places
where I was seeing link failures, and added a dependency. The goal of
this patch is not to start changing the dependencies, merely to move
them into the correct location, and an explicit form that we can control
and change when necessary.

This also removes a serialization point in the build because we don't
have to scan all the libraries before we begin building various tools.
We no longer have a step of the build that regenerates a file inside the
source tree. A few other associated cleanups fall out of this.

This isn't really finished yet though. After talking to dgregor he urged
switching to a single CMake macro to construct libraries with both
sources and dependencies in the arguments. Migrating from the two macros
to that style will be a follow-up patch.

Also, llvm-config is still generated with GenLibDeps.pl, which means it
still has slightly buggy dependencies. The internal CMake
'llvm-config-like' macro uses the correct explicitly specified
dependencies however. A future patch will switch llvm-config generation
(when using CMake) to be based on these deps as well.

This may well break Windows. I'm getting a machine set up now to dig
into any failures there. If anyone can chime in with problems they see
or ideas of how to solve them for Windows, much appreciated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136433 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
electionDAG/CMakeLists.txt
367853733247b46f2fa49359dd3490bada3cd111 29-Jul-2011 Bill Wendling <isanbard@gmail.com> Visit the landingpad instruction.

This generates the correct SDNodes for the landingpad instruction. It makes an
assumption that the result of the landingpad instruction has at least two
values. And that the first value is a pointer to the exception object and the
second value is the "selector."


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136430 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e963a3814f3f8fde394da263340bc0888011291c 29-Jul-2011 Bill Wendling <isanbard@gmail.com> Add the AddLandingPadInfo function.

AddLandingPadInfo takes a landingpad instruction and grabs all of the
information from it that it needs for EH table generation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136429 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
ff03048c1350fcc4fda1ef6d6c57252f3a950854 28-Jul-2011 Eli Friedman <eli.friedman@gmail.com> LangRef and basic memory-representation/reading/writing for 'cmpxchg' and
'atomicrmw' instructions, which allow representing all the current atomic
rmw intrinsics.

The allowed operands for these instructions are heavily restricted at the
moment; we can probably loosen it a bit, but supporting general
first-class types (where it makes sense) might get a bit complicated,
given how SelectionDAG works.

As an initial cut, these operations do not support specifying an alignment,
but it would be possible to add if we think it's useful. Specifying an
alignment lower than the natural alignment would be essentially
impossible to support on anything other than x86, but specifying a greater
alignment would be possible. I can't think of any useful optimizations which
would use that information, but maybe someone else has ideas.

Optimizer/codegen support coming soon.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136404 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
f6c690019b7ba9d121e658d16b9d99831df7428f 28-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle REG_SEQUENCE with implicitly defined operands.

Code like that would only be produced by bugpoint, but we should still
handle it correctly.

When a register is defined by a REG_SEQUENCE of undefs, the register
itself is undef. Previously, we would create a register with uses but no
defs.

Fixes part of PR10520.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136401 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
1ddaa9c1c684bd46102300e5c680dfa767a88214 28-Jul-2011 Bill Wendling <isanbard@gmail.com> Use ArrayRef instead of requiring an std::vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136396 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
7379b6650008fba555d5472d5c76e8efc59e8a21 28-Jul-2011 Bill Wendling <isanbard@gmail.com> The personality function should be a Function* and not just a Value*.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136392 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
cc07e04262fe4bc35469fbadc53d2ec7bfd02fe2 28-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Reverse order of RS_Split live ranges under -compact-regions.

There are two conflicting strategies in play:

- Under high register pressure, we want to assign large live ranges
first. Smaller live ranges are easier to place afterwards.

- Live range splitting is guided by interference, so splitting should be
deferred until interference is as realistic as possible.

With the recent changes to the live range stages, and with compact
regions enabled, it is less traumatic to split a live range too early.
If some of the split products were too big, they can often be split
again.

By reversing the RS_Split order, we get this queue order:

1. Normal live ranges, large to small.
2. RS_Split live ranges, large to small.

The large-to-small order improves RAGreedy's puzzle solving skills under
high register pressure. It may cause a bit more iterated splitting, but
we handle that better now.

With this change, -compact-regions is mostly an improvement on SPEC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136388 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
b4904503de3195fb611a0aca2e58f4b770ccff51 28-Jul-2011 Bill Wendling <isanbard@gmail.com> Initial code to convert ResumeInsts into calls to _Unwind_Resume.

This should be the only code necessary for DWARF EH prepare.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136387 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
2ff4bc615584fa9f32e64959767d64f2cb09fb99 28-Jul-2011 Nadav Rotem <nadav.rotem@intel.com> CR fix: The ANY_EXTEND can be removed because the input and putput type must be
identical.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
14648468011c92a4210f8118721d58c25043daf8 28-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Code generation for 'fence' instruction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136283 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
9a24f1f070f7a9e18f7fc46214c2f2d0a38ab0f9 28-Jul-2011 Jakub Staszak <jstaszak@apple.com> Use BlockFrequency instead of uint32_t in BlockFrequencyInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136278 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockFrequencyInfo.cpp
0748f83d3740582c408ab31c66261c2491565a84 28-Jul-2011 Devang Patel <dpatel@apple.com> Remove outdated FIXME comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136275 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
772fe17a6d07304ae2e6b3052bbb24ebb751f0f3 27-Jul-2011 Bill Wendling <isanbard@gmail.com> Merge the contents from exception-handling-rewrite to the mainline.

This adds the new instructions 'landingpad' and 'resume'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136253 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
hadowStackGC.cpp
a44defeb2208376ca3113ffdddc391570ba865b8 27-Jul-2011 Jeffrey Yasskin <jyasskin@google.com> Explicitly cast narrowing conversions inside {}s that will become errors in
C++0x.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136211 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
cbdccdeea96f26198fc8225c1a32c04ca01f8a26 27-Jul-2011 Dan Gohman <gohman@apple.com> Revert r136156, which broke several buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136206 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
26a92003cd88355f5b027a2703b5016bb4b7870d 27-Jul-2011 Devang Patel <dpatel@apple.com> It is quiet possible that inlined function body is split into multiple chunks of consequtive instructions. But, there is not any way to describe this in .debug_inline accelerator table used by gdb. However, describe non contiguous ranges of inlined function body appropriately using AT_range of DW_TAG_inlined_subroutine debug info entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136196 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
00005782fa860f4b48b3b5261d92541c61ee2495 27-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add support for multi-way live range splitting.

When splitting global live ranges, it is now possible to split for
multiple destination intervals at once. Previously, we only had the main
and stack intervals.

Each edge bundle is assigned to a split candidate, and splitAroundRegion
will insert copies between the candidate intervals and the stack
interval as needed.

The multi-way splitting is used to split around compact regions when
enabled with -compact-regions. The best candidate register still gets
all the bundles it wants, but everything outside the main interval is
first split around compact regions before we create single-block
intervals.

Compact region splitting still causes some regressions, so it is not
enabled by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136186 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
3b92527885c905e2d14f10eabbe45d1efda04bbf 27-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out the MBB live-in registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136178 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
e4709777e38b58b856cf8395e071a3326d50a402 27-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate copies of undefined values during coalescing.

These copies would coalesce easily, but the resulting value would be
defined by a deleted instruction. Now we also remove the undefined value
number from the destination register.

This fixes PR10503.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136174 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
egisterCoalescer.h
c680b92460abaa8daa7796c05447f64b01b9f11b 27-Jul-2011 Dan Gohman <gohman@apple.com> Delete unnecessarily cautious LastCALLSEQ code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136156 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
24f05334e60bd2b2b614d5eb72ee6c92ad0a9bc8 26-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Add obvious missing case to switch. PR10497.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136130 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
a671a3092a9d86819bd740b4433ac217365bbfd7 26-Jul-2011 Devang Patel <dpatel@apple.com> While extracting lexical scopes from machine instruction stream, work on one machine basic block at a time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136106 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7becbc41ab2875153868c21a84153eca442cc28f 26-Jul-2011 Duncan Sands <baldrick@free.fr> SrcDef is only written and never read. Remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136080 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
165e231c4295deb5cabd124d08e231b551bcc0b2 26-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert to RA_Assign when a virtreg separates into components.

When dead code elimination deletes a PHI value, the virtual register may
split into multiple connected components. In that case, revert each
component to the RS_Assign stage.

The new components are guaranteed to be smaller (the original value
numbers are distributed among the components), so this will always be
making progress. The components are now allowed to evict other live
ranges or be split again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136034 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
28c85a81a17dd719a254dc00cbeb484774893197 26-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename createCodeEmitter to createMCCodeEmitter; createObjectStreamer to createMCObjectStreamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136031 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
94b9550a32d189704a8eae55505edf62662c0534 26-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename TargetAsmParser to MCTargetAsmParser and TargetAsmLexer to MCTargetAsmLexer; rename createAsmLexer to createMCAsmLexer and createAsmParser to createMCAsmParser.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136027 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
78c10eeaa57d1c6c4b7781d3c0bcb0cfbbc43b5c 26-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename TargetAsmBackend to MCAsmBackend; rename createAsmBackend to createMCAsmBackend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136010 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
47f3513dd574535aeb40c9eb11134f0899e92269 26-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Initial implementation of 'fence' instruction, the new C++0x-style replacement for llvm.memory.barrier.

This is just a LangRef entry and reading/writing/memory representation; optimizer+codegen support coming soon.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136009 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
ed4b4272ba2c2ff68f839738ba8147c3606d8885 26-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Make sure this DAGCombine actually returns an UNDEF of the correct type; PR10476.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135993 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f55c1c85881afd65647bde5346f64d9685235c7c 25-Jul-2011 Jakub Staszak <jstaszak@apple.com> Rename BlockFrequency to BlockFrequencyInfo and MachineBlockFrequency to
MachineBlockFrequencyInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135937 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
achineBlockFrequency.cpp
achineBlockFrequencyInfo.cpp
49743b18f50ac0f7e065f4754a26965d4db388de 25-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an RS_Split2 stage used for loop prevention.

This mechanism already exists, but the RS_Split2 stage makes it clearer.

When live range splitting creates ranges that may not be making
progress, they are marked RS_Split2 instead of RS_New. These ranges may
be split again, but only in a way that can be proven to make progress.

For local ranges, that means they must be split into ranges used by
strictly fewer instructions.

For global ranges, region splitting is bypassed and the RS_Split2
ranges go straight to per-block splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135912 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
fa89a0344bba7a0ae87d3de204d18bb1ecaa5955 25-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename live range stages to better reflect how they are used.

The stage is used to control where a live range is going, not where it
is coming from. Live ranges created by splitting will usually be marked
RS_New, but some are marked RS_Spill to avoid wasting time trying to
split them again.

The old RS_Global and RS_Local stages are merged - they are really the
same thing for local and global live ranges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135911 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
a9203109f4ac95aa7e9624f2838e3d89623ec902 25-Jul-2011 Jay Foad <jay.foad@gmail.com> Convert GetElementPtrInst to use ArrayRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135904 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
81d686edbe6effe624add9394673bd571d89bfb7 24-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Never extend live ranges for <undef> uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135886 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
b09701db9e74298912164d988ddf40bb1b5ec19b 24-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Correctly handle <undef> tied uses when rewriting after a split.

This fixes PR10463. A two-address instruction with an <undef> use
operand was incorrectly rewritten so the def and use no longer used the
same register, violating the tie constraint.

Fix this by always rewriting <undef> operands with the register a def
operand would use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135885 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
87972fa63f0e2631778166e0c258c456ec12db7c 23-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add RAGreedy::calcCompactRegion.

This method computes the edge bundles that should be live when splitting
around a compact region. This is independent of interference.

The function returns false if the live range was already a compact
region, or the compact region doesn't have any live bundles - it would
be the same as splitting around basic blocks.

Compact regions are computed using the normal spill placement code. We
pretend there is interference in all live-through blocks that don't use
the live range. This removes all edges from the Hopfield network used
for spill placement, so it converges instantly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135847 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
fe9b2d142a0feb87b06579509479957f25d7d0a4 23-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix bug in SplitEditor::splitLiveThroughBlock when switching registers.

If there is no interference and no last split point, we cannot
enterIntvBefore(Stop) - that function needs a real instruction.

Use enterIntvAtEnd instead for that very easy case.

This code doesn't currently run, it is needed by multi-way splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135846 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
b4666364f4db4889883d7a6c02a177ebcde7c240 23-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Prepare RAGreedy::growRegion for compact regions.

A split candidate can have a null PhysReg which means that it doesn't
map to a real interference pattern. Instead, pretend that all through
blocks have interference.

This makes it possible to generate compact regions where the live range
doesn't go through blocks that don't use it. The live range will still
be live between directly connected blocks with uses.

Splitting around a compact region tends to produce a live range with a
high spill weight, so it may evict a less dense live range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135845 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
e60f103d2d3541e57a6ca8d788e959e03b615e5f 23-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a simple method for marking blocks with interference in and out.

This method matches addLinks - All the listed blocks are considered to
have interference, so they add a negative bias to their bundles.

This could also be done by addConstraints, but that requires building a
separate BlockConstraint array.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135844 91177308-0d34-0410-b5e6-96231b3b80d8
pillPlacement.cpp
pillPlacement.h
c7931fd725b390142f9112952b1426560000e6b4 23-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow null interference cursors to be queried.

They always report 'no interference'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135843 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.cpp
nterferenceCache.h
a7cfc08ebe737062917b442830eb5321b0f79e89 23-Jul-2011 Evan Cheng <evan.cheng@apple.com> Move TargetAsmParser.h TargetAsmBackend.h and TargetAsmLexer.h to MC where they belong.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135833 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
b4263a6ff4f9696fc84a8f75b5d09564ff06381f 22-Jul-2011 Jay Foad <jay.foad@gmail.com> Fix more MSVC warnings caused by a cases I missed when converting
ConstantExpr::getGetElementPtr to use ArrayRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135762 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
0a2a60ace9b79164b71794ce7ff981171c61e442 22-Jul-2011 Jay Foad <jay.foad@gmail.com> Convert IRBuilder::CreateGEP and IRBuilder::CreateInBoundsGEP to use
ArrayRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135761 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
23f34f1c22db8df6e767a29365d668ac9ede112c 22-Jul-2011 Jakub Staszak <jstaszak@apple.com> Allow getBlockFreq to return 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135742 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockFrequency.cpp
4e2710c266c0f5b074589602d17066ff5f23a641 22-Jul-2011 Jakub Staszak <jstaszak@apple.com> Revert patch which broke some IfConversion tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135738 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
6b598748b1e03b6b188726d5a0fef2a6abc29562 22-Jul-2011 Jakub Staszak <jstaszak@apple.com> Fix typo in #include which revealed in the case-sensitive filesystem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135734 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
8592d903e1c9b48a247c0f91e28617b309eff6be 22-Jul-2011 Jakub Staszak <jstaszak@apple.com> Use MachineBranchProbabilityInfo instead of MachineLoopInfo in IfConversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135724 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
9d81c97c8a3bbce302d0675feffec2c801cdf718 22-Jul-2011 Jakub Staszak <jstaszak@apple.com> Add missing getAnalysisUsage in MachineBlockFrequency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135714 91177308-0d34-0410-b5e6-96231b3b80d8
achineBlockFrequency.cpp
3737b89098a6aa954d7742277d218f293d38956a 21-Jul-2011 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135633 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
40c7e4142e2327a540eceb640392a6da4ccfb3bf 21-Jul-2011 Devang Patel <dpatel@apple.com> There are two ways to map a variable to its lexical scope. Lexical scope information is embedded in MDNode describing the variable. It is also available as a part of DebugLoc attached with DBG_VALUE instruction. DebugLoc attached with an instruction is less reliable in optimized code so use information embedded in the MDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135629 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4ec14b0dee433a4f134d832e326a20839b1f777e 20-Jul-2011 Devang Patel <dpatel@apple.com> While emitting constant value, look through derived type and use underlying basic type to determine size and signness of the constant value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135627 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
203576aa0cb9d8bf2d2e4d910ebab4b7a63262ae 20-Jul-2011 Evan Cheng <evan.cheng@apple.com> Goodbye TargetAsmInfo. This eliminate last bit of CodeGen and Target in llvm-mc.

There is still a bit more refactoring left to do in Targets. But we are now very
close to fixing all the layering issues in MC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135611 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
LVMTargetMachine.cpp
achineModuleInfo.cpp
argetLoweringObjectFileImpl.cpp
0381c21d2ddc182aebfef25c6500d781ddb428fe 20-Jul-2011 Eli Friedman <eli.friedman@gmail.com> PR10421: Fix a straightforward bug in the widening logic for CONCAT_VECTORS.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135595 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
34ad6db8b958fdc0d38e122edf753b5326e69b03 20-Jul-2011 Evan Cheng <evan.cheng@apple.com> - Move CodeModel from a TargetMachine global option to MCCodeGenInfo.
- Introduce JITDefault code model. This tells targets to set different default
code model for JIT. This eliminates the ugly hack in TargetMachine where
code model is changed after construction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135580 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ebf5f0962932032481ae306b42c96c68c3a0be95 20-Jul-2011 Logan Chien <loganchien@google.com> Merge with LLVM upstream r135568 (Jul 20th 2011)

Conflicts:
lib/Bitcode/Reader/BitcodeReader.cpp

Change-Id: Iebed76d2f7d281e742947e31d9a0b78174daf2d6
e76a33b9567d78a5744dc52fcec3a6056d6fb576 20-Jul-2011 Evan Cheng <evan.cheng@apple.com> Add MCObjectFileInfo and sink the MCSections initialization code from
TargetLoweringObjectFileImpl down to MCObjectFileInfo.

TargetAsmInfo is done to one last method. It's *almost* gone!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135569 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
smPrinter/DwarfCFIException.cpp
LFWriter.cpp
LVMTargetMachine.cpp
achineModuleInfo.cpp
argetLoweringObjectFileImpl.cpp
70955c2d12bd64dbb2faa626ea8fe18abb621e1c 20-Jul-2011 Evan Cheng <evan.cheng@apple.com> Fix an obvious typo that's preventing x86 (32-bit) from using .literal16.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135535 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
c8fcfc9cd9c0940e8afdaba8b815f8f489b457ba 20-Jul-2011 Devang Patel <dpatel@apple.com> Distinguish between two copies of one inlined variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135528 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8fbbb3980755d74539a0aed02bc18842ed2bd18d 19-Jul-2011 Jay Foad <jay.foad@gmail.com> Convert TargetData::getIndexedOffset to use ArrayRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135478 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
439661395fd2a2a832dba01c65bc88718528313c 19-Jul-2011 Evan Cheng <evan.cheng@apple.com> Introduce MCCodeGenInfo, which keeps information that can affect codegen
(including compilation, assembly). Move relocation model Reloc::Model from
TargetMachine to MCCodeGenInfo so it's accessible even without TargetMachine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135468 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
497a397f3e4edeb102bb2e2509a3795feafaf742 19-Jul-2011 Devang Patel <dpatel@apple.com> Revert r135423.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
e060a5cd0688caea0e3de670f642f92a4d0b326e 19-Jul-2011 Bill Wendling <isanbard@gmail.com> Add a frame with the compact unwind encoding if it exists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135450 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7d36534d2235c6969b6f51c1f20ac1413f54eb67 19-Jul-2011 Bill Wendling <isanbard@gmail.com> Rename CompactEncoding to CompactUnwindEncoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135448 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
a67dcea0721c02ef543618f0d3b5014ffb3efc8f 19-Jul-2011 Bill Wendling <isanbard@gmail.com> Move the compact encoding from the target-specific library to the code-gen
library.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135443 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
2d28617de2b0b731c08d1af9e830f31e14ac75b4 19-Jul-2011 Evan Cheng <evan.cheng@apple.com> Move getInitialFrameState from TargetFrameInfo to MCAsmInfo (suggestions for
better location welcome).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135438 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfCFIException.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/Win64Exception.cpp
3ba292dbc2acee2d1052fb7ffe332e2164147b47 18-Jul-2011 Jeffrey Yasskin <jyasskin@google.com> Add APInt(numBits, ArrayRef<uint64_t> bigVal) constructor to prevent future ambiguity
errors like the one corrected by r135261. Migrate all LLVM callers of the old
constructor to the new one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135431 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/SelectionDAG.cpp
0e6a052331f674dd70e28af41f654a7874405eab 18-Jul-2011 Evan Cheng <evan.cheng@apple.com> Sink getDwarfRegNum, getLLVMRegNum, getSEHRegNum from TargetRegisterInfo down
to MCRegisterInfo. Also initialize the mapping at construction time.

This patch eliminate TargetRegisterInfo from TargetAsmInfo. It's another step
towards fixing the layering violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135424 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
achineModuleInfo.cpp
1360bc8eb029d51d426c77c4b1410849ff308893 18-Jul-2011 Devang Patel <dpatel@apple.com> During bottom up fast-isel, instructions emitted to materalize registers are at top of basic block and do not have debug location. This may misguide debugger while entering the basic block and sometimes debugger provides semi useful view of current location to developer by picking up previous known location as current location. Assign a sensible location to the first instruction in a basic block, if it does not have one location derived from source file, so that debugger can provide meaningful user experience to developers in edge cases.
[take 2]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135423 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
fc47933db5c8fea9bc89470d83cc5af7ca36f2a3 18-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a crash when building 177.mesa for armv6.

When splitting a live range immediately before an LDR_POST instruction
that redefines the address register, make sure to use the correct value
number in leaveIntvBefore.

We need the value number entering the instruction.

<rdar://problem/9793765>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135413 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
39b5abf507b43da6b92f68b86406e0015ead18e9 18-Jul-2011 Frits van Bommel <fvbommel@gmail.com> Migrate LLVM and Clang to use the new makeArrayRef(...) functions where previously explicit non-default constructors were used.
Mostly mechanical with some manual reformatting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135390 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.h
egAllocGreedy.cpp
egisterClassInfo.h
7941350101bdfa3b016dd8a5347a92064947dd31 18-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR10387.

When trying to rematerialize a value before an instruction that has an
early-clobber redefine of the virtual register, make sure to look up the
correct value number.

Early-clobber defs are moved one slot back, so getBaseIndex is needed to
find the used value number.

Bugpoint was unable to reduce the test case for this, see PR10388.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135378 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
db125cfaf57cc83e7dd7453de2d509bc8efd0e5e 18-Jul-2011 Chris Lattner <sabre@nondot.org> land David Blaikie's patch to de-constify Type, with a few tweaks.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
smPrinter/AsmPrinter.cpp
LFWriter.cpp
ntrinsicLowering.cpp
achineFunction.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
tackProtector.cpp
811ad8690b798cdcbd9d80a2b6a404145222b9a9 17-Jul-2011 Nadav Rotem <nadav.rotem@intel.com> Minor code cleanups

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135362 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
ab0dd224163f2d0089c63fe12f524c1d2dcd4aee 17-Jul-2011 Nowar Gu <nowar100@gmail.com> Fix Android.mk.
ndroid.mk
2f49da6809f7df96491b8d28d4f541edef6b7cc5 17-Jul-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r135360 at Sun. 17th July 2011.
975eb99cf3e3efaf83cfeddde982800d6a84f704 16-Jul-2011 Jakub Staszak <jstaszak@apple.com> Remove unused LoopRanges from RegAllocGreedy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135354 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
59a9dab4d8650d3408efa431907183e13b91867b 16-Jul-2011 Jakub Staszak <jstaszak@apple.com> Add MachineBlockFrequency analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135352 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
achineBlockFrequency.cpp
a71642b2a4944eaa269d881cf71b02b8e8fe5638 16-Jul-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r135343 at Sat. 16th July 2011.
f9d7fb6b3c45abc64ad52cd8a9a8a7dd5aa9f4bb 16-Jul-2011 Matt Beaumont-Gay <matthewbg@google.com> Silence unused variable warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135339 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
af4e40c2f41a7d60b86958e034b00542d551b5f2 16-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> He said *before* the last split point.

This should unbreak the build-self-4-mingw32 tester. I have a very
complicated test case that I will try to clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135329 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
e63e5ab50ab37fd59cc6e815fffcb90e75537ca3 16-Jul-2011 Dan Gohman <gohman@apple.com> LegalizeDAG doesn't need its own copy of this enum.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
75b10047fc57c30c86bb7c9ea0ee923ff3c33a7e 16-Jul-2011 Dan Gohman <gohman@apple.com> Delete LegalizeDAG's own version of isTypeLegal and getTypeAction
and just use the ones from TargetLowering directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135318 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ea0270298de4d2a4186454fc39a6836e99271f1d 16-Jul-2011 Dan Gohman <gohman@apple.com> Delete an unused variable and a redundant assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b4ddedce599183362b0f0333922c2fe0e163a129 15-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract parts of RAGreedy::splitAroundRegion as SplitKit methods.

This gets rid of some of the gory splitting details in RAGreedy and
makes them available to future SplitKit clients.

Slightly generalize the functionality to support multi-way splitting.
Specifically, SplitEditor::splitLiveThroughBlock() supports switching
between different register intervals in a block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135307 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
6a109f9d70bf7f75541400145a7a89880cc48166 15-Jul-2011 Dan Gohman <gohman@apple.com> Modernize comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
133b09953c40b9cceb559e765bca461c38bb4c51 15-Jul-2011 Devang Patel <dpatel@apple.com> Use DebugLoc directly to map inlined functions' instructions to respective lexical scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135302 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1e479fb5c1937e586cb485f1d6a1f09e5f08c957 15-Jul-2011 Devang Patel <dpatel@apple.com> Eliminate redundant map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135278 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
a3efbb15ddd5aa9006564cd79086723640084878 15-Jul-2011 Jay Foad <jay.foad@gmail.com> Convert CallInst and InvokeInst APIs to use ArrayRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135265 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ntrinsicLowering.cpp
hadowStackGC.cpp
tackProtector.cpp
a83bba46b38c255e18ebbe1262ea339431a1ef94 15-Jul-2011 Evan Cheng <evan.cheng@apple.com> Reverting r135232. It's causing infinite looping in DbgScope::openInsnRange.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135254 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0bf164605dd83d65f6c510dad26449fcf9a79a51 15-Jul-2011 Devang Patel <dpatel@apple.com> Do not get confused by multiple empty lexical scopes inlined at one location.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135232 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1abf2cb59b8d63415780a03329307c0997b2670c 15-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename createAsmInfo to createMCAsmInfo and move registration code to MCTargetDesc to prepare for next round of changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135219 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
9b4a172ac07dfc639cab7f8851d5fad3a70101a5 15-Jul-2011 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135212 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
4f455d6f258ae209291006e96b007111978fa1e0 15-Jul-2011 Devang Patel <dpatel@apple.com> Eliminate redundant LLVMContext argument.
Improve DbgScope->dump() output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135207 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
5427edeb68d653ced860ed14f83848ebbb01b64b 14-Jul-2011 Eric Christopher <echristo@apple.com> Check register class matching instead of width of type matching
when determining validity of matching constraint. Allow i1
types access to the GR8 reg class for x86.

Fixes PR10352 and rdar://9777108

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
eb9a85f09e18b3fe88499710404b38d3a9128f62 14-Jul-2011 Benjamin Kramer <benny.kra@googlemail.com> Change Intrinsic::getDeclaration and friends to take an ArrayRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135154 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
d0f3ef807ee4210b97a7a6bc4231e89403145b83 14-Jul-2011 Nadav Rotem <nadav.rotem@intel.com> [VECTOR-SELECT]
During type legalization we often use the SIGN_EXTEND_INREG SDNode.
When this SDNode is legalized during the LegalizeVector phase, it is
scalarized because non-simple types are automatically marked to be expanded.
In this patch we add support for lowering SIGN_EXTEND_INREG manually.
This fixes CodeGen/X86/vec_sext.ll when running with the '-promote-elements'
flag.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135144 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
aeb86fab3e875b6ffebea42f4f4dd3e7791ae365 14-Jul-2011 Nadav Rotem <nadav.rotem@intel.com> Add assertion for the chain value type

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135143 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f1c709837bd11c5383fce3b8a026a7c8eaabba86 14-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Reapply r135121 with a fixed copy constructor.

Original commit message:

Count references to interference cache entries.

Each InterferenceCache::Cursor instance references a cache entry. A
non-zero reference count guarantees that the entry won't be reused for a
new register.

This makes it possible to have multiple live cursors examining
interference for different physregs.

The total number of live cursors into a cache must be kept below
InterferenceCache::getMaxCursors().

Code generation should be unaffected by this change, and it doesn't seem
to affect the cache replacement strategy either.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135130 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.cpp
nterferenceCache.h
egAllocGreedy.cpp
49c19f778b62df6f2a28798113a17d5cb3582bda 14-Jul-2011 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135127 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3ff25514ce24a521fc9524eefb257a1f5f262d84 14-Jul-2011 Benjamin Kramer <benny.kra@googlemail.com> Don't emit a bit test if there is only one case the test can yield false. A simple SETNE is sufficient.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135126 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
d77ec6208cef2a8e615181c2bf0fc5a50a37a20b 14-Jul-2011 Devang Patel <dpatel@apple.com> Simplify and delay extracting DebugLoc elements, scope and InlinedAt, as much as possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135124 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
7332e6ee25378e19c0f621c80c32b283b07f428a 14-Jul-2011 Eric Christopher <echristo@apple.com> Add a dag combine pattern for folding C2-(A+C1) -> (C2-C1)-A

Fixes rdar://9761830

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135123 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4fcfcf498436533ea9bc59404d10751bc76cfd2c 14-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r135121 which broke a gcc-4.2 builder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135122 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.cpp
nterferenceCache.h
egAllocGreedy.cpp
6a9feaac935c9345f825b272cf3225248e282f3f 14-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Count references to interference cache entries.

Each InterferenceCache::Cursor instance references a cache entry. A
non-zero reference count guarantees that the entry won't be reused for a
new register.

This makes it possible to have multiple live cursors examining
interference for different physregs.

The total number of live cursors into a cache must be kept below
InterferenceCache::getMaxCursors().

Code generation should be unaffected by this change, and it doesn't seem
to affect the cache replacement strategy either.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135121 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.cpp
nterferenceCache.h
egAllocGreedy.cpp
0cd0c248cc7bbc6045b614940f14fb0a886f27f6 14-Jul-2011 Devang Patel <dpatel@apple.com> Simplify. Compile unit check inside hasValidLocation() did not add any value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135118 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c66a37df73f70ec3dbed06277763624f33ee3512 14-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Reapply r135074 and r135080 with a fix.

The cache entry referenced by the best split candidate could become
clobbered by an unsuccessful candidate.

The correct fix here is to use reference counts on the cache entries.
Coming up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135113 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.h
egAllocGreedy.cpp
0f16a4eecc14a0455d0b9dd55742b1c4ebaa1575 14-Jul-2011 Devang Patel <dpatel@apple.com> Fix typo in DEBUG message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135111 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5fc0d886da2253b3cd1f319cca7185327a447ba4 14-Jul-2011 Devang Patel <dpatel@apple.com> Add DEBUG messages.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135110 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
54c74e906a622c1a2d95d2fc11a7dae88a61963e 14-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r135074 and r135080. They broke clamscan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135096 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.h
egAllocGreedy.cpp
3bae1bf62eba1a2715ec22d9800799184cc495e6 13-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Only keep the global split candidates that work out.

Some pysical registers create split solutions that would spill anywhere.
They should not even be considered in future multi-way global splits.

This does not affect code generation (yet).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135080 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
1337e2b75a6fc52ced7f6c2b2ad05ac62b8cbdca 13-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move the InterferenceCache cursor into the GlobalSplitCand struct.

This is in preparation of supporting multiple global split candidates in
a single live range split operation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135074 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.h
egAllocGreedy.cpp
9bc402c8d4b547ab644d39a37033c1e4ef67c3cd 13-Jul-2011 Evan Cheng <evan.cheng@apple.com> Fix up TargetLoweringObjectFile ctors to properly initialize fields.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135068 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
fc6d3a49867cd38954dc40936a88f1907252c6d2 13-Jul-2011 Jay Foad <jay.foad@gmail.com> Convert InsertValueInst and ExtractValueInst APIs to use ArrayRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135040 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
5fdd6c8793462549e3593890ec61573da06e3346 12-Jul-2011 Jay Foad <jay.foad@gmail.com> Second attempt at de-constifying LLVM Types in FunctionType::get(),
StructType::get() and TargetData::getIntPtrType().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134982 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ntrinsicLowering.cpp
jLjEHPrepare.cpp
2280ebd61416b73d0b6137f275b25af82e268d1f 12-Jul-2011 Bill Wendling <isanbard@gmail.com> Revert r134893 and r134888 (and related patches in other trees). It was causing
an assert on Darwin llvm-gcc builds.

Assertion failed: (castIsValid(op, S, Ty) && "Invalid cast!"), function Create, file /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.llvm-gcc-i386-darwin9-RA/llvm.src/lib/VMCore/Instructions.cpp, li\
ne 2067.
etc.

http://smooshlab.apple.com:8013/builders/llvm-gcc-i386-darwin9-RA/builds/2354

--- Reverse-merging r134893 into '.':
U include/llvm/Target/TargetData.h
U include/llvm/DerivedTypes.h
U tools/bugpoint/ExtractFunction.cpp
U unittests/Support/TypeBuilderTest.cpp
U lib/Target/ARM/ARMGlobalMerge.cpp
U lib/Target/TargetData.cpp
U lib/VMCore/Constants.cpp
U lib/VMCore/Type.cpp
U lib/VMCore/Core.cpp
U lib/Transforms/Utils/CodeExtractor.cpp
U lib/Transforms/Instrumentation/ProfilingUtils.cpp
U lib/Transforms/IPO/DeadArgumentElimination.cpp
U lib/CodeGen/SjLjEHPrepare.cpp
--- Reverse-merging r134888 into '.':
G include/llvm/DerivedTypes.h
U include/llvm/Support/TypeBuilder.h
U include/llvm/Intrinsics.h
U unittests/Analysis/ScalarEvolutionTest.cpp
U unittests/ExecutionEngine/JIT/JITTest.cpp
U unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp
U unittests/VMCore/PassManagerTest.cpp
G unittests/Support/TypeBuilderTest.cpp
U lib/Target/MBlaze/MBlazeIntrinsicInfo.cpp
U lib/Target/Blackfin/BlackfinIntrinsicInfo.cpp
U lib/VMCore/IRBuilder.cpp
G lib/VMCore/Type.cpp
U lib/VMCore/Function.cpp
G lib/VMCore/Core.cpp
U lib/VMCore/Module.cpp
U lib/AsmParser/LLParser.cpp
U lib/Transforms/Utils/CloneFunction.cpp
G lib/Transforms/Utils/CodeExtractor.cpp
U lib/Transforms/Utils/InlineFunction.cpp
U lib/Transforms/Instrumentation/GCOVProfiling.cpp
U lib/Transforms/Scalar/ObjCARC.cpp
U lib/Transforms/Scalar/SimplifyLibCalls.cpp
U lib/Transforms/Scalar/MemCpyOptimizer.cpp
G lib/Transforms/IPO/DeadArgumentElimination.cpp
U lib/Transforms/IPO/ArgumentPromotion.cpp
U lib/Transforms/InstCombine/InstCombineCompares.cpp
U lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
U lib/Transforms/InstCombine/InstCombineCalls.cpp
U lib/CodeGen/DwarfEHPrepare.cpp
U lib/CodeGen/IntrinsicLowering.cpp
U lib/Bitcode/Reader/BitcodeReader.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134949 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ntrinsicLowering.cpp
jLjEHPrepare.cpp
eeb64ae6e52ac2a7980884fe89c01508014af6a9 11-Jul-2011 Jay Foad <jay.foad@gmail.com> De-constify Types in StructType::get() and TargetData::getIntPtrType().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134893 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
f362affa3a695164a94d275fb44d18f44ebb855a 11-Jul-2011 Jay Foad <jay.foad@gmail.com> De-constify Types in FunctionType::get().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134888 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ntrinsicLowering.cpp
59ee62d2418df8db499eca1ae17f5900dc2dcbba 11-Jul-2011 Evan Cheng <evan.cheng@apple.com> - Eliminate MCCodeEmitter's dependency on TargetMachine. It now uses MCInstrInfo
and MCSubtargetInfo.
- Added methods to update subtarget features (used when targets automatically
detect subtarget features or switch modes).
- Teach X86Subtarget to update MCSubtargetInfo features bits since the
MCSubtargetInfo layer can be shared with other modules.
- These fixes .code 16 / .code 32 support since mode switch is updated in
MCSubtargetInfo so MC code emitter can do the right thing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134884 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
f81b7f6069b27c0a515070dcb392f6828437412f 10-Jul-2011 Jakub Staszak <jstaszak@apple.com> Use BranchProbability instead of floating points in IfConverter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134858 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
2b33f4cbad43dcaca944d02a6ea67991ff9db9cf 10-Jul-2011 Jakub Staszak <jstaszak@apple.com> Don't analyze block if it's not considered for ifcvt anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134856 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
1afcace3a3a138b1b18e5c6270caa8dae2261ae2 09-Jul-2011 Chris Lattner <sabre@nondot.org> Land the long talked about "type system rewrite" patch. This
patch brings numerous advantages to LLVM. One way to look at it
is through diffstat:
109 files changed, 3005 insertions(+), 5906 deletions(-)

Removing almost 3K lines of code is a good thing. Other advantages
include:

1. Value::getType() is a simple load that can be CSE'd, not a mutating
union-find operation.
2. Types a uniqued and never move once created, defining away PATypeHolder.
3. Structs can be "named" now, and their name is part of the identity that
uniques them. This means that the compiler doesn't merge them structurally
which makes the IR much less confusing.
4. Now that there is no way to get a cycle in a type graph without a named
struct type, "upreferences" go away.
5. Type refinement is completely gone, which should make LTO much MUCH faster
in some common cases with C++ code.
6. Types are now generally immutable, so we can use "Type *" instead
"const Type *" everywhere.

Downsides of this patch are that it removes some functions from the C API,
so people using those will have to upgrade to (not yet added) new API.
"LLVM 3.0" is the right time to do this.

There are still some cleanups pending after this, this patch is large enough
as-is.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134829 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
ffc0e73046f737d75e0a62b3a83ef19bcef111e3 09-Jul-2011 Evan Cheng <evan.cheng@apple.com> Change createAsmParser to take a MCSubtargetInfo instead of triple,
CPU, and feature string. Parsing some asm directives can change
subtarget state (e.g. .code 16) and it must be reflected in other
modules (e.g. MCCodeEmitter). That is, the MCSubtargetInfo instance
must be shared.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134795 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
4f4a6fcd165293c347a42b543e5e55aa42a09bb2 09-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Oops, didn't mean to commit that.

Spills should be hoisted out of loops, but we don't want to hoist them
to dominating blocks at the same loop depth. That could cause the spills
to be executed more often.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134782 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
56573cc1aee419b5cc9e3446a59a73577bf26fac 09-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Hoist spills within a basic block.

Try to move spills as early as possible in their basic block. This can
help eliminate interferences by shortening the live range being
spilled.

This fixes PR10221.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134776 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
33390848a7eca75301d04a59b89b516d83e19ee0 08-Jul-2011 Cameron Zwarich <zwarich@apple.com> Add an intrinsic and codegen support for fused multiply-accumulate. The intent
is to use this for architectures that have a native FMA instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
51458ed09e6db0e424cd528e10b879f59915abe4 08-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more aggressive about following hints.

RAGreedy::tryAssign will now evict interference from the preferred
register even when another register is free.

To support this, add the EvictionCost struct that counts how many hints
are broken by an eviction. We don't want to break one hint just to
satisfy another.

Rename canEvict to shouldEvict, and add the first bit of eviction policy
that doesn't depend on spill weights: Always make room in the preferred
register as long as the evictees can be split and aren't already
assigned to their preferred register.

Also make the CSR avoidance more accurate. When looking for a cheaper
register it is OK to use a new volatile register. Only CSR aliases that
have never been used before should be avoided.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134735 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocGreedy.cpp
irtRegMap.h
90b40414a092a5cbf35b80eb03e38787eea1a363 08-Jul-2011 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134703 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
80efd4e96b0be13e80c26acd737c287d39b9c00f 08-Jul-2011 Devang Patel <dpatel@apple.com> Make provision to have floating point constants in .debug_loc expressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134702 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
3492a4af129f6068739bbbe3f8c7fbe7e4af2fcb 08-Jul-2011 Benjamin Kramer <benny.kra@googlemail.com> Apparently we can't expect a BinaryOperator here.

Should fix llvm-gcc selfhost.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134699 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9c64030445cbe6ac486b90c5f459f91e06770474 08-Jul-2011 Benjamin Kramer <benny.kra@googlemail.com> Emit a more efficient magic number multiplication for exact sdivs.

We have to do this in DAGBuilder instead of DAGCombiner, because the exact bit is lost after building.

struct foo { char x[24]; };
long bar(struct foo *a, struct foo *b) { return a-b; }
is now compiled into
movl 4(%esp), %eax
subl 8(%esp), %eax
sarl $3, %eax
imull $-1431655765, %eax, %eax
instead of
movl 4(%esp), %eax
subl 8(%esp), %eax
movl $715827883, %ecx
imull %ecx
movl %edx, %eax
shrl $31, %eax
sarl $2, %edx
addl %eax, %edx
movl %edx, %eax

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134695 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/TargetLowering.cpp
ebdeeab812beec0385b445f3d4c41a114e0d972f 08-Jul-2011 Evan Cheng <evan.cheng@apple.com> Eliminate asm parser's dependency on TargetMachine:
- Each target asm parser now creates its own MCSubtatgetInfo (if needed).
- Changed AssemblerPredicate to take subtarget features which tablegen uses
to generate asm matcher subtarget feature queries. e.g.
"ModeThumb,FeatureThumb2" is translated to
"(Bits & ModeThumb) != 0 && (Bits & FeatureThumb2) != 0".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134678 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
LVMTargetMachine.cpp
09ad0b6894ae4eab9837970ccd4574681097eb6e 08-Jul-2011 Eric Christopher <echristo@apple.com> Remove a FIXME. All of the standard ones are in the list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134647 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
476df5f64f1536330af0dacdfce768efc625dc41 07-Jul-2011 Devang Patel <dpatel@apple.com> Add DEBUG message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134643 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9194c6716be13e2b8d2cf8e45273bf6c79f8b32c 07-Jul-2011 Devang Patel <dpatel@apple.com> If known DebugLocs do not match then two DBG_VALUE machine instructions are not identical. For example,

DBG_VALUE 3.310000e+02, 0, !"ds"; dbg:sse.stepfft.c:138:18 @[ sse.stepfft.c:32:10 ]
DBG_VALUE 3.310000e+02, 0, !"ds"; dbg:sse.stepfft.c:138:18 @[ sse.stepfft.c:31:10 ]

These two MIs represent identical value, 3.31..., for one variable, ds, but they are not identical because the represent two separate instances of inlined variable "ds".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134620 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
944520f38c79f3cbf1abfca92a5414458d639029 07-Jul-2011 Lang Hames <lhames@gmail.com> Add functions 'hasPredecessor' and 'hasPredecessorHelper' to SDNode. The
hasPredecessorHelper function allows predecessors to be cached to speed up
repeated invocations. This fixes PR10186.

X.isPredecessorOf(Y) now just calls Y.hasPredecessor(X)

Y.hasPredecessor(X) calls Y.hasPredecessorHelper(X, Visited, Worklist) with
empty Visited and Worklist sets (i.e. no caching over invocations).

Y.hasPredecessorHelper(X, Visited, Worklist) caches search state in Visited
and Worklist to speed up repeated calls. The Visited set is searched for X
before going to the worklist to further search the DAG if necessary.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134592 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
7986289a9cc99b45941adf98c64e6f3dbbc917cc 07-Jul-2011 Devang Patel <dpatel@apple.com> Add DEBUG messages.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134572 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a38cfb2fceb266bd78164021c08284dc59a1e8a3 07-Jul-2011 Eli Friedman <eli.friedman@gmail.com> When tail-merging multiple blocks, make sure to correctly update the live-in list on the merged block to correctly account for the live-outs of all the predecessors. They might not be the same in all cases (the testcase I have involves a PHI node where one of the operands is an IMPLICIT_DEF).

Unfortunately, the testcase I have is large and confidential, so I don't have a test to commit at the moment; I'll see if I can come up with something smaller where this issue reproduces.

<rdar://problem/9716278>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134565 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
90369eb209f5cfa52d683f4248b4c0a9cfd9b916 07-Jul-2011 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134561 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a462d6e8ebe90f3732891b02a057a88038ac1228 07-Jul-2011 Devang Patel <dpatel@apple.com> Typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134559 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
882e1e1c5d157a8bb2f001f2f4cacf0f0dd722a3 07-Jul-2011 Eric Christopher <echristo@apple.com> Grammar and 80-col.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134555 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b262799d49891b036daa00eddf51947487346c98 06-Jul-2011 Evan Cheng <evan.cheng@apple.com> createMCInstPrinter doesn't need TargetMachine anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134525 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
cheduleDAGEmit.cpp
9da9934e27dfb48de77b80a3e20ed2d869b52024 06-Jul-2011 Jakub Staszak <jstaszak@apple.com> Introduce "expect" intrinsic instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134516 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuilder.cpp
c74ddd87e032de966f9190296e72209e15084bda 06-Jul-2011 Ying Wang <wangying@google.com> Remove duplicate to mute build warning.

Change-Id: If00021c251e0e3bd43d41f113b139d1b10d98b2b
ndroid.mk
9c04b5bd282bd5d03ab2114339d670ca95073664 06-Jul-2011 Dan Gohman <gohman@apple.com> Remove the ObjC ARC passes from the default optimization list, and add
extension points to be used by clang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134444 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
549019792a8b14500cab093ac8f3c5f7331e86d7 05-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Break infinite loop when the Hopfield network oscillates.

This is impossible in theory, I can prove it. In practice, our near-zero
threshold can cause the network to oscillate between equally good
solutions.

<rdar://problem/9720596>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134428 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
9693d4c3f0d0e8c91e4748eb1c18799b1de7551c 05-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR10277.

Remat during spilling triggers dead code elimination. If a phi-def
becomes unused, that may also cause live ranges to split into separate
connected components.

This type of splitting is different from normal live range splitting. In
particular, there may not be a common original interval.

When the split range is its own original, make sure that the new
siblings are also their own originals. The range being split cannot be
used as an original since it doesn't cover the new siblings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134413 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
2b0f4abfbe1c651fe6bd233bf89373d276c535a8 05-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Tweak comment and debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134412 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
25483911049304c069b76f0a3b2f4f6b2216ef51 04-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Move early tail duplication earlier.

This fixes the issue noted in PR10251 where early tail dup of bbs with
indirectbr would cause a bb to be duplicated into a loop preheader
and then into its predecessors, creating phi nodes with identical
operands just before register allocation.

This helps with jsinterp.o size (__TEXT goes from 163568 to 126656)
and a bit with performance 1.005x faster on sunspider (jits still enabled).

The result on webkit with the jit disabled is more significant: 1.021x faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134372 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
6a9d2b13fdc14d19b27776666cf50684bcfddc8d 04-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Move most of the pre BB code to TailDuplicateAndUpdate. Change the
HasIndirectbr variable to be just that. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134371 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
c0af352038e43bd51ef3ea11e7d43647e4df42bf 04-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Reduce indentation and fix the count of how many PHIs we have inserted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134370 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
736a0118b5384daa52b82dfb398ad980afdb7bb4 04-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR10244.

A split point inserted in a block with a landing pad successor may be
hoisted above the call to ensure that it dominates all successors. The
code that handles the rest of the basic block must take this into
account.

I am not including a test case, it would be very fragile. PR10244 comes
from building clang with exceptions enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134369 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
65268575c419a890052a446d28329f9e81302a05 03-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix an easy fixme.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134364 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
017205d3c12a1b6b04c63f402eed1023c4c83c3e 02-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Use getVNInfoAt.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134312 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
9d812a2805161665d56a78734da98b58f39ce0fc 02-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Better diagnostics when inline asm fails to allocate.

asm.c:2:7: error: ran out of registers during register allocation
asm(""::"r"(0), "r"(1), "r"(2), "r"(3), "r"(4), "r"(5), "r"(6), "r"(7), "r"(8), "r"(9));
^

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134310 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
egAllocFast.cpp
a9badd250cac2e5090eb950bb0456c37ee6c8f7a 02-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Check the VN of the src register at the two copies, not just the
register number.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134309 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
1ffcf07d9fb7a7db5737ca7307ae8e0aa713f278 02-Jul-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r134306 at Sat. 2nd July 2011.
d519de082766bb71e13f6a516b305ff841c6b48c 02-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Include a source location when complaining about bad inline assembly.

Add a MI->emitError() method that the backend can use to report errors
related to inline assembly. Call it from X86FloatingPoint.cpp when the
constraints are wrong.

This enables proper clang diagnostics from the backend:

$ clang -c pr30848.c
pr30848.c:5:12: error: Inline asm output regs must be last on the x87 stack
__asm__ ("" : "=u" (d)); /* { dg-error "output regs" } */
^
1 error generated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134307 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f899bd4a462884aa91b9d0c93ab2dbc605dac116 02-Jul-2011 Nowar Gu <nowar100@gmail.com> Fix Android.mk.
ndroid.mk
1a988004dba412deb5d6b8e93b955dfc837065f0 02-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a new strategy for preventing eviction loops in RAGreedy.

Every live range is assigned a cascade number the first time it is
involved in an eviction. As the evictor, it gets a new cascade number.
Every evictee is assigned the same cascade number as the evictor.

Eviction is prohibited if the evictor has a lower assigned cascade
number than the evictee.

This means that assigned cascade numbers are monotonically increasing
with every eviction, yet they are bounded by NextCascade which can only
be incremented by new live ranges. Thus, infinite loops cannot happen,
but eviction cascades can still be triggered by new live ranges as we
want.

Thanks to Andy for explaining this to me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134303 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
c20fb63ebdbc8caec4566eaa7bc5be7f0a14cca1 02-Jul-2011 Cameron Zwarich <zwarich@apple.com> Take a stab at fixing the llvm-x86_64-linux-checks failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134287 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
5b1b4489cf3a0f56f8be0673fc5cc380a32d277b 01-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename TargetSubtarget to TargetSubtargetInfo for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134259 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
53d48080e55bf0c99cb7ca9de5b15a084d7324b5 01-Jul-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r134237 at Fri. 1st July 2011.

Conflicts:
lib/Target/ARM/ARMCodeEmitter.cpp
ed5bc470aab7097c30e5f881158112f7830472f3 01-Jul-2011 Duncan Sands <baldrick@free.fr> Disable commit 134216 ("Add 134199 back, but disable the optimization when the second
copy is a kill") to see if it fixes the i386 dragonegg buildbot, which is timing out
because gcc built with dragonegg is going into an infinite loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134237 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
8f1bdac3eba0e065c8ebe2a9c671e299c1fc6797 01-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Avoid DenseMap lookup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134231 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
fe11caaa73782e3182a4d4840ee00336dab9490a 01-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix off by one error. I misunderstood the comment about killedAt.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134229 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
1c8b97cbc03e0e1966d244a27b55e74bde35671e 01-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Check the liveinterval, not the kill flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134228 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
5e9ae090d8afd994c8c8e81779dd2c074ecf9369 01-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't inflate register classes used by inline asm.

The constraints are represented by the register class of the original
virtual register created for the inline asm. If the register class were
included in the operand descriptor, we might be able to do this.

For now, just give up on regclass inflation when inline asm is involved.

No test case, this bug hasn't happened yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134226 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
0c13e9471a4aa32207923d84c0990eeb9bb898ab 01-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Add 134199 back, but disable the optimization when the second copy is a kill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134216 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
15e96be3c70ab2e4a50c505c2b90e4ce1095dbd6 01-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Revert my previous patch while I debug llvm-gcc bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134201 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
c747acb8d97d4df51d738383b49b8115519b88fb 01-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Don't give up on coalescing A and B when we find

A = X
B = X

Instead, proceed as if we had found

A = X
B = A

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134199 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
cfe5254cd34d9414d9f6b8aa02dc1239d71a703f 30-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Create a isFullCopy predicate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134189 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
ef17e01725740a91bd12723520f6edb2f12526d2 30-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134148 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.h
87360f73ae205854f100ba5fb7eef7b90ac3bc27 30-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Reapply r134047 now that the world is ready for it.

This patch will sometimes choose live range split points next to
interference instead of always splitting next to a register point. That
means spill code can now appear almost anywhere, and it was necessary
to fix code that didn't expect that.

The difficult places were:

- Between a CALL returning a value on the x87 stack and the
corresponding FpPOP_RETVAL (was FpGET_ST0). Probably also near x87
inline assembly, but that didn't actually show up in testing.

- Between a CALL popping arguments off the stack and the corresponding
ADJCALLSTACKUP.

Both are fixed now. The only place spill code can't appear is after
terminators, see SplitAnalysis::getLastSplitPoint.

Original commit message:

Rewrite RAGreedy::splitAroundRegion, now with cool ASCII art.

This function has to deal with a lot of special cases, and the old
version got it wrong sometimes. In particular, it would sometimes leave
multiple uses in the stack interval in a single block. That causes bad
code with multiple reloads in the same basic block.

The new version handles block entry and exit in a single pass. It first
eliminates all the easy cases, and then goes on to create a local
interval for the blocks with difficult interference. Previously, we
would only create the local interval for completely isolated blocks.

It can happen that the stack interval becomes completely empty because
we could allocate a register in all edge bundles, and the new local
intervals deal with the interference. The empty stack interval is
harmless, but we need to remove a SplitKit assertion that checks for
empty intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134125 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
5244c4cc2fd31e49bae2b192bd824a94b6ad5331 30-Jun-2011 Eric Christopher <echristo@apple.com> Remove getRegClassForInlineAsmConstraint and all dependencies.

Fixes rdar://9643582


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134123 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
272511f518127aae8c96935689b5607455542863 30-Jun-2011 Devang Patel <dpatel@apple.com> Revert r133953 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134116 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
00258d17cd7152237141648d26e1b096cf0e882b 29-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> make compose and isMoveInstr static functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134093 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
egisterCoalescer.h
bdd1ef2dbec63d4e428f4ff19d54821dc08fa168 29-Jun-2011 Benjamin Kramer <benny.kra@googlemail.com> Revert a part of r126557 which could create unschedulable DAGs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134067 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2c0cbce763a258ac58590a8ca3c28ff722093fef 29-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r134047 while investigating a llvm-gcc-i386-linux-selfhost
miscompile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134053 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
ab8be96fd30ca9396e6b84fdddf1ac6208984cad 29-Jun-2011 Evan Cheng <evan.cheng@apple.com> Sink SubtargetFeature and TargetInstrItineraries (renamed MCInstrItineraries) into MC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134049 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
achineLICM.cpp
cheduleDAGInstrs.cpp
coreboardHazardRecognizer.cpp
electionDAG/ScheduleDAGSDNodes.cpp
4d517e34e5c8431adb724c94a14b02362a9cfe67 29-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rewrite RAGreedy::splitAroundRegion, now with cool ASCII art.

This function has to deal with a lot of special cases, and the old
version got it wrong sometimes. In particular, it would sometimes leave
multiple uses in the stack interval in a single block. That causes bad
code with multiple reloads in the same basic block.

The new version handles block entry and exit in a single pass. It first
eliminates all the easy cases, and then goes on to create a local
interval for the blocks with difficult interference. Previously, we
would only create the local interval for completely isolated blocks.

It can happen that the stack interval becomes completely empty because
we could allocate a register in all edge bundles, and the new local
intervals deal with the interference. The empty stack interval is
harmless, but we need to remove a SplitKit assertion that checks for
empty intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134047 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
d5b03f252c0db6b49a242abab63d7c5a260fceae 28-Jun-2011 Evan Cheng <evan.cheng@apple.com> Move CallFrameSetupOpcode and CallFrameDestroyOpcode to TargetInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134030 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
e837dead3c8dc3445ef6a0e2322179c57e264a13 28-Jun-2011 Evan Cheng <evan.cheng@apple.com> - Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and
sink them into MC layer.
- Added MCInstrInfo, which captures the tablegen generated static data. Chang
TargetInstrInfo so it's based off MCInstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134021 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
xpandISelPseudos.cpp
fConversion.cpp
achineBasicBlock.cpp
achineCSE.cpp
achineFunction.cpp
achineInstr.cpp
achineLICM.cpp
achineVerifier.cpp
eepholeOptimizer.cpp
egAllocFast.cpp
egisterCoalescer.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
coreboardHazardRecognizer.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAGISel.cpp
tackSlotColoring.cpp
ailDuplication.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
27ce3b96e51887995f94d8c78a6c7e79bf7cdcdd 28-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Print registers by name instead of by number.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134013 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
0b3b58df1bad0c0d05a36c943ea5ee9e8c9a5411 28-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Fix CMake build by removing this now dead file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133981 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
1e0bd63477da6e9b1dc5111bafba2b1cf143bfba 28-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a bad iterator dereference that Evan uncovered.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133978 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
f46e7e3d7ff56d91572350c45ade83f4deea0139 28-Jun-2011 Evan Cheng <evan.cheng@apple.com> Remove RegClass2VRegMap from MachineRegisterInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133967 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
f10711fb8c8b5596e973bcc27b5af6203fec34b4 28-Jun-2011 Evan Cheng <evan.cheng@apple.com> Remove the experimental (and unused) pre-ra splitting pass. Greedy regalloc can split live ranges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133962 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
016c5829a5dacc3b28cb264b4b6d166552e3d568 28-Jun-2011 Devang Patel <dpatel@apple.com> During bottom up fast-isel, instructions emitted to materalize registers are at top of basic block and do not have debug location. This may misguide debugger while entering the basic block and sometimes debugger provides semi useful view of current location to developer by picking up previous known location as current location. Assign a sensible location to the first instruction in a basic block, if it does not have one location derived from source file, so that debugger can provide meaningful user experience to developers in edge cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133953 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
15993f83a419950f06d2879d6701530ae6449317 27-Jun-2011 Evan Cheng <evan.cheng@apple.com> More refactoring. Move getRegClass from TargetOperandInfo to TargetInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133944 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
alcSpillWeights.cpp
riticalAntiDepBreaker.cpp
achineLICM.cpp
achineVerifier.cpp
egisterCoalescer.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGRRList.cpp
tackSlotColoring.cpp
woAddressInstructionPass.cpp
702110159a53481227b01fed81fa4eec0ad3cc46 27-Jun-2011 Owen Anderson <resistor@mac.com> The index stored in the RegDefIter is one after the current index. When getting the index, decrement it so that it points to the current element. Fixes an off-by-one bug encountered when trying to make use of MVT::untyped.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.h
4ef4c171dba8e479f5f3fe7acb22e9fe97a4d6f8 27-Jun-2011 Andrew Trick <atrick@apple.com> pre-RA-sched: Cleanup register pressure tracking.

Removed the check that peeks past EXTRA_SUBREG, which I don't think
makes sense any more. Intead treat it as a normal register def. No
significant affect on x86 or ARM benchmarks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
f27229ee5ad121247b9c79e7605b19fccf781d8d 27-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Track live-out physical registers in MachineDCE.

Patch by Sanjoy Das!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133910 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
f792fa90f1125553008659c743cba85b9b5d2e5e 27-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Distinguish early clobber output operands from clobbered registers.

Both become <earlyclobber> defs on the INLINEASM MachineInstr, but we
now use two different asm operand kinds.

The new Kind_Clobber is treated identically to the old
Kind_RegDefEarlyClobber for now, but x87 floating point stack inline
assembly does care about the difference.

This will pop a register off the stack:

asm("fstp %st" : : "t"(x) : "st");

While this will pop the input and push an output:

asm("fst %st" : "=&t"(r) : "t"(x));

We need to know if ST0 was a clobber or an output operand, and we can't
depend on <dead> flags for that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133902 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGBuilder.cpp
7a2ecd3f99ae4dede7e8c1984c2a08984be69363 27-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Decode and pretty print inline asm operand descriptors.

The INLINEASM MachineInstrs have an immediate operand describing each
original inline asm operand. Decode the bits in MachineInstr::print() so
it is easier to read:

INLINEASM <es:rorq $1,$0>, $0:[regdef], %vreg0<def>, %vreg1<def>, $1:[imm], 1, $2:[reguse] [tiedto:$0], %vreg2, %vreg3, $3:[regdef-ec], %EFLAGS<earlyclobber,imp-def>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133901 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ca08dcc4834341e44abf02b92a67ac7d1a708e1d 27-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove unused methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133900 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.h
5b220213bfe9c37c2bb41a7ae0804e06a14f1007 27-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> There is only one register coalescer. Merge it into the base class and
remove the analysis group.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133899 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
egisterCoalescer.h
plitKit.cpp
655739de7b09dcfecd9f3e5f1734e53ec90a19f3 27-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Merge SimpleRegisterCoalescing.cpp into RegisterCoalescer.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133897 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
b0efa94fb63d55c7aa5eb3c7c23d39a763036c24 26-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> merge SimpleRegisterCoalescing.h into RegisterCoalescer.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133896 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.h
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
plitter.cpp
fdf16ca44f130afe80c57481d0c08130aa08cc09 26-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Move RegisterCoalescer.h to lib/CodeGen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133895 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
egisterCoalescer.h
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
79db6a1db623a574eeaef746b08b1eb1d26a6914 26-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove unnecessary wrapper.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133886 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
e6b8bf8c4a74d48ad5c46c37f3754361acdeda61 25-Jun-2011 Owen Anderson <resistor@mac.com> The scheduler needs to be aware on the existence of untyped nodes when it performs type propagation for EXTRACT_SUBREG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133838 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
8594d429e02c688d428036f8563f09572da3fbff 24-Jun-2011 Devang Patel <dpatel@apple.com> Handle debug info for i128 constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133821 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
achineInstr.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
40179bf8748b2729d6c733022428dfa1061325c9 24-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Simplify

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133798 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
d7f35fa824165eea799a583ff5af678f2d842b87 24-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Now that bb with phis are not considered simple, duplicate them even if
we cannot duplicate to every predecessor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133797 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
1f71549a2ef24fc5d0fc9f0bb3b49fda770fe3d2 24-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Simplify now that blocks with phis are not considered simple.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133793 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
a347f85dbeee37a7f2bb68df1a7d4cdfbb7b576d 24-Jun-2011 Evan Cheng <evan.cheng@apple.com> Starting to refactor Target to separate out code that's needed to fully describe
target machine from those that are only needed by codegen. The goal is to
sink the essential target description into MC layer so we can start building
MC based tools without needing to link in the entire codegen.

First step is to refactor TargetRegisterInfo. This patch added a base class
MCRegisterInfo which TargetRegisterInfo is derived from. Changed TableGen to
separate register description from the rest of the stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133782 91177308-0d34-0410-b5e6-96231b3b80d8
egisterClassInfo.h
8012bd3687ad40b9bb18505c51ab5cf88eb00c45 23-Jun-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r133718, Fri. 24th June 2011.
4c0c446d7458ffcfbe108ea71f1915f387e150e7 23-Jun-2011 Bill Wendling <isanbard@gmail.com> Use the presence of the __compact_unwind section to indicate that a target
supports compact unwind info instead of having a separate flag indicating this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133685 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
9dbbd87938a0dc2ffe23f4205ec61618e052ca92 23-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Move more logic to shouldTailDuplicate and only duplicate regular bb before
register allocation if it has a indirectbr or if we can duplicate it to
every predecessor.

This fixes the SingleSource/Benchmarks/Shootout-C++/matrix.cpp regression but
keeps the previous improvements to sunspider.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133682 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
bb5c18c80e7ae4ce49eb9067b664f0559ec50965 23-Jun-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r133679 at Thu. 23th Jun 2011.
1a3ab63cb59d7f7726b47cdda3b9509e999d1653 23-Jun-2011 Bill Wendling <isanbard@gmail.com> Add a flag that indicates whether a target supports compact unwind info or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133662 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
d6379a993c7e40521bd5c8c6469e32697b4c41d1 23-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Reenable tail duplication of bb with just an unconditional jump, but
don't remove blocks that have their address taken.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133659 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
aa0a8f317791b4de07a6c7a2b9705c4183052b54 23-Jun-2011 Bill Wendling <isanbard@gmail.com> Add a __LD,__compact_unwind section.

If the linker supports it, this will hold the CIE and FDE information in a
compact format. The implementation of the compact unwinding emission is coming
soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133658 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
f78b5952c30b69c764ff48270eb56540a3fa56f3 22-Jun-2011 Chad Rosier <mcrosier@apple.com> Revert r133607. This is causing failures in the Clang gccTestSuite.
Specifically, gcc.c-torture/compile/pr21356.c.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133646 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
5b7ac1402f3c84a751eac96838d4b9676723f0c8 22-Jun-2011 Nick Lewycky <nicholas@mxc.ca> Emit trailing padding on constant vectors when TargetData says that the vector
is larger than the sum of the elements (including per-element padding).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133631 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
267010864e139781ef5949939e081c41f954de0a 22-Jun-2011 Jay Foad <jay.foad@gmail.com> Replace the existing forms of ConstantArray::get() with a single form
that takes an ArrayRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133615 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
hadowStackGC.cpp
c9be25726114b43ac03a4f8f84b537c21ee2bd6d 22-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Reenable the optimization added in 133415, but change the definition of a "simple" bb to
be one with only one unconditional branch and no phis. Duplicating the phis in this case
is possible, but requeres liveness analysis or breaking edges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133607 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
6f373a87cba3b0c88bc76bf1d03ee5f81143764f 22-Jun-2011 Devang Patel <dpatel@apple.com> After register is spilled there should not be any DBG_VALUE referring the same register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133569 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
109c22c06232358597afec5d8b7a6b6fd24e19b1 22-Jun-2011 Owen Anderson <resistor@mac.com> Fix some trailing issues from my introduction of MVT::untyped and its use for REGISTER_SEQUENCE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133567 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
0c11218f0a38461a3d74c075ee3b76e511c7ccd0 22-Jun-2011 Bill Wendling <isanbard@gmail.com> Add verbose EH table printing to SjLj exception tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133561 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
72d9b0e4fce90a635af5c80cb6992ac639279d59 22-Jun-2011 Devang Patel <dpatel@apple.com> There could be more than one DBG_VALUE instructions for variables where all of them have offset based on one register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133560 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
8fcd3e620424372af9afeeed7cd941aa8d5435af 22-Jun-2011 Bill Wendling <isanbard@gmail.com> Improve the comment printing for the EH table. This gives a much more detailed
explanation of what the EH table describes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133559 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
9568e5c3c3f1e25288d2ff375dba0fddbf161fd6 21-Jun-2011 Evan Cheng <evan.cheng@apple.com> Teach dag combine to match halfword byteswap patterns.
1. (((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8)
=> (bswap x) >> 16
2. ((x&0xff)<<8)|((x&0xff00)>>8)|((x&0xff000000)>>8)|((x&0x00ff0000)<<8))
=> (rotl (bswap x) 16)

This allows us to eliminate most of the def : Pat patterns for ARM rev16
revsh instructions. It catches many more cases for ARM and x86.

rdar://9609108


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133503 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b87e37f1b1ce76e34ac1d2c22fd6c22f900f28be 20-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Disable again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133446 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
689c24768bce1a3bf33b47559e9398525d11142d 20-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Re enable 133415 with two fixes
* Don't introduce a duplicated bb in the CFG
* When making a branch unconditional, clear the PredCond array so that it
is really unconditional.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133432 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
2ee2d932328522267d845402e8b31d1d06f8bdd1 20-Jun-2011 Duncan Sands <baldrick@free.fr> Disable the logic added by rafael in commit 133415 to see if it brings the
dragonegg buildbots back to life. Original commit message:
Teach early dup how to duplicate basic blocks with one successor and only phi instructions
into more complex blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133430 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
2a73c7f188f16049faa9282c9bd1217f878bd5d2 17-Jun-2011 Nowar Gu <nowar100@gmail.com> Fix source list of Android.mk.
ndroid.mk
smPrinter/Android.mk
907af0f20f58f2ea26da7ea64e1f094cd6880db7 17-Jun-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r133240 at Fri. 17th Jun 2011.

Conflicts:
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/Target/ARM/ARMCodeEmitter.cpp
4720611025276f01b158a1522620391332ffdc32 20-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> Fix PromoteIntRes_TRUNCATE: Add support for cases where the
source vector type is to be split while the target vector is to be promoted.
(eg: <4 x i64> -> <4 x i8> )


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133424 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
289a27946fc11ae6b5a9aa517639d94efa4d91d9 20-Jun-2011 Francois Pichet <pichet2000@gmail.com> Fix MSVC build. next() function already exists in the MSVC headers. This create a overload conflict. Make sure we pick up the llvm one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133416 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
275c1f9f93bf71bcf97fe0315bbd9b86dd020177 20-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Teach early dup how to duplicate basic blocks with one successor and only phi instructions
into more complex blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133415 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
b065b06c12dba6001b8140df2744d0c856ef6ea1 20-Jun-2011 Chris Lattner <sabre@nondot.org> Revamp the "ConstantStruct::get" methods. Previously, these were scattered
all over the place in different styles and variants. Standardize on two
preferred entrypoints: one that takes a StructType and ArrayRef, and one that
takes StructType and varargs.

In cases where there isn't a struct type convenient, we now add a
ConstantStruct::getAnon method (whose name will make more sense after a few
more patches land).

It would be "really really nice" if the ConstantStruct::get and
ConstantVector::get methods didn't make temporary std::vectors.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133412 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
7d715dfe6d66be257926f626df96a0e2bd38dc1f 19-Jun-2011 Jay Foad <jay.foad@gmail.com> Fix a FIXME by making GlobalVariable::getInitializer() return a
const Constant *.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133400 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
LFWriter.h
5b82c2f8911e7e7bcaa563cf15b5d03cf0292379 19-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> Code cleanups: Remove duplicated logic in PromotInteRes_BITCAST, reserve vector space, reuse types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133389 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
0928c9e18a1decd856501beeea1bd12453a366b3 19-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> Calls to AssertZext and getZeroExtendInReg must be made using scalar types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133388 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
c6341e6e50cddc31a6411d9ac82be30747bc111e 19-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> When promoting the vector elements in CopyToParts, use vector trunc
instead of scalarizing, and doing an element-by-element truncat.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133382 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b2318662b6d2e6d9ea9917fd280dde0ba9a938ad 19-Jun-2011 Chris Lattner <sabre@nondot.org> fix the varargs version of StructType::get to not require an LLVMContext, making usage
much cleaner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133364 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
4e39f8facb710ee204ecbda2a936a388449a434d 18-Jun-2011 Benjamin Kramer <benny.kra@googlemail.com> Simplify code. No change in functionality.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133350 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
22a54c1cd711afccd4558374918d12a939e1cca5 18-Jun-2011 Benjamin Kramer <benny.kra@googlemail.com> Don't allocate empty read-only SmallVectors during SelectionDAG deallocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
1396c403897e3d3e04fbf59f6c5fe77cbbab74a6 18-Jun-2011 Benjamin Kramer <benny.kra@googlemail.com> Remove unused but set variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133347 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
a3071455e540530ecb644a2e59098129f70ce705 18-Jun-2011 Eric Christopher <echristo@apple.com> Fix UMULO support for 2x register width to allow the full
range without a libcall to a new mulo<mode> libcall
that we'd have to create.

Finishes the rest of rdar://9090077 and rdar://9210061


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133318 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
bed9711ca81e2bfe24df46ae2147417df4b3902e 18-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Only call TRI::getRawAllocationOrder to resolve a target-dependent hint.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133313 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
5e687ac6158bc28f1831699d7dbfa39d3120b892 18-Jun-2011 Eric Christopher <echristo@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133307 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
e266ce6c6eaf52ebe2b18d85b5e23788cf2f6ef4 17-Jun-2011 Bill Wendling <isanbard@gmail.com> Use the verbose asm flag instead of a new flag for decoding the LSDA.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133292 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
362fee90b9a1d64ac091755466caf6a94ade22eb 17-Jun-2011 Eric Christopher <echristo@apple.com> Lower multiply with overflow checking to __mulo<mode>
calls if we haven't been able to lower them any
other way.

Fixes rdar://9090077 and rdar://9210061


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133288 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
916a94b870042772568fca7995cf45aef7a6e333 17-Jun-2011 Bill Wendling <isanbard@gmail.com> Add an option that allows one to "decode" the LSDA.

The LSDA is a bit difficult for the non-initiated to read. Even with comments,
it's not always clear what's going on. This wraps the ASM streamer in a class
that retains the LSDA and then emits a human-readable description of what's
going on in it.

So instead of having to make sense of:

Lexception1:
.byte 255
.byte 155
.byte 168
.space 1
.byte 3
.byte 26
Lset0 = Ltmp7-Leh_func_begin1
.long Lset0
Lset1 = Ltmp812-Ltmp7
.long Lset1
Lset2 = Ltmp913-Leh_func_begin1
.long Lset2
.byte 3
Lset3 = Ltmp812-Leh_func_begin1
.long Lset3
Lset4 = Leh_func_end1-Ltmp812
.long Lset4
.long 0
.byte 0
.byte 1
.byte 0
.byte 2
.byte 125
.long __ZTIi@GOTPCREL+4
.long __ZTIPKc@GOTPCREL+4

you can read this instead:

## Exception Handling Table: Lexception1
## @LPStart Encoding: omit
## @TType Encoding: indirect pcrel sdata4
## @TType Base: 40 bytes
## @CallSite Encoding: udata4
## @Action Table Size: 26 bytes

## Action 1:
## A throw between Ltmp7 and Ltmp812 jumps to Ltmp913 on an exception.
## For type(s): __ZTIi@GOTPCREL+4 __ZTIPKc@GOTPCREL+4
## Action 2:
## A throw between Ltmp812 and Leh_func_end1 does not have a landing pad.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133286 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
981d82674c59b0e6415d3a30b2f9da625e438852 17-Jun-2011 Jakub Staszak <jstaszak@apple.com> getSuccWeight returns now default 0 if Weights vector is empty.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133271 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
a6591969ffa7b022656db25f33788fcf57361ac5 17-Jun-2011 Jakub Staszak <jstaszak@apple.com> Allow empty Weights vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133265 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
db3983bd762a53f197f6c8a6de401974f39f4789 17-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Two fixes relating to debug value:
* We should change the generated code because of a debug use.
* Avoid creating debug uses of undef, as they become a kill.
Test to follow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133255 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
8d857660ce194f05eca3e21d149e8cf3101da9e4 17-Jun-2011 Lang Hames <lhames@gmail.com> Add a hook for PBQP clients to run a custom pre-alloc pass to run prior to PBQP allocation. Patch by Arnaud Allard de Grandmaison.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133249 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
ec324e5ae44025c6bdb930b78198f30f807e355b 17-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Enable early duplication of small blocks. There are still improvements to
be made, but this is already a win.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133240 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
dd5a8471526ceadf9bceb1a1221299b3db49c33a 17-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename TRI::getAllocationOrder() to getRawAllocationOrder().

Also switch the return type to ArrayRef<unsigned> which works out nicely
for ARM's implementation of this function because of the clever ArrayRef
constructors.

The name change indicates that the returned allocation order may contain
reserved registers as has been the case for a while.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133216 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.cpp
egAllocLinearScan.cpp
c02a6fa7d8f0ccf2e0059bc40978a466fff3fcab 17-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't use register classes larger than TLI->getRegClassFor(VT).

In Thumb mode we cannot handle GPR virtual registers, even though some
instructions can. When isel is lowering a CopyFromReg, it should limit
itself to subclasses of getRegClassFor(VT).

<rdar://problem/9624323>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133210 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
fa796dd720f1b34596a043f17f098fac18ecc028 16-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach antidependency breakers to use RegisterClassInfo.

No functional change was intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133202 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
ostRASchedulerList.cpp
714c0eb811340a41a602509b70ca83cd4b2f2868 16-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move PBQP off allocation_order_begin. No functional change intended.

I think PBQP could use RegisterClassInfo, but it didn't fit neatly with
the external interfaces that PBQP uses, so I'll leave that to Lang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133186 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
7cc2b07437a1243c33324549a1904fefc5f1845e 16-Jun-2011 Jakub Staszak <jstaszak@apple.com> Introduce MachineBranchProbabilityInfo class, which has similar API to
BranchProbabilityInfo (expect setEdgeWeight which is not available here).
Branch Weights are kept in MachineBasicBlocks. To turn off this analysis
set -use-mbpi=false.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133184 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
achineBasicBlock.cpp
achineBranchProbabilityInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
1300f3019e5d590231bbc3d907626708515d3212 16-Jun-2011 Owen Anderson <resistor@mac.com> Change the REG_SEQUENCE SDNode to take an explict register class ID as its first operand. This operand is lowered away by the time we reach MachineInstrs, so the actual register-allocation handling of them doesn't need to change.
This is intended to support using REG_SEQUENCE SDNode's with type MVT::untyped, and is part of the long road to eliminating some of the hacks we currently use to support register pairs and other strange constraints, particularly on ARM NEON.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133178 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
43641a5d17e525f339d6cf51010a42a9479dc2a5 16-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch linear scan to using RegisterClassInfo.

This avoids the manual filtering of reserved registers and removes the
dependency on allocation_order_begin().

Palliative care...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133177 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
12af5ff7205630a802fe4b4ca355fa143c1449f1 16-Jun-2011 Jakub Staszak <jstaszak@apple.com> Test commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133174 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
79c890f64f3b67f9b11341aa452c4302b75184aa 16-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add TargetRegisterInfo::getRawAllocationOrder().

This virtual function will replace allocation_order_begin/end as the one
to override when implementing custom allocation orders. It is simpler to
have one function return an ArrayRef than having two virtual functions
computing different ends of the same array.

Use getRawAllocationOrder() in place of allocation_order_begin() where
it makes sense, but leave some clients that look like they really want
the filtered allocation orders from RegisterClassInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133170 91177308-0d34-0410-b5e6-96231b3b80d8
egisterClassInfo.cpp
enderMachineFunction.cpp
electionDAG/SelectionDAGBuilder.cpp
c06b5bf34004a9b01048905c8750761146094586 16-Jun-2011 Nick Lewycky <nicholas@mxc.ca> Add a DAGCombine for (ext (binop (load x), cst)).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3c397eb741d1b6c5ecf2aa5c3632b7ce3abf55d4 16-Jun-2011 Anna Zaks <ganna@apple.com> Function::getNumBlockIDs() should be used instead of Function::size() to set the upper limit on the block IDs since basic blocks might get removed (simplified away) after being initially numbered. Plus the test case, in which SelectionDAGBuilder::visitBr() calls llvm::MachineFunction::removeFromMBBNumbering(), which introduces the hole in numbering leading to an assert in llc (prior to the fix).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133113 91177308-0d34-0410-b5e6-96231b3b80d8
dgeBundles.cpp
9fbd318d36e618fb08fb53bb48b7c848e617a8a7 16-Jun-2011 John McCall <rjmccall@apple.com> The ARC language-specific optimizer. Credit to Dan Gohman.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133108 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
77b4b13c2a525faf646a6784b24692cf0459b75e 16-Jun-2011 Owen Anderson <resistor@mac.com> Add a new MVT::untyped. This will be used in future work for modelling ISA features like register pairs and lists with "interesting" constraints (such as ARM NEON contiguous register lists or even-odd paired registers). We need to be able to generate these instructions (often from intrinsics), but don't want to have to assign a legal type to them. Instead, we'll use an "untyped" edge to bypass the type-checking and simply ensure that the register classes match.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133106 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.h
aeb6da46ce7c55440215fca1fb11122ecddeec44 15-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Handle jump tables. Test to follow soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133083 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4cb971ce1c8b254f29365c988b55f6dcfe86d21e 15-Jun-2011 Andrew Trick <atrick@apple.com> Added -stress-sched flag in the Asserts build.
Added a test case for handling physreg aliases during pre-RA-sched.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133063 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
8e614322498f9b38995a6bf41100ca617180eacb 15-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> getZeroExtendInReg needs to get a scalar type

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133057 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
baff46f192fd028af8950f2e3824ea7c71fbd76e 15-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> Enable the simplification of truncating-store after fixing the usage of
GetDemandBits (which must operate on the vector element type).

Fix the a usage of getZeroExtendInReg which must also be done on scalar types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133052 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypes.h
92bcd96bbcf42911a76570cc0974e513bc7f261d 15-Jun-2011 Chad Rosier <mcrosier@apple.com> When pattern matching during instruction selection make sure shl x,1 is not
converted to add x,x if x is a undef. add undef, undef does not guarantee
that the resulting low order bit is zero.
Fixes <rdar://problem/9453156> and <rdar://problem/9487392>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133022 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0fc3015ae8a70152895536ddd8395ce8f6219164 14-Jun-2011 Eli Friedman <eli.friedman@gmail.com> Revert r133004 ; it's breaking nightly tests.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133007 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b8018d8f885f29df3745fa5596bbbfc4c2fa53d2 14-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Partial revert of 132882.
Dan noted that this would work on the case shown on the commit message. I think
the case that was failing was a bb ending with a redundant conditional jump:

...
jne foo

foo:
...

I was unable to find any such case in the tests or in a debug build of clang,
so I will revert this part of the patch and watch the bots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133004 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f924dea8ddb74df8d591f8fdc409fc5b8b5e10d4 14-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Add 132986 back, but avoid non-determinism if a bb address gets reused.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132995 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
7a07083c25074b560fea1198a86facf3a95af850 14-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> revert 132986 to see if the bots go green.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132988 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
c2492c28ef04dbc77c5d47ec81ffc64c5407771f 14-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> Add a testcase for checking the integer-promotion of many different vector
types (with power of two types such as 8,16,32 .. 512).

Fix a bug in the integer promotion of bitcast nodes. Enable integer expanding
only if the target of the conversion is an integer (when the type action is
scalarize).

Add handling to the legalization of vector load/store in cases where the saved
vector is integer-promoted.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132985 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
c7cb7ed013d7672bccba61c8df5e921d8bd3ae75 14-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> Disable trunc-store simplification on vectors.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132984 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f5b5c5156c0ac6250d2980f51e47145096851d6f 14-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Implement Jakob's suggestion on how to detect fall thought without calling
AnalyzeBranch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132981 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9a767330f555f21d6ef311d3a348d3a44f306d35 14-Jun-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add one more argument to the prefetch intrinsic to indicate whether it's a data
or instruction cache access. Update the targets to match it and also teach
autoupgrade.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132976 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3a42565ccb169ec4acf79698b38d7da880f13364 14-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Make the threshold used by branch folding softer. Before we would get a
sharp all or nothing transition when one extra predecessor was added. Now
we still test first ones for merging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132974 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
00404bfaef2cd9516191fd35cc08a94a536b1048 13-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> Fix a bug in FindMemType. When widening vector loads, use a wider memory type
only if the number of packed elements is a power of two.
Bug found in Duncan's testcase.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
5e5ed4457749995b46d46e9769e657fcc0818e2c 13-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Be less aggressive about hinting in RAFast.

In particular, don't spill dirty registers only to satisfy a hint. It is
not worth it.

The attached test case provides an example where the fast allocator
would spill a register when other registers are available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132900 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
687397c01387534e98d2e8332d4b91536290d778 13-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Include callee-saved registers in debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132899 91177308-0d34-0410-b5e6-96231b3b80d8
egisterClassInfo.cpp
fb66f477a1c1cdde2670163bd60e42139a5009d8 13-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix invalid uses of Twine. Hopefully this fixes the problem that Takumi is
having.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132898 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
0c3e67860af417febb1fa9e870ece912a16085ac 12-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> Fix a bug in the calculation of the vectorTypeBreakdown into registers. Odd
types such as i33 were rounded to i32. Originated from Duncan's testcase.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132893 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b05f14b3b9b372316f4274de246b8a58cf6063eb 12-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> Improve the generated code by getCopyFromPartsVector for promoted integer types.
Instead of scalarizing, and doing an element-by-element truncat, use vector
truncate.
Add support for scalarization of vectors: i8 -> <1 x i1> (from Duncan's
testcase).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132892 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
1edc08b09ff723f3ff80dba28401b58b3ee4569e 12-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Really fix the fall-through logic.
Add a triple to the tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132885 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
571e20fc50fc20cf612c7b928f7b49a3c41e078a 12-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix silly bug I introduce in the previous commit. Fixes debug builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132883 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4509ec42b88e9220f61bca5654411e65368ac53a 12-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> AnalyzeBranch doesn't change which successors a bb has, just the order
we try to branch to them.

Before we were creating successor lists with duplicated entries. Fixing that
found a bug in isBlockOnlyReachableByFallthrough that would causes it to
return the wrong answer for

-----------
...
jne foo
jmp bar

foo:
----------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132882 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8c1ec5a0a21dcb3364aace8174f29f209ff3224e 11-Jun-2011 Chad Rosier <mcrosier@apple.com> Revert r132871.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e4c705667b9c5eae973e1bc0d7fd2ca995260701 11-Jun-2011 Chad Rosier <mcrosier@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132871 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b3e009a165a423536acfa5861c12ef631239d9e4 11-Jun-2011 Eric Christopher <echristo@apple.com> 80-col cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132863 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
33b465877255cc75241216817247c61374958a36 10-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Removed tabs. Also fixed my editor...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132857 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
a50760f43bafbb46f72fc22426075204a69ce178 10-Jun-2011 Cameron Zwarich <zwarich@apple.com> Rename the ParmContext enum values to make a bit more sense and add a small
comment on their meaning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132854 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
a0f803a2e3a6b2962417cae23e2980535ea39ff9 10-Jun-2011 Cameron Zwarich <zwarich@apple.com> Remove tabs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132853 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
cbd09bdf4b521350c9910dedae9b4e7c9b305c8d 10-Jun-2011 Cameron Zwarich <zwarich@apple.com> Remove a pointless const_cast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132852 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
9a9a3a5c0fff9647a7a6454d974c058a4fb187d7 10-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove duplicated test.
Thanks Bob Wilson for noticing it!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132851 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
348d542199f83418481bde6eba1c94f6fdb45b85 10-Jun-2011 Chad Rosier <mcrosier@apple.com> Ensure that EmitGlobalVariable is correctly differentiating between declarations
and definitions when emitting global variables. This was causing global
declarations to be emitted as if they were definitions.
Fixes <rdar://problem/9429892>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132825 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d3f4eeaec177ed34a54fede9faea4ffa94c4d0af 10-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Make the optional verification step more strict.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132822 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
4d7b4573f97157877f6875b69c9d32b2cb8c5329 10-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Avoid a gcc warning about multiline comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132821 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
689d7d5dffc02993eef367be3380f2b4c49e434f 10-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> On last fix to the early tail duplication.

With this I am able to bootstrap clang with early tail duplication enabled
for any small bb and setting tail-dup-size to a relatively large value(8) to
stress this code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132816 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
0f28c3f0c30769c1a96e5664eea4acbc48eed6a4 10-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Also consider phi nodes when deciding if a register is live out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132814 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
2a6d9eb10bc268df18ff57531c34b8928f858471 10-Jun-2011 Eli Friedman <eli.friedman@gmail.com> Change this DAGCombine to build AND of SHR instead of SHR of AND; this matches the ordering we prefer in instcombine. Part of rdar://9562809.

The potential DAGCombine which enforces this more generally messes up some other very fragile patterns, so I'm leaving that alone, at least for now.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132809 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a899b223109ca5dba7b44439e955148a03f23d4c 09-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> AnalyzeBranch modifies the bb, but we don't want to modify a bb with
eh edges. Swap the order of the checks to avoid it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132806 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
c2e9a50dfb523964bd9d7598ee27b37669f9a5b8 09-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> A PHI in this basic block is a use in another basic block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132805 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
54c256233f8dcd29406d5fe6f8a5be79a826cef3 09-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Refactor some checks into shouldTailDuplicate. Update comments.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132798 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
622ab4ab505a8f07d648d7e15016a56bacdaddd1 09-Jun-2011 Eric Christopher <echristo@apple.com> Recommit r132764 since it didn't cause the windows buildbot failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132776 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
7b3f72ff815894eba25b2112658df0ee41e3dfd7 09-Jun-2011 Eric Christopher <echristo@apple.com> Temporarily revert 132764 to see if it fixes the Windows buildbot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132771 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
efe12907dd58d1d34ab10b0bd2ae9a099b996f53 09-Jun-2011 Eric Christopher <echristo@apple.com> If the alignment of the byval argument is greater than the alignment
of the frame then increase the maximum alignment of the frame to
match.

Fixes PR6965


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132764 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
471e4224809f51652c71f319532697a879a75a0d 09-Jun-2011 Eric Christopher <echristo@apple.com> Add a parameter to CCState so that it can access the MachineFunction.

No functional change.

Part of PR6965


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132763 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
8ae3edacfaebfeed3e65bbbcf18a6fb21b09feaf 08-Jun-2011 Andrew Trick <atrick@apple.com> Remove a temporary test case probe in CheckForLiveRegDef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132751 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d69f85eb416c08e5f803bffccd974745be3d1b2e 08-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix count.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132749 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
0cdca089b289845664d660f0b285499800822919 08-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Count how many phis we are creating.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132748 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
aaa5f14d7c8cf0757e062046e8a3780ef80ebb10 08-Jun-2011 Cameron Zwarich <zwarich@apple.com> Fix an issue where the two-address conversion pass incorrectly rewrites untied
operands to an early clobber register. This fixes <rdar://problem/9566076>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132738 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
d846e3fb5a36c625df1bea3d4ef4e337b7b6e917 08-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix a silly error I introduce in r131951.
Fixes PR10095.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132735 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
9d507aec07c7e22c6ba83dfd75e23c8630cd25cd 07-Jun-2011 Andrew Trick <atrick@apple.com> Fix a merge bug in preRAsched for handling physreg aliases.

I've been sitting on this long enough trying to find a test case. I
think the fix should go in now, but I'll keep working on the test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
b3e705f88987608d4eb49668dac0e235d04df884 07-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify local live range splitting's safeguard to fix PR10070.

When local live range splitting creates a live range with the same
number of instructions as the old range, mark it as RS_Local. When such
a range is seen again, require that it be split in a way that reduces
the number of instructions. That guarantees we are making progress while
still being able to perform 3 -> 2+3 splits as required by PR10070.

This also means that the PrevSlot map is no longer needed. This was also
used to estimate new spill weights, but that is no longer necessary
after slotIndexes::insertMachineInstrInMaps() got the extra Late
insertion argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132697 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
a46a100945c839a9b9baa6da0dcafafcd42d1085 06-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Get allocation orders from RegisterClassInfo when possible.

Only target-dependent hints require callbacks. The RCI allocation order
has CSR aliases last according to their order of appearance in the
getCalleeSavedRegs list. This can depend on the calling convention.

This way, AllocationOrder::next doesn't have to check for reserved
registers, and CSRs are always allocated last, even with weird calling
conventions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132690 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.cpp
llocationOrder.h
fc3623bc50aa9e2a56736775edbd3ae919565351 06-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> Add methods to support the integer-promotion of vector types. Methods to
legalize SDNodes such as BUILD_VECTOR, EXTRACT_VECTOR_ELT, etc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132689 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
57f1fde7fcda84a7e1d7490163fbad18c3755d40 06-Jun-2011 Stuart Hastings <stuart@apple.com> Avoid FGETSIGN of 80-bit types. Fixes PR10085.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132681 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7c48913af62ced0da03ba58755cf5f53ad587ba8 06-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't try to be clever, just preserve the target's allocation order.

The order of registers returned by getCalleeSavedRegs is used to lay out
the fixed stack slots for CSRs. Some targets like their CSRs used from
one end, and some targets want them used from the other end.

When computing an allocation order, simply preserve the relative
ordering of CSRs that the target specifies in its allocation order.
Reordering CSRs would break some targets, ARM in particular.

We still place volatiles before the CSRs, providing slightly better
results with different calling conventions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132680 91177308-0d34-0410-b5e6-96231b3b80d8
egisterClassInfo.cpp
0b4d96baecf3fe6af0fd45ba815bacf91a017f97 06-Jun-2011 Eli Friedman <eli.friedman@gmail.com> PR10077: fix fast-isel of extractvalue of aggregate constants.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132676 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
ab5f788f6711f473289b9c42726e81872c3d0c47 05-Jun-2011 Benjamin Kramer <benny.kra@googlemail.com> Use path API for path concatenation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132668 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0b66636879bc478781ea6ed7541cdc1d13ee714d 04-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> TypeLegalizer: Add support for passing of vector-promoted types in registers (copyFromParts/copyToParts).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132649 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f1c025d1d106905df3d38d2482fde68c8f81b107 04-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> TypeLegalizer: Fix a bug in the promotion of elements of integer vectors.
(only happens when using the -promote-elements option).

The correct legalization order is to first try to promote element. Next, we try
to widen vectors.





git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132648 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
5f2316a3b55f88dab2190212210770180a32aa95 03-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch AllocationOrder to using RegisterClassInfo instead of a BitVector
of reserved registers.

Use RegisterClassInfo in RABasic as well. This slightly changes som
allocation orders because RegisterClassInfo puts CSR aliases last.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132581 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.cpp
llocationOrder.h
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
d365fa9415ce31b5f0a6019b33c6f099a82f4e34 03-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Preserve the original ordering when a CSR has multiple aliases.

Previously, these aliases would be ordered alphabetically. (BH, BL)

Print out the computed allocation orders.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132580 91177308-0d34-0410-b5e6-96231b3b80d8
egisterClassInfo.cpp
e0b42c02f0764ea9df9c17efffc7838203fb8f16 03-Jun-2011 Eric Christopher <echristo@apple.com> Add a TODO about memory operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
448ab3ab395ffc9e7fc04d2d6afb41fcac74070d 03-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid calling TRI->getAllocatableSet in RAFast.

When compiling a program with lots of small functions like
483.xalancbmk, this makes RAFast 11% faster.

Add some comments to clarify the difference between unallocatable and
reserved registers. It's quite subtle.

The fast register allocator depends on EFLAGS' not being allocatable on
x86. That way it can completely avoid tracking liveness, and it won't
mind when there are multiple uses of a single def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132514 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
egisterClassInfo.h
100c83341676d8aae8fc34b5452563ed08b14f3e 03-Jun-2011 Eric Christopher <echristo@apple.com> Have LowerOperandForConstraint handle multiple character constraints.

Part of rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132510 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
f462e3fac7ac67503657d63dc35330d0b19359b3 03-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Make it possible to have unallocatable register classes.

Some register classes are only used for instruction operand constraints.
They should never be used for virtual registers. Previously, those
register classes were given an empty allocation order, but now you can
say 'let isAllocatable=0' in the register class definition.

TableGen calculates if a register is part of any allocatable register
class, and makes that information available in TargetRegisterDesc::inAllocatableClass.

The goal here is to eliminate use cases for overriding allocation_order_*
methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132508 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
6edf90b8a7168e53409d161fb8b285094c4c9182 03-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Just use a SmallVector.

I was confused whether new uint8_t[] would zero-initialize the returned
array, and it seems that so is gcc-4.0.

This should fix the test failures on darwin 9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132500 91177308-0d34-0410-b5e6-96231b3b80d8
egisterClassInfo.cpp
egisterClassInfo.h
ee1f87881b185873b1e285a2395a2c6a97c47ec4 02-Jun-2011 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132488 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
e29e8e100ea38be1771e5f010a5511cbb990d515 02-Jun-2011 Devang Patel <dpatel@apple.com> Update DBG_VALUEs while breaking anti dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132487 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
cf4cc84738abc5f63a05b0956e756c66c519ded5 02-Jun-2011 Devang Patel <dpatel@apple.com> During post RA scheduling, do not try to chase reg defs. to preserve DBG_VALUEs. This approach has several downsides, for example, it does not work when dbg value is a constant integer, it does not work if reg is defined more than once, it places end of debug value range markers in the wrong place. It even causes misleading incorrect debug info when duplicate DBG_VALUE instructions point to same reg def.

Instead, use simpler approach and let DBG_VALUE follow its predecessor instruction. After live debug value analysis pass, all DBG_VALUE instruction are placed at the right place. Thanks Jakob for the hint!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132483 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
251b4a04057a8397791ad3924377888fe4f8a2ad 02-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Revert 132424 to fix PR10068.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132479 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
5d20c3152bd7fe91eda1b58a5eb6da7067874c61 02-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use RegisterClassInfo::getOrder in RAFast.

This saves two virtual function calls and an Allocatable BitVector test,
making RAFast run 2% faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132471 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
19e1f633af989f52f066553cbe85dded14686ac3 02-Jun-2011 Benjamin Kramer <benny.kra@googlemail.com> Start with a zeroed CSRNum map.

Found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132457 91177308-0d34-0410-b5e6-96231b3b80d8
egisterClassInfo.cpp
ab5ceacbc11b68f1a4993aa38bad11bcfea42a4c 02-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Initialize members to fix problem found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132456 91177308-0d34-0410-b5e6-96231b3b80d8
egisterClassInfo.cpp
fa226bccaa90c520cac154df74069bbabb976eab 02-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use TRI::has{Sub,Super}ClassEq() where possible.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132455 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
electionDAG/InstrEmitter.cpp
argetInstrInfoImpl.cpp
491a13691d3b30b8288dfc6e01ad6a58f69a4ce6 02-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a RegisterClassInfo class that lazily caches information about
register classes.

It provides information for each register class that cannot be
determined statically, like:

- The number of allocatable registers in a class after filtering out the
reserved and invalid registers.

- The preferred allocation order with registers that overlap callee-saved
registers last.

- The last callee-saved register that overlaps a given physical register.

This information usually doesn't change between functions, so it is
reused for compiling multiple functions when possible. The many
possible combinations of reserved and callee saves registers makes it
unfeasible to compute this information statically in TableGen.

Use RegisterClassInfo to count available registers in various heuristics
in SimpleRegisterCoalescing, making the pass run 4% faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132450 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
egisterClassInfo.cpp
egisterClassInfo.h
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
4ada1d791028041a6609128a8a4f3b5ebf1c837b 02-Jun-2011 Devang Patel <dpatel@apple.com> A DBG_VALUE that truncates a range does not start another dbg value range.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132433 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c432907eca615dfea2de3c467f4087f00203b2d6 02-Jun-2011 Devang Patel <dpatel@apple.com> Do not drop constant values when a variable's content is described using .debug_loc entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132427 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
ec880283b3682982c750c9b78f6a9b4777e21883 01-Jun-2011 Stuart Hastings <stuart@apple.com> Recommit 132404 with fixes. rdar://problem/5993888


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132424 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
9aaa02a1d26a0969e95b285ea1190920a5bb37db 01-Jun-2011 Eric Christopher <echristo@apple.com> Allow bitcasts between valid types of the same size and vector
types if the vector type is legal.

Fixes rdar://9306086


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132420 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
96e0c5477c41b316263e894bbb5821c7cdeb25ef 01-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> Refactor LegalizeTypes: Erase LegalizeAction and make the type legalizer use
the TargetLowering enum.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132418 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
76395c9a31444fa86514473e0852cdd67752d0e8 01-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r132358 "Simplify the eviction policy by making the failsafe explicit."

This commit caused regressions in i386 flops-[568], matrix, salsa20,
256.bzip2, and enc-md5.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132413 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
090bf19de6e7c75fbf34e753f5e0ad58cc2ca15c 01-Jun-2011 Stuart Hastings <stuart@apple.com> Fix double FGETSIGN to work on x86_32; followup to 132396.
rdar://problem/5660695


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132411 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
bdce3726e2131f053d05f07ff135684ad6f11d80 01-Jun-2011 Stuart Hastings <stuart@apple.com> Turn on FGETSIGN for x86. Followup to 132388. rdar://problem/5660695


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132396 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b6fbec3a546fd04bb2e79040db2436b0bd629162 01-Jun-2011 Nadav Rotem <nadav.rotem@intel.com> This patch is another step in the direction of adding vector select. In this
patch we add a flag to enable a new type legalization decision - to promote
integer elements in vectors. Currently, the rest of the codegen does not support
this kind of legalization. This flag will be removed when the transition is
complete.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132394 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
cf9aa284b332bc2613def3612b80c5883d4b9985 01-Jun-2011 Andrew Trick <atrick@apple.com> Add an issue width check to the postRA scheduler. Patch by Max Kazakov!

For targets with no itinerary (x86) it is a nop by default. For
targets with issue width already expressed in the itinerary (ARM) it
bypasses a scoreboard check but otherwise does not affect the
schedule. It does make the code more consistent and complete and
allows new targets to specify their issue width in an arbitrary way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132385 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
edac4923dc2e1694f7004123ccd7c1af952d0d68 01-Jun-2011 Bill Wendling <isanbard@gmail.com> The ARM stuff already calls the Resume function, not the Resume_or_Rethrow. It
turns out that it could cause an infinite loop in some situations. If this code
is triggered and it converts a cleanup into a catchall, but that cleanup was in
already in a cleanup, then the _Unwind_SjLj_Resume could infinite loop. I.e.,
the code doesn't consume the exception object and passes it on to
_Unwind_SjLj_Resume. But _USjLjR expects it to be consumed (since it's landing
at a catchall instead of a cleanup). So it uses the values that are presently
there, which are the values that tell it to jump to the fake landing pad.
<rdar://problem/9508402>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132381 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
c20bdf194ad4c824ee6a5f163410d73513ae5c81 01-Jun-2011 Devang Patel <dpatel@apple.com> Incomplete type may not have corresponding DIE, so do not check DIEEntry eagerly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
66658e4dff51664a53c56dd729b8abe4d57aadef 01-Jun-2011 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132373 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
e9ae06ca987b6c3b6cfbcd50ab85386565a4e0ca 01-Jun-2011 Devang Patel <dpatel@apple.com> Include global types, that are referenced through local variables, in debug_pubtypes list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132371 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
d2056e51c662765f98413fa071afbff53d87b384 31-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify the eviction policy by making the failsafe explicit.

When assigned ranges are evicted, they are put in the RS_Evicted stage and are
not allowed to evict anything else. That prevents looping automatically.

When evicting ranges just to get a cheaper register, use only spill weights to
find the possible candidates. Avoid breaking hints for this purpose, it is not
worth it.

Start implementing more complex eviction heuristics, guarded by the temporary
-complex-eviction flag. The initial version permits a heavier range to be
evicted if it doesn't have any uses where the evicting range is live. This makes
it a good candidate for live ranfge splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132358 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
a2e79ef908e0f4179cda9e85e2f75057181bf321 30-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Reapply r132245 with a fix for the bug that broke the darwin9/i386 build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132309 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
59ed4151d8d0567b7771772cfa2b65e7c25ffb68 30-May-2011 Charles Davis <cdavis@mines.edu> Emit the handler's data area. For GCC-style exceptions under Win64, the
handler's data area starts with a 4-byte reference to the personality
function, followed by the DWARF LSDA.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132302 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Win64Exception.cpp
626d6fb1903e74337b257c5e165944bcd1273e65 29-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r132245, "Create two BlockInfo entries when a live range is discontinuous through a block."

This commit seems to have broken a darwin 9 tester.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132299 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
57903357ee4f9fed47dcad6f3739414301136b0f 29-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR10046 by updating LiveVariables kill info when splitting live ranges.

This only affects targets like Mips where branch instructions may kill virtual
registers. Most other targets branch on flag values, so virtual registers are
not involved.

The problem is that MachineBasicBlock::updateTerminator deletes branches and
inserts new ones while LiveVariables keeps a list of pointers to instructions
that kill virtual registers. That list wasn't properly updated in
MBB::SplitCriticalEdge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132298 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
12e3349de9a13e133d8a59ce4c517a8e95bd91c3 29-May-2011 Charles Davis <cdavis@mines.edu> When generating against the Win64 EH scheme, set the handler to the GCC-specific
handler.

At this moment, only GCC-style exceptions are supported. Other kinds
of exceptions, including "traditional" SEH and Microsoft Visual C++ exceptions,
need more work--and an compiler exception model that isn't specific to
GCC-style exceptions!

In particular, I imagine that it would be possible to mix "traditional" SEH
with GCC-style EH or Microsoft C++ EH. Currently LLVM has no way (beyond some
target-specific defaults and whole-module compiler switches) of knowing which
scheme to use when.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132283 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Win64Exception.cpp
b6aacae9413adde66d9686cd9e561eb836b3ee34 28-May-2011 Nadav Rotem <nadav.rotem@intel.com> Refactor the type legalizer. Switch TargetLowering to a new enum - LegalizeTypeAction.
This patch does not change the behavior of the type legalizer. The codegen
produces the same code.
This infrastructural change is needed in order to enable complex decisions
for vector types (needed by the vector-select patch).




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
33858016eaaf0f701fd59d1d36dfa81892fa3775 28-May-2011 Benjamin Kramer <benny.kra@googlemail.com> Erase instructions _after_ checking their type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132256 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
d7c10862016939c9850cadfe5e1c35513c0adf28 28-May-2011 John McCall <rjmccall@apple.com> Implement and document the llvm.eh.resume intrinsic, which is
transformed by the inliner into a branch to the enclosing landing pad
(when inlined through an invoke). If not so optimized, it is lowered
DWARF EH preparation into a call to _Unwind_Resume (or _Unwind_SjLj_Resume
as appropriate). Its chief advantage is that it takes both the
exception value and the selector value as arguments, meaning that there
is zero effort in recovering these; however, the frontend is required
to pass these down, which is not actually particularly difficult.

Also document the behavior of landing pads a bit better, and make it
clearer that it's okay that personality functions don't always land at
landing pads. This is just a fact of life. Don't write optimizations that
rely on pushing things over an unwind edge.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132253 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
f46337004ab08076774932785679460ec3d3bb9a 28-May-2011 Charles Davis <cdavis@mines.edu> When generating code for Win64 EH, emit StartProc and EndProc directives.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132250 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/Win64Exception.cpp
c9cf9e94ec4daca659e2eb4e30d3f7d7f9b6b067 28-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Create two BlockInfo entries when a live range is discontinuous through a block.

Delete the Kill and Def markers in BlockInfo. They are no longer
necessary when BlockInfo describes a continuous live range.

This only affects the relatively rare kind of basic block where a live
range looks like this:

|---x o---|

Now live range splitting can pretend that it is looking at two blocks:

|---x
o---|

This allows the code to be simplified a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132245 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
b2abfa0bf30edf292a27a06e091d03983e644c9b 28-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SplitAnalysis::getNumLiveBlocks().

It is important that this function returns the same number of live blocks as
countLiveBlocks(CurLI) because live range splitting uses the number of live
blocks to ensure it is making progress.

This is in preparation of supporting duplicate UseBlock entries for basic blocks
that have a virtual register live-in and live-out, but not live-though.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132244 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
d6a8136e66f0095c7306cad022d792a57e88ba01 28-May-2011 Devang Patel <dpatel@apple.com> Select DW_AT_const_value size based on global variable size.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132239 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
7bf114c1bd0390f4f485905d2fe9c7c6a048b8b7 28-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix the root cause of the bootstrap failure:

There was no way to check if a given register/mode pair was valid. We now return
an error code (-2) instead of asserting. If anyone thinks that an assert
at this point is really needed, we can autogen a hasValidDwarfRegNum instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132236 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d652b1368b1e381382951f450e5eeca870d91dd6 28-May-2011 Charles Davis <cdavis@mines.edu> Stub out support for Win64-style exceptions. Note that this is merely using
the Win64 EH mechanism to implement GCC-style exceptions. LLVM supports
hardly anything else at this point!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132234 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/CMakeLists.txt
smPrinter/DwarfException.h
smPrinter/Win64Exception.cpp
LVMTargetMachine.cpp
37afca128db40b086752f3f62464ba08128c3b4d 28-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix a regression I recently introduced by removing DwarfRegNum of
subregisters:

When a value is in a subregister, at least report the location as being
the superregister. We should extend the .td files to encode the bit
range so that we can produce a DW_OP_bit_piece.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132224 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5b23b7fe3150b2050d6fcd6981d64f30930fd3ef 28-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Make size computation less brittle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132222 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
88c816453fac630e23785dbd1755675d139603db 27-May-2011 Charles Davis <cdavis@mines.edu> Add the suffix to the Win64 EH data sections' names if given. Add a test for
this. XFAIL'd, because the COFF AsmParser can't handle .section yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132220 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
2d6dcb34b7f39682f3eed08180631189fb4b6636 27-May-2011 Nadav Rotem <nadav.rotem@intel.com> Refactor getActionType and getTypeToTransformTo ; place all of the 'decision'
code in one place. Re-apply 131534 and fix the multi-step promotion of integers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132217 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
045c1d4e48e5e06ca05d04af340f7c487bc9975d 27-May-2011 Devang Patel <dpatel@apple.com> Keep this simple. Use DIType to get signness and size of a type. Based on size, select appropraite form.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132206 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
72f0d9cdefa3086715e1e2547a9843321690b4d9 27-May-2011 Devang Patel <dpatel@apple.com> Handle signed types gracefully.
This fixes regressions reported by buildbots as a fallout of r132193.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132197 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
b58128e2b2375173aafb07905bd53014d622e4ba 27-May-2011 Devang Patel <dpatel@apple.com> Select DW_AT_const_value size based on variable size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132193 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
f031d0977f8b03288ed32ff14f71c79e81914f39 27-May-2011 Cameron Zwarich <zwarich@apple.com> Fix PR10029 - VerifyCoalescing failure on patterns_dfa.c of 445.gobmk.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132181 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
95ba669e09c30f9aa1a7d754199548b8e6a227ce 26-May-2011 Devang Patel <dpatel@apple.com> Add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132149 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
785badb83e09ebae485c40f3fd86576581dd516e 26-May-2011 Devang Patel <dpatel@apple.com> During branch folding avoid inserting redundant DBG_VALUE machine instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132148 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
cfb2bbba734a8af7282eb017068a75fc7ab5f2aa 26-May-2011 Charles Davis <cdavis@mines.edu> Revert r132111. I built Release (without Asserts), so I didn't know about the
assert that prevented setting alignment on section creation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132113 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
fad99ae6e7ecb66eaaab3a42d6e6e97550e13349 26-May-2011 Charles Davis <cdavis@mines.edu> Align Win64 EH Table sections to 4 bytes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132111 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
2aa0f23e1cb5afc96981ecc057980d1958c0be72 26-May-2011 Stuart Hastings <stuart@apple.com> Reverting 132105: it broke some LLVM-GCC DejaGNU tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132108 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
aa4e6afc9be330770e0b5d41e79aa26c3115bcca 26-May-2011 Stuart Hastings <stuart@apple.com> Correctly handle a one-word struct passed byval on x86_64.
rdar://problem/6920088


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132105 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
b8d936bc179ddf31b6350015d74900b74db6b450 26-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a RAGreedy::canEvict function.

This doesn't change functionality (much), but it allows for a more fine-grained
eviction policy. The current policy only compares spill weights, and that is not
always the best thing to do. Spill weights are designed to serve linear scan,
and they don't consider live range splitting.

Add a mechanism so canEvict() can request that a live range be evicted and
split/spilled. This is to avoid infinite eviction loops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132101 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
76927d7303046058c627691bd45d6bff608f49f4 26-May-2011 Eli Friedman <eli.friedman@gmail.com> Rewrite fast-isel integer cast handling to handle more cases, and to be simpler and more consistent.

The practical effects here are that x86-64 fast-isel can now handle trunc from i8 to i1, and ARM fast-isel can handle many more constructs involving integers narrower than 32 bits (including loads, stores, and many integer casts).

rdar://9437928 .



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132099 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8a115d5bf42af0a3b4b87d2937502a66c63ff743 25-May-2011 Devang Patel <dpatel@apple.com> Remove unused statistical counter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132087 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fc2bb8c4448fa884d79e437cc2d2627a7d7740a8 25-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Replace the -unwind-tables option with a per function flag. This is more
LTO friendly as we can now correctly merge files compiled with or without
-fasynchronous-unwind-tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132033 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
smPrinter/AsmPrinter.cpp
8ec0c1c07b51d3332ac0d0fc4d643ba982803a18 24-May-2011 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131974 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e6657980977ed63df8bbd2604c9fefe513ac4126 24-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Explain FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131952 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
10c3e128efc9a2efd28414400827fa8b457def4d 24-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix the defaults for .eh_frame. We were marking it as writable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131951 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
b5a55d979c84e100f383ce11c5c5e3b616b9dcc4 24-May-2011 Evan Cheng <evan.cheng@apple.com> - Teach SelectionDAG::isKnownNeverZero to return true (op x, c) when c is
non-zero.
- Teach X86 cmov optimization to eliminate the cmov from ctlz, cttz extension
when the source of X86ISD::BSR / X86ISD::BSF is proven to be non-zero.

rdar://9490949


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131948 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a9b324be9ca4a1f46d1ddf39ea0f6b6bbec86ae9 24-May-2011 Devang Patel <dpatel@apple.com> Fix debug info for blocks' variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131940 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c481b70a6aeadb54c880f70422631044af4856b9 24-May-2011 Devang Patel <dpatel@apple.com> Remove unnecessary comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131936 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9728ea2447e689ae6e884cf044f226b99c4a47da 24-May-2011 Devang Patel <dpatel@apple.com> Revert 121907 (it causes llc crash) and apply original patch from PR9817.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
233857537f61a8f4ab93624986676c25b2271bc7 23-May-2011 Devang Patel <dpatel@apple.com> Preserve debug info during iSel by keeping DanglingDebugInfoMap live until end of function.
Patch by Micah Villmow


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131908 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
35b6994608b2b7c86714cc464dfb2d086b0cafca 23-May-2011 Devang Patel <dpatel@apple.com> While replacing all uses of a SDValue with another value, do not forget to transfer SDDbgValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131907 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9db20f3bd89e51e0765ef21a9992f6dd5364a81e 23-May-2011 Chris Lattner <sabre@nondot.org> Eliminate some temporary variables, and don't call getByValTypeAlignment
when we're just going to throw the result away. No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
402d9d9935fc1ee4e13675aae7f95072da50db69 22-May-2011 Chris Lattner <sabre@nondot.org> eliminate dependence on StandardPasses.h. The code generator's pass pipeline
should eventually convert to PMBuilder, but I don't plan to do this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131819 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
f55d26e78851c2c09f8b09cfd7e7bbda7130d93b 21-May-2011 Benjamin Kramer <benny.kra@googlemail.com> Implement mulo x, 2 -> addo x, x in DAGCombiner.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131800 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
345968c82d73d7b770a377d91ecea53c4672d48b 21-May-2011 Cameron Zwarich <zwarich@apple.com> Fix PR9962 by properly constraining register classes in RemoveCopyByCommutingDef(). This
actually fixes most of the VerifyCoalescing failures in test-suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131768 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
98eb7be103f4e8dc9a584b551f81df389222f90d 21-May-2011 Charles Davis <cdavis@mines.edu> Fix typo. When will I learn?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131765 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
f3ffc2cd76267b7901088ec5e46e875a2701bda9 21-May-2011 Charles Davis <cdavis@mines.edu> Add .pdata and .xdata sections to the COFF TLOF implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131763 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
958b68140e08df76e1b8f3287cd0a24d0fb35734 20-May-2011 Jim Grosbach <grosbach@apple.com> No reason not to allow defining the CFA as a reg w/ offset zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131760 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
1585ce7e8c1bd1b3521a9ef4406dbac728685e70 20-May-2011 Jim Grosbach <grosbach@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131757 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
2b6f7117f5be1b8449e63baffe58c52197f19418 20-May-2011 Jim Grosbach <grosbach@apple.com> Add support for frame info use of the .cfi_def_cfa directive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131756 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
21a70bf4a57568d64b535771fd20d25fc0ed9112 20-May-2011 Cameron Zwarich <zwarich@apple.com> Fix PR9960 by teaching SimpleRegisterCoalescing::AdjustCopiesBackFrom() to preserve
the phikill flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131717 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5a4b3d8c8f52ee225ffc65c7d6cebc78b1ec7808 20-May-2011 Cameron Zwarich <zwarich@apple.com> Fix PR9955 by only attaching load memory operands to load instructions and
similarly for stores. Now "make check" passes with the MachineVerifier forced
on with the VerifyCoalescing option!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131705 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3dfc4b12229acafee5c69c5ee1673b08027f0438 19-May-2011 Stuart Hastings <stuart@apple.com> Update some currently-disabled code, preparing for eventual use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131663 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6fcb6e454b08c5e5aaed125860b01bc08dc6cc49 19-May-2011 Cameron Zwarich <zwarich@apple.com> Revert r128961 because it didn't include a test and causes the verifier to fail
on CodeGen/X86/2007-05-07-InvokeSRet.ll. There is probably a bug here that was
fixed by r128961, but since there is no test or reference to a source file I have
to revert it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131618 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
d6dde76090dd673a673ce363c982c22ea924502a 18-May-2011 Duncan Sands <baldrick@free.fr> Revert commit 131534 since it seems to have broken several buildbots.
Original log entry:
Refactor getActionType and getTypeToTransformTo ; place all of the 'decision'
code in one place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131536 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
fe3f5d7538954474731dbbed70430016600fa477 18-May-2011 Nadav Rotem <nadav.rotem@intel.com> Refactor getActionType and getTypeToTransformTo ; place all of the 'decision'
code in one place.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131534 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
54f0d1e02123683c957bc2c2c2a1adde4d374da4 18-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate dead dead code elimination code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131524 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
c6b9ebdd6400c5ade1b5b211252cd251b6ef07ae 18-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also use shrinkToUses after AdjustCopiesBackFrom().

The 'last use' may not be in the same basic block, and we still want a correct
live range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131523 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
fc2fcb4165f10fb1708c528014379cb9e1738bab 18-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly shrink live ranges after deleting dead copies. Clean up after all joined copies.

LiveInterval::shrinkToUses recomputes the live range from scratch instead of
removing snippets. This should avoid the problem with dangling live ranges.

Leave physreg identity copies alone. They can be created when joining a virtreg
with a physreg. They don't affect register allocation, and they will be removed
by the rewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131521 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9c4dae6b0bd1b4667b7a6ce5d804f60615bac639 18-May-2011 Eli Friedman <eli.friedman@gmail.com> Make fast-isel miss counting in -stats and -fast-isel-verbose take terminators into account; since there are many fewer isel misses with recent changes, misses caused by terminators are more significant.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131502 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1b32896bd2a6e001c8513fcf182d5a92ab7d487a 18-May-2011 Dan Gohman <gohman@apple.com> Misc. code cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131497 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
71dc7c9d895afc1e678b28d24a1ecc85ecd42178 18-May-2011 Dan Gohman <gohman@apple.com> Misc. code cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131495 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6db2c2fe216637f4120899c7734a8600c64af0e8 17-May-2011 Stuart Hastings <stuart@apple.com> Revert 131467 due to buildbot complaint.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131469 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
504421e327a5af90dbb42f33086b6db6f6738477 17-May-2011 Stuart Hastings <stuart@apple.com> Fix an obscure issue in X86_64 parameter passing: if a tiny byval is
passed as the fifth parameter, insure it's passed correctly (in R9).
rdar://problem/6920088


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131467 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
6e3b3e21227d3498d7f5d9d314a49a9ee4cbb873 17-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Tweak cross-class coalescing to be more aggressive when the target class is small.

The greedy register allocator has live range splitting and register class
inflation, so it can actually fully undo this join, including restoring the
original register classes.

We still don't want to do this for long live ranges, mostly because of the high
register pressure of there are many constrained live ranges overlapping.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131466 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f5497fb1b474028709f0a6d8556251dc21e34c26 17-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach LiveInterval::isZeroLength about null SlotIndexes.

When instructions are deleted, they leave tombstone SlotIndex entries.
The isZeroLength method should ignore these null indexes.

This causes RABasic to sometimes spill a callee-saved register in the
abi-isel.ll test, so don't run that test with -regalloc=basic. Prioritizing
register allocation according to spill weight can cause more registers to be
used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131436 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
975716af1b9a09274df6c2d92683449015bd8564 17-May-2011 Dan Gohman <gohman@apple.com> Delete unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131430 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
b3dbd4a0b61d9c26df358384bdb66a41326f1a9d 17-May-2011 Dan Gohman <gohman@apple.com> Trim #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131429 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f316eb70743e88227b8919370fe38587ffe93512 17-May-2011 Dan Gohman <gohman@apple.com> Fix whitespace and 80-column violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
62427ae8d311d3dda8f5257ddf34d13c19c214bb 16-May-2011 Jim Grosbach <grosbach@apple.com> Track how many insns fast-isel successfully selects as well as how many it
misses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131426 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
227dfdb3c44c5cc5ec140b4be89f618bdc59a133 16-May-2011 Devang Patel <dpatel@apple.com> Preserve debug info for unused zero extended boolean argument.
Radar 9422775.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131422 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
482feb33b2bba677d47bab859d9e1e95d67016bd 16-May-2011 Eli Friedman <eli.friedman@gmail.com> Make fast-isel work correctly s/uadd.with.overflow intrinsics.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131420 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a4c920db7a3620f365144eac9aaad7ca23062caa 16-May-2011 Eli Friedman <eli.friedman@gmail.com> Fix silly typo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
2586b8f9366aed5a1efa44d3f18d095511601642 16-May-2011 Eli Friedman <eli.friedman@gmail.com> Basic fast-isel of extractvalue. Not too helpful on its own, given the IR clang generates for cases like this, but it should become more useful soon.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
0e00c6c561181be7e9cc75ad2fee9cd4cbbfca1e 16-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Don't do tail calls in a function that call setjmp. The stack might be
corrupted when setjmp returns again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d0118a2371f35faa6af97e67be69e1debc615c42 14-May-2011 Eli Friedman <eli.friedman@gmail.com> Fix a FIXME by moving the fast-isel implementation of the objectsize intrinsic from the x86 code to the generic code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131332 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3fa82837441d716a225427f7a924f36d21db3a32 13-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Make codegen able to handle values of empty types. This is one way
to fix PR9900. I will keep it open until sable is able to comment on it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131294 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
88882247d2e1bb70103062faf5bd15dd8a30b2d1 13-May-2011 Stuart Hastings <stuart@apple.com> Since I can't reproduce the failures from 131261, re-trying with a
simplified version. <rdar://problem/9298790>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131274 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8ad145d7299dbeb8b816ce0549d9323630bbae1a 13-May-2011 Stuart Hastings <stuart@apple.com> Revert 131266 and 131261 due to buildbot complaints.
rdar://problem/9298790


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131269 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5adc64638084c1b8d33ac56e2498b83f1f4bd6e2 13-May-2011 Stuart Hastings <stuart@apple.com> Non-fast-isel followup to 129634; correctly handle branches controlled
by non-CMP expressions. The executable test case (129821) would test
this as well, if we had an "-O0 -disable-arm-fast-isel" LLVM-GCC
tester. Alas, the ARM assembly would be very difficult to check with
FileCheck.

The thumb2-cbnz.ll test is affected; it generates larger code (tst.w
vs. cmp #0), but I believe the new version is correct.
rdar://problem/9298790


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131261 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6175e03825070f53b17deeb9156935ac1ac06672 13-May-2011 Evan Cheng <evan.cheng@apple.com> Update comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131258 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
201e6cdc39d5dca4e70cdd331f6f5055b3af3534 12-May-2011 Devang Patel <dpatel@apple.com> Doug convinced me that DW_AT_APPLE_objc_complete_type is more appropriate name.
s/DW_AT_APPLE_objc_class_extension/DW_AT_APPLE_objc_complete_type/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131244 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
7139d3516526317497e70348e33a57b52ddc053c 12-May-2011 Evan Cheng <evan.cheng@apple.com> Re-enable branchfolding common code hoisting optimization. Fixed a liveness test bug and also taught it to update liveins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131241 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
b11f80e94b590c90d07254dfa2406cf504e09cd3 12-May-2011 Devang Patel <dpatel@apple.com> Let Objective-C front-end identify class extension, in dwarf output, using an attribute DW_AT_APPLE_objc_class_extension.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131238 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
30adced41b17cc9a5c301386e80567faccaff04f 12-May-2011 Evan Cheng <evan.cheng@apple.com> Temporarily disable the transformation. It's breaking 186.crafty in some configuration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131235 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
cbc988be22bc9411d95215c8b7251b5f85710674 12-May-2011 Evan Cheng <evan.cheng@apple.com> Re-commit 131172 with fix. MachineInstr identity checks should check dead
markers. In some cases a register def is dead on one path, but not on
another.

This is passing Clang self-hosting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131214 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
fConversion.cpp
achineInstr.cpp
4243e67bd5eeae930060824d4290f8071a66e28f 11-May-2011 Devang Patel <dpatel@apple.com> Identify end of prologue (and beginning of function body) using DW_LNS_set_prologue_end line table opcode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131194 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
443443cc8399d6753cac828516ea27531e296769 11-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid hoisting spills when looking at a copy from another register that is also
about to be spilled.

This can only happen when two extra snippet registers are included in the spill,
and there is a copy between them. Hoisting the spill creates problems because
the hoist will mark the copy for later dead code elimination, and spilling the
second register will turn the copy into a spill.

<rdar://problem/9420853>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131192 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
42febc6e9963f82d5c56c3c7e6afe5e00769af41 11-May-2011 Nadav Rotem <nadav.rotem@intel.com> Fixes a bug in the DAGCombiner. LoadSDNodes have two values (data, chain).
If there is a store after the load node, then there is a chain, which means
that there is another user. Thus, asking hasOneUser would fail. Instead we
ask hasNUsesOfValue on the 'data' value.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131183 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
41cdc16e7301c91d2460aa14412f592695b0d4ed 11-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Revert 131172 as it is causing clang to miscompile itself. I will try
to provide a reduced testcase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131176 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
fConversion.cpp
61512ba251097888963a8f07a35605564bcfc537 11-May-2011 Bill Wendling <isanbard@gmail.com> Give the 'eh.sjlj.dispatchsetup' intrinsic call the value coming from the setjmp
intrinsic call. This prevents it from being reordered so that it appears
*before* the setjmp intrinsic (thus making it completely useless).
<rdar://problem/9409683>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131174 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
jLjEHPrepare.cpp
7e20a574eb3f4fc3840a0490c814443d756e2e0e 11-May-2011 Evan Cheng <evan.cheng@apple.com> Add a late optimization to BranchFolding that hoist common instruction sequences
at the start of basic blocks to their common predecessor. It's actually quite
common (e.g. about 50 times in JM/lencod) and has shown to be a nice code size
benefit. e.g.

pushq %rax
testl %edi, %edi
jne LBB0_2
## BB#1:
xorb %al, %al
popq %rdx
ret
LBB0_2:
xorb %al, %al
callq _foo
popq %rdx
ret

=>

pushq %rax
xorb %al, %al
testl %edi, %edi
je LBB0_2
## BB#1:
callq _foo
LBB0_2:
popq %rdx
ret

rdar://9145558


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131172 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
fConversion.cpp
354c82bdf554bc5e6fa5c77f7c357577860d66d8 10-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Initialize moveTypeModule.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131157 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
7f33d677a9d6ea575795ac5948d492bb0f4c8fed 10-May-2011 Eli Friedman <eli.friedman@gmail.com> Disable my little CopyToReg argument hack with fast-isel. rdar://problem/9413587 .



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131156 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
d673057c968ee6da2fc9084a26cbd1a500002d2b 10-May-2011 Stuart Hastings <stuart@apple.com> Correctly walk through nested and adjacent CALLSEQ_START nodes. No
test case; I've only seen this on a release branch, and I can't get it
to reproduce on trunk. rdar://problem/7662569


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131152 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6253c7ca60e3e5c9b10743721b921aa34307d625 10-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Produce a __debug_frame section on darwin ARM when appropriate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131151 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/CMakeLists.txt
smPrinter/DwarfException.h
smPrinter/DwarfSjLjException.cpp
dc52ecf6fdbee63652d2dac0dccc17e23ac7797f 10-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Rename DwarfRequiresRelocationForStmtList to
DwarfRequiresRelocationForSectionOffset as this is not specific to StmtList.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131148 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e29887b4ee42ae78790a8c1886a7babee9ef18e5 10-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Use .cfi_sections to put the unwind info in .debug_frame when possible. With
this clang will use .debug_frame in, for example,
clang -g -c -m32 test.c
This matches gcc's behaviour. It looks like .debug_frame is a bit bigger
than .eh_frame, but has the big advantage of not being allocated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131140 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCFIException.cpp
smPrinter/DwarfException.h
bdda37d7fbafe6876f248341837423a4100f95a5 10-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR9883. Make sure all caches are invalidated when a live range is repaired.

The previous invalidation missed the alias interference caches.

Also add a stats counter for the number of repaired ranges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131133 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
plitKit.cpp
a3f486762f943136da84bfe590e7153fd434c7ad 10-May-2011 Devang Patel <dpatel@apple.com> Do not ignore InlinedAt while walking up scope chain to find subprogram node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131106 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
cef81b7e519764c6a008a689bc4c6dfc9119f8e9 09-May-2011 Eric Christopher <echristo@apple.com> Look through struct wrapped types for inline asm statments.

Patch by Evan Cheng.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131093 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
c356f33aaf6de0e2fb6495113ea2c9059f64973d 09-May-2011 Duncan Sands <baldrick@free.fr> Indent properly, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131082 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cf724f078623e786fc92335fdb0ec70b46f2e86d 08-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove an assertion to fix PR9872.

It can happen that a live debug variable is the last use of a sub-register, and
the register allocator will pick a larger register class for the virtual
register. If the allocated register doesn't support the sub-register index,
just use %noreg for the debug variables instead of asserting.

In PR9872, a debug variable ends up in the sub_8bit_hi part of a GR32_ABCD
register. The register is split and one part is inflated to GR32 and assigned
%ESI because there are no more normal uses of sub_8bit_hi.

Since %ESI doesn't have that sub-register, substPhysReg asserted. Now it will
simply insert a %noreg instead, and the debug variable will be marked
unavailable in that range.

We don't currently have a way of saying: !"value" is in bits 8-15 of %ESI, I
don't know if DWARF even supports that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131073 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
achineInstr.cpp
bf4e10f2f69db24c107cb61d6fe10ed5b2047374 06-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Emit a proper error message when register allocators run out of registers.

This can't be just an assertion, users can always write impossible inline
assembly. Such an assembly statement should be included in the error message.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131024 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
egAllocGreedy.cpp
9b668535a8900a0a86dfa410e2ed843db4b5555e 06-May-2011 Andrew Trick <atrick@apple.com> Added an assertion, and updated a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131022 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
ce1cdac94207a3bdfeb6b3b1b666e588dfdc6c3d 06-May-2011 Evan Cheng <evan.cheng@apple.com> 80 col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131015 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
fc5d305597ea6336d75bd7f3b741e8d57d6a5105 06-May-2011 Eli Friedman <eli.friedman@gmail.com> Make the logic for determining function alignment more explicit. No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131012 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/TargetLowering.cpp
8265e6ab4fb5ff178266d960c5d894f5828bb8ce 06-May-2011 Eli Friedman <eli.friedman@gmail.com> Use array_lengthof. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131008 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6212f9a304d7f8061c87920d39bddbc19afecb0c 06-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Iterate backwards over debug locations when splitting them so they can be safely erased.

This should unbreak dragonegg-i386-linux and build-self-4-mingw32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131007 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
89fd43778e47b0698582f906e3dac900c376102e 06-May-2011 Andrew Trick <atrick@apple.com> Typo: Reviewed by Alistair.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131001 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
f42b66169d75301346e3685fd2b3e45e47806367 06-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Update LiveDebugVariables after live range splitting.

After a virtual register is split, update any debug user variables that resided
in the old register. This ensures that the LiveDebugVariables are still correct
after register allocation.

This may create DBG_VALUE instructions that place a user variable in a register
in parts of the function and in a stack slot in other parts. DwarfDebug
currently doesn't support that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130998 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
iveDebugVariables.h
iveRangeEdit.h
egAllocGreedy.cpp
e77150bbcbf1f53b3830904be4d243c618c00b14 06-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use TargetMachine hooks to properly print debug variable locations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130997 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
cf5e5f3cc08a3c7ede5b423ee4b18586cb1079e9 06-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also count identity copies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130996 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
15ab3594eba495ffd1f070207a4aceeae9492c11 06-May-2011 Andrew Trick <atrick@apple.com> Post-RA scheduler compile time fix. Quadratic computation of DAG node depth.

The post-ra scheduler was explicitly updating the depth of a node's
successors after scheduling it, regardless of whether the successor
was ready. This is quadratic for DAGs with transitively redundant
edges. I simply removed the useless update of depth, which is lazilly
computed later.
Fixes <rdar://problem/9044332> compiler takes way too long to build TextInput.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130992 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
31c5d05a26b5b9eec88558d34e9c20d12e0d53d7 06-May-2011 Devang Patel <dpatel@apple.com> Move CompileUnit::getOrCreateNameSpace() and CompileUnit::addPubType() from DwarfDebug.cpp to DwarfCompileUnit.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
af25768415eb280affde138e75273a8d5263041e 06-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Nothing else uses this label.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130989 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0125d5056999ca4a428251ef2ced5bad34d1133b 06-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Yet more dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130988 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
ffa6408f9cb30cd639eb8eb71ee4aa6f48d0c7a7 06-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Update comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130987 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
ba39f88d0ede1d889a9a564562422d9c9c5134a0 06-May-2011 Rafael Espindola <rafael.espindola@gmail.com> More dead code elimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130985 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
f2b04232006142eb7933972fb21d9ffb9b8c2646 06-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Dead code elimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130984 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
5e926ac651ac497ab782439a3a42840d0ef6f57c 06-May-2011 Eli Friedman <eli.friedman@gmail.com> Re-revert r130877; it's apparently causing a regression on 197.parser,
possibly related to cbnz formation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130977 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
97a12165812e67782749bc18d22ba1edcaf11a6c 06-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove DwarfTableException.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130964 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
smPrinter/DwarfException.h
smPrinter/DwarfSjLjException.cpp
smPrinter/DwarfTableException.cpp
254784f9e0ae59fc060ccd54b39cd1e94ac91356 06-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove the DwarfTable enum.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130959 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LVMTargetMachine.cpp
51a04adc5ebc82830ee679830495424e330406cf 06-May-2011 Devang Patel <dpatel@apple.com> Remove little used statistical counter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130955 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ecf58b9e3c4f0d1e0abc7aa7ce95dd42c674acee 05-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Implement a really simple DwarfSjLjException.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130947 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/CMakeLists.txt
smPrinter/DwarfException.h
smPrinter/DwarfSjLjException.cpp
2d57a6470181e7cc6396caae69e045cd0549d10e 05-May-2011 Rafael Espindola <rafael.espindola@gmail.com> List all exception types in a switch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130944 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ee1091589225d8de4cb8bc065bff9376bbe661eb 05-May-2011 Andrew Trick <atrick@apple.com> ARM post RA scheduler compile time fix.

BuildSchedGraph was quadratic in the number of calls in the basic
block. After this fix, it keeps only a single call at the top of the
DefList so compile time doesn't blow up on large blocks. This reduces
postRA sched time on an external test case from 81s to 0.3s. Although
r130800 (reduced ARM register alias defs) also partially fixes the
issue by reducing the constant overhead of checking call interference
by an order of magnitude.

Fixes <rdar://problem/7662664> very poor compile time with post RA scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130943 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
f405b1ad19940ddd0b66ec0761e636b953af2c2e 05-May-2011 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130942 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
d71867a8f4b1ab6ab8cc8f5b1a732184ec5bad1b 05-May-2011 Owen Anderson <resistor@mac.com> Allow FastISel of three-register-operand instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d96efb83c11454f511f6b16bbf1fb07d8a14ef66 05-May-2011 Devang Patel <dpatel@apple.com> If debug info for inlined function is missing then handle it gracefully.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130933 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e9bd4ea5fda4957c373a3bbc14803d9670041dcc 05-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add some statistics to the splitting and spilling frameworks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130931 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
plitKit.cpp
23d3243e620064c69e4e6308156208f3205342c1 05-May-2011 Eli Friedman <eli.friedman@gmail.com> Avoid extra vreg copies for arguments passed in registers. Specifically, this can make MachineCSE more effective in some cases (especially in small functions). PR8361 / part of rdar://problem/8259436 .



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130928 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
6005b875b09ed1b3c5bc90a304db307b67886f75 05-May-2011 Eli Friedman <eli.friedman@gmail.com> Small syntax cleanup; we don't need to #define constants in C++. No functionality change intended.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5f6bf5d44138a3537822ac057cd7576375c94df1 05-May-2011 Eli Friedman <eli.friedman@gmail.com> Minor correction to r130877; fixes PR9846 and hopefully the buildbot failures.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130925 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
087aad44cb37b361e8ed84f197138b366c764f9a 05-May-2011 Bill Wendling <isanbard@gmail.com> Remove a flag that would set the ".eh" symbol as .globl. MachO was the only one
who used this flag, and it now emits CFI and doesn't emit this anymore. All
other targets left this flag "false".
<rdar://problem/8486371>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130918 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfTableException.cpp
argetLoweringObjectFileImpl.cpp
7a2718a3c185dc4b52d04ac701a0abe173b2e273 05-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Disable physical register coalescing by default.

Joining physregs is inherently dangerous because it uses a heuristic to avoid
creating invalid code. Linear scan had an emergency spilling mechanism to deal
with those rare cases. The new greedy allocator does not.

The greedy register allocator is much better at taking hints, so this has almost
no impact on code size and quality. The few cases where it matters show up as
unit tests that now have -join-physregs enabled explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130896 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d29052bf26fec78a35665b6ccd563b62d2d1cf14 05-May-2011 Bill Wendling <isanbard@gmail.com> SjLj EH could produce a machine basic block that legitimately has more than one
landing pad as its successor.

SjLj exception handling jumps to the correct landing pad via a switch statement
that's generated right before code-gen. Loosen the constraint in the machine
instruction verifier to allow for this. Note, this isn't the most rigorous check
since we cannot determine where that switch statement came from. But it's
marginally better than turning this check off when SjLj exceptions are used.
<rdar://problem/9187612>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130881 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
baf717a08a0bc8cb0a7931ea3ce51d063a8fe6f0 05-May-2011 Eli Friedman <eli.friedman@gmail.com> Re-commit r130862 with a minor change to avoid an iterator running off the edge in some cases.

Original message:

Teach MachineCSE how to do simple cross-block CSE involving physregs. This allows, for example, eliminating duplicate cmpl's on x86. Part of rdar://problem/8259436 .



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130877 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
24d4c9911e7707eb0c35872f33c8ca01b3edcd7f 04-May-2011 Eli Friedman <eli.friedman@gmail.com> Back out r130862; it appears to be breaking bootstrap.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130867 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
49cec1d818d0c7d801e786c458896a60eb424524 04-May-2011 Eli Friedman <eli.friedman@gmail.com> Teach MachineCSE how to do simple cross-block CSE involving physregs. This allows, for example, eliminating duplicate cmpl's on x86. Part of rdar://problem/8259436 .



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130862 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
597a7664e1bbe2ea5f757eb6e853bd1d2fe98d6c 04-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Producing a DW_FORM_addr for DW_AT_stmt_list is probably correct, but
it is both inefficient and unexpected by dwarfdump. Change to
a DW_FORM_data4.

While in here, change the predicate name to reflect that the position
is not really absolute (it is an offset), just that the linker needs a
relocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130846 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
91266017705c13496e062208d1ad7a4c39b20220 04-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename -disable-physical-join to -join-physregs and invert it.

Physreg joining is still on by default, but I will turn it off shortly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130844 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
a938dd0dc9737779dfd476e3099e0bad617aad4a 04-May-2011 Devang Patel <dpatel@apple.com> Tighten up check for empty (i.e. no meaningful debug info) module. This fixes dwarf-die2.c test case from gcc test suite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130842 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ee4a3abede8fe895030bc75e560020ee6bac2deb 03-May-2011 Devang Patel <dpatel@apple.com> Even if the subprogram is going to use AT_specification, emit DW_AT_MIPS_linkage_name. This helps gdb and fixes var-path-expr.exp regression reported by gdb testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130794 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7d6b6a05b549da70b4473f015c97954c2a422724 03-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Gracefully handle invalid live ranges. Fix PR9831.

Register coalescing can sometimes create live ranges that end in the middle of a
basic block without any killing instruction. When SplitKit detects this, it will
repair the live range by shrinking it to its uses.

Live range splitting also needs to know about this. When the range shrinks so
much that it becomes allocatable, live range splitting fails because it can't
find a good split point. It is paranoid about making progress, so an allocatable
range is considered an error.

The coalescer should really not be creating these bad live ranges. They appear
when coalescing dead copies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130787 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
30692abac7da49376b7d3b33d74612893d72f547 03-May-2011 Devang Patel <dpatel@apple.com> If the front end has emitted llvm.dbg.cu and other debug info anchors (clang does it now) then use them directly. This saves one scan of entire module, to collect debug info, which in turns saves few machine cycles at compile time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130759 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f7710af4ba78aa7a0cc9c226f334d8f2b6ab31bf 03-May-2011 Owen Anderson <resistor@mac.com> Other parts of the SelectionDAG framework assume that targets use their pointer type for vector indices. Make the vector unrolling code respect that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130733 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d61c40360c3acc847263c5e5184b715c17528b09 02-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle <def,undef> in the second loop as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130718 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
e2f669fb3fa7a6bee4196999b119a98f31c072a3 02-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the PrintReg adaptor to correctly print live-in registers in debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130715 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
2048e4ab7fb4ed45bae2159bae600ddf610303b1 02-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Only ignore <undef> use operands, keep the <def,undef> ops.

Def operands may also have an <undef> flag, but that just means that a
sub-register redef doesn't actually read the super-register. For physical
registers, it has no meaning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130714 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
c455bb7dc795b8eef66d35ec30650f39ee8b61ab 02-May-2011 Devang Patel <dpatel@apple.com> Emit debug info for global variables first.
This works around a limitation in gdb which is reported by following inherit.exp test failures from gdb testsuite.

gdb.cp/inherit.exp: print g_vB.vB::vb
gdb.cp/inherit.exp: print g_vB.vB::vx
gdb.cp/inherit.exp: print g_vC.vC::vc
gdb.cp/inherit.exp: print g_vC.vC::vx
gdb.cp/inherit.exp: print g_vD.vB::vb
...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130702 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e17e6c01c8d64b1081661ff7fbf0355bab75754c 02-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Only produce the eh_frame section if we have at least one personality function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130692 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
bb30dd40ed0873e39fec4dfa321091a0c8d1abfc 02-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Minimize the slot indexes spanned by register ranges created when splitting.

When an interfering live range ends at a dead slot index between two
instructions, make sure that the inserted copy instruction gets a slot index
after the dead ones. This makes it possible to avoid the interference.

Ideally, there shouldn't be interference ending at a deleted instruction, but
physical register coalescing can sometimes do that to sub-registers.

This fixes PR9823.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130687 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
iveRangeEdit.h
plitKit.cpp
5426a9ee37667660935d80841c5392d78e254318 01-May-2011 Rafael Espindola <rafael.espindola@gmail.com> GCC uses a different encoding of pointers in the FDE when using
-fno-dwarf2-cfi-asm. Implement the same behavior.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130637 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfTableException.cpp
argetLoweringObjectFileImpl.cpp
ec7e4fff960f166be8a8a39b7ba8cc7baac6b02c 30-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> When a physreg is live-in and live through a basic block, make sure its live
range covers the entire block.

The live range can't be terminated at a random instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130619 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6ee56e658a6f676e01a06d7a53d1d5c87710f3c3 30-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid using stale entries form the sibling value map.

This could happen when trying to use a value that had been eliminated after dead
code elimination and folding loads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130597 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
66446c803a11a26e4bb39b74091d146ac850ae4c 30-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use hysteresis for local live range splitting as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130596 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
f1a5c7ec04002769f1638e64f7439589f0f926e6 30-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Add all the plumbing needed for MC to expand cfi to the old tables in
the final assembly. It is the same technique used when targeting
assemblers that don't support .loc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130587 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
141f529bafb5f464ee5db7031d29c9b0b33085bc 30-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Update comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130582 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
5aa3211e2d9c618f1f2ae590792067dbcb572741 30-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a greedy algorithm for allocating registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130568 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
d65ba721cccb0d0998750908bf2533e08b106f38 30-Apr-2011 Bill Wendling <isanbard@gmail.com> Print out the 'nontemporal' info on a store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130562 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b2b03fc2fa87cb5604dd8ec2e8476d051186cdb3 30-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Make FastEmit_ri_ try a bit harder to succeed for supported operations; FastEmit_i can fail for non-Thumb2 ARM. Makes ARMSimplifyAddress work correctly, and reduces the number of fast-isel bailouts on non-Thumb ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130560 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
49a3ff9d1733cb16bdc97590e5b90508b8656565 29-Apr-2011 Devang Patel <dpatel@apple.com> Hoist MCLineEntry construction AsmPrinter so that anyone who derives from AsmPrinter can have line number entries.
PR 9810



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130518 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ac3ba1b27e686410f249cb0475909a8d2abfe57d 29-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> The last hack for producing bit identical output with cfi on OS X.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130504 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
7b11a4cbdc613c768871a0e4aad4ad3ae7cab5de 29-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Change DwarfCFIException's member variables to track what it actually
emmits: .cfi_personality, .cfi_lsda and the moves.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130503 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
smPrinter/DwarfException.h
a432997745f668e85e45826106430f69238b1d1e 29-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Factor some code to needsCFIMoves. Avoid printing moves when we don't have to.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130501 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCFIException.cpp
c26f5447e39b43a6dd9c1a9d88227f4adf3b5600 28-Apr-2011 Devang Patel <dpatel@apple.com> Teach dwarf writer to handle complex address expression for .debug_loc entries.
This fixes clang generated blocks' variables' debug info.
Radar 9279956.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130373 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
bd1253809bc1b2455793a64d2801db3d6317b08e 28-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Fix a silly mistake in r130338.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130360 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
60246a96224c8b790177253bf25433b93b335d2b 28-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove unnecessary argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130343 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
argetLoweringObjectFileImpl.cpp
7afec9cc0ff1654619d30b6f30e2a4d13369c8bf 28-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Rename getPersonalityPICSymbol to getCFIPersonalitySymbol, document it, and
give it a bit more responsibility. Also implement it for MachO.

If hacked to use cfi, 32 bit MachO will produce

.cfi_personality 155, L___gxx_personality_v0$non_lazy_ptr

and 64 bit will produce

.cfi_presonality ___gxx_personality_v0

The general idea is that .cfi_personality gets passed the final symbol. It is
up to codegen to produce it if using indirect representation (like 32 bit
MachO), but it is up to MC to decide which relocations to create.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130341 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
argetLoweringObjectFileImpl.cpp
e1cdf84ee5ca72a38f4dedd6b12cce21cf83e415 28-Apr-2011 Devang Patel <dpatel@apple.com> Simplify handling of variables with complex address (i.e. blocks variables)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130339 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
2790ba8e5a7bb6e00fdac9997d840598fb60271c 28-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Make the fast-isel code for literal 0.0 a bit shorter/faster, since 0.0 is common. rdar://problem/9303592 .



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130338 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
161b887506fb79dc68fb507b72de03eaf48f467a 28-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Remove unused function.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130337 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
018e38c6dd8794c6c58be518ddaae99033f6d080 27-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130331 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
0be77dff1147488814b8eea6ec8619f56e3d9f5e 27-Apr-2011 Devang Patel <dpatel@apple.com> Revert r130178. It turned out to be not the optimal path to emit complex location expressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130326 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
309db7c947de7f0f9730dff5f95bc1cc5bd1db7d 27-Apr-2011 Evan Cheng <evan.cheng@apple.com> If converter was being too cute. It look for root BBs (which don't have
successors) and use inverse depth first search to traverse the BBs. However
that doesn't work when the CFG has infinite loops. Simply do a linear
traversal of all BBs work just fine.

rdar://9344645


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130324 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
93e110ba344ddc901dfb2af61d9c21002d8d3080 27-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also add <imp-def> operands for defined and dead super-registers when rewriting.

We cannot rely on the <imp-def> operands added by LiveIntervals in all cases as
demonstrated by the test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130313 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
9f4b893b84d9c2b56aa2abc3c96ce1e5ccc465e5 27-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a safe-guard against repeated splitting for some rare cases.

The number of blocks covered by a live range must be strictly decreasing when
splitting, otherwise we can't allow repeated splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130249 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
554daa67bd1c4f01fb7a00f2f4255a52b81e9fa3 26-Apr-2011 Evan Cheng <evan.cheng@apple.com> Be careful about scheduling nodes above previous calls. It increase usages of
more callee-saved registers and introduce copies. Only allows it if scheduling
a node above calls would end up lessen register pressure.

Call operands also has added ABI restrictions for register allocation, so be
extra careful with hoisting them above calls.

rdar://9329627


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130245 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
fea8fea58328d561eeccd5e0f896dbddf17ddb38 26-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Print the label if we will use it in debug_frame.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130232 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
116da2fbe93861bb60ffff26dce1d0e76d9ccf15 26-Apr-2011 Devang Patel <dpatel@apple.com> Refactor code. Keep dwarf register operation selection logic at one place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130231 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
1394e6d9252ed188dbd73a59bcb4f15526641363 26-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the new TRI->getLargestLegalSuperClass hook to constrain register class inflation.

This has two effects: 1. We never inflate to a larger register class than what
the sub-target can handle. 2. Completely unconstrained virtual registers get the
largest possible register class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130229 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
a61e73bda5125c28e48b52e573d115370838596b 26-Apr-2011 Dan Gohman <gohman@apple.com> Fast-isel support for simple inline asms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130205 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
bffc2b4af1abe9d25392819b5d9a14f2f228abd4 26-Apr-2011 Chris Lattner <sabre@nondot.org> don't emit the symbol name twice for local bss and common
symbols. For example, don't emit:
.comm _i,4,2 ## @i
## @i

instead emit:
.comm _i,4,2 ## @i



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130192 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b16d06f88a81a5163e0caffad4bb268a8e1d0204 26-Apr-2011 Evan Cheng <evan.cheng@apple.com> Fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130190 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
b28d4f152ee9b76d8798b2bdcb06cb8d106841e6 26-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Print all the moves at a given label instead of just the first one.
Remove previous DwarfCFI hack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130187 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
0c99861836741911300587c579d4f9d3fe1d2a39 26-Apr-2011 Devang Patel <dpatel@apple.com> Let dwarf writer allocate extra space in the debug location expression. This space, if requested, will be used for complex addresses of the Blocks' variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130178 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9341d10f9443da6c6b0833f8a208afec69505f6e 26-Apr-2011 Devang Patel <dpatel@apple.com> Rename a local variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130171 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b865d46d95a4c5073d0c006ccc1773641f88fc98 26-Apr-2011 Devang Patel <dpatel@apple.com> Rename a method to match what it really does.
s/addVariableAddress/addFrameVariableAddress/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130170 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
80925f5dca36e34c6c28ae080d2fd2bf861fb346 26-Apr-2011 Devang Patel <dpatel@apple.com> Do not drop a variable's complex address if it is not based on frame base.
Observed this while reading code, so I do not have a test case handy here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130167 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
06104e3743afc8988892bf66aab76e7fd5a885b3 25-Apr-2011 Devang Patel <dpatel@apple.com> A dbg.declare may not be in entry block, even if it is referring to an incoming argument. However, It is appropriate to emit DBG_VALUE referring to this incoming argument in entry block in MachineFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130129 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e54e785be5ed4ca2022728e39128e27fe5face0c 24-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Simplify the logic. Noticed by aKor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130116 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
7ed673244784e16cac58d69e5a7010fda8fe92bd 24-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Synchronize the conditions for producing a .cfi_startproc and a .cfi_endproc.
Fixes PR9787.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130115 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
6796e4fc889d99c4ad97ec5ad86e4c8cf75e52a4 24-Apr-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Give SplitKit.h a header guard.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130095 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.h
ddcdcc88631c6bd4ad43d9198b98bc9a829be036 23-Apr-2011 Jay Foad <jay.foad@gmail.com> Remove unused STL header includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130068 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
egAllocLinearScan.cpp
electionDAG/SelectionDAGBuilder.h
piller.cpp
d74ea775af55782e3b0d5b10fa7602f8822a2f72 23-Apr-2011 Owen Anderson <resistor@mac.com> Teach FastISel to deal with instructions that have two immediate operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130033 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5e06bb83f4d7b1b86659ad851324350afb04f5b0 23-Apr-2011 Devang Patel <dpatel@apple.com> Let front-end tie subprogram declaration with subprogram definition directly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130028 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
200729882a47535d4c2496283d26600171531fad 23-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Always compare the cost of region splitting with the cost of per-block splitting.

Sometimes it is better to split per block, and we missed those cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130025 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
b686af053e6544191420978f6a3adc7e74ab0192 22-Apr-2011 Chris Lattner <sabre@nondot.org> Recommit the fix for rdar://9289512 with a couple tweaks to
fix bugs exposed by the gcc dejagnu testsuite:
1. The load may actually be used by a dead instruction, which
would cause an assert.
2. The load may not be used by the current chain of instructions,
and we could move it past a side-effecting instruction. Change
how we process uses to define the problem away.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130018 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e7cf062537e898f830565db5dbf99ae9c928399e 22-Apr-2011 Benjamin Kramer <benny.kra@googlemail.com> DAGCombine: fold "(zext x) == C" into "x == (trunc C)" if the trunc is lossless.

On x86 this allows to fold a load into the cmp, greatly reducing register pressure.
movzbl (%rdi), %eax
cmpl $47, %eax
->
cmpb $47, (%rdi)

This shaves 8k off gcc.o on i386. I'll leave applying the patch in README.txt to Chris :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130005 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
eac0c9dc7759b013bbe831ace1afa37bc46915c6 22-Apr-2011 Devang Patel <dpatel@apple.com> Do not leak argument's DbgVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130004 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d8a16241229a6d3f761e2e9fd19cbe08e614f113 22-Apr-2011 Evan Cheng <evan.cheng@apple.com> Typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129970 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
d3dbd5f5cdb54b5e9472ec6040612fc4d898d297 22-Apr-2011 Bill Wendling <isanbard@gmail.com> Branch folding is folding a landing pad into a regular BB.

An exception is thrown via a call to _cxa_throw, which we don't expect to
return. Therefore, the "true" part of the invoke goes to a BB that has
'unreachable' as its only instruction. This is lowered into an empty MachineBB.
The landing pad for this invoke, however, is directly after the "true" MBB.
When the empty MBB is removed, the landing pad is directly below the BB with the
invoke call. The unconditional branch is removed and then the two blocks are
merged together.

The testcase is too big for a regression test.
<rdar://problem/9305728>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129965 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
acc381bee95b5eafcdf3eaa85a66e83a5773aacb 21-Apr-2011 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129938 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
ae5fbeec23cff833cad9e6b2a638efd1f48bef49 21-Apr-2011 Matt Beaumont-Gay <matthewbg@google.com> Don't recycle loop variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129928 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
5928046306d8bbe7db35707c294689f515f90e56 21-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow allocatable ranges from global live range splitting to be split again.

These intervals are allocatable immediately after splitting, but they may be
evicted because of later splitting. This is rare, but when it happens they
should be split again.

The remainder intervals that cannot be allocated after splitting still move
directly to spilling.

SplitEditor::finish can optionally provide a mapping from new live intervals
back to the original interval indexes returned by openIntv().

Each original interval index can map to multiple new intervals after connected
components have been separated. Dead code elimination may also add existing
intervals to the list.

The reverse mapping allows the SplitEditor client to treat the new intervals
differently depending on the split region they came from.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129925 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
2c4b4b195fa86715622d04bf87b9391fc06f3dca 21-Apr-2011 Devang Patel <dpatel@apple.com> Add comment in output stream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129921 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
63c21deee15516723d3ebcf70ba34bb07116e974 21-Apr-2011 Daniel Dunbar <daniel@zuster.org> Revert r1296656, "Fix rdar://9289512 - not folding load into compare at -O0...",
which broke a couple GCC test suite tests at -O0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129914 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3b7d917dec53a742fcb14802557ee75d35185968 21-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add debug output for rematerializable instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129883 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
08c5a347a05e73a34c70ec8b694b1e89b96a6bf5 21-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Permit remat when a virtual register has multiple defs.

TII::isTriviallyReMaterializable() shouldn't depend on any properties of the
register being defined by the instruction. Rematerialization is going to create
a new virtual register anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129882 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
6bfba2e5af163442a1c6b11fe14aa9df9101cfd7 20-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Prefer cheap registers for busy live ranges.

On the x86-64 and thumb2 targets, some registers are more expensive to encode
than others in the same register class.

Add a CostPerUse field to the TableGen register description, and make it
available from TRI->getCostPerUse. This represents the cost of a REX prefix or a
32-bit instruction encoding required by choosing a high register.

Teach the greedy register allocator to prefer cheap registers for busy live
ranges (as indicated by spill weight).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129864 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
egAllocGreedy.cpp
c73158730d43e7c8bdef32b2107566a6e78a8538 20-Apr-2011 Stuart Hastings <stuart@apple.com> ARM byval support. Will be enabled by another patch to the FE. <rdar://problem/7662569>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129858 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
4788c3e839203dc75ba9fe2026f315095677715c 20-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove unused arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129844 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
argetLoweringObjectFileImpl.cpp
abbbfbd6726c7af8b27479b4311fe6bb6c40b52b 20-Apr-2011 Eric Christopher <echristo@apple.com> Rewrite the expander for umulo/smulo to remember to sign extend the input
manually and pass all (now) 4 arguments to the mul libcall. Add a new
ExpandLibCall for just this (copied gratuitously from type legalization).

Fixes rdar://9292577


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129842 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
558692fd0a31d4d3ae4fd09a3a02f80da2e44e5c 20-Apr-2011 Daniel Dunbar <daniel@zuster.org> ADT/Triple: Renambe isOSX... methods to isMacOSX for consistency with the OS
triple component.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129838 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
ebc5066b9bcf1a3ead167613bb496b24f8c67f8b 19-Apr-2011 Daniel Dunbar <daniel@zuster.org> CodeGen: Eliminate a use of getDarwinMajorNumber().
- There is a minor semantic change here (evidenced by the test change) for
Darwin triples that have no version component. I debated changing the default
behavior of isOSVersionLT, but decided it made more sense for triples to be
explicit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129802 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
567cac0c511c2361ddb76eb4b8d49d306107a921 19-Apr-2011 Stuart Hastings <stuart@apple.com> Delete unnecessary variable. <rdar://problem/7662569>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129796 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f6a4d3c2f3e1029af252a0f6999edfa3c2f326ee 19-Apr-2011 Bob Wilson <bob.wilson@apple.com> Avoid write-after-write issue hazards for Cortex-A9.

Add a avoidWriteAfterWrite() target hook to identify register classes that
suffer from write-after-write hazards. For those register classes, try to avoid
writing the same register in two consecutive instructions.

This is currently disabled by default. We should not spill to avoid hazards!
The command line flag -avoid-waw-hazard can be used to enable waw avoidance.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129772 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
430721cff8bc3b5baceab7700bcb9b6a51d70327 19-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Force the greedy register allocator to be linked alongside linear scan.

This means that the new register allocator can be used with 'clang -mllvm -regalloc=greedy'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129764 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
37d38bfbbf2b8db2c75b2edbd8cd30c51746fd5d 19-Apr-2011 Eli Friedman <eli.friedman@gmail.com> SelectBasicBlock is rather slow even when it doesn't do anything; skip the
unnecessary work where possible.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129763 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fc52163a45b9ea147db1c20a1db3edff0f0bf652 19-Apr-2011 Stuart Hastings <stuart@apple.com> Support nested CALLSEQ_BEGIN/END; necessary for ARM byval support. <rdar://problem/7662569>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129761 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
832e4943598d821687cec79f512803c1ca03cff7 19-Apr-2011 Chris Lattner <sabre@nondot.org> Implement support for x86 fastisel of small fixed-sized memcpys, which are generated
en-mass for C++ PODs. On my c++ test file, this cuts the fast isel rejects by 10x
and shrinks the generated .s file by 5%


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129755 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
6dda9163585660a080c7fe0484a0dd75aceea00d 18-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Simplify declarations slightly by using typedefs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129720 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
3f3bf9387b75f4c932e4c59bd7af719d26ae4b99 18-Apr-2011 Devang Patel <dpatel@apple.com> Reduce clutter in asm output. Do not emit source location as comment for each instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129715 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
5d5ef4a886290565570703747264cd47800765fc 18-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle spilling around an instruction that has an early-clobber re-definition of
the spilled register.

This is quite common on ARM now that some stores have early-clobber defines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129714 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
d574bb5a6ee6cbe4d2387e4fa7f7f5ab099ea05f 18-Apr-2011 Eric Christopher <echristo@apple.com> Fix a bug where we were counting the alias sets as completely used
registers for fast allocation a different way. This has us updating
used registers only when we're using that exact register.

Fixes rdar://9207598



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129711 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
f051c1a29dd040b4b5ca0c5696d47a9058f87481 18-Apr-2011 Chris Lattner <sabre@nondot.org> while we're at it, handle 'sdiv exact' of a power of 2 also,
this fixes a few rejects on c++ iterator loops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129694 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
090ca9108b35a60e8b97b67987d00cf47a383dba 18-Apr-2011 Chris Lattner <sabre@nondot.org> fix rdar://9297011 - udiv by power of two causing fast-isel rejects


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129693 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
602fc0681726155942907debee1fe0b8b44ffc1b 17-Apr-2011 Chris Lattner <sabre@nondot.org> 1. merge fast-isel-shift-imm.ll into fast-isel-x86-64.ll
2. implement rdar://9289501 - fast isel should fold trivial multiplies to shifts
3. teach tblgen to handle shift immediates that are different sizes than the
shifted operands, eliminating some code from the X86 fast isel backend.
4. Have FastISel::SelectBinaryOp use (the poorly named) FastEmit_ri_ function
instead of FastEmit_ri to simplify code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129666 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
685090f5988a03da1a515493bad1e592d26b9956 17-Apr-2011 Chris Lattner <sabre@nondot.org> fix an oversight which caused us to compile the testcase (and other
less trivial things) into a dummy lea. Before we generated:

_test: ## @test
movq _G@GOTPCREL(%rip), %rax
leaq (%rax), %rax
ret

now we produce:

_test: ## @test
movq _G@GOTPCREL(%rip), %rax
ret

This is part of rdar://9289558



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129662 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fd3f6351035f6bf1a6bfc851da00c0fb24d6db09 17-Apr-2011 Chris Lattner <sabre@nondot.org> Fix rdar://9289512 - not folding load into compare at -O0

The basic issue here is that bottom-up isel is matching the branch
and compare, and was failing to fold the load into the branch/compare
combo. Fixing this (by allowing folding into any instruction of a
sequence that is selected) allows us to produce things like:


cmpb $0, 52(%rax)
je LBB4_2

instead of:

movb 52(%rax), %cl
cmpb $0, %cl
je LBB4_2

This makes the generated -O0 code run a bit faster, but also speeds up
compile time by putting less pressure on the register allocator and
generating less code.

This was one of the biggest classes of missing load folding. Implementing
this shrinks 176.gcc's c-decl.s (as a random example) by about 4% in (verbose-asm)
line count.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129656 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8bdc251dc5392fdf4854dcf588d73927d6ef64b3 17-Apr-2011 Chris Lattner <sabre@nondot.org> split a complex predicate out to a helper function. Simplify two for loops,
which don't need to check for falling off the end of a block *and* end of phi
nodes, since terminators are never phis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129655 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fff65b354f9895f5add84d99e0f62176f5d3f0f6 17-Apr-2011 Chris Lattner <sabre@nondot.org> fix rdar://9289583 - fast isel should handle non-canonical commutative binops
allowing us to fold the immediate into the 'and' in this case:

int test1(int i) {
return 8&i;
}



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129653 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
e545d38a2871dd4fc93802d9405373325baf1e21 17-Apr-2011 Eli Friedman <eli.friedman@gmail.com> PR9055: extend the fix to PR4050 (r70179) to apply to zext and anyext.
Returning a new node makes the code try to replace the old node, which
in the included testcase is killed by CSE.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129650 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cbc5f407eff618225a2fd4363f67d660607e6c2d 16-Apr-2011 Francois Pichet <pichet2000@gmail.com> Unbreak the MSVC 2010 build.
For further information on this particular issue see: http://connect.microsoft.com/VisualStudio/feedback/details/520043/error-converting-from-null-to-a-pointer-type-in-std-pair

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129642 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
e5060984aa4d8c473e5081cb6c36d8e0a23e5d25 16-Apr-2011 Benjamin Kramer <benny.kra@googlemail.com> Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129639 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
30deafc84adf88f643cdc39dc97a37537155347f 16-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Put each personality function in a section. This fixes the gnu ld warning:

error in foo.o; no .eh_frame_hdr table will be created.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129635 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCFIException.cpp
argetLoweringObjectFileImpl.cpp
65279cb9bd985721ac6ad090fed02298396ba06d 16-Apr-2011 Evan Cheng <evan.cheng@apple.com> Fix divmod libcall lowering. Convert to {S|U}DIVREM first and then expand the node to a libcall. rdar://9280991

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129633 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e9db5e29e3af91eec572bfeb8dcec908213298b0 16-Apr-2011 Devang Patel <dpatel@apple.com> Introduce support to encode Objective-C property information in debugging information generated for an interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129624 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
126ae6815263aeffe4fbaa6dff1e4428aa8f0a91 15-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Some refactoring suggested by Anton Korobeynikov.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129600 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
44b7ae2355a32035ea286555736d173755a1c5e2 15-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach the SplitKit blitter to handle multiply defined values as well.

The transferValues() function can now handle both singly and multiply defined
values, as long as the resulting live range is known. Only rematerialized values
have their live range recomputed by extendRange().

The updateSSA() function can now insert PHI values in bulk across multiple
values in multiple target registers in one pass. The list of blocks received
from transferValues() is in layout order which seems to work well for the
iterative algorithm. Blocks from extendRange() are still in reverse BFS order,
but this function is used so rarely now that it doesn't matter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129580 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
806562cc59ad35e6c742abe9109e9b8090b3f820 15-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to set flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129579 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
f0adba9a7ec8a3031876575a6ffb7db5f1b6f855 15-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Add 129518 back with a fix for when we are producing eh just because of debug info.
Change ELF systems to use CFI for producing the EH tables. This reduces the
size of the clang binary in Debug builds from 690MB to 679MB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129571 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCFIException.cpp
7a2bdde0a0eebcd2125055e0eacaca040f0b766c 15-Apr-2011 Chris Lattner <sabre@nondot.org> Fix a ton of comment typos found by codespell. Patch by
Luis Felipe Strano Moraes!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129558 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
smPrinter/DwarfDebug.cpp
odePlacementOpt.cpp
LF.h
LFWriter.cpp
xpandISelPseudos.cpp
iveDebugVariables.cpp
iveIntervalAnalysis.cpp
rologEpilogInserter.cpp
EADME.txt
egAllocLinearScan.cpp
enderMachineFunction.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
hrinkWrapping.cpp
trongPHIElimination.cpp
irtRegRewriter.cpp
bcb8c6d09ee426e0f774e3412912f6ae9e5f78dd 15-Apr-2011 NAKAMURA Takumi <geek4civic@gmail.com> Revert r129518, "Change ELF systems to use CFI for producing the EH tables. This reduces the"

It broke several builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129557 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCFIException.cpp
a34d93630ea5864fde8066d5c9638fdda86e1fc1 14-Apr-2011 Owen Anderson <resistor@mac.com> Fix another instance of the DAG combiner not using the correct type for the RHS of a shift.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129522 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3dae6e7333b8fae7b79ddb99757ab5de73890af9 14-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Change ELF systems to use CFI for producing the EH tables. This reduces the
size of the clang binary in Debug builds from 690MB to 679MB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129518 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCFIException.cpp
12f0dc6bb556976f22d89ebcf42bce273c9e7d38 14-Apr-2011 Andrew Trick <atrick@apple.com> In the pre-RA scheduler, maintain cmp+br proximity.

This is done by pushing physical register definitions close to their
use, which happens to handle flag definitions if they're not glued to
the branch. This seems to be generally a good thing though, so I
didn't need to add a target hook yet.

The primary motivation is to generate code closer to what people
expect and rule out missed opportunity from enabling macro-op
fusion. As a side benefit, we get several 2-5% gains on x86
benchmarks. There is one regression:
SingleSource/Benchmarks/Shootout/lists slows down be -10%. But this is
an independent scheduler bug that will be tracked separately.
See rdar://problem/9283108.

Incidentally, pre-RA scheduling is only half the solution. Fixing the
later passes is tracked by:
<rdar://problem/8932804> [pre-RA-sched] on x86, attempt to schedule CMP/TEST adjacent with condition jump

Fixes:
<rdar://problem/9262453> Scheduler unnecessary break of cmp/jump fusion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129508 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
c0c7fca2fedd2259569b7b84338259c62d38802d 14-Apr-2011 Chris Lattner <sabre@nondot.org> sink a call into its only use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129503 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7adf862eb24f7c6cbf12fbc9e3e8229f6f863b8a 14-Apr-2011 Owen Anderson <resistor@mac.com> During post-legalization DAG combining, be careful to only create shifts where the RHS is of the legal type for the new operation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
65705d559af0ac7002320dd582cb0d59ce70485a 13-Apr-2011 Devang Patel <dpatel@apple.com> Remove extra bytes that were added for gdb. We do not have good poiner to understand actual reason behind this fixme. Spot checking suggest that newer gdb does not need this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129461 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fd1cced726469e83915f428877a521ba737d35f3 13-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop using dead function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129442 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
87896d9368e08d93493427ce7bf8272d1e5cca35 13-Apr-2011 Andrew Trick <atrick@apple.com> Recommit r129383. PreRA scheduler heuristic fixes: VRegCycle, TokenFactor latency.

Additional fixes:
Do something reasonable for subtargets with generic
itineraries by handle node latency the same as for an empty
itinerary. Now nodes default to unit latency unless an itinerary
explicitly specifies a zero cycle stage or it is a TokenFactor chain.

Original fixes:
UnitsSharePred was a source of randomness in the scheduler: node
priority depended on the queue data structure. I rewrote the recent
VRegCycle heuristics to completely replace the old heuristic without
any randomness. To make the ndoe latency adjustments work, I also
needed to do something a little more reasonable with TokenFactor. I
gave it zero latency to its consumers and always schedule it as low as
possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129421 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
d31df87f41891c9ea459282c666c6e1cab9bd4c7 13-Apr-2011 Eric Christopher <echristo@apple.com> Temporarily revert r129408 to see if it brings the bots back.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129417 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
8e98de9979fa08dac650bc6ae884e809da2cfdaa 13-Apr-2011 Eric Christopher <echristo@apple.com> Fix a bug where we were counting the alias sets as completely used
registers for fast allocation.

Fixes rdar://9207598


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129408 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
161b2f45c2413a9aa3bb3003d043f58c21dfd319 13-Apr-2011 Devang Patel <dpatel@apple.com> I missed this new file in previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129407 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.cpp
513edf62fa63ca9051cd95de9af04a3506d1e902 13-Apr-2011 Devang Patel <dpatel@apple.com> Simplify. There is no need to use static variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129406 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5d6076383171cb4f676b24bead5292f8e3fc4973 13-Apr-2011 Devang Patel <dpatel@apple.com> Do not reuse parameter name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129405 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
3cbee30eacd5d918a00f21c08dbd10ee9ae73925 13-Apr-2011 Devang Patel <dpatel@apple.com> This mechanical patch moves type handling into CompileUnit from DwarfDebug. In case of multiple compile unit in one object file, each compile unit is responsible for its own set of type entries anyway. This refactoring makes this obvious.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129402 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0b756349a718e046abba84c316877a682eb0ff2f 13-Apr-2011 Eric Christopher <echristo@apple.com> Add more comments... err debug statements to the fast allocator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129400 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
5db4289e404d76664f8aabe2675a4cc2d7b0e98e 12-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> SparseBitVector is SLOW.

Use a Bitvector instead, we didn't need the smaller memory footprint anyway.
This makes the greedy register allocator 10% faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129390 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.h
c558bf397257f5ef902bdb45a28e622ee2b5b4f2 12-Apr-2011 Andrew Trick <atrick@apple.com> Revert 129383. It causes some targets to hit a scheduler assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129385 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
3eb4319313b3fb9189cd4be5b3e5375be9bdc2f9 12-Apr-2011 Andrew Trick <atrick@apple.com> PreRA scheduler heuristic fixes: VRegCycle, TokenFactor latency.

UnitsSharePred was a source of randomness in the scheduler: node
priority depended on the queue data structure. I rewrote the recent
VRegCycle heuristics to completely replace the old heuristic without
any randomness. To make these heuristic adjustments to node latency work,
I also needed to do something a little more reasonable with TokenFactor. I
gave it zero latency to its consumers and always schedule it as low as
possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
fd5c51342a429ecab86a645282d0b36b216c0256 12-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Create new intervals for isolated blocks during region splitting.

This merges the behavior of splitSingleBlocks into splitAroundRegion, so the
RS_Region and RS_Block register stages can be coalesced. That means the leftover
intervals after region splitting go directly to spilling instead of a second
pass of per-block splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129379 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
e1b43c3b4000ee7201fcac8d1c8e75bb9fb547e3 12-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SplitKit API to query and select the current interval being worked on.

This makes it possible to target multiple registers in one pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129374 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
dfaf0e2c0ef01a6f6fd31f2e099ab63c5a7f7cc0 12-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a bug in RegAllocBase::addMBBLiveIns() where a basic block could accidentally be skipped.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129373 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
860cf9693a2a09d4a316deb9b829fc9e1641c16e 12-Apr-2011 Devang Patel <dpatel@apple.com> Remove dead typedef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129368 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
8b9df62d0227beab8c7adb487fb909e67bbc7237 12-Apr-2011 Devang Patel <dpatel@apple.com> Refactor CompileUnit into a separate header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129367 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfCompileUnit.h
smPrinter/DwarfDebug.cpp
bbfc3b30986ff89487350cade99ea7c90e2c8165 12-Apr-2011 Eric Christopher <echristo@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129334 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
560ab9ebf78532df11188770c916c4eb6dcce1b2 12-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Reuse live interval union between functions. This saves a bit of compile time
when compiling many small functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129321 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
egAllocBasic.cpp
5ea5c61589e62a1068746ddcc52c6aa39ec0f8b0 12-Apr-2011 Nick Lewycky <nicholas@mxc.ca> Just because a GlobalVariable's initializer is [N x { i32, void ()* }] doesn't
mean that it has to be ConstantArray of ConstantStruct. We might have
ConstantAggregateZero, at either level, so don't crash on that.

Also, semi-deprecate the sentinal value. The linker isn't aware of sentinals so
we end up with the two lists appended, each with their "sentinals" on them.
Different parts of LLVM treated sentinals differently, so make them all just
ignore the single entry and continue on with the rest of the list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129307 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
3f5bedf5cbde2cc2badc86b1a0b377f6efcde71c 11-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Speed up eviction by stopping collectInterferingVRegs as soon as the spill
weight limit has been exceeded.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129305 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocGreedy.cpp
cc88595bce813464f4dc0c8351f7311bb233a3e2 11-Apr-2011 Bill Wendling <isanbard@gmail.com> The default of the dispatch switch statement was to branch to a BB that executed
the 'unwind' instruction. However, later on that instruction was converted into
a jump to the basic block it was located in, causing an infinite loop when we
get there.

It turns out, we get there if the _Unwind_Resume_or_Rethrow call returns (which
it's not supposed to do). It returns if it cannot find a place to unwind
to. Thus we would get what appears to be a "hang" when in reality it's just that
the EH couldn't be propagated further along.

Instead of infinitely looping (or calling `unwind', which none of our back-ends
support (it's lowered into nothing...)), call the @llvm.trap() intrinsic
instead. This may not conform to specific rules of a particular language, but
it's rather better than infinitely looping.

<rdar://problem/9175843&9233582>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129302 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
d67705faaa526a31feab831ac1e5e15ee37880a1 11-Apr-2011 Evan Cheng <evan.cheng@apple.com> Look pass copies when determining whether hoisting would end up inserting more copies. rdar://9266679

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129297 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
6d73c7dad165bde864769ae1a351bce27b261565 11-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a faster algorithm for computing MBB live-in registers after register allocation.

LiveIntervals::findLiveInMBBs has to do a full binary search for each segment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129292 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
cfea985f5319991fcb1feac3e66f645da4a0b507 11-Apr-2011 Evan Cheng <evan.cheng@apple.com> Fix a couple of places where changes are made but not tracked.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129287 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
achineSink.cpp
0fb215a154a5f9f54eea1ce8b006ba9bce5defa1 11-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't add live ranges for sub-registers when clobbering a physical register.

Both coalescing and register allocation already check aliases for interference,
so these extra segments are only slowing us down.

This speeds up both linear scan and the greedy register allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129283 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
11983cd861614cd5593c628268542d2688bbe15a 11-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Speed up LiveIntervalUnion::unify by handling end insertion specially.

This particularly helps with the initial transfer of fixed intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129277 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
bd1926dfd4fbc8ca09941e00ac507eb5637e9c25 11-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Time the initial seeding of live registers

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129276 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
1edc3cf65d54130542fc91bac67ecf616ef88d48 11-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't shrink live ranges after dead code elimination unless it is going to help.

In particular, don't repeatedly recompute the PIC base live range after rematerialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129275 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
562b84b3aea359d1f918184e355da82bf05eb290 11-Apr-2011 Jay Foad <jay.foad@gmail.com> Don't include Operator.h from InstrTypes.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129271 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c3e4e59d1017178fdff33d6e34635f498c98592f 09-Apr-2011 Chris Lattner <sabre@nondot.org> Avoid excess precision issues that lead to generating host-compiler-specific code.
Switch lowering probably shouldn't be using FP for this. This resolves PR9581.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129199 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8feda7ee332f1f91e4d3a42d9f7ad729012ed174 09-Apr-2011 Jush Lu <jush.msn@gmail.com> Merge upstream r129128
f4afdfc501b7185d24a0ef184fe3d0c0bbe22e0c 09-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Build the Hopfield network incrementally when splitting global live ranges.

It is common for large live ranges to have few basic blocks with register uses
and many live-through blocks without any uses. This approach grows the Hopfield
network incrementally around the use blocks, completely avoiding checking
interference for some through blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129188 91177308-0d34-0410-b5e6-96231b3b80d8
dgeBundles.cpp
egAllocGreedy.cpp
pillPlacement.cpp
pillPlacement.h
plitKit.cpp
plitKit.h
9d29cbad32814f31c91cd2464a3c74df412b0aac 09-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Precompute interference for neighbor blocks as long as there is no interference.

This doesn't require seeking in the live interval union, so it is very cheap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129187 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.cpp
nterferenceCache.h
b3452ea35c3e78d1a8c7d92f9448b0054d36e740 09-Apr-2011 Chris Lattner <sabre@nondot.org> have dag combine zap "store undef", which can be formed during call lowering
with undef arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129185 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3f932a74be207eaad700ac7898f63c06131097ea 09-Apr-2011 Devang Patel <dpatel@apple.com> Simplify array bound checks and clarify comments. One element array can have same non-zero number as lower bound as well as upper bound.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129170 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fb6e8d65547b744b1804b74b263f163e9879b901 08-Apr-2011 Devang Patel <dpatel@apple.com> Do not emit DW_AT_upper_bound and DW_AT_lower_bound for unbouded array.
If lower bound is more then upper bound then consider it is an unbounded array.
An array is unbounded if non-zero lower bound is same as upper bound.
If lower bound and upper bound are zero than array has one element.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129156 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4da0c7c0c9081107bea5f6bac440f0f1eb47748f 08-Apr-2011 Evan Cheng <evan.cheng@apple.com> Change -arm-trap-func= into a non-arm specific option. Now Intrinsic::trap is lowered into a call to the specified trap function at sdisel time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129152 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
2c44a80d991df258a45e2f5fa76d5ada9e99015c 08-Apr-2011 Nick Lewycky <nicholas@mxc.ca> llvm.global_[cd]tor is defined to be either external, or appending with an array
of { i32, void ()* }. Teach the verifier to verify that, deleting copies of
checks strewn about.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129128 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
54699765064842fd08d1466adc93453660bc2a85 07-Apr-2011 Andrew Trick <atrick@apple.com> Added a check in the preRA scheduler for potential interference on a
induction variable. The preRA scheduler is unaware of induction vars,
so we look for potential "virtual register cycles" instead.

Fixes <rdar://problem/8946719> Bad scheduling prevents coalescing


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129100 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
e815dab69f57da3f0ff365709491c7409cbb71bd 07-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Recompute hasPHIKill flags when shrinking live intervals.

PHI values may be deleted, causing the flags to be wrong. This fixes PR9616.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129092 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f34ae32a6bf06f0d80b0bcbbe56d5488781f4f3c 07-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid moving iterators when the previous block was just visited.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129081 91177308-0d34-0410-b5e6-96231b3b80d8
nterferenceCache.cpp
0bd2bd9ecc8abd3c3ed91a51aa8c51aaab401b5d 07-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Prefer multiplications to divisions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129080 91177308-0d34-0410-b5e6-96231b3b80d8
pillPlacement.cpp
7b41fbe87234f3ceef6ae11209730cbed4b69092 07-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract SpillPlacement::addLinks for handling the special transparent blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129079 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
pillPlacement.cpp
pillPlacement.h
1adb47cc11e708e6009007eeab58caf4310df30f 07-Apr-2011 Evan Cheng <evan.cheng@apple.com> Remove dead code. rdar://9221736.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129044 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
9a54352879e5aaac2e2c37490e5cb7844550db8b 06-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also account for the spill code that would be inserted in live-through blocks with interference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129030 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
1b400e840f58489c7950f815780cf08917cecaa8 06-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Abort the constraint calculation early when all positive bias is lost.

Without any positive bias, there is nothing for the spill placer to to. It will
spill everywhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129029 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
70d4370b47cdd375bbea98e50452789fe4f1af04 06-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep track of the number of positively biased nodes when adding constraints.

If there are no positive nodes, the algorithm can be aborted early.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129021 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
pillPlacement.cpp
pillPlacement.h
9efa2a263ea470caacef1c85f6ca45e32bf516d3 06-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Break the spill placement algorithm into three parts: prepare, addConstraints, and finish.

This will allow us to abort the algorithm early if it is determined to be futile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129020 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
pillPlacement.cpp
pillPlacement.h
49460bc49990ddfcf81e6f0670924f896645d9c7 06-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Oops. Scary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128986 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
db529a8a5d071610f3a8b467693bc40b073e68ef 06-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Analyze blocks with uses separately from live-through blocks without uses.

About 90% of the relevant blocks are live-through without uses, and the only
information required about them is their number. This saves memory and enables
later optimizations that need to look at only the use-blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128985 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
71d9e65ee71712b965c79739e63de94fbb8078ad 06-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Sign error

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128963 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
b3dd82670aa60cacba81f090d292722c3ef44354 06-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't crash when a value is defined after the last split point.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128962 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
3e22897fa9f07fc641b07d2e12101d21f84da668 06-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Permit blocks to branch directly to a landing pad.

Treat the landing pad as a normal successor when that happens.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128961 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
da19475328ece3da19437a2e9eef035dcafa2814 06-Apr-2011 Devang Patel <dpatel@apple.com> Add support to encode function's template parameters.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128947 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
cfafc54040cc9722995558124f253d05a038176b 05-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Run LiveDebugVariables in RegAllocBasic and RegAllocGreedy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128935 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
egAllocGreedy.cpp
b4c2bc25439bd4a226a85e1f3d8b420c07590622 05-Apr-2011 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128929 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
bdaa9dc4a45b8831c942437f726895eb24a956ba 05-Apr-2011 Bob Wilson <bob.wilson@apple.com> Add an assertion instead of crashing when the scavenger goes past the end
of a basic block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128925 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
3520019931c2bad615c35edcb943cd1e8582ebac 05-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> When dead code elimination removes all but one use, try to fold the single def into the remaining use.

Rematerialization can leave single-use loads behind that we might as well fold whenever possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128918 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
iveRangeEdit.h
e050f50443eff5449016d5bd24bd9401685a227c 05-Apr-2011 Devang Patel <dpatel@apple.com> Do not emit empty name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128914 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b793bc1ccabef36b3223bae69f5e94a8e98d22eb 05-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Ensure all defs referring to a virtual register are marked dead by addRegisterDead().

There can be multiple defs for a single virtual register when they are defining
sub-registers.

The missing <dead> flag was stopping the inline spiller from eliminating dead
code after rematerialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128888 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
84397472364ac3ce3b5dbcc1e6aa93e9a584c32f 05-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Print visibility info for external variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128887 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a2948ef5accab638371615f539ea9f9ec5ff5d03 05-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use std::unique instead of a SmallPtrSet to ensure unique instructions in UseSlots.

This allows us to always keep the smaller slot for an instruction which is what
we want when a register has early clobber defines.

Drop the UsingInstrs set and the UsingBlocks map. They are no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128886 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
612f7807c581eafb7c8105e1a55c8d839033bfb3 05-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop precomputing last split points, query the SplitAnalysis cache on demand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128875 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
1a7744501a80351ce31fcecad42c8e35823bc081 05-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Cache the fairly expensive last split point computation and provide a fast
inlined path for the common case.

Most basic blocks don't contain a call that may throw, so the last split point
os simply the first terminator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128874 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
f05b1dcf870346094f8aaee8e387c92d3e47e98d 05-Apr-2011 Bill Wendling <isanbard@gmail.com> Revamp the SjLj "dispatch setup" intrinsic.

It needed to be moved closer to the setjmp statement, because the code directly
after the setjmp needs to know about values that are on the stack. Also, the
'bitcast' of the function context was causing a dead load. This wouldn't be too
horrible, except that at -O0 it wasn't optimized out, and because it wasn't
using the correct base pointer (if there is a VLA), it would try to access a
value from a garbage address.
<rdar://problem/9130540>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128873 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
jLjEHPrepare.cpp
1809d5fa216bbdc505502468b7bd85629e1e44bc 05-Apr-2011 Stuart Hastings <stuart@apple.com> Revert 123704; it broke threaded LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128868 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4662a9f270fe2c916c35545718720ed181384c30 04-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow coalescing with reserved physregs in certain cases:

When a virtual register has a single value that is defined as a copy of a
reserved register, permit that copy to be joined. These virtual register are
usually copies of the stack pointer:

%vreg75<def> = COPY %ESP; GR32:%vreg75
MOV32mr %vreg75, 1, %noreg, 0, %noreg, %vreg74<kill>
MOV32mi %vreg75, 1, %noreg, 8, %noreg, 0
MOV32mi %vreg75<kill>, 1, %noreg, 4, %noreg, 0
CALLpcrel32 ...

Coalescing these virtual registers early decreases register pressure.
Previously, they were coalesced by RALinScan::attemptTrivialCoalescing after
register allocation was completed.

The lower register pressure causes the mcinst-lowering-cmp0.ll test case to fail
because it depends on linear scan spilling a particular register.

I am deleting 2008-08-05-SpillerBug.ll because it is counting the number of
instructions emitted, and its revision history shows the 'correct' count being
edited many times.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128845 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
0c1953d8cf02edfae896b0a983d345ad61b13b9f 04-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract physreg joining policy to a separate method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128844 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
6c8afd728eb02742ce320ecd39bcf3774d8423b7 04-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop caching basic block index ranges now that SlotIndexes can keep up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128821 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
5c4c4d4b82a658643c8daefd5cc76d5c712285ed 04-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete leftover data members.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128820 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.h
eda0fe8d58b0aaff5f18e7f13edfda3022384e70 02-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use InterferenceCache in RegAllocGreedy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128765 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
5907d863659eb972ebb2afe07bc863a4c616f0ef 02-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an InterferenceCache class for caching per-block interference ranges.

When the greedy register allocator is splitting multiple global live ranges, it
tends to look at the same interference data many times. The InterferenceCache
class caches queries for unaltered LiveIntervalUnions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128764 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
nterferenceCache.cpp
nterferenceCache.h
egAllocGreedy.cpp
a122eaaee22750c4f92c33672e149eb2f0c538cb 02-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use basic block numbers as indexes when mapping slot index ranges.

This is more compact and faster than using DenseMap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128763 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
ed3caf90866e183380a06c0ae49101204a9f3c28 02-Apr-2011 Cameron Zwarich <zwarich@apple.com> Add a RemoveFromWorklist method to DCI. This is needed to do some complicated
transformations in target-specific DAG combines without causing DAGCombiner to
delete the same node twice. If you know of a better way to avoid this (see my
next patch for an example), please let me know.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128758 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c249e4855883d7b799db61edc839cbfaff50ae81 01-Apr-2011 Evan Cheng <evan.cheng@apple.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128730 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8380c034b68d9d3768ee09b6fdc937696c93ee3d 01-Apr-2011 Evan Cheng <evan.cheng@apple.com> Assign node order numbers to results of call instruction lowering. This should improve src line debug info when sdisel is used. rdar://9199118

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128728 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8e23e815ad1136721acdfcce76975a37c8a2c036 01-Apr-2011 Evan Cheng <evan.cheng@apple.com> Issue libcalls __udivmod*i4 / __divmod*i4 for div / rem pairs.

rdar://8911343


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
842759662ba3eae35d6078643983a07266be9aa5 01-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> The basic register allocator must also use the inline spiller.

It is using a trivial rewriter that doesn't know how to insert spill code
requested by the standard spiller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128688 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
280ea1a7466751c6d27ff343072c65e59a950053 31-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't completely eliminate identity copies that also modify super register liveness.

Turn them into noop KILL instructions instead. This lets the scavenger know when
super-registers are killed and defined.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128645 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
02ae9f2f273d53fa5c5de4134ffd22ff2cedb115 31-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow kill flags on two-address instructions. They are harmless.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128643 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
8e53aca51a141c99209ced69c9a51f52f6a8370b 31-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Mark all uses as <undef> when joining a copy.

This way, shrinkToUses() will ignore the instruction that is about to be
deleted, and we avoid leaving invalid live ranges that SplitKit doesn't like.

Fix a misunderstanding in MachineVerifier about <def,undef> operands. The
<undef> flag is valid on def operands where it has the same meaning as <undef>
on a use operand. It only applies to sub-register defines which also read the
full register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128642 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
e62dfcf4b3fcf5397737713b222ab1655df10e03 31-Mar-2011 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128639 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
314a3ef502c67e9be7a67c9be7ea3ecffce8298b 31-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix bug found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128634 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
dc5198bac7e3f9b61617c8c46a1c28a84daa9325 31-Mar-2011 NAKAMURA Takumi <geek4civic@gmail.com> lib/CodeGen/LiveIntervalAnalysis.cpp: [PR9590] Don't use std::pow(float,float) here.

We don't expect the real "powf()" on some hosts (and powf() would be available on other hosts).
For consistency, std::pow(double,double) may be called instead.
Or, precision issue might attack us, to see unstable regalloc and stack coloring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128629 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
312babc93ff837d268b83ae829fdb122f40c34c8 31-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Pick a conservative register class when creating a small live range for remat.

The rematerialized instruction may require a more constrained register class
than the register being spilled. In the test case, the spilled register has been
inflated to the DPR register class, but we are rematerializing a load of the
ssub_0 sub-register which only exists for DPR_VFP2 registers.

The register class is reinflated after spilling, so the conservative choice is
only temporary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128610 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
efe65ce25c2f475ef7a9ea767660b029310e503a 30-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix evil VirtRegRewriter bug.

The rewriter can keep track of multiple stack slots in the same register if they
happen to have the same value. When an instruction modifies a stack slot by
defining a register that is mapped to a stack slot, other stack slots in that
register are no longer valid.

This is a very rare problem, and I don't have a simple test case. I get the
impression that VirtRegRewriter knows it is about to be deleted, inventing a
last opaque problem.

<rdar://problem/9204040>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128562 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
eb1c5dcb120faade429f859e0aa9f6fcda1755a0 30-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach VirtRegRewriter about the new virtual register numbers. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128561 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
3ecfc861b4365f341c5c969b40e1afccde676e6f 30-Mar-2011 Jay Foad <jay.foad@gmail.com> Remove PHINode::reserveOperandSpace(). Instead, add a parameter to
PHINode::Create() giving the (known or expected) number of operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128537 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
d8b4fb4aab4d6fedb2b14bed1b846451b17bde7c 30-Mar-2011 Jay Foad <jay.foad@gmail.com> (Almost) always call reserveOperandSpace() on newly created PHINodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128535 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
f22ca3fe5f0cfbb832cf41270f97cf5c0134fd7b 30-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Treat clones the same as their origin.

When DCE clones a live range because it separates into connected components,
make sure that the clones enter the same register allocator stage as the
register they were cloned from.

For instance, clones may be split even when they where created during spilling.
Other registers created during spilling are not candidates for splitting or even
(re-)spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128524 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
iveRangeEdit.h
egAllocGreedy.cpp
83d808329b81ad7589ddc516566169b0331c25d1 30-Mar-2011 Jim Grosbach <grosbach@apple.com> Tidy up. 80 columns and trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128504 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6094bd87d845afabba5b99ec4848fa6116bac682 29-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Recompute register class and hint for registers created during spilling.

The spill weight is not recomputed for an unspillable register - it stays infinite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128490 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
egAllocGreedy.cpp
plitKit.cpp
cf610d07de3ba4929bb5d00e084877dd974b44a1 29-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to use the correct register when rematerializing for snippets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128469 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
c1d22d8adbd40c3e5d704fdae90f9ed2089bb67e 29-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Run dead code elimination immediately after rematerialization.

This may eliminate some uses of the spilled registers, and we don't want to
insert reloads for that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128468 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
3f782f4d7586a4e644850ad4d05ef6a027aabc04 29-Mar-2011 Bill Wendling <isanbard@gmail.com> Inline check that's used only once.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128465 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
3c288b97879b975e75ae8eab69eee111f3bc3a43 29-Mar-2011 Bill Wendling <isanbard@gmail.com> Rework the logic (and removing the bad check for an unreachable block) so that
the FailBB dominator is correctly calculated. Believe it or not, there isn't a
functionality change here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128455 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
ad7d8a598b17452138c20f7a7acdcd7e1f0053d8 29-Mar-2011 Bill Wendling <isanbard@gmail.com> Don't try to add stack protector logic to a dead basic block. It messes up
dominator information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128452 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
c8ec765551119d5bdcfeebdaeb869242c098bdc5 29-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle the special case when all uses follow the last split point.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128450 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
2ef661b0e8de0d4186c5f9cc990adce0a2493b17 29-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly enable rematerialization when spilling after live range splitting.

The instruction to be rematerialized may not be the one defining the register
that is being spilled. The traceSiblingValue() function sees through sibling
copies to find the remat candidate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128449 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
2d930db24f1d44a9d68c90cb7a1a58e76abd40da 29-Mar-2011 Bill Wendling <isanbard@gmail.com> In some cases, the "fail BB dominator" may be null after the BB was split (and
becomes reachable when before it wasn't). Check to make sure that it's not null
before trying to use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128434 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
a7b8c2b6a416052bd7b48d3c0d702d266c6ac3a2 29-Mar-2011 Daniel Dunbar <daniel@zuster.org> Integrated-As: Add support for setting the AllowTemporaryLabels flag via
integrated-as.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128431 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ef1f5ccca7efaa18209523b31019d356d302f635 28-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Amend debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128398 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
eb29157d80847c207b77910bcd40a6a6c91ca5c5 28-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Drop interference reassignment in favor of eviction.

The reassignment phase was able to move interference with a higher spill weight,
but it didn't happen very often and it was fairly expensive.

The existing interference eviction picks up the slack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128397 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
e9c50732f71a6c2f6813f6c40743a9bfa3791ca8 26-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use individual register classes when spilling snippets.

The main register class may have been inflated by live range splitting, so that
register class is not necessarily valid for the snippet instructions.

Use the original register class for the stack slot interval.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128351 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.h
7d706ede7d7e5262bb22f75f1972f0eacbf7eab5 26-Mar-2011 Benjamin Kramer <benny.kra@googlemail.com> Turn SelectionDAGBuilder::GetRegistersForValue into a local function.

It couldn't be used outside of the file because SDISelAsmOperandInfo
is local to SelectionDAGBuilder.cpp. Making it a static function avoids
a weird linkage dance.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128342 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
adb877d62e5ac88db037d91bcd2e9f7dc2c4cd7a 26-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Collect and coalesce DBG_VALUE instructions before emitting the function.

Correctly terminate the range of register DBG_VALUEs when the register is
clobbered or when the basic block ends.

The code is now ready to deal with variables that are sometimes in a register
and sometimes on the stack. We just need to teach emitDebugLoc to say 'stack
slot'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128327 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
15a3ea0628d2e961cecd70b4e284149524aa3019 25-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Emit less labels for debug info and stop emitting .loc directives for DBG_VALUEs.

The .dot directives don't need labels, that is a leftover from when we created
line number info manually.

Instructions following a DBG_VALUE can share its label since the DBG_VALUE
doesn't produce any code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128284 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
336298cf2cc68d9af163992b9f9cafddd4bb3c8a 25-Mar-2011 Andrew Trick <atrick@apple.com> Fix for -pre-RA-sched=source.

Yet another case of unchecked NULL node (for physreg copy).
May fix PR9509.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128266 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d56acb36ab78bf8d0e5cad48bde1f3a74ef2b510 25-Mar-2011 Nick Lewycky <nicholas@mxc.ca> No functionality change. Fix up some whitespace and switch out "" for '' when
printing a single character.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128256 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
eb5067e0d9ca182f21db24949b63616ce4bb1eaf 25-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Ignore special ARM allocation hints for unexpected register classes.

Add an assertion to linear scan to prevent it from allocating registers outside
the register class.

<rdar://problem/9183021>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128254 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
23670e5b95fcaf88238239729457393b8cc831ff 24-Mar-2011 Devang Patel <dpatel@apple.com> Keep track of directory namd and fIx regression caused by Rafael's patch r119613.

A better approach would be to move source id handling inside MC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128233 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
b141099c14bfa86167b2137e8a9544c6ee805955 23-Mar-2011 Eli Friedman <eli.friedman@gmail.com> PR9535: add support for splitting and scalarizing vector ISD::FP_ROUND.

Also cleaning up some duplicated code while I'm here.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128176 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
bd47a4a307a54dab25956430442cf4ac103e4158 23-Mar-2011 Andrew Trick <atrick@apple.com> Ensure that def-side physreg copies are scheduled above any other uses
so the scheduler can't create new interferences on the copies
themselves. Prior to this fix the scheduler could get stuck in a loop
creating copies.
Fixes PR9509.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
0d93a110e31b384f59d91d6be27388d8ded5f03c 23-Mar-2011 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128163 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
01079311e153dae59a38aa0cdf5332eb3e410abf 23-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't coalesce identical DBG_VALUE instructions prematurely.

Each of these instructions may have a RegsClobberInsn entry that can't be
ignored. Consecutive ranges are coalesced later when DwarfDebug::emitDebugLoc
merges entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128155 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1e6c65dba706de80f5a4ceb8a1fc86bc3d0a61c6 23-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Notify the delegate before removing dead values from a live interval.

The register allocator needs to know when the range shrinks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128145 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
0b5015188e834afa7fb2fe3694a9c190f59fd19c 23-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow the allocation of empty live ranges that have uses.

Empty ranges may represent undef values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128144 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
bf824efcb92aa54d4a7ecc4afff9282c860a3f38 23-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Dump the register map before rewriting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128143 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
a2f45291e1a50a571a15bbf4da38a5f42a2424ef 23-Mar-2011 Andrew Trick <atrick@apple.com> Added block number and name to isel debug output.

I'm tired of doing this manually for each checkout.
If anyone knows a better way debug isel for non-trivial tests feel
free to revert and let me know how to do it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128132 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
28cf1156c93afabedc69fe7b73aa92ce85e323a5 22-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Reapply r128045 and r128051 with fixes.

This will extend the ranges of debug info variables in registers until they are
clobbered.

Fix 1: Don't mistake DBG_VALUE instructions referring to incoming arguments on
the stack with DBG_VALUE instructions referring to variables in the frame
pointer. This fixes the gdb test-suite failure.

Fix 2: Don't trace through copies to physical registers setting up call
arguments. These registers are call clobbered, and the source register is more
likely to be a callee-saved register that can be extended through the call
instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128114 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
iveDebugVariables.cpp
c1dbd5d9c30ea67ae45f190ff90e076cdf8bbc17 22-Mar-2011 Andrew Trick <atrick@apple.com> Revert r128045 and r128051, debug info enhancements.

Temporarily reverting these to see if we can get llvm-objdump to link. Hopefully this is not the problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128097 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
iveDebugVariables.cpp
bd17478f2f6dd3630c4e2fafaa71e2424e08c96e 22-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Clear map after use.

This is likely to fix the segfault in llvm-gcc-x86_64-darwin10-cross-mingw32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128051 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e17232ee4de2f608f0e5d965368c2bc54b6c1e83 22-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Dont emit 'DBG_VALUE %noreg, ...' to terminate user variable ranges.

These ranges get completely jumbled by the post-ra scheduler, and it is not
really reasonable to expect it to make sense of them.

Instead, teach DwarfDebug to notice when user variables in registers are
clobbered, and terminate the ranges there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128045 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
iveDebugVariables.cpp
28ed90b95db5f14b60b2cb532a62d407d4faf5e5 21-Mar-2011 Eric Christopher <echristo@apple.com> Grammar-o.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128004 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
a5c177e70a42f48e4885075c4c48aad0816a2817 21-Mar-2011 Bill Wendling <isanbard@gmail.com> We need to pass the TargetMachine object to the InstPrinter if we are printing
the alias of an InstAlias instead of the thing being aliased. Because we need to
know the features that are valid for an InstAlias.

This is part of a work-in-progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127986 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
2dc455a366e26d8c1085ef617651232304ee097e 20-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Process all dead defs after rematerializing during splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127973 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
682eed0da8e42770a0e694390ba929fd4d241657 20-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also eliminate redundant spills downstream of inserted reloads.

This can happen when multiple sibling registers are spilled after live range
splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127965 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
01a46c82e0b58f6c2d562282538556159806c4fe 20-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Change an argument to a LiveInterval instead of a register number to save some redundant lookups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127964 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
d2eff137ca94e7c21d90d327f13fcc5dd616fc15 20-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace a broken LiveInterval::MergeValueInAsValue() with something simpler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127960 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
c1655e1a3c3a566b91b0513b56d61b58da1e36ba 20-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127959 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocGreedy.cpp
9344f97108b9d5c8a5d7070d5393f107475aead0 19-Mar-2011 Evan Cheng <evan.cheng@apple.com> Minor code re-structuring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127952 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
06cc324b9da1dc8fb7360a560343c28f5e7a940a 19-Mar-2011 Nadav Rotem <nadav.rotem@intel.com> Add support for legalizing UINT_TO_FP of vectors on platforms which do
not have native support for this operation (such as X86).
The legalized code uses two vector INT_TO_FP operations and is faster
than scalarizing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127951 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
65c8bca78854712ab2bf135c2008ed455ef0c9b7 19-Mar-2011 Stuart Hastings <stuart@apple.com> Reapply 127939 since Daniel fixed the breakage. <rdar://problem/9012638>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127944 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
825dd969189357cf0e7084e015d938467b0136eb 19-Mar-2011 Stuart Hastings <stuart@apple.com> Revert 127939. <rdar://problem/9012638>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127943 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
7257897402fc61df3c494abad27397a100e5f32c 19-Mar-2011 Stuart Hastings <stuart@apple.com> Revise r126127 to address Daniel's comments. <rdar://problem/9012638>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127939 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
31649e61bcead26a63c7cd452da90fff5e000b91 18-Mar-2011 Jim Grosbach <grosbach@apple.com> Beginnings of MC-JIT code generation.

Proof-of-concept code that code-gens a module to an in-memory MachO object.
This will be hooked up to a run-time dynamic linker library (see: llvm-rtdyld
for similarly conceptual work for that part) which will take the compiled
object and link it together with the rest of the system, providing back to the
JIT a table of available symbols which will be used to respond to the
getPointerTo*() queries.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127916 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
1744e476ec3df0350a1163bf2c6439ea21aefbba 18-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extend live debug values down the dominator tree by following copies.

The llvm.dbg.value intrinsic refers to SSA values, not virtual registers, so we
should be able to extend the range of a value by tracking that value through
register copies. This greatly improves the debug value tracking for function
arguments that for some reason are copied to a second virtual register at the
end of the entry block.

We only extend the debug value range where its register is killed. All original
llvm.dbg.value locations are still respected.

Copies from physical registers are ignored. That should not be a problem since
the entry block already adds DBG_VALUE instructions for the virtual registers
holding the function arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127912 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
2a72bfa1b1a634ef6c5aa866cac1c0afda4534e4 18-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Hoist spills when the same value is known to be in less loopy sibling registers.

Stack slot real estate is virtually free compared to registers, so it is
advantageous to spill earlier even though the same value is now kept in both a
register and a stack slot.

Also eliminate redundant spills by extending the stack slot live range
underneath reloaded registers.

This can trigger a dead code elimination, removing copies and even reloads that
were only feeding spills.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127868 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
9ef931e71c06a0390d6387859843be1d6d4daad6 18-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Accept instructions that read undefined values.

This is not supposed to happen, but I have seen the x86 rematter getting
confused when rematerializing partial redefs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127857 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7cec179a647bff132d7af36d91df877056880c5e 18-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more accurate about the slot index reading a register when dealing with defs
and early clobbers.

Assert when trying to find an undefined value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127856 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
1c10b8de46ce8e39178eeded4786b1e53722f099 17-Mar-2011 Benjamin Kramer <benny.kra@googlemail.com> BuildUDIV: If the divisor is even we can simplify the fixup of the multiplied value by introducing an early shift.

This allows us to compile "unsigned foo(unsigned x) { return x/28; }" into
shrl $2, %edi
imulq $613566757, %rdi, %rax
shrq $32, %rax
ret

instead of
movl %edi, %eax
imulq $613566757, %rax, %rcx
shrq $32, %rcx
subl %ecx, %eax
shrl %eax
addl %ecx, %eax
shrl $4, %eax

on x86_64

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127829 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6a3dbd3b25bbc99bd1a233d6a74ddea3493ba6ac 17-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Dead code elimination may separate the live interval into multiple connected components.

I have convinced myself that it can only happen when a phi value dies. When it
happens, allocate new virtual registers for the components.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127827 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveIntervalAnalysis.cpp
iveRangeEdit.cpp
iveRangeEdit.h
plitKit.cpp
7bbf0ee97c77f7712154648a44ac6eeb57886462 17-Mar-2011 Cameron Zwarich <zwarich@apple.com> Move more logic into getTypeForExtArgOrReturn.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127809 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
44579680111b807613703ab401db3b8c0148e36c 17-Mar-2011 Cameron Zwarich <zwarich@apple.com> Rename getTypeForExtendedInteger() to getTypeForExtArgOrReturn().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
2254227791ea267426b9ac674fc6d87decb65bc1 17-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rewrite instructions as part of ConnectedVNInfoEqClasses::Distribute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127779 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
plitKit.cpp
plitKit.h
1d5b84508173b93faf513032b3847152e6060791 16-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a LiveRangeEdit delegate callback before shrinking a live range.

The register allocator needs to adjust its live interval unions when that happens.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127774 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
iveRangeEdit.h
egAllocGreedy.cpp
cc5c4296fda7270e8394626d7254596f5f9c8d82 16-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Erase virtual registers that are unused after DCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127773 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
2926733240d0766fbd45df6eb609ad2328f0307d 16-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Tag cached interference with a user-provided tag instead of the virtual register number.

The live range of a virtual register may change which invalidates the cached
interference information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127772 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
c46570dc05851395829bef904bb6ddb1260400d1 16-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Clarify debugging output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127771 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveRangeEdit.cpp
egAllocGreedy.cpp
ebe8173941238cfbabadb1c63bca7fb7dcf2adbe 16-Mar-2011 Cameron Zwarich <zwarich@apple.com> The x86-64 ABI says that a bool is only guaranteed to be sign-extended to a byte
rather than an int. Thankfully, this only causes LLVM to miss optimizations, not
generate incorrect code.

This just fixes the zext at the return. We still insert an i32 ZextAssert when
reading a function's arguments, but it is followed by a truncate and another i8
ZextAssert so it is not optimized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127766 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8df6bf5f5c8a55b089ef8b706bc0cc77ff16906c 16-Mar-2011 Cameron Zwarich <zwarich@apple.com> Don't recompute something that we already have in a local variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127764 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
83320a023c26aa8150761fc0694e7999941febb2 16-Mar-2011 Daniel Dunbar <daniel@zuster.org> Revert r127757, "Patch to a fix dwarf relocation problem on ARM. One-line fix
plus the test where it used to break.", which broke Clang self-host of a
Debug+Asserts compiler, on OS X.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127763 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2589d0aedf97f1f34246fe89b27270c9d998d19f 16-Mar-2011 Renato Golin <renato.golin@arm.com> Patch to a fix dwarf relocation problem on ARM. One-line fix plus the test where it used to break.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127757 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
13ba2527f73554fff39ca31250803b253076afba 15-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Trace back through sibling copies to hoist spills and find rematerializable defs.

After live range splitting, an original value may be available in multiple
registers. Tracing back through the registers containing the same value, find
the best place to insert a spill, determine if the value has already been
spilled, or discover a reaching def that may be rematerialized.

This is only the analysis part. The information is not used for anything yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127698 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
29ef87599c86b28db94d57705ab2901768253cad 15-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Preserve both isPHIDef and isDefByCopy bits when copying parent values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127697 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
d158fba3e45547f013bbab4c0ac640f31b5e341f 15-Mar-2011 Evan Cheng <evan.cheng@apple.com> Add a peephole optimization to optimize pairs of bitcasts. e.g.
v2 = bitcast v1
...
v3 = bitcast v2
...
= v3
=>
v2 = bitcast v1
...
= v1
if v1 and v3 are of in the same register class.

bitcast between i32 and fp (and others) are often not nops since they
are in different register classes. These bitcast instructions are often
left because they are in different basic blocks and cannot be
eliminated by dag combine.

rdar://9104514


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127668 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
bf34a5ec22389a852f25337eb767e5ad742e6142 15-Mar-2011 Evan Cheng <evan.cheng@apple.com> sext(undef) = 0, because the top bits will all be the same.
zext(undef) = 0, because the top bits will be zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127649 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
28cc1aa3a748068b6490a19fc4af2443bc7f3dbd 15-Mar-2011 Bill Wendling <isanbard@gmail.com> There are some situations which can cause the URoR hack to infinitely recurse
and then go kablooie. The problem was that it was tracking the PHI nodes anew
each time into this function. But it didn't need to. And because the recursion
didn't know that a PHINode was visited before, it would go ahead and call
itself.

There is a testcase, but unfortunately it's too big to add. This problem will go
away with the EH rewrite.
<rdar://problem/8856298>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127640 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
cf03e35d9009480a416b3546a4ee39093e69d506 14-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Place context in member variables instead of passing around pointers.

Use the opportunity to get rid of the trailing underscore variable names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127618 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
766faf4b2b7fe2835181777fb50d9f4d1814aba5 14-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename members to match LLVM naming conventions more closely.

Remove the unused reserved_ bit vector, no functional change intended.

This doesn't break 'svn blame', this file really is all my fault.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127607 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
34661e72fc0ae1a993db4cec953e999c61a7569c 14-Mar-2011 Evan Cheng <evan.cheng@apple.com> BIT_CONVERT has been renamed to BITCAST.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127600 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5ae1da96f2ac4a68543295f227398f8e93018eb0 14-Mar-2011 Evan Cheng <evan.cheng@apple.com> Minor optimization. sign-ext/anyext of undef is still undef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127598 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5522e8a936d8735f3366b33901e2d582bedd48dc 13-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Now that we are deleting unused live intervals during allocation, pointers may be reused.

Use the virtual register number as a cache tag instead. They are not reused.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127561 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
7792e980c43536814ea42448db9799b4da32fef6 13-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Tell the register allocator about new unused virtual registers.

This allows the allocator to free any resources used by the virtual register,
including physical register assignments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127560 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
egAllocGreedy.cpp
ba9934648f1b8f5b1749548963f385f1147c1f68 12-Mar-2011 Duncan Sands <baldrick@free.fr> Speculatively revert commit 127478 (jsjodin) in an attempt to fix the
llvm-gcc-i386-linux-selfhost and llvm-x86_64-linux-checks buildbots.
The original log entry:
Remove optimization emitting a reference insted of label difference, since
it can create more relocations. Removed isBaseAddressKnownZero method,
because it is no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127540 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
b1adbd1f67125668ef1a87be62553e0f95cbc4d9 12-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Include snippets in the live stack interval.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127530 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
10a433238fe4679c8da17f3eb19611466332e312 12-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Spill multiple registers at once.

Live range splitting can create a number of small live ranges containing only a
single real use. Spill these small live ranges along with the large range they
are connected to with copies. This enables memory operand folding and maximizes
the spill to fill distance.

Work in progress with known bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127529 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocBasic.cpp
55768d763d3d955c07d5819c3ef2e9d1ca6d2baf 12-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> That's it, I am declaring this a failure of the C++03 STL.

There are too many compatibility problems with using mixed types in
std::upper_bound, and I don't want to spend 110 lines of boilerplate setting up
a call to a 10-line function. Binary search is not /that/ hard to implement
correctly.

I tried terminating the binary search with a linear search, but that actually
made the algorithm slower against my expectation. Most live intervals have less
than 4 segments. The early test against endIndex() does pay, and this version is
25% faster than plain std::upper_bound().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127522 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
53aac15a607d66926e586c7fc57634f6be4ef443 11-Mar-2011 Cameron Zwarich <zwarich@apple.com> Fix the GCC test suite issue exposed by r127477, which was caused by stack
protector insertion not working correctly with unreachable code. Since that
revision was rolled out, this test doesn't actual fail before this fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127497 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
2ce5bf188dfa4329eb246df6011dd1edde5a5979 11-Mar-2011 Owen Anderson <resistor@mac.com> Teach FastISel to support register-immediate-immediate instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127496 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
e4f6d7461aea7308e85c219c1cea5bd6059d4841 11-Mar-2011 Jan Sjödin <jan_sjodin@yahoo.com> Remove optimization emitting a reference insted of label difference, since it can create more relocations. Removed isBaseAddressKnownZero method, because it is no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127478 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
778583ad2864949388a1cc645704f9ee76c9c0b9 11-Mar-2011 Andrew Trick <atrick@apple.com> Replace -dag-chain-limit flag with constant. It has survived a release cycle without being touched, so no longer needs to pollute the hidden-help text.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127468 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6fd2472b1b2d8f6a64b38874cbca95d3578e16a4 11-Mar-2011 John Wiegley <johnw@boostpro.com> Fix use of CompEnd predicate to be standards conforming

The existing CompEnd predicate does not define a strict weak order as required
by the C++03 standard; therefore, its use as a predicate to std::upper_bound
is invalid. For a discussion of this issue, see
http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#270

This patch replaces the asymmetrical comparison with an iterator adaptor that
achieves the same effect while being strictly standard-conforming by ensuring
an apples-to-apples comparison.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127462 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
9ef82ce4fe8e6f9f49c31abeebcc9672985afad4 11-Mar-2011 Evan Cheng <evan.cheng@apple.com> Avoid replacing the value of a directly stored load with the stored value if the load is indexed. rdar://9117613.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127440 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6a951ac63fd6a9aa769c6d98b544b886e5b5d307 10-Mar-2011 Cameron Zwarich <zwarich@apple.com> Add an option to disable critical edge splitting in PHIElimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127398 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
47dbf6cef761c25cfeb0aa7d624a6f98288bb96a 10-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Change the Spiller interface to take a LiveRangeEdit reference.

This makes it possible to register delegates and get callbacks when the spiller
edits live ranges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127389 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.h
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocLinearScan.cpp
piller.cpp
piller.h
38f6bd0fc8095ef79a89b3db15ff6dc734ac90e7 10-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Make SpillIs an optional pointer. Avoid creating a bunch of temporary SmallVectors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127388 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
nlineSpiller.cpp
iveIntervalAnalysis.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
piller.cpp
piller.h
b0519e15f70cef7ba16b712f258d4782ade17e13 10-Mar-2011 Evan Cheng <evan.cheng@apple.com> Re-commit 127368 and 127371. They are exonerated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
02d7c9298298f7f8fba1427f249deb2106126e9c 10-Mar-2011 Evan Cheng <evan.cheng@apple.com> Revert 127368 and 127371 for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127376 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
17adafc6c179f3bad757f932a13522851ee5171f 09-Mar-2011 Evan Cheng <evan.cheng@apple.com> Change the definition of TargetRegisterInfo::getCrossCopyRegClass to be more
flexible.

If it returns a register class that's different from the input, then that's the
register class used for cross-register class copies.
If it returns a register class that's the same as the input, then no cross-
register class copies are needed (normal copies would do).
If it returns null, then it's not at all possible to copy registers of the
specified register class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127368 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
5d96e5a1ccbdc4d64db4e15418392bb7c61e4d6f 09-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Make physreg coalescing independent on the number of uses of the virtual register.

The damage done by physreg coalescing only depends on the number of instructions
the extended physreg live range covers. This fixes PR9438.

The heuristic is still luck-based, and physreg coalescing really should be
disabled completely. We need a register allocator with better hinting support
before that is possible.

Convert a test to FileCheck and force spilling by inserting an extra call. The
previous spilling behavior was dependent on misguided physreg coalescing
decisions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127351 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
4bbf4678e341e9bf899c0faa3e3bcfe134db81eb 09-Mar-2011 Andrew Trick <atrick@apple.com> Improve pre-RA-sched register pressure tracking for duplicate operands.
This helps cases like 2008-07-19-movups-spills.ll, but doesn't have an obvious impact on benchmarks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127347 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
cc7665f5895e1dd9682ee21d1e755d0de28c161b 09-Mar-2011 Jush Lu <jush.msn@gmail.com> Update build scripts after merge r127116
ndroid.mk
smPrinter/Android.mk
d7cdc3e1f9df50be73e239c130dc92239c0e5d32 09-Mar-2011 Benjamin Kramer <benny.kra@googlemail.com> Fix typo, make helper static.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127335 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
8104163fd14a1a429800c97f82346614590de8c2 09-Mar-2011 Benjamin Kramer <benny.kra@googlemail.com> Remove unused virtual dtor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127331 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
b5530586d68bd25831a6796b5d3199cb0769a35c 09-Mar-2011 Jush Lu <jush.msn@gmail.com> Merge upstream r127116
ab2ee2ea7518b0539c6adcd158d52a45028271f4 09-Mar-2011 Matt Beaumont-Gay <matthewbg@google.com> Add a virtual dtor to Delegate to silence -Wnon-virtual-dtor

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127311 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.h
92a55f4bdd120cdd3bb5a004c792d4d24a940311 09-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a LiveRangeEdit::Delegate protocol.

This will we used for keeping register allocator data structures up to date
while LiveRangeEdit is trimming live intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127300 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
egAllocGreedy.cpp
f46aa914c8bd7995409ac7034e54c8b8c38c1888 09-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127295 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.h
5881799d0cccbd814ec1b0f0509df9be1f63c6cb 08-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete dead code after rematerializing.

LiveRangeEdit::eliminateDeadDefs() will eventually be used by coalescing,
splitting, and spilling for dead code elimination. It can delete chains of dead
instructions as long as there are no dependency loops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127287 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
iveRangeEdit.h
plitKit.cpp
plitKit.h
5bf76cd11913310cef04a21aef6db29897f32939 08-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix the build for MSVC 9 whose upper_bound() wants to compare elements in the sorted array.

Patch by Olaf Krzikalla!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127264 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
29449448b0f0420dfcf52e278fc01adbf1690d70 08-Mar-2011 Eric Christopher <echristo@apple.com> Fix some latent bugs if the nodes are unschedulable. We'd gotten away
with this before since none of the register tracking or nightly tests
had unschedulable nodes.

This should probably be refixed with a special default Node that just
returns some "don't touch me" values.

Fixes PR9427


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
3aefa7771d656fe9a0d6825dae35e28e60f0273f 08-Mar-2011 Oscar Fuentes <ofv@wanadoo.es> Revert "Make a comparator's argument `const'. This fixes the build for
MSVC 9."

The "fix" was meaningless.

This reverts commit r127245.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127260 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
f337fb2fa8be9100f469650f1e32e8474525672f 08-Mar-2011 Benjamin Kramer <benny.kra@googlemail.com> Reduce vector reallocations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127254 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
86e4eeb6c79baf1c4bc4569a1e6ffc0c8f4b52b9 08-Mar-2011 Oscar Fuentes <ofv@wanadoo.es> Make a comparator's argument `const'. This fixes the build for MSVC 9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127245 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
0bf56c821c454a960afc34cb5746006bc1f9e1a1 08-Mar-2011 Andrew Trick <atrick@apple.com> Further improvements to pre-RA-sched=list-ilp.
This change uses the MaxReorderWindow for both height and depth, which
tends to limit the negative effects of high register pressure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
0d8ccaa5c8db820b5b93f37e51563148c57ba6b8 08-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Let shrinkToUses optionally return a list of now dead machine instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127192 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1973b3e2541f95c87e4acb7e134362ff306ec9ed 07-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Make the UselessRegs argument optional in the LiveRangeEdit constructor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127181 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
egAllocGreedy.cpp
be2119e8e2bc7006cfd638a24367acbfda625d16 07-Mar-2011 Cameron Zwarich <zwarich@apple.com> Move getRegPressureLimit() from TargetLoweringInfo to TargetRegisterInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127175 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
electionDAG/ScheduleDAGRRList.cpp
a9d5c2715b5e8e0be613d8d31e76c35a5bfff07d 07-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle the special case of registers begin redefined by early-clobber defs.

In this case, the value need to be available at the load index instead of the
normal use index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127167 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6154f6c9292179fab6346ae8336f2ad790b52028 07-Mar-2011 Owen Anderson <resistor@mac.com> Use the correct LHS type when determining the legalization of a shift's RHS type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127163 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
b43034d700004e1fec3ddf177e21ac89478bcc6c 06-Mar-2011 Eric Christopher <echristo@apple.com> Typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127131 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
511cab20cb6ef0575c961cbbcb86bb539b538a1c 06-Mar-2011 NAKAMURA Takumi <geek4civic@gmail.com> lib/CodeGen/AsmPrinter/CMakeLists.txt: Fix CMake build, following up to r127099.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127114 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
3c6e49504e9a57a4818750fd2520967f84634eac 06-Mar-2011 Andrew Trick <atrick@apple.com> Disable a couple of experimental heuristics to get the best results from the current implementation of -pre-RA-sched=list-ilp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127113 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
b5e16af9ea04cc1f94ca631104e5e6be96546aa1 05-Mar-2011 Anton Korobeynikov <asl@math.spbu.ru> Some first rudimentary support for ARM EHABI: print exception table in "text mode".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127099 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMException.cpp
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.h
LVMTargetMachine.cpp
6dd97471c43805b3febf598d50498a09a02e93f4 05-Mar-2011 Anton Korobeynikov <asl@math.spbu.ru> Add FrameSetup MI flags

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127098 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
2b0f9e73d8623b21fc14335ef6208deab2629cdf 05-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Work around a coalescer bug.

The coalescer can in very rare cases leave too large live intervals around after
rematerializing cheap-as-a-move instructions.

Linear scan doesn't really care, but live range splitting gets very confused
when a live range is killed by a ghost instruction.

I will fix this properly in the coalescer after 2.9 branches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127096 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
afc7d235e91a769f74d87bbe745558ed1b692ff7 05-Mar-2011 Andrew Trick <atrick@apple.com> Be explicit with abs(). Visual Studio workaround.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127075 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
5e84e3ccaa555bd48ecca384e93e55abd76fb40a 05-Mar-2011 Andrew Trick <atrick@apple.com> Fix for -sched-high-latency-cycles in sched=list-ilp mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127071 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
ab2e3e2d7074207e2a4bb15e2913fa83795bb1ca 05-Mar-2011 Andrew Trick <atrick@apple.com> Missing comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127068 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
e0ef509aeb47b396cf1bdc170ca4f468f799719f 05-Mar-2011 Andrew Trick <atrick@apple.com> Increased the register pressure limit on x86_64 from 8 to 12
regs. This is the only change in this checkin that may affects the
default scheduler. With better register tracking and heuristics, it
doesn't make sense to artificially lower the register limit so much.

Added -sched-high-latency-cycles and X86InstrInfo::isHighLatencyDef to
give the scheduler a way to account for div and sqrt on targets that
don't have an itinerary. It is currently defaults to 10 (the actual
number doesn't matter much), but only takes effect on non-default
schedulers: list-hybrid and list-ilp.

Added several heuristics that can be individually disabled for the
non-default sched=list-ilp mode. This helps us determine how much
better we can do on a given benchmark than the default
scheduler. Certain compute intensive loops run much faster in this
mode with the right set of heuristics, and it doesn't seem to have
much negative impact elsewhere. Not all of the heuristics are needed,
but we still need to experiment to decide which should be disabled by
default for sched=list-ilp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127067 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
874be74179b087be36a6e7869f3aa8b70732aca1 05-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rework the global split cost calculation.

The global cost is the sum of block frequencies for spill code that must be
inserted because preferences weren't met.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127062 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
96dcd95a45968de6cb05864cf91aae33169cf179 05-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Compute the constraints for global live range splitting from an interference pattern.

This simplifies the code and makes it faster too.

The interference patterns are saved for each candidate register. It will be
reused for actually executing the split. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127054 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
27ea9999e84dfb1e6c2baf06ec27a92f12753917 05-Mar-2011 Jim Grosbach <grosbach@apple.com> Teach the register scavenger to take subregs into account when finding a free register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127049 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
0795abd0d44d3e299978c273f52c2dbf4924a6e9 04-Mar-2011 Eric Christopher <echristo@apple.com> Improve readability with some whitespace!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127043 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
8b6a933498299773243a6b4e05513d6dc11e4d32 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract a method. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127040 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
d17924b1bd0329acb8be2d7dfc5fc4434c24b832 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Go back to comparing spill weights when deciding if interference can be evicted.

It gives better results. Sometimes, a live range can be large and still have
high spill weight. Such a range should not be spilled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127036 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
979869c28e5bc68e2d4d546c7019525177f1d399 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Renumber slot indexes locally when possible.

Initially, slot indexes are quad-spaced. There is room for inserting up to 3
new instructions between the original instructions.

When we run out of indexes between two instructions, renumber locally using
double-spaced indexes. The original quad-spacing means that we catch up quickly,
and we only have to renumber a handful of instructions to get a monotonic
sequence. This is much faster than renumbering the whole function as we did
before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127023 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
f0cf2d357cf5540f21400e330028045e65e60835 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Number SlotIndexes uniformly without looking at the number of defs on each instruction.

You can't really predict how many indexes will be needed from the number of
defs, so let's keep it simple.

Also remove an extra empty index that was inserted after each basic block. It
was intended for live-out ranges, but it was never used that way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127014 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
10c5f2dad5e11e2502ebc0b9e9ea56e449f42d16 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SlotIndex statistics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127007 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
fb69810a2b617d888b6ea7c6a69fee7364fe233b 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Tweak debug output. No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127006 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
53dfa78e4133f6cdb5d860279adc337ea099ac15 04-Mar-2011 Duncan Sands <baldrick@free.fr> Revert commit 126684 "Use the correct shift amount type". It is only the correct
type after type legalization has completed. Before then it may simply not be big
enough to hold the shift amount, particularly on x86 which uses a very small type
for shifts (this issue broke stuff in the past which is why LegalizeTypes carefully
uses a large type for shift amounts).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127000 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
a0807f57caed954545661c23607c507f8d5c3d64 04-Mar-2011 Andrew Trick <atrick@apple.com> Minor pre-RA-sched fixes and cleanup.
Fix the PendingQueue, then disable it because it's not required for
the current schedulers' heuristics.
Fix the logic for the unused list-ilp scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126981 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
40a42a2ccaaa19a109667ed7abf224cc8733cd9c 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Precompute block frequencies, pow() isn't free.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126975 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
pillPlacement.cpp
pillPlacement.h
13ba2dab631636e525a44bb259aaea56a860d1c7 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use an IndexedMap instead of a DenseMap for the live-out cache.

This speeds up updateSSA() so it only accounts for 5% of the live range
splitting time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126972 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
e7147dba733c95aec215f5576539b07f11636ff3 04-Mar-2011 Bill Wendling <isanbard@gmail.com> There are times when the landing pad won't have a call to 'eh.selector' in
it. It's been assumed up til now that it would be in its immediate
successor. However, this isn't necessarily the case. It could be in one of its
successor's successors.

Modify the code to more thoroughly check for an 'eh.selector' call in
successors. It only looks at a successor if we get there as a result of an
unconditional branch.

Testcase ObjC/exceptions-4.m in r126968.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
81c5ef8649e12ac6083307bb149fd7006d9e0501 03-Mar-2011 Eli Friedman <eli.friedman@gmail.com> Revert r123908; the code in question is completely untested and wrong.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
bbd0f45b4711ee54f1c636a6de7afa766c855327 03-Mar-2011 Devang Patel <dpatel@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126962 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6f676be5ffdf80543e6e6b4d3c9c6b8b8e838fa5 03-Mar-2011 Devang Patel <dpatel@apple.com> Fix thinko in previous check-in.
Add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126959 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
cb3a65755e5161519355e5aad5107915be750597 03-Mar-2011 Devang Patel <dpatel@apple.com> llvm::Function argument count is not a good indicator of how many arugments does the function have at source level. If we need more space, just resize vector conservatively. This vector is only used once per function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126957 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0f657b156f3d0890584bedda7294932a20b2ea16 03-Mar-2011 Jim Grosbach <grosbach@apple.com> Allow a target to choose whether to prefer the scavenger emergency spill slot
be next to the frame pointer or the stack pointer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126956 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
2c11eb333c37edd5b15c1d05394861fdfc0eab90 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Renumber slot indexes uniformly instead of spacing according to the number of defs.

There are probably much larger speedups to be had by renumbering locally instead
of looping over the whole function. For now, the greedy register allocator is
25% faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126926 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
f37712f48642bcca04c77083c0579e7fe8d4d916 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Represent sentinel slot indexes with a null pointer.

This is much faster than using a pointer to a ManagedStatic object accessed with
a function call. The greedy register allocator is 5% faster overall just from
the SlotIndex default constructor savings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126925 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
a97ff8a027259b1b9e4dbdb5b6f01cc2195a6948 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid comparing invalid slot indexes, and assert that it doesn't happen.

The SlotIndex created by the default construction does not represent a position
in the function, and it doesn't make sense to compare it to other indexes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126924 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
b64f669b666098b8494660fbd08a18610be228d4 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid comparing invalid slot indexes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126922 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
36d61863bc83bd2301e0224adc560098b35ec0dc 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Cache basic block bounds instead of asking SlotIndexes::getMBBRange all the time.

This speeds up the greedy register allocator by 15%.
DenseMap is not as fast as one might hope.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126921 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
bece06f0c6936527e2b1c72d09f7d3a949af9a47 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Change the SplitEditor interface to a single instance can be shared for multiple splits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126912 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
8701768ae2e93e8741106acfa4a29959e1439487 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Only run the updateSSA loop when we have actually seen multiple values.

When only a single value has been seen, new PHIDefs are never needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126911 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
c29d9b3495a2d87af524ad5c4b62f46c4265d828 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PHI handling in LiveIntervals::shrinkToUses().

We need to wait until we meet a PHIDef in its defining block before resurrecting
PHIKills in the predecessors.

This should unbreak the llvm-gcc-build-x86_64-darwin10-x-mingw32-x-armeabi bot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126905 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
254c63e33678a64eaadfd658b79ed362c8572147 03-Mar-2011 Bob Wilson <bob.wilson@apple.com> Avoid exponential blow-up when printing DAGs.

David Greene changed CannotYetSelect() to print the full DAG including multiple
copies of operands reached through different paths in the DAG. Unfortunately
this blows up exponentially in some cases. The depth limit of 100 is way too
high to prevent this -- I'm seeing a message string of 150MB with a depth of
only 40 in one particularly bad case, even though the DAG has less than 200
nodes. Part of the problem is that the printing code is following chain
operands, so if you fail to select an operation with a chain, the printer will
follow all the chained operations back to the entry node.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126899 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a2cae58411b36a58f658f9402e8d039add31ae4d 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Turn the Edit member into a pointer so it can change dynamically.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126898 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
4670353a21fbc6e8159a129cda965f256e73a451 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Transfer simply defined values directly without recomputing liveness and SSA.

Values that map to a single new value in a new interval after splitting don't
need new PHIDefs, and if the parent value was never rematerialized the live
range will be the same.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126894 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.h
plitKit.cpp
plitKit.h
e2dc0c978e2435dbbb55cb7fca7750034c3e292a 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract a method. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126893 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
7e33418671728359325f51faf69a14f630ba7f91 02-Mar-2011 Stuart Hastings <stuart@apple.com> Can't introduce floating-point immediate constants after legalization.
Radar 9056407.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126864 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f7af396c9571e4efe944c5bf739bce667f99556a 02-Mar-2011 Cameron Zwarich <zwarich@apple.com> Fix some typos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126829 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
1c38ba6355a019b7fc3baa0d0ab31e8ba11f7db1 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move extendRange() into SplitEditor and delete the LiveRangeMap class.

Extract the updateSSA() method from the too long extendRange().

LiveOutCache can be shared among all the new intervals since there is at most
one of the new ranges live out from each basic block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126818 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
4b11a70f7a63dc4c051a96a90ed6687eb0595cda 02-Mar-2011 Nick Lewycky <nicholas@mxc.ca> Quiet a compiler warning about unused variable 'ExtVNI'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126815 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f06e6c2ba717429936908254d53fa579bc941388 02-Mar-2011 Evan Cheng <evan.cheng@apple.com> Catch more cases where 2-address pass should 3-addressify instructions. rdar://9002648.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126811 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
d3fdaeb69a25bcd21914b80f75606e2c2f1b35c8 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename mapValue to extendRange because that is its function now.

Simplify the signature - The return value and ParentVNI are no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126809 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
e0ab24532cc11f082d722ab169080322b39afece 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify LiveIntervals::shrinkToUses() a bit by using the new extendInBlock().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126806 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a4d347357ce04d9101130dca0df33cb62ea35a2f 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126805 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9763e2bf39b84f18bd464b0cda61fe1cd98dcaae 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move LiveIntervalMap::extendTo into LiveInterval itself.

This method could probably be used by LiveIntervalAnalysis::shrinkToUses, and
now it can use extendIntervalEndTo() which coalesces ranges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126803 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
plitKit.cpp
plitKit.h
edb87555e466e781087e18936f427816c952f3e7 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126801 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
670ccd18ae1ecec3b3c92885d5b64b21859001c4 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move the value map from LiveIntervalMap to SplitEditor.

The value map is currently not used, all values are 'complex mapped' and
LiveIntervalMap::mapValue is used to dig them out.

This is the first step in a series changes leading to the removal of
LiveIntervalMap. Its data structures can be shared among all the live intervals
created by a split, so it is wasteful to create a copy for each.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126800 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
3afab9c57e1afb0b7a4a9fe25a74117461bc0e69 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete dead code.

Local live range splitting is better driven by interference. This code was just
guessing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126799 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
1841d14eff2b30a28c8fe951e27da13ec63417e2 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Drop RAGreedy::trySpillInterferences().

This is a waste of time since we already know how to evict all interferences
which is a better approach anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126798 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
0478c15d1ecdbc53cf106419629479bcb2a0f4af 01-Mar-2011 Devang Patel <dpatel@apple.com> If argument numbering is encoded in metadata then emit arguments' debug info in that order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126794 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
22a1df6bf24c188dd637a0bb2cf9a2648806b6b1 01-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep track of which stage produced a live range, and bypass earlier stages when revisiting.

This effectively disables the 'turbo' functionality of the greedy register
allocator where all new live ranges created by splitting would be reconsidered
as if they were originals.

There are two reasons for doing this, 1. It guarantees that the algorithm
terminates. Early versions were prone to infinite looping in certain corner
cases. 2. It is a 2x speedup. We can skip a lot of unnecessary interference
checks that won't lead to good splitting anyway.

The problem is that region splitting only gets one shot, so it should probably
be changed to target multiple physical registers at once.

Local live range splitting is still 'turbo' enabled. It only accounts for a
small fraction of compile time, so it is probably not necessary to do anything
about that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126781 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
e80338af3f74089ab9fccd9bfb9fd12b8d555a55 01-Mar-2011 Duncan Sands <baldrick@free.fr> Add a few missed unary cases when legalizing vector results. Put some cases
in alphabetical order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126745 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
9d40193d79052fb4ddd0f667f0fe47f07922c72a 01-Mar-2011 Jim Grosbach <grosbach@apple.com> trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126733 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2d76c84514216f51526f2be123315f585995d860 01-Mar-2011 Jim Grosbach <grosbach@apple.com> Generalize the register matching code in DAGISel a bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126731 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
69732892087e70182d863cc72453be30f31b7793 28-Feb-2011 Owen Anderson <resistor@mac.com> Use the correct shift amount type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126684 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
c6d160bfa22fcb06c80c4c6cfc10ddbe7d8d28e4 28-Feb-2011 Owen Anderson <resistor@mac.com> Clean whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126683 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
00141694fa9fd846a051e335c3ec6ba335aca602 28-Feb-2011 Dan Gohman <gohman@apple.com> Delete the GEPSplitter experiment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126671 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
f222e595c0137b8a9571408257f7000c2fb95473 28-Feb-2011 Stuart Hastings <stuart@apple.com> Support for byval parameters on ARM. Will be enabled by a forthcoming
patch to the front-end. Radar 7662569.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126655 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
4671b174806e6c8577125a644aa85999598e4971 28-Feb-2011 jush <jush.msn@gmail.com> Update build script after merge.
ndroid.mk
4d03e416be8cf1f0f502118826b7cbaeec0b79b2 28-Feb-2011 jush <jush.msn@gmail.com> Merge LLVM upstream r119309 into honey
9c45251e1165a9ed8c351468ebb01b3859ea1df3 27-Feb-2011 Duncan Sands <baldrick@free.fr> Legalize support for fpextend of vector. PR9309.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
fcd96199f5999988226ee710e842df869720be21 27-Feb-2011 Nadav Rotem <nadav.rotem@intel.com> Fix typos in the comments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126565 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a91f86c49a63f7a37c662c3a9553055bff33a84b 27-Feb-2011 Tobias Grosser <grosser@fim.uni-passau.de> Pass the graph to the DOTGraphTraits.getEdgeAttributes().

This follows the interface of getNodeAttributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126562 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGPrinter.cpp
7466678003f38f985d5b2dffd0917643137b11cf 26-Feb-2011 Benjamin Kramer <benny.kra@googlemail.com> Add some DAGCombines for (adde 0, 0, glue), which are useful to optimize legalized code for large integer arithmetic.

1. Inform users of ADDEs with two 0 operands that it never sets carry
2. Fold other ADDs or ADDCs into the ADDE if possible

It would be neat if we could do the same thing for SETCC+ADD eventually, but we can't do that in target independent code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126557 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
08da6365df66abbada3246d01a3d8df869ea9aa3 25-Feb-2011 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126526 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
95771afbfd604ad003fa3723cac66c9370fed55d 25-Feb-2011 Owen Anderson <resistor@mac.com> Allow targets to specify a the type of the RHS of a shift parameterized on the type of the LHS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126518 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
f754f50805fee2bb4d461a9b41107122a22cd6f6 25-Feb-2011 Cameron Zwarich <zwarich@apple.com> Roll out r126425 and r126450 to see if it fixes the failures on the buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126488 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
3fc831779843bb4091f931b10ad0db1d97f82bd2 25-Feb-2011 Jim Grosbach <grosbach@apple.com> Fix formatting of debug helper string.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126471 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8fbbdca45c0eb2ef4a434cdef883f5c36516376c 25-Feb-2011 Cameron Zwarich <zwarich@apple.com> Set NumSignBits to 1 if KnownZero/KnownOne are being zero extended. In theory it
is possible to do better if the high bit is set in either KnownZero/KnownOne, but
in practice NumSignBits is always 1 when we are zero extending because nothing
is known about that register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
33b554795def5cd50f961721acbb33246226824b 25-Feb-2011 Cameron Zwarich <zwarich@apple.com> We only want to zero extend the existing information if the bit width is
actually larger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
57f1e2cee06f9b57995727d786aeb1031c5376bd 25-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Try harder to get the hint by preferring to evict hint interference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126463 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.h
egAllocGreedy.cpp
107d366df762c18294dc00f5de916f62672353ff 25-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Tweak the register allocator priority queue some more.

New live ranges are assigned in long -> short order, but live ranges that have
been evicted at least once are deferred and assigned in short -> long order.

Also disable splitting and spilling for live ranges seen for the first time.

The intention is to create a realistic interference pattern from the heavy live
ranges before starting splitting and spilling around it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126451 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
4e671437ed9ff171e83fb34a971388c29cbe2704 25-Feb-2011 Nick Lewycky <nicholas@mxc.ca> Remove dead variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126450 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
f410608271b6318bfc9e26c0d199f185d5a89ccb 24-Feb-2011 Devang Patel <dpatel@apple.com> Enable DebugInfo support for COFF object files.
Patch by Nathan Jeffords!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126425 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8c20ec54d98176d31f310e4684d1d7f2ea0639bc 24-Feb-2011 Nadav Rotem <nadav.rotem@intel.com> Enable support for vector sext and trunc:
Limit the folding of any_ext and sext into the load operation to scalars.
Limit the active-bits trunc optimization to scalars.
Document vector trunc and vector sext in LangRef.

Similar to commit 126080 (for enabling zext).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126424 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0412d5b40a3bde02580db6e3050ada0598205716 24-Feb-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix llvm-gcc bootstrap with gnu ld.
The problem was codegen guessing the wrong values and printing

.section .eh_frame,"aMS",@progbits,4

It is not clear at all if Codegen should try to guess, MC is the
one that should know the default flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126421 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
0eea95d1cdfb0da79defe45a3cf13debc1b4a6d7 24-Feb-2011 Devang Patel <dpatel@apple.com> Do not use DIFactory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126397 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8ca814c4e0a39e1fcac023f0fb014917da07a796 24-Feb-2011 Cameron Zwarich <zwarich@apple.com> Merge information about the number of zero, one, and sign bits of live-out
registers at phis. This enables us to eliminate a lot of pointless zexts during
the DAGCombine phase. This fixes <rdar://problem/8760114>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGISel.cpp
9b6af8de58140566a0e6567508bf906027422e7c 24-Feb-2011 Cameron Zwarich <zwarich@apple.com> Add a getNumSignBits() method to APInt.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126379 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
324a24f6aa5d6752c57c39e1e19f00b8c8a4ceec 24-Feb-2011 Cameron Zwarich <zwarich@apple.com> Add a mechanism for invalidating the LiveOutInfo of a PHI, and use it whenever
a block is visited before all of its predecessors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a46cd97818ac6fa336b093adecf2006fb041ca1c 24-Feb-2011 Cameron Zwarich <zwarich@apple.com> Track blocks visited in reverse postorder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126377 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGISel.cpp
e1497b979166765d97c91813a8e830a1ab8fbe12 24-Feb-2011 Cameron Zwarich <zwarich@apple.com> Refactor the LiveOutInfo interface into a few methods on FunctionLoweringInfo
and make the actual map private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126376 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
2dbe2850d019d3d25ec760f34de70ef6c9ac5747 24-Feb-2011 Cameron Zwarich <zwarich@apple.com> Have isel visit blocks in reverse postorder rather than an undefined order. This
allows for the information propagated across basic blocks to be merged at phis.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126375 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b2597268c215e2349905c81bfc22f69849b5ab18 24-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the same spill slot for all live ranges that descend form the same original
register.

This avoids some silly stack slot shuffling when both sides of a copy get
spilled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126353 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
3a4ae32ed7bf117a4fdc438fe0b297eec8e9b1ac 23-Feb-2011 Devang Patel <dpatel@apple.com> Use DW_FORM_data2 for DW_AT_language and let users use DW_LANG_lo_user=0x8000 to DW_LANG_hi_user=0xffff range.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126339 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c70f687dce99ea48ca779e6767006f6663781132 23-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> It is safe to ignore LastSplitPoint when the variable is not live out.

No code will be inserted after the split point anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126319 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
5129bdecd87c518713765acd6998c80f9eef36a2 23-Feb-2011 Stuart Hastings <stuart@apple.com> Omit private_extern declarations of extern symbols; followup to
r124468. Patch by Rafael Avila de Espindola!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126297 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d2a50734234a80893ad71da90d9f32032c47e000 23-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep track of how many times a live range has been dequeued, and prioritize new ranges.

When a large live range is evicted, it will usually be split when it comes
around again. By deferring evicted live ranges, the splitting happens at a time
when the interference pattern is more realistic. This prevents repeated
splitting and evictions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126282 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
417df0129146e299e9fd273becab824887c384e9 23-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a bug in determining if there is only a single interfering register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126277 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
98c8141b6d8fcbb9bd258ebcdd4171f55c5a8e9d 23-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more aggressive about evicting interference.

Use interval sizes instead of spill weights to determine if it is legal to evict
interference. A smaller interval can evict interference if all interfering live
ranges are larger.

Allow multiple interferences to be evicted as along as they are all larger than
the live range being allocated.

Spill weights are still used to select the preferred eviction candidate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126276 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
98d9648de7d571b2e6d139b65961a70d1833b0d7 23-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Change the RAGreedy register assignment order so large live ranges are allocated first.

This is based on the observation that long live ranges are more difficult to
allocate, so there is a better chance of solving the puzzle by handling the big
pieces first. The allocator will evict and split long alive ranges when they get
in the way.

RABasic is still using spill weights for its priority queue, so the interface to
the queue has been virtualized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126259 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
75b5409d3a9eb9b7dadcd13fff69590df94122dd 23-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> 80 Col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126258 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
5567869637383969dced0b84dbd19da12682df6b 22-Feb-2011 Cameron Zwarich <zwarich@apple.com> MachineConstantPoolValues are not uniqued, so they need to be freed if they
share entries. Add a DenseSet to MachineConstantPool for the MachineCPVs that
it owns.

This will hopefully fix the MC/ARM/elf-reloc-01.ll failure on the leaks bots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126218 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
fcfcdbc86a56ea97cdb87fe662311df778e85fbb 22-Feb-2011 Andrew Trick <atrick@apple.com> VirtRegRewriter assertion fix.
Apparently it's ok for multiple operands to "kill" the same register.
Fixes PR9237.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126190 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
4ecc82e592745d6995db83ea158b3c15011a84f8 22-Feb-2011 Cameron Zwarich <zwarich@apple.com> Roll out r126169 and r126170 in an attempt to fix the selfhost bot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126185 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
92efda7e9183ae16bde7a3ad96b682e779d89cf3 22-Feb-2011 Cameron Zwarich <zwarich@apple.com> Merge information about the number of zero, one, and sign bits of live-out registers
at phis. This enables us to eliminate a lot of pointless zexts during the DAGCombine
phase. This fixes <rdar://problem/8760114>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126170 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
63a8dae64dea89ae4a6f93ee17cf3fbbc2815084 22-Feb-2011 Cameron Zwarich <zwarich@apple.com> Have isel visit blocks in reverse postorder rather than an undefined order. This
allows for the information propagated across basic blocks to be merged at phis.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f8597eb0d94c66c8b4f3dc3b1ccf175417707776 22-Feb-2011 Eric Christopher <echristo@apple.com> Revert r125960, it's breaking darwin10 bootstrap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126163 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
cf13af6fdee302c2cc8628ae95b40b2bccfdde4b 22-Feb-2011 Evan Cheng <evan.cheng@apple.com> Add more debugging output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126158 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
68e6beeccc0b9ac2e8d3687a8a5b7d4b172edca1 22-Feb-2011 Devang Patel <dpatel@apple.com> Revert r124611 - "Keep track of incoming argument's location while emitting LiveIns."
In other words, do not keep track of argument's location. The debugger (gdb) is not prepared to see line table entries for arguments. For the debugger, "second" line table entry marks beginning of function body.
This requires some coordination with debugger to get this working.
- The debugger needs to be aware of prolog_end attribute attached with line table entries.
- The compiler needs to accurately mark prolog_end in line table entries (at -O0 and at -O1+)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126155 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineRegisterInfo.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
06c0f25499fd502668ca720b0fea4a4dfe6eb44a 22-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SplitKit::isOriginalEndpoint and use it to force live range splitting to terminate.

An original endpoint is an instruction that killed or defined the original live
range before any live ranges were split.

When splitting global live ranges, avoid creating local live ranges without any
original endpoints. We may still create global live ranges without original
endpoints, but such a range won't be split again, and live range splitting still
terminates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126151 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
6ad82d81cc3061a000799ad8751f018c1301906b 21-Feb-2011 Stuart Hastings <stuart@apple.com> Fix to correctly support attribute((section("__DATA, __common"))).
Radar 9012638.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126127 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
ed9b934f65d82324506f03e2db2834682c7a8914 20-Feb-2011 Nadav Rotem <nadav.rotem@intel.com> Fix 9267; Add vector zext support.

The DAGCombiner folds the zext into complex load instructions. This patch
prevents this optimization on vectors since none of the supported targets
knows how to perform load+vector_zext in one instruction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126080 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5bc9fec7ec6db25247dbcc2d463209a22f7da6f0 19-Feb-2011 Devang Patel <dpatel@apple.com> Do not emit empty DW_TAG_lexical_block DIEs. In one test case, size of debug info reduced by almost 7%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126009 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1b847deb26b52051de39f4cbecd224c9fbd0d1c2 19-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Give SplitAnalysis a VRM member to access VirtRegMap::getOriginal().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126005 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
0eeca440469e23f2db2bea3d7b136f0f95f6ff1d 19-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Missed member rename for naming convention.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126003 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
fd38917d4d040759d75e9d1f4e2c885fb40ba2d7 19-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> This method belonged in VirtRegMap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126002 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
iveRangeEdit.h
irtRegMap.h
a2ebf60ef2c434428af7f810b13327ab50245a67 19-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Separate timers for local and global splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126001 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
a778f5c798fc78ca15f813c362cdcdcc1eb86266 18-Feb-2011 Devang Patel <dpatel@apple.com> Do not lose debug info of an inlined function argument even if the argument is only used through GEPs.
This time with a fix that avoids using invalidated DenseMap iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125984 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SDNodeDbgValue.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
e324f6e05ff7a157347edb48203db0250805f748 18-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use VirtRegMap's Virt2SplitMap to keep track of the original live range before splitting.

All new virtual registers created for spilling or splitting point back to their original.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125980 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
iveRangeEdit.h
irtRegMap.h
6d857ca4d71548f5cdb57b106cc1a12fc2c93e9d 18-Feb-2011 Oscar Fuentes <ofv@wanadoo.es> Move library stuff out of the toplevel CMakeLists.txt file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125968 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
ba05c01dabc40373760a20c874103fc58d4377f0 18-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add VirtRegMap::rewrite() and use it in the new register allocators.

The rewriter works almost identically to -rewriter=trivial, except it also
eliminates any identity copies.

This makes the new register allocators independent of VirtRegRewriter.cpp which
will be going away at the same time as RegAllocLinearScan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125967 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
egAllocGreedy.cpp
irtRegMap.cpp
irtRegMap.h
5028249fab0e0a5a2f033dd5ff2d4d396d758de1 18-Feb-2011 Bill Wendling <isanbard@gmail.com> Reapply r114997 now that the buildbots have been updated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125960 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
1646953538d5faf7baf49e16bd0590f822c231de 18-Feb-2011 Cameron Zwarich <zwarich@apple.com> Roll out r125794 to help diagnose the llvm-gcc-i386-linux-selfhost failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125830 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SDNodeDbgValue.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
febb0bd0b9b75923dea4c34f22be7e4c7b6b501e 18-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Trim debugging output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125802 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
pillPlacement.cpp
a4defc00ebf30f136ea96084b6a10c57441de6e7 18-Feb-2011 Devang Patel <dpatel@apple.com> Do not lose debug info of an inlined function argument even if the argument is only used through GEPs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125794 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SDNodeDbgValue.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
0db841f9c2b9a25fb5ecb36e350d3a802c35654c 17-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add basic register allocator statistics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125789 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
egAllocGreedy.cpp
034a80d065358b412cdd270e08fb6f1986e65e50 17-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Split local live ranges.

A local live range is live in a single basic block. If such a range fails to
allocate, try to find a sub-range that would get a larger spill weight than its
interference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125764 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.h
fbd53f79f5d475d103fba9303a4aa7e88567dd1a 17-Feb-2011 Duncan Sands <baldrick@free.fr> Fix wrong logic in promotion of signed mul-with-overflow (I pointed this out at
the time but presumably my email got lost). Examples where the previous logic
got it wrong: (1) a signed i8 multiply of 64 by 2 overflows, but the high part is
zero; (2) a signed i8 multiple of -128 by 2 overflows, but the high part is all
ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125748 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
2598b1f4ac3d8242bb3821414f86e388b24c6046 17-Feb-2011 Cameron Zwarich <zwarich@apple.com> Switch to SmallVector in SimpleRegisterCoalescing for a 3.5% speedup on 403.gcc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125728 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
61a733434d9ee6518b8ddb116594bef7206cb627 17-Feb-2011 Cameron Zwarich <zwarich@apple.com> Adjust indenting of arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125727 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
688521ca6f936cb51549b0d505aa89746561263b 17-Feb-2011 Cameron Zwarich <zwarich@apple.com> Return Changed from SplitPHIEdges rather than always returning true.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125726 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
a901129169194881a78b7fd8953e09f55b846d10 16-Feb-2011 Stuart Hastings <stuart@apple.com> Swap VT and DebugLoc operands of getExtLoad() for consistency with
other getNode() methods. Radar 9002173.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125665 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
7bccf6abdc5de989cdb3872369480825ebc9c3a9 16-Feb-2011 Eric Christopher <echristo@apple.com> Refactor zero folding slightly. Clean up todo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125651 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
169e1552e748348b033fb6817df4bffc345e5583 16-Feb-2011 Eric Christopher <echristo@apple.com> The change for PR9190 wasn't quite right. We need to avoid making the
transformation if we can't legally create a build vector of the correct
type. Check that we can make the transformation first, and add a TODO to
refactor this code with similar cases.

Fixes: PR9223 and rdar://9000350


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125631 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e32effb02f28025bcbb1eb6b673f46f8d072627b 16-Feb-2011 Evan Cheng <evan.cheng@apple.com> Remove a duplicated check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125625 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
d3526eab46b96509d3195cf3367811af67b6d2c7 15-Feb-2011 Devang Patel <dpatel@apple.com> Ignore DBG_VALUE machine instructions while constructing instruction ranges based on location info.
Machine instruction range consisting of only DBG_VALUE MIs only contributes consecutive labels in assembly output, which is harmless, and empty scope entry in DebugInfo, which confuses debugger tools.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125577 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ab4c366274a582dd8146b2820c6b999cad5fce36 15-Feb-2011 Duncan Sands <baldrick@free.fr> Spelling fix: consequtive -> consecutive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125563 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
326d976eb2b03d1f2b7537d7b90dff264fd84378 15-Feb-2011 Evan Cheng <evan.cheng@apple.com> Fix thinko. Cmp can be the first instruction in a MBB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125552 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
2ca5c8644e6c35b3a7910a576ed89cddb7b82c3b 15-Feb-2011 Chris Lattner <sabre@nondot.org> convert ConstantVector::get to use ArrayRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125537 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
eb9f040f0d07e2fa9b3b5ef46d5ee32511d28811 15-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move more fragments of spill weight calculation into CalcSpillWeights.h

Simplify the spill weight calculation a bit by bypassing
getApproximateInstructionCount() and using LiveInterval::getSize() directly.
This changes the computed spill weights, but only by a constant factor in each
function. It should not affect how spill weights compare against each other, and
so it shouldn't affect code generation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125530 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveIntervalAnalysis.cpp
5d618ef7f1ad005fc6912f3e9a08c044b082e47f 14-Feb-2011 Rafael Espindola <rafael.espindola@gmail.com> Switch llvm to using comdats. For now always use groups with a single
section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125526 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
cf75ab597514effb6f8e915f05d74f45debb89ec 14-Feb-2011 Evan Cheng <evan.cheng@apple.com> Fix PR8854. Track inserted copies to avoid read before write. Sorry, it's hard to reduce a sensible small test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125523 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
75831904220042260c4faece8507a2807acba47f 14-Feb-2011 Chris Lattner <sabre@nondot.org> revert my ConstantVector patch, it seems to have made the llvm-gcc
builders unhappy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125504 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9de3a0701a06505aeab824fdc88f361a5018e473 14-Feb-2011 Rafael Espindola <rafael.espindola@gmail.com> Move broken HasCommonSymbols to ELFWriter.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125490 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
283c8caccd093f8e1d4f0bdd01ac240b4edbd20a 14-Feb-2011 Chris Lattner <sabre@nondot.org> Switch ConstantVector::get to use ArrayRef instead of a pointer+size
idiom. Change various clients to simplify their code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125487 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
593051b4e2c5fb88fa4acbe3bec92581bef554c0 14-Feb-2011 Chris Lattner <sabre@nondot.org> fix PR9210 by implementing some type legalization logic for
vector fp conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
463b3c2a9974acf7586d1e6a4416aa7cc004ff0e 14-Feb-2011 Chris Lattner <sabre@nondot.org> fix two comment thinkos


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125481 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1a73cedca0a83d64149ee03577991a196338a9c5 14-Feb-2011 Cameron Zwarich <zwarich@apple.com> Add some statistics to StrongPHIElimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125477 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
117be03cc6cfb91d385938ed94a3cf877bd8c12a 14-Feb-2011 Cameron Zwarich <zwarich@apple.com> Add a statistic to PHIElimination tracking the number of critical edges split.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125476 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
0a9481f44fe4fc76e59109992940a76b2a3f9b3b 13-Feb-2011 Chris Lattner <sabre@nondot.org> Enhance ComputeMaskedBits to know that aligned frameindexes
have their low bits set to zero. This allows us to optimize
out explicit stack alignment code like in stack-align.ll:test4 when
it is redundant.

Doing this causes the code generator to start turning FI+cst into
FI|cst all over the place, which is general goodness (that is the
canonical form) except that various pieces of the code generator
don't handle OR aggressively. Fix this by introducing a new
SelectionDAG::isBaseWithConstantOffset predicate, and using it
in places that are looking for ADD(X,CST). The ARM backend in
particular was missing a lot of addressing mode folding opportunities
around OR.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125470 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
e075118489baf15a7cea2e7f155b4799b93d6d02 13-Feb-2011 Chris Lattner <sabre@nondot.org> Revisit my fix for PR9028: the issue is that DAGCombine was
generating i8 shift amounts for things like i1024 types. Add
an assert in getNode to prevent this from occuring in the future,
fix the buggy transformation, revert my previous patch, and
document this gotcha in ISDOpcodes.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
915eeb488786379250808d47668c43e010efe566 13-Feb-2011 Chris Lattner <sabre@nondot.org> when legalizing extremely wide shifts, make sure that
the shift amounts are in a suitably wide type so that
we don't generate out of range constant shift amounts.

This fixes PR9028.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125458 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAGBuilder.cpp
d3027738856d57ee22930deca0c7977fdc13e633 13-Feb-2011 Chris Lattner <sabre@nondot.org> fix visitShift to properly zero extend the shift amount if the provided operand
is narrower than the shift register. Doing an anyext provides undefined bits in
the top part of the register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125457 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
609d54ee1e715af57e499c2cd10ff5a9ba89b9f2 12-Feb-2011 Nadav Rotem <nadav.rotem@intel.com> A fix for 9165.

The DAGCombiner created illegal BUILD_VECTOR operations.
The patch added a check that either illegal operations are
allowed or that the created operation is legal.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125435 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f94fdb6f571c2cdf8390ead558ba40b267df1172 11-Feb-2011 Nadav Rotem <nadav.rotem@intel.com> SimplifySelectOps can only handle selects with a scalar condition. Add a check
that the condition is not a vector.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5a4552ca4256461f402f9d7d2511e77c79316907 11-Feb-2011 Nadav Rotem <nadav.rotem@intel.com> Fix #9190

The bug happens when the DAGCombiner attempts to optimize one of the patterns
of the SUB opcode. It tries to create a zero of type v2i64. This type is legal
on 32bit machines, but the initializer of this vector (i64) is target dependent.
Currently, the initializer attempts to create an i64 zero constant, which fails.
Added a flag to tell the DAGCombiner to create a legal zero, if we require that
the pass would generate legal types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125391 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4d96c638af0458f4de637998da942a5e166d6ea5 10-Feb-2011 Evan Cheng <evan.cheng@apple.com> After 3-addressifying a two-address instruction, update the register maps; add a missing check when considering whether it's profitable to commute. rdar://8977508.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125259 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4f5c9d206139f946ae4bb5ee7e3ddb1714057cdb 10-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete unused code for analyzing and splitting around loops.

Loop splitting is better handled by the more generic global region splitting
based on the edge bundle graph.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125243 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
23cd57c29926189ad9d7b2b208024645870884ad 10-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify using the new leaveIntvBefore()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125238 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
9b057771ba22441b8d312404204433477b4be657 10-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the LiveBLocks array for SplitEditor::splitSingleBlocks() as well.

This fixes a bug where splitSingleBlocks() could split a live range after a
terminator instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125237 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
35edc42f9830af1a6ebf215d7635b04547e8e624 09-Feb-2011 Mikhail Glushenkov <foldr@codedgers.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125232 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.h
f0ac26c51173a9a1d6e5b5794107dccc4c5b5792 09-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move calcLiveBlockInfo() and the BlockInfo struct into SplitAnalysis.

No functional changes intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125231 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
a372d16f92392bb4cd4184783466f0300a51a9ae 09-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Ignore <undef> uses when analyzing and rewriting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125226 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
e5005d0062fa4c8f5707428f7b8ad8484a002d83 09-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Assert on bad jump tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125225 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4f6364fd3f2af74330b1bc4e545173af074707a5 09-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add tags to live interval unions to avoid using stale queries.

The tag is updated whenever the live interval union is changed, and it is tested
before using cached information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125224 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
2710638db2eb84cd7eefb8bb9a1b7e5c49413d45 09-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Evict a lighter single interference before attempting to split a live range.

Registers are not allocated strictly in spill weight order when live range
splitting and spilling has created new shorter intervals with higher spill
weights.

When one of the new heavy intervals conflicts with a single lighter interval,
simply evict the old interval instead of trying to split the heavy one.

The lighter interval is a better candidate for splitting, it has a smaller use
density.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125151 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
c3dca3f9d4a049102fa985aedbc65e53f4cf6c0d 09-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Set an allocation hint when rematting before a COPY.

This almost guarantees that the COPY will be coalesced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125140 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
8a2bbdeee24b40da6187199658646d04329c139e 09-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix one more case of splitting after the last split point.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125137 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
a50c539b7a9e74597da34bfaea5429a48481f18b 09-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Reorganize interference code to check LastSplitPoint first.

The last split point can be anywhere in the block, so it interferes with the
strictly monotonic requirements of advanceTo().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125132 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
d08d77318a095c5f85c077899caa3594a7767113 08-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also handle the situation where an indirect branch is the first (and last)
instruction in a basic block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125116 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
8a61da8a689ee95874c833af4c7aa965fab5c0a9 08-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add LiveIntervals::addKillFlags() to recompute kill flags after register allocation.

This is a lot easier than trying to get kill flags right during live range
splitting and rematerialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125113 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocGreedy.cpp
124e423ccec42e54a8b069e1c2ef9adfaa1e553a 08-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Trim debug spew

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125109 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
7b1f498a7648b790929a4f97fd82228aa7ac7bea 08-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid folding a load instruction into an instruction that redefines the register.

The target hook doesn't know how to do that. (Neither do I).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125108 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
5c716bdccce2fa504e1aa0b67226165d181d2459 08-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SplitEditor::overlapIntv() to create small ranges where both registers are live.

If a live range is used by a terminator instruction, and that live range needs
to leave the block on the stack or in a different register, it can be necessary
to have both sides of the split live at the terminator instruction.

Example:

%vreg2 = COPY %vreg1
JMP %vreg1

Becomes after spilling %vreg2:

SPILL %vreg1
JMP %vreg1

The spill doesn't kill the register as is normally the case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125102 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
01cb34b0111a1e8792f327b56c51bc3bbaf83aca 08-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125101 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
bc4bd92d52be2f6707a8c311873ded27a8f2481f 08-Feb-2011 Andrew Trick <atrick@apple.com> Fix PostRA antidependence breaker.

Avoid using the same register for two def operands or and earlyclobber
def and use operand. This fixes PR8986 and improves on the prior fix
for rdar://problem/8959122.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125089 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
11513e5d1e1b40e6113668e4b4357596f33fa6c6 08-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add LiveIntervals::shrinkToUses().

After uses of a live range are removed, recompute the live range to only cover
the remaining uses. This is necessary after rematerializing the value before
some (but not all) uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125058 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
480d1e3a67751c9c809e9ce047ad7e4b23bab9f1 07-Feb-2011 Devang Patel <dpatel@apple.com> Remove comment about an argument that was removed couple of years ago.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125054 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
278ba1f9b6c14ddf79040979c88b978d41f8c036 05-Feb-2011 Andrew Trick <atrick@apple.com> Fix an anti-dep breaker corner case.
<rdar://problem/8959122> illegal register operands for UMULL instruction in cfrac nightly test
I'm stil working on a unit test, but the case is:
rx = movcc rx, r3
r2 = ldr
r2, r3 = umull r2, r2

The anti-dep breaker should not convert this into an illegal instruction:
r2, r2 = umull


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124932 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
fe3f99f95c7c9ceaac3ceebbea31e40cfbc157e3 05-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more strict about the first/last interference-free use.

If the interference overlaps the instruction, we cannot separate it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124918 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
de71095a1a930eee81696d5770cdce46d3e19a61 05-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add assertions to verify that the new interval is clear of the interference.

If these inequalities don't hold, we are creating a live range split that won't
allocate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124917 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
45e53975f81164d6e5e6322e83dd19030b7d3c88 05-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Apparently, it is possible for a block with a landing pad successor to have no calls.

In that case we simply ignore the landing pad and split live ranges before the
first terminator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124907 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6c3ea9012e40a95d45592a15c63895d09ece5052 04-Feb-2011 Devang Patel <dpatel@apple.com> Merge .debug_loc entries whenever possible to reduce debug_loc size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124904 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c57ef561423f1ac7f2db5b1840d5681f18a4c0c8 04-Feb-2011 Nick Lewycky <nicholas@mxc.ca> Mark that the return is using EAX so that we don't use it for some other
purpose. Fixes PR9080!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124903 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
63935420ef1c323b9d9276eadc0ab74ee86a25b5 04-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more accurate about live range splitting at the end of blocks.

If interference reaches the last split point, it is effectively live out and
should be marked as 'MustSpill'.

This can make a difference when the terminator uses a register. There is no way
that register can be reused in the outgoing CFG bundle, even if it isn't live
out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124900 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
cb6404711b7fe6f583480adce8d7e9d5e4b99ae6 04-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add LiveIntervals::getLastSplitPoint().

A live range cannot be split everywhere in a basic block. A split must go before
the first terminator, and if the variable is live into a landing pad, the split
must happen before the call that can throw.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124894 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
plitKit.cpp
9b3d24bf3d4663bfaf98eb97a94081e07a3f62da 04-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that one of the ranges produced by region splitting is allocatable.

We should not be attempting a region split if it won't lead to at least one
directly allocatable interval. That could cause infinite splitting loops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124893 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
92e946630d5f9bb092853b93501387dd216899b9 04-Feb-2011 Andrew Trick <atrick@apple.com> Introducing a new method of tracking register pressure. We can't
precisely track pressure on a selection DAG, but we can at least keep
it balanced. This design accounts for various interesting aspects of
selection DAGS: register and subregister copies, glued nodes, dead
nodes, unused registers, etc.

Added SUnit::NumRegDefsLeft and ScheduleDAGSDNodes::RegDefIter.

Note: I disabled PrescheduleNodesWithMultipleUses when register
pressure is enabled, based on no evidence other than I don't think it
makes sense to have both enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124853 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
f827cd717b63fd3f1d9ad16e69087c65e9af8c82 04-Feb-2011 Devang Patel <dpatel@apple.com> DebugLoc associated with a machine instruction is used to emit location entries. DebugLoc associated with a DBG_VALUE is used to identify lexical scope of the variable. After register allocation, while inserting DBG_VALUE remember original debug location for the first instruction and reuse it, otherwise dwarf writer may be mislead in identifying the variable's scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124845 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
c8b90e22a8f2987126a7e2e841adc8db9776521c 04-Feb-2011 Evan Cheng <evan.cheng@apple.com> Update comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124843 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
9ecd1e71973f555cab00ee862b6f509d0126025a 04-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Skip unused values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124842 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
45139874a776f4fad581fc3ef81ab77b34b4f593 04-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also compute interference intervals for blocks with no uses.

When the live range is live through a block that doesn't use the register, but
that has interference, region splitting wants to split at the top and bottom of
the basic block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124839 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
a7b586ba7410dd2dddbfa82a6a57485985747f2c 04-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify kill flags conservatively.

Allow a live range to end with a kill flag, but don't allow a kill flag that
doesn't end the live range.

This makes the machine code verifier more useful during register allocation when
kill flag computation is deferred.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124838 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
cd5af07c4573c6b1270d6737e76ef3219091a733 04-Feb-2011 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124827 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
2dfbb3e9125aa0a66feab7a7638815b57da85968 03-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Ensure that the computed interference intervals actually overlap their basic blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124815 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
97af98678cc943050cf23951a66c89e922cf21c4 03-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Tweak debug output from SlotIndexes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124814 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
c50f077b065a328a7ce21d97cfc0a21e5059f735 03-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add debug output and asserts to the phi-connecting code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124813 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
08eb8dd616bb4d4213f2ebda1de56b45bb88b6d9 03-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix coloring bug when mapping values in the middle of a live-through block.

If the found value is not live-through the block, we should only add liveness up
to the requested slot index. When the value is live-through, the whole block
should be colored.

Bug found by SSA verification in the machine code verifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124812 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
207c868c9210663d401b7f5ce5cae7c3e0943849 03-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Return live range end points from SplitEditor::enter*/leave*.

These end points come from the inserted copies, and can be passed directly to
useIntv. This simplifies the coloring code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124799 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
9590c7fbca2a3c18d0000676b2a6336f6458ed42 03-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Silence an MSVC warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124798 91177308-0d34-0410-b5e6-96231b3b80d8
pillPlacement.cpp
0f43811903f10394f7088f4634c0b4f9668cbac0 03-Feb-2011 Eric Christopher <echristo@apple.com> Reapply this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124779 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.h
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
463a2977b1d9e6679f859db9f32e9e783b075c10 03-Feb-2011 Eric Christopher <echristo@apple.com> Temporarily revert 124765 in an attempt to find the cycle breaking bootstrap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124778 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.h
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
2cd21119593becfa1962cfaca0319fd67913f545 03-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Defer SplitKit value mapping until all defs are available.

The greedy register allocator revealed some problems with the value mapping in
SplitKit. We would sometimes start mapping values before all defs were known,
and that could change a value from a simple 1-1 mapping to a multi-def mapping
that requires ssa update.

The new approach collects all defs and register assignments first without
filling in any live intervals. Only when finish() is called, do we compute
liveness and mapped values. At this time we know with certainty which values map
to multiple values in a split range.

This also has the advantage that we can compute live ranges based on the
remaining uses after rematerializing at split points.

The current implementation has many opportunities for compile time optimization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124765 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.h
egAllocGreedy.cpp
plitKit.cpp
plitKit.h
e7d93877c6e7029d27bfd1c137fceb472f81f390 02-Feb-2011 Devang Patel <dpatel@apple.com> Add support to describe template value parameter in debug info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124755 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
7e2cb116556e1153401cd6b94d0f51db978f6902 02-Feb-2011 Devang Patel <dpatel@apple.com> Add support to describe template parameter type in debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124752 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
31959b19a72608051888160514977875a8027dfc 02-Feb-2011 Evan Cheng <evan.cheng@apple.com> Given a pair of floating point load and store, if there are no other uses of
the load, then it may be legal to transform the load and store to integer
load and store of the same width.

This is done if the target specified the transformation as profitable. e.g.
On arm, this can transform:
vldr.32 s0, []
vstr.32 s0, []

to

ldr r12, []
str r12, []

rdar://8944252


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124708 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9a14a362d0388da3b7a9b866d23f09f6fe080a29 01-Feb-2011 Matt Beaumont-Gay <matthewbg@google.com> Take Bill Wendling's suggestion for structuring a couple of asserts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124688 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e9a7ea68653689966417443b8ac2528c1d9d3ccf 31-Jan-2011 Devang Patel <dpatel@apple.com> Keep track of incoming argument's location while emitting LiveIns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124611 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineRegisterInfo.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
4e3740ee6ddfc5895061245364de21e3f73517fe 31-Jan-2011 Richard Osborne <richard@xmos.com> Fix bug where ReduceLoadWidth was creating illegal ZEXTLOAD instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124587 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ed299f6fa9f31c6063b9e187e849bca1ae284d12 30-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Clarify the LSDASection NULL check

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124569 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
8352062e52eed6e50786fdb89f5e601fdcbe0d90 30-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Respect the -tail-dup-size command line option even when optimizing for size.

This is similar to the -unroll-threshold option. There should be no change in
behavior when -tail-dup-size is not explicit on the llc command line.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124564 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
9b108a338d544a6baf2ff087055326e301e6815d 30-Jan-2011 Benjamin Kramer <benny.kra@googlemail.com> Teach DAGCombine to fold fold (sra (trunc (sr x, c1)), c2) -> (trunc (sra x, c1+c2) when c1 equals the amount of bits that are truncated off.

This happens all the time when a smul is promoted to a larger type.

On x86-64 we now compile "int test(int x) { return x/10; }" into
movslq %edi, %rax
imulq $1717986919, %rax, %rax
movq %rax, %rcx
shrq $63, %rcx
sarq $34, %rax <- used to be "shrq $32, %rax; sarl $2, %eax"
addl %ecx, %eax

This fires 96 times in gcc.c on x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2c94b4201beccbd061fd679ea7e9db1381fe8357 29-Jan-2011 Benjamin Kramer <benny.kra@googlemail.com> Add the missing sub identity "A-(A-B) -> B" to DAGCombine.

This happens e.g. for code like "X - X%10" where we lower the modulo operation
to a series of multiplies and shifts that are then subtracted from X, leading to
this missed optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124532 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c3f507f98a0747bd256e1c13536060b6fc5c4b62 29-Jan-2011 Evan Cheng <evan.cheng@apple.com> Re-apply r124518 with fix. Watch out for invalidated iterator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124526 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
b0a42fdb36b575a8ad939ca9624105908aeedf51 29-Jan-2011 Evan Cheng <evan.cheng@apple.com> Revert r124518. It broke Linux self-host.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124522 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
5e6940788fb2f8cf3ce4219d3ac0f78317f54696 29-Jan-2011 Evan Cheng <evan.cheng@apple.com> Re-commit r124462 with fixes. Tail recursion elim will now dup ret into unconditional predecessor to enable TCE on demand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124518 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
1b5c0cb71dd9d529a14cedb4bd89d544bf7e61c3 28-Jan-2011 Evan Cheng <evan.cheng@apple.com> Revert r124462. There are a few big regressions that I need to fix first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124478 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
ed4efd3358c69dc73eea174ac4b252402d17f471 28-Jan-2011 Nick Lewycky <nicholas@mxc.ca> Fix build with stdcxx by using llvm::next. Patch by Joerg Sonnenberger!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124472 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
1ffb5336999b327384752b0f60ad0c4cb4cb8946 28-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Print the visibility of declarations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124468 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
40f64cb0de40802ddd2f928b62e9564e1e721ff3 28-Jan-2011 Evan Cheng <evan.cheng@apple.com> - Stop simplifycfg from duplicating "ret" instructions into unconditional
branches. PR8575, rdar://5134905, rdar://8911460.
- Allow codegen tail duplication to dup small return blocks after register
allocation is done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124462 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
e787ddb5105b2c355c166c395ddbeb2047cf3136 27-Jan-2011 Andrew Trick <atrick@apple.com> Remove a temporary workaround for a lencod miscompile. Depends on the fix in r124442.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
5d7ab8503b130f142902a043556b6b1febd33744 27-Jan-2011 Andrew Trick <atrick@apple.com> VirtRegRewriter fix: update kill flags, which are used by the scavenger.
rdar://problem/8893967: JM/lencod miscompile at -arch armv7 -mthumb -O3

Added ResurrectKill to remove kill flags after we decide to reused a
physical register. And (hopefully) ensure that we call it in all the
right places.

Sorry, I'm not checking in a unit test given that it's a miscompile I
can't reproduce easily with a toy example. Failures in the rewriter
depend on a series of heuristic decisions maked during one of the many
upstream phases in codegen. This case would require coercing regalloc
to generate a couple of rematerialzations in a way that causes the
scavenger to reuse the same register at just the wrong point.

The general way to test this is to implement kill flags
verification. Then we could have a simple, robust compile-only unit
test. That would be worth doing if the whole pass was not about to
disappear. At this point we focus verification work on the next
generation of regalloc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124442 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
7e7fc1052afa9a7b5bcc94d50bc5f0403a6e7470 27-Jan-2011 Devang Patel <dpatel@apple.com> Speculatively revert r124380.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124397 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
bfae5f312c5a726687b4f2201681fb5519568e14 27-Jan-2011 Devang Patel <dpatel@apple.com> While legalizing SDValues do not drop SDDbgValues, trasfer them to new legal nodes.

Take 2. This includes fix for dragonegg crash.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
adf9c8b0e7e7365a172e3c452dfe108f31d9a387 27-Jan-2011 Bob Wilson <bob.wilson@apple.com> Avoid modifying the OneClassForEachPhysReg map while iterating over it.
Linear scan regalloc is currently assuming that any register aliased with
a member of a regclass must also be in at least one regclass. That is not
always true. For example, for X86, RIP is in a regclass but IP is not.
If you're unlucky, this can cause a crash by invalidating the iterator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124365 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
4789aca85eb783865c0a763352a7585fa6f65248 27-Jan-2011 Matt Beaumont-Gay <matthewbg@google.com> Try harder to not have unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a8af137847c07ae01a7bd7a3e7e11cbd449e823c 27-Jan-2011 Matt Beaumont-Gay <matthewbg@google.com> Opt-mode -Wunused-variable cleanup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124346 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
39078a8bde256ee22e981713a4d2ff8235dc7706 27-Jan-2011 Devang Patel <dpatel@apple.com> Reapply 124301


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124339 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
6b9a293a0c7d86c07d704da5facb34cc03ce1d02 26-Jan-2011 Bill Wendling <isanbard@gmail.com> Initialize variable to get rid of clang warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124331 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4a95c199779037d1dc60db8f7b883e28c794b001 26-Jan-2011 Devang Patel <dpatel@apple.com> Revert 124301.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124327 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
c47fd9fbf5d5179363eadde3c3ef57f8094c19e3 26-Jan-2011 Devang Patel <dpatel@apple.com> Revert r124302


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cfe33c46aa50f04adb0431243e7d25f79b719ac6 26-Jan-2011 David Greene <greened@obbligato.org> [AVX] Add INSERT_SUBVECTOR and support it on x86. This provides a
default implementation for x86, going through the stack in a similr
fashion to how the codegen implements BUILD_VECTOR. Eventually this
will get matched to VINSERTF128 if AVX is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124307 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
d2c9793bdf3fe621eee9330f9977be256301b5bf 26-Jan-2011 Devang Patel <dpatel@apple.com> While legalizing SDValues do not drop SDDbgValues, trasfer them to new legal nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124302 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6f121fdede373a84f20785d7d30077667528dcdc 26-Jan-2011 Devang Patel <dpatel@apple.com> Process valid SDDbgValues even if the node does not have any order assigned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124301 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
55d20e8ff1e458f177302386d14f1a4dbdd86028 26-Jan-2011 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
91585098eff1f0acdefa2667e091742b60dcbf15 26-Jan-2011 David Greene <greened@obbligato.org> [AVX] Support EXTRACT_SUBVECTOR on x86. This provides a default
implementation of EXTRACT_SUBVECTOR for x86, going through the stack
in a similr fashion to how the codegen implements BUILD_VECTOR.
Eventually this will get matched to VEXTRACTF128 if AVX is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124292 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
078628465b73348b5608ec6aa2d7181679543903 26-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename member variables to follow the rest of LLVM.
No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124257 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
a2e868d34ccfed46310e98338ded6a74b2b01308 26-Jan-2011 Devang Patel <dpatel@apple.com> Provide an interface to transfer SDDbgValue from one SDNode to another.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124245 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeDbgValue.h
electionDAG/SelectionDAG.cpp
8f31428119b842875ed50996708164b56f3c6a4e 25-Jan-2011 Devang Patel <dpatel@apple.com> Resolve DanglingDbgValue of PHI nodes where the use follows dbg.value intrinisic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3a00ffacdc49cb71baca7a17de51ff55fca119b7 25-Jan-2011 Devang Patel <dpatel@apple.com> This assertion is too restrictive, it does not apply for dangling dbg value nodes (nodes where dbg.value intrinsic preceds use of the value).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124202 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
d4e09787526f105f16c11f091ef6ef67c82da5d3 24-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Support printing exception section into the current one. This is the case when LSDASection is blank

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124150 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
a3ee3ef71b025de982cdda123bbfed44278b011a 24-Jan-2011 Devang Patel <dpatel@apple.com> Speculatively revert r124138.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124142 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
224a180d11891a80b4f00bdec77e7f5f465690ac 24-Jan-2011 Devang Patel <dpatel@apple.com> Resolve DanglingDbgValue of PHI nodes where the use follows dbg.value intrinisic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124138 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c48d50f9c036b48826e75df125d80af596980e00 24-Jan-2011 Andrew Trick <atrick@apple.com> Temporarily workaround JM/lencod miscompile (SIGSEGV).
rdar://problem/8893967


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124137 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
96aa78c8c5ef1a5f268539c9edc86569b436d573 23-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Add support for the --noexecstack option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124077 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
584520e8e2c1f8cc04bc8dd4dc4ea6c390627317 23-Jan-2011 Ted Kremenek <kremenek@apple.com> Null initialize a few variables flagged by
clang's -Wuninitialized-experimental warning.
While these don't look like real bugs, clang's
-Wuninitialized-experimental analysis is stricter
than GCC's, and these fixes have the benefit
of being general nice cleanups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124073 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0cf5e3d51dd455a174a8f00cfa6b63c11e535434 23-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Delay the creation of eh_frame so that the user can change the defaults.
Add support for SHT_X86_64_UNWIND.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124059 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
1c13026e8f94bd332c0979baa9c777da99d48736 23-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove more duplicated code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124056 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
c85dca66e68c9fa6ffa8471c64113b12d8d94fb1 23-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove duplicated code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124054 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
d1dace8aea073716daf0055ad07fde1164b2a472 21-Jan-2011 Andrew Trick <atrick@apple.com> Enable support for precise scheduling of the instruction selection
DAG. Disable using "-disable-sched-cycles".

For ARM, this enables a framework for modeling the cpu pipeline and
counting stalls. It also activates several heuristics to drive
scheduling based on the model. Scheduling is inherently imprecise at
this stage, and until spilling is improved it may defeat attempts to
schedule. However, this framework provides greater control over
tuning codegen.

Although the flag is not target-specific, it should have very little
affect on the default scheduler used by x86. The only two changes that
affect x86 are:
- scheduling a high-latency operation bumps the current cycle so independent
operations can have their latency covered. i.e. two independent 4
cycle operations can produce results in 4 cycles, not 8 cycles.
- Two operations with equal register pressure impact and no
latency-based stalls on their uses will be prioritized by depth before height
(height is irrelevant if no stalls occur in the schedule below this point).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
c8bfd1d78ff9a307d1d4cb57cce4549b538e60f4 21-Jan-2011 Andrew Trick <atrick@apple.com> Convert -enable-sched-cycles and -enable-sched-hazard to -disable
flags. They are still not enable in this revision.

Added TargetInstrInfo::isZeroCost() to fix a fundamental problem with
the scheduler's model of operand latency in the selection DAG.

Generalized unit tests to work with sched-cycles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123969 91177308-0d34-0410-b5e6-96231b3b80d8
coreboardHazardRecognizer.cpp
electionDAG/ScheduleDAGRRList.cpp
argetInstrInfoImpl.cpp
c0de99571297720a37ae405c77fb2ef4aaf00ccd 20-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> SplitKit requires that all defs are in place before calling useIntv().

The value mapping gets confused about which original values have multiple new
definitions so they may need phi insertions.

This could probably be simplified by letting enterIntvBefore() take a live range
to be added following the instruction. As long as the range stays inside the
same basic block, value mapping shouldn't be a problem.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123926 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
d7ca57705e7ccc19245b8b3d6fc271562366bf92 20-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add LiveIntervalMap::dumpCache() to print out the cache used by the ssa update algorithm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123925 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
6214373fe980a988c887322c7453126821713217 20-Jan-2011 Eric Christopher <echristo@apple.com> My editor's indent went crazy. Fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123909 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
02050986d96d1880ec3015cb97c41d1dbad865d6 20-Jan-2011 Eric Christopher <echristo@apple.com> Expand invalid return values for umulo and smulo. Handle these similarly
to add/sub by doing the normal operation and then checking for overflow
afterwards. This generally relies on the DAG handling the later invalid
operations as well.

Fixes the 64-bit part of rdar://8622122 and rdar://8774702.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123908 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
9fe2009956fc40f3aea46fb3c38dcfb61c4aca46 20-Jan-2011 Evan Cheng <evan.cheng@apple.com> Sorry, several patches in one.

TargetInstrInfo:
Change produceSameValue() to take MachineRegisterInfo as an optional argument.
When in SSA form, targets can use it to make more aggressive equality analysis.

Machine LICM:
1. Eliminate isLoadFromConstantMemory, use MI.isInvariantLoad instead.
2. Fix a bug which prevent CSE of instructions which are not re-materializable.
3. Use improved form of produceSameValue.

ARM:
1. Teach ARM produceSameValue to look pass some PIC labels.
2. Look for operands from different loads of different constant pool entries
which have same values.
3. Re-implement PIC GA materialization using movw + movt. Combine the pair with
a "add pc" or "ldr [pc]" to form pseudo instructions. This makes it possible
to re-materialize the instruction, allow machine LICM to hoist the set of
instructions out of the loop and make it possible to CSE them. It's a bit
hacky, but it significantly improve code quality.
4. Some minor bug fixes as well.

With the fixes, using movw + movt to materialize GAs significantly outperform the
load from constantpool method. 186.crafty and 255.vortex improved > 20%, 254.gap
and 176.gcc ~10%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123905 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
argetInstrInfoImpl.cpp
0bc308600b0069f07ba722b472c68588573ebd28 20-Jan-2011 Andrew Trick <atrick@apple.com> Selection DAG scheduler register pressure heuristic fixes.

Added a check for already live regs before claiming HighRegPressure.
Fixed a few cases of checking the wrong number of successors.
Added some tracing until these heuristics are better understood.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123892 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
fd50d76ff854e8e60aa22b0db609de359ff3a576 20-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Check that a live range exists before shortening it. This fixes PR8989.

The live range may have been deleted earlier because of rematerialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123891 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b908a009cf3d85586c6ca25d1de035b7d2b030b5 20-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add hidden -verify-coalescing to run the machine code verifier before and after
register coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123890 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b7683c06cb4ec7554d68704e2ca74ad75415a1d5 20-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix bug found by new clang warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123872 91177308-0d34-0410-b5e6-96231b3b80d8
hrinkWrapping.cpp
e3385811aaf1e7ff548c1f1edc6a85d034909a5c 20-Jan-2011 Eric Christopher <echristo@apple.com> Use only one API at a time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
38a18261b97a0b7e0ed75b1c8edd81ec9bd01085 20-Jan-2011 Eric Christopher <echristo@apple.com> If we can, lower the multiply part of a umulo/smulo call to a libcall
with an invalid type then split the result and perform the overflow check
normally.

Fixes the 32-bit parts of rdar://8622122 and rdar://8774702.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123864 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e449d1f189e8ed719fa42d3ec2216a9d8adb9852 20-Jan-2011 Devang Patel <dpatel@apple.com> Fix debug info for merged global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123862 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fc7d775178aa890f8bb5e9b1be0bf675dc7d29f4 20-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Divert Hopfield network debug output. It is very noisy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123859 91177308-0d34-0410-b5e6-96231b3b80d8
pillPlacement.cpp
92e6939d29d206b5f094e0dcc4febf909f77a134 20-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't accidentally leave small gaps in the live ranges when leaving the active
interval after an instruction. The leaveIntvAfter() method only adds liveness
from the instruction's boundary index to the inserted copy.

Ideally, SplitKit should be smarter about this, perhaps by combining useIntv()
and leaveIntvAfter() into one method that guarantees continuity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123858 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
dacde944bd585d512aabc4f3fa56440642b03a54 20-Jan-2011 Devang Patel <dpatel@apple.com> Fix register address expression. Patch by Ken Dyck.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123856 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ccdb3fcef9aeb9f683cd738afbe1cd961bb0c1ef 19-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement RAGreedy::splitAroundRegion and remove loop splitting.

Region splitting includes loop splitting as a subset, and it is more generic.
The splitting heuristics for variables that are live in more than one block are
now:

1. Try to create a region that covers multiple basic blocks.
2. Try to create a new live range for each block with multiple uses.
3. Spill.

Steps 2 and 3 are similar to what the standard spiller is doing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123853 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
egAllocGreedy.cpp
plitKit.cpp
b5fa9333431673aac2ced8dea80152349a85cf6f 18-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add RAGreedy methods for splitting live ranges around regions.

Analyze the live range's behavior entering and leaving basic blocks. Compute an
interference pattern for each allocation candidate, and use SpillPlacement to
find an optimal region where that register can be live.

This code is still not enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123774 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
pillPlacement.cpp
pillPlacement.h
plitKit.cpp
plitKit.h
955ed73d12f2b186ef3f80da872b702cd7f2895b 18-Jan-2011 Jeffrey Yasskin <jyasskin@google.com> Remove unused variables found by gcc-4.6's -Wunused-but-set-variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123707 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
f22432282c78a65828cd9da94028e8b798858180 18-Jan-2011 Stuart Hastings <stuart@apple.com> Remove checking that prevented overlapping CALLSEQ_START/CALLSEQ_END
ranges, add legalizer support for nested calls. Necessary for ARM
byval support. Radar 7662569.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123704 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c9b6a3eb90c5e0f6460632a443591068522537e2 17-Jan-2011 Benjamin Kramer <benny.kra@googlemail.com> Fix an off-by-one error in ctpop combining.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123664 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d8228924556d3c465da5b858c620b29fd1cf298e 17-Jan-2011 Benjamin Kramer <benny.kra@googlemail.com> Add a DAGCombine to turn (ctpop x) u< 2 into (x & x-1) == 0.

This shaves off 4 popcounts from the hacked 186.crafty source.

This is enabled even when a native popcount instruction is available. The
combined code is one operation longer but it should be faster nevertheless.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123621 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
42c32daadbb1bd0626cced08c418d1b7a0b16fb4 14-Jan-2011 Logan <tzuhsiang.chien@gmail.com> Add LOCAL_MODULE_TAGS := optional

Change-Id: I292f6297b06f97360c15884677057d624e73fbf6
ndroid.mk
smPrinter/Android.mk
electionDAG/Android.mk
b99fdee325fe677081dc27bb7d719518452f3256 16-Jan-2011 Chris Lattner <sabre@nondot.org> reapply my fix for PR8961 with a tweak to properly handle
multi-instruction sequences like calls. Many thanks to Jakob for
finding a testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5df5a22d1a098961edebac59fbddcab045fddd29 15-Jan-2011 Benjamin Kramer <benny.kra@googlemail.com> Add an assert so we don't silently miscompile ctpop for bit widths > 128.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123549 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b6516aeef12a05aa47515f76e18fc426d85babbd 15-Jan-2011 Benjamin Kramer <benny.kra@googlemail.com> Reimplement CTPOP legalization with the "best" algorithm from
http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel

In a silly microbenchmark on a 65 nm core2 this is 1.5x faster than the old
code in 32 bit mode and about 2x faster in 64 bit mode. It's also a lot shorter,
especially when counting 64 bit population on a 32 bit target.

I hope this is fast enough to replace Kernighan-style counting loops even when
the input is rather sparse.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123547 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
439ea279a5aae60f2e3693d82346765f650a2af3 14-Jan-2011 Ted Kremenek <kremenek@apple.com> Update CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123491 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
ca5f61676956cff088c225c3c166a589410b3101 14-Jan-2011 Dan Gohman <gohman@apple.com> Delete an assignment to ThisBB which isn't needed, and tidy up some
comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123479 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3965b5e974d57f3e56a2c7f37d76d73e572dfb20 14-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Add a possibility to switch between CFI directives- and table-based frame description emission. Currently all the backends use table-based stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123476 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfCFIException.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfTableException.cpp
LVMTargetMachine.cpp
9a1ef4ef36cfa2d8d9ebd52d601283ae6e7466cd 14-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Add CFI directives-based frame information emission. Not hooked yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123474 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfCFIException.cpp
smPrinter/DwarfException.h
d7e8ddc5012d22398eba6b8094e2fd7821bac9cc 14-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Split stuff as a preparation for CFI directives-based frame information emission

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123473 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfTableException.cpp
f697c8a19adf962a933b055383952e72789a0e20 14-Jan-2011 Andrew Trick <atrick@apple.com> Support for precise scheduling of the instruction selection DAG,
disabled in this checkin. Sorry for the large diffs due to
refactoring. New functionality is all guarded by EnableSchedCycles.

Scheduling the isel DAG is inherently imprecise, but we give it a best
effort:
- Added MayReduceRegPressure to allow stalled nodes in the queue only
if there is a regpressure need.
- Added BUHasStall to allow checking for either dependence stalls due to
latency or resource stalls due to pipeline hazards.
- Added BUCompareLatency to encapsulate and standardize the heuristics
for minimizing stall cycles (vs. reducing register pressure).
- Modified the bottom-up heuristic (now in BUCompareLatency) to
prioritize nodes by their depth rather than height. As long as it
doesn't stall, height is irrelevant. Depth represents the critical
path to the DAG root.
- Added hybrid_ls_rr_sort::isReady to filter stalled nodes before
adding them to the available queue.

Related Cleanup: most of the register reduction routines do not need
to be templates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123468 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
04223909b74fd0634ba26d434fa7fdf2f3c7444f 14-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Try for the third time to teach getFirstTerminator() about debug values.

This time let's rephrase to trick gcc-4.3 into not miscompiling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123432 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
HIElimination.cpp
b6436e5be19937b622fabd87d1547b8fc7553c11 14-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r123419. It still breaks llvm-gcc-i386-linux-selfhost.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123423 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
HIElimination.cpp
67d98916900a68b5902428e39f9c865c8d02c1bf 14-Jan-2011 Chris Lattner <sabre@nondot.org> Set the insertion point correctly for instructions generated by load folding:
they should go *before* the new instruction not after it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123420 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
09befe90360effa077b1934c0e85e5b7abe00a9c 14-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Try again to teach getFirstTerminator() about debug values.

Fix some callers to better deal with debug values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123419 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
HIElimination.cpp
eea666f216ad3a8f8cd88a969176f86add7228f3 14-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Better terminator avoidance.

This approach also works when the terminator doesn't have a slot index. (Which
can happen??)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123413 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
a6ada9f725b0015c419a7ef661e833f9e9b26ff8 13-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Temporary workaround for an i386 crash in LiveDebugVariables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123400 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
4f28c1c71450c711e96aa283de53739d8b4504cd 13-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach frame lowering to ignore debug values after the terminators.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123399 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
a851fd8cd8e5c256651b3afeb8ebd539c28dfda7 13-Jan-2011 Devang Patel <dpatel@apple.com> Speculatively revert r123384 to make llvm-gcc-i386-linux-selfhost buildbot happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123389 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
HIElimination.cpp
64f865ceca4cdd39fcac3d958071be118cb9c1d3 13-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach MachineBasicBlock::getFirstTerminator to ignore debug values.

It will still return an iterator that points to the first terminator or end(),
but there may be DBG_VALUE instructions following the first terminator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123384 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
HIElimination.cpp
dd11ea4a372b992775f67b64fb703edf2de0d27b 13-Jan-2011 Dan Gohman <gohman@apple.com> Fix r123346 to handle scalar types too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123352 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
668c9e31df3e7c216c57559c69667273f7b0404d 13-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add missing space in debug output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123351 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
b86654385a394d8bdfe0cd6e3b5d57e9f3cb0eae 13-Jan-2011 Dan Gohman <gohman@apple.com> Apply the patch from PR8958, which allows llc to get slightly
further on the associated testcase before aborting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123346 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
25dc2268a5aedcb5da57f065dbdb40d790b11bc0 13-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Try again enabling LiveDebugVariables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123342 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
f0704d28f34b872f949ef8030651c7159ff6f32f 13-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't emit a DBG_VALUE for a spill slot that the rewriter decided not to use after all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123339 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
12a40314a91511b65bc83782fd5a3e981331adb1 13-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix braino in dominator tree walk.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123338 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
f203627f21614cbef9526aa791b3e7b0493d1e41 12-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Sometimes, old virtual registers can linger on DBG_VALUE instructions.

Make sure we don't crash in that case, but simply turn them into %noreg instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123335 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
ee547095bbf2c201029c0036ceeb49a66be37119 12-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach VirtRegRewriter to update slot indexes when erasing instructions.

It was leaving dangling pointers in the slot index maps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123334 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
7fd747ba24c0eb20d505de16c4c7839ae3f43344 12-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Annotate VirtRegRewriter debug output with slot indexes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123333 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
fc69c370e165958d7d9a6d756a32479674d83888 12-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify slot index ordering.

The slot indexes must be monotonically increasing through the function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123324 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
7bd46dae9c0e7e93df27186a4885293f8295b093 12-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that machine instruction parent pointers are consistent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123322 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
2df5458535c54c1e214da65191ef86c38b57da39 12-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> The world is not ready for LiveDebugVariables yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123290 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
a518ccc26a0e01d93a58e305f7c19c42fa640bb9 11-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable LiveDebugVariables by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123282 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
b08773749a42a8c68afca96360b6e361147779b4 11-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't insert DBG_VALUE instructions after the first terminator.

For one, MachineBasicBlock::getFirstTerminator() doesn't understand what is
happening, and it also makes sense to have all control flow run through the
DBG_VALUE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123277 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
a36478feacffd66bde53c14561cab1a64b1b9c7d 11-Jan-2011 Devang Patel <dpatel@apple.com> Appropriately truncate debug info range in dwarf output.
This is not yet completely enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123274 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
93c70426f581859f197df1b05fdb1b3664d361a0 11-Jan-2011 Eric Christopher <echristo@apple.com> Move ExpandAtomic into the integer expansion routines - it's only used there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123202 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
97fd9a58de3c99a74b0890a908430fa3ab894bed 10-Jan-2011 Dale Johannesen <dalej@apple.com> Fix PR 8916 (qv for analysis), at least the immediate problem.

There's an inherent tension in DAGCombine between assuming
that things will be put in canonical form, and the Depth
mechanism that disables transformations when recursion gets
too deep. It would not surprise me if there's a lot of little
bugs like this one waiting to be discovered. The mechanism
seems fragile and I'd suggest looking at it from a design viewpoint.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123191 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
16c29b5f285f375be53dabaa73e3e91107485fe4 10-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes here and there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123170 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
CStrategy.cpp
ocalStackSlotAllocation.cpp
achineFunction.cpp
rologEpilogInserter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
622a11bc0764897f6aaf80fe96b3abac6215f06b 10-Jan-2011 Chris Lattner <sabre@nondot.org> fit in 80 cols and use MBB::isSuccessor instead of a hand
rolled std::find.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123164 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
c9df025e33ac435adb3b3318d237c36ca7cec659 10-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify a bunch of isVirtualRegister() and isPhysicalRegister() logic.

These functions not longer assert when passed 0, but simply return false instead.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123155 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.cpp
eadMachineInstructionElim.cpp
iveDebugVariables.cpp
iveIntervalAnalysis.cpp
achineCSE.cpp
achineInstr.cpp
achineLICM.cpp
eepholeOptimizer.cpp
egAllocFast.cpp
egAllocLinearScan.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
42e9c963921776cb498c33b6c6c03f29971316f3 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove MachineRegisterInfo::getLastVirtReg(), it was giving wrong results
when no virtual registers have been allocated.

It was only used to resize IndexedMaps, so provide an IndexedMap::resize()
method such that

Map.grow(MRI.getLastVirtReg());

can be replaced with the simpler

Map.resize(MRI.getNumVirtRegs());

This works correctly when no virtuals are allocated, and it bypasses the to/from
index conversions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123130 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
irtRegMap.cpp
9dddf08eb8851e7c707df7f36b18e4e738e717cc 09-Jan-2011 Chris Lattner <sabre@nondot.org> sort this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123129 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
be97e906e03dd9b22e14f6749157c9d5f9701dd5 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach TargetRegisterInfo how to cram stack slot indexes in with the virtual and
physical register numbers.

This makes the hack used in LiveInterval official, and lets LiveInterval be
oblivious of stack slots.

The isPhysicalRegister() and isVirtualRegister() predicates don't know about
this, so when a variable may contain a stack slot, isStackSlot() should always
be tested first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123128 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveInterval.cpp
iveStackAnalysis.cpp
piller.cpp
tackSlotColoring.cpp
2cfa5b4934856942c2aaa6e41b67eb367d183fe6 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a forgotten VireReg2IndexFunctor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123123 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.h
f78df5ebb8319eb28936937e7f53aac4afb2270b 09-Jan-2011 Cameron Zwarich <zwarich@apple.com> Eliminate some extra hash table lookups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123115 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
e272deed7b821976c4ebfe903807dff4f5e852a5 09-Jan-2011 Cameron Zwarich <zwarich@apple.com> Add an informative comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123114 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0804ead404d694b35e9c55ccbf43f99cd394e487 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify LiveDebugVariables by storing MachineOperand copies locations instead
of using a Location class with the same information.

When making a copy of a MachineOperand that was already stored in a
MachineInstr, it is necessary to clear the parent pointer on the copy. Otherwise
the register use-def lists become inconsistent.

Add MachineOperand::clearParent() to do that. An alternative would be a custom
MachineOperand copy constructor that cleared ParentMI. I didn't want to do that
because of the performance impact.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123109 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
00f93fc0467e89d5e63b8ebd9a18909a3b031ccc 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Shrink a BitVector that didn't mean to store bits for all physical registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123108 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4314268128be6d54c9a7f0709680e5a5b40f3ab3 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace TargetRegisterInfo::printReg with a PrintReg class that also works without a TRI instance.

Print virtual registers numbered from 0 instead of the arbitrary
FirstVirtualRegister. The first virtual register is printed as %vreg0.
TRI::NoRegister is printed as %noreg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123107 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveDebugVariables.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveIntervalUnion.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineVerifier.cpp
HIElimination.cpp
egAllocFast.cpp
electionDAG/SelectionDAG.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
994c727b5790e5c976e32c75364d78eb9b22a568 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use IndexedMap for MachineRegisterInfo as well. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123106 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
c7d67f90d36375f1ff512a3857c887b7e4246adb 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix VirtRegMap to use TRI::index2VirtReg and TRI::virtReg2Index instead of
depending on TRI::FirstVirtualRegister.

Also use TRI::printReg instead of printing virtual registers directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123101 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
98c54760704878cf5290a9a3b23876b7550c5560 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a MachineVerifier loop that probably didn't mean to skip the last two
virtual registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123100 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
b421c566f512ed0ec87851866d335e9086c3f8be 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use an IndexedMap for LiveVariables::VirtRegInfo.

Provide MRI::getNumVirtRegs() and TRI::index2VirtReg() functions to allow
iteration over virtual registers without depending on the representation of
virtual register numbers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123098 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
358de24dc121cd21911f3248b599178c86e9b467 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use an IndexedMap for LiveOutRegInfo to hide its dependence on TargetRegisterInfo::FirstVirtualRegister.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123096 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
7c8818630991855830c94c79e1035222f3749689 08-Jan-2011 Cameron Zwarich <zwarich@apple.com> Fix coding style.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123093 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
80f6a507d4e11ba066ad0e53e12ad25ad8cf07ba 08-Jan-2011 Cameron Zwarich <zwarich@apple.com> Make more passes preserve dominators (or state that they preserve dominators if
they all ready do). This removes two dominator recomputations prior to isel,
which is a 1% improvement in total llc time for 403.gcc.

The only potentially suspect thing is making GCStrategy recompute dominators if
it used a custom lowering strategy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123064 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
tackProtector.cpp
nreachableBlockElim.cpp
55d42003368c57d3a41c5f464d39b8440050d558 08-Jan-2011 Evan Cheng <evan.cheng@apple.com> Recognize inline asm 'rev /bin/bash, ' as a bswap intrinsic call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123048 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
c36b7069b42bece963b7e6adf020353ce990ef76 08-Jan-2011 Evan Cheng <evan.cheng@apple.com> Do not model all INLINEASM instructions as having unmodelled side effects.
Instead encode llvm IR level property "HasSideEffects" in an operand (shared
with IsAlignStack). Added MachineInstrs::hasUnmodeledSideEffects() to check
the operand when the instruction is an INLINEASM.

This allows memory instructions to be moved around INLINEASM instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123044 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
eadMachineInstructionElim.cpp
achineCSE.cpp
achineInstr.cpp
eepholeOptimizer.cpp
rologEpilogInserter.cpp
cheduleDAGInstrs.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
51a666f0e50a34b74212db9c5814153c885153a5 07-Jan-2011 Devang Patel <dpatel@apple.com> Speculatively revert r123032.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123039 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
iveDebugVariables.cpp
1dea232624c246341a5a98e0d481ba89f854012c 07-Jan-2011 Devang Patel <dpatel@apple.com> Appropriately truncate debug info range in dwarf output.
Enable live debug variables pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123032 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
iveDebugVariables.cpp
30a343aeedf777f9b8b6be9823da750afbf765b1 07-Jan-2011 Evan Cheng <evan.cheng@apple.com> DBG_VALUE does not have any side effects; it also makes no sense to mark it cheap as a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123031 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
eepholeOptimizer.cpp
irtRegRewriter.cpp
5e8b833707e6d59576d91b23a2c24e596eace60e 07-Jan-2011 Bob Wilson <bob.wilson@apple.com> Add ARM patterns to match EXTRACT_SUBVECTOR nodes.
Also fix an off-by-one in SelectionDAGBuilder that was preventing shuffle
vectors from being translated to EXTRACT_SUBVECTOR.
Patch by Tim Northover.

The test changes are needed to keep those spill-q tests from testing aligned
spills and restores. If the only aligned stack objects are spill slots, we
no longer realign the stack frame. Prior to this patch, an EXTRACT_SUBVECTOR
was legalized by loading from the stack, which created an aligned frame index.
Now, however, there is nothing except the spill slot in the stack frame, so
I added an aligned alloca.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
67b067d2f91ede565a3cde857442a44314d72537 07-Jan-2011 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122994 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
6736e19f4c9af1181cedca54ba6e3a1420454928 07-Jan-2011 Bob Wilson <bob.wilson@apple.com> Change EXTRACT_SUBVECTOR to require a constant index.
We were never generating any of these nodes with variable indices, and there
was one legalizer function asserting on a non-constant index. If we ever have
a need to support variable indices, we can add this back again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122993 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
8d90b7190f9411e0e48d8a29705240f7679ae201 07-Jan-2011 Bill Wendling <isanbard@gmail.com> Early exit if we don't have invokes. The 'Unwinds' vector isn't modified unless
we have invokes, so there is no functionality change here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122990 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
d9aa80038f630d72883ebe5b524e372a44e6695c 07-Jan-2011 Duncan Sands <baldrick@free.fr> Fix the other problem reported in PR8582. Testcase and patch by
Nadav Rotem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122983 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
8d93d19076fb6a67eeb63cb0ba79d00c3aa8478a 06-Jan-2011 Eric Christopher <echristo@apple.com> Add some fairly duplicated code to let type legalization split illegal
typed atomics. This will lower exclusively to libcalls at the moment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122979 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
76a788c886376d451ae3baa55429bf2d19039e9e 06-Jan-2011 Devang Patel <dpatel@apple.com> Emit 128 bit constant.
This fixes PR 8913 crash.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122971 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0521928ae7cc492f3f45ef0e0cedc349102489c5 06-Jan-2011 Evan Cheng <evan.cheng@apple.com> Re-implement r122936 with proper target hooks. Now getMaxStoresPerMemcpy
etc. takes an option OptSize. If OptSize is true, it would return
the inline limit for functions with attribute OptSize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
255874ff521bb81b294ec861a5d9a99d8198448c 06-Jan-2011 Evan Cheng <evan.cheng@apple.com> Revert r122936. I'll re-implement the change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122949 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
19bb35db1fd8173af438d11338a52870ce71d1b7 06-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Zap the last two -Wself-assign warnings in llvm.

Simplify RALinScan::DowngradeRegister with TRI::getOverlaps while we are there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122940 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
8bfe50871f9cb1b022483e0e1307ab5b8c9e5650 06-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add the SpillPlacement analysis pass.

This pass precomputes CFG block frequency information that can be used by the
register allocator to find optimal spill code placement.

Given an interference pattern, placeSpills() will compute which basic blocks
should have the current variable enter or exit in a register, and which blocks
prefer the stack.

The algorithm is ready to consume block frequencies from profiling data, but for
now it gets by with the static estimates used for spill weights.

This is a work in progress and still not hooked up to RegAllocGreedy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122938 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
pillPlacement.cpp
pillPlacement.h
9a9d847afaf5df1b66b0f92692e31d1d4003c3a9 06-Jan-2011 Evan Cheng <evan.cheng@apple.com> r105228 reduced the memcpy / memset inline limit to 4 with -Os to avoid blowing
up freebsd bootloader. However, this doesn't make much sense for Darwin, whose
-Os is meant to optimize for size only if it doesn't hurt performance.
rdar://8821501


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122936 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d08e5b48bc5d9177b1d70a1980a7805420a99085 06-Jan-2011 Evan Cheng <evan.cheng@apple.com> Avoid zero extend bit test operands to pointer type if all the masks fit in
the original type of the switch statement key.
rdar://8781238


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122935 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
0b71d3972d9138c7482233bc44a9a207634769ef 06-Jan-2011 Evan Cheng <evan.cheng@apple.com> Optimize:
r1025 = s/zext r1024, 4
r1026 = extract_subreg r1025, 4
to:
r1026 = copy r1024


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122925 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
6b705d482511e432a543d04f6f5e27f5881b6441 05-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a hidden command line option to display edge bundle graphs as they are
calculated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122912 91177308-0d34-0410-b5e6-96231b3b80d8
dgeBundles.cpp
762a17a040f2e5c7f76b6b85d853cca454289e71 05-Jan-2011 Eric Christopher <echristo@apple.com> 80-cols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122909 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2d31d14bace4cf225e997c78daefccc52e38186c 04-Jan-2011 Eric Christopher <echristo@apple.com> Remove TODO, these appear to be implemented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122849 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8dd070edc2209ecfdae49780ec1596b349e2cbd1 04-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Turn the EdgeBundles class into a stand-alone machine CFG analysis pass.

The analysis will be needed by both the greedy register allocator and the
X86FloatingPoint pass. It only needs to be computed once when the CFG doesn't
change.

This pass is very fast, usually showing up as 0.0% wall time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122832 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
dgeBundles.cpp
plitKit.cpp
plitKit.h
26db45818a4f1b8483ac5a904eefa43c9b120a5d 04-Jan-2011 Cameron Zwarich <zwarich@apple.com> Switch to path halving from path compression for a small speedup. This also
makes getLeader() nonrecursive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122811 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
645b1d2f12e6637840d3b118231f60b3a587073a 04-Jan-2011 Cameron Zwarich <zwarich@apple.com> Eliminate repeated allocation of a per-BB DenseMap for a 4.6% reduction of time
spent in StrongPHIElimination on 403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122803 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
fa3306af82ffc12a3ce718f256e82bf26cc75f44 04-Jan-2011 Owen Anderson <resistor@mac.com> Clean up a funky pass registration that got passed over when I got rid of static constructors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122795 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionAnalysis.cpp
53eeba586dac8a25db63fe02a00ef10feb8b3925 03-Jan-2011 Cameron Zwarich <zwarich@apple.com> Use a RecyclingAllocator to allocate values for MachineCSE's ScopedHashTable for
a 28% speedup of MachineCSE time on 403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122735 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
9fc5cdf77c812aaa80419036de27576d45894d0d 02-Jan-2011 Chris Lattner <sabre@nondot.org> split dom frontier handling stuff out to its own DominanceFrontier header,
so that Dominators.h is *just* domtree. Also prune #includes a bit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122714 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
80220369b040dd9769e4c4b65d2d018210c3b240 02-Jan-2011 Benjamin Kramer <benny.kra@googlemail.com> Try to reuse the value when lowering memset.

This allows us to compile:
void test(char *s, int a) {
__builtin_memset(s, a, 15);
}
into 1 mul + 3 stores instead of 3 muls + 3 stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122710 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8c06aa1c597bb5c2c264a190bc35836f0a7b4cd5 02-Jan-2011 Benjamin Kramer <benny.kra@googlemail.com> Lower the i8 extension in memset to a multiply instead of a potentially long series of shifts and ors.

We could implement a DAGCombine to turn x * 0x0101 back into logic operations
on targets that doesn't support the multiply or it is slow (p4) if someone cares
enough.

Example code:
void test(char *s, int a) {
__builtin_memset(s, a, 4);
}
before:
_test: ## @test
movzbl 8(%esp), %eax
movl %eax, %ecx
shll $8, %ecx
orl %eax, %ecx
movl %ecx, %eax
shll $16, %eax
orl %ecx, %eax
movl 4(%esp), %ecx
movl %eax, 4(%ecx)
movl %eax, (%ecx)
ret
after:
_test: ## @test
movzbl 8(%esp), %eax
imull $16843009, %eax, %eax ## imm = 0x1010101
movl 4(%esp), %ecx
movl %eax, 4(%ecx)
movl %eax, (%ecx)
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122707 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d16ad3e43c4dc59b3f6f8f36338a778f7c7a8701 30-Dec-2010 Cameron Zwarich <zwarich@apple.com> Use getVRegDef() instead of def_iterator. This leads to fewer defs being added
with 2-address instructions, for about a 3.5% speedup of StrongPHIElimination on
403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122635 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
dd061b317711d4165e01f30e8be4798c832819b8 29-Dec-2010 Cameron Zwarich <zwarich@apple.com> None of the other pass names in CodeGen have terminating periods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122628 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
1558f5ed1975495c0394d9de7acc144d0c8742da 29-Dec-2010 Cameron Zwarich <zwarich@apple.com> Instead of processing every instruction when splitting interferences, only
process those instructions that define phi sources. This is a 47% speedup of
StrongPHIElimination compile time on 403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122627 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
7fb95d4235ad588d4105544b2ae3fa1aa0eba3b1 29-Dec-2010 Cameron Zwarich <zwarich@apple.com> Add a missing word to a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122625 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
480b80a74648c9ea93b9a8986f9ca6a9de536abc 29-Dec-2010 Cameron Zwarich <zwarich@apple.com> Add text explaining an assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122617 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
cb584d08c0734d64f95b0f762aa31ea8ce3de2d9 29-Dec-2010 Cameron Zwarich <zwarich@apple.com> Simplify some code in MachineVerifier that was doing the correct thing, but not
in the most obvious way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122610 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
438e25ccdcd8673b1ff8d54ee80a5894a29b2590 29-Dec-2010 Cameron Zwarich <zwarich@apple.com> Revert the optimization in r122596. It is correct for all current targets, but
it relies on assumptions that may not be true in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122608 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
92f0fcb6df128ab99a63986b5be00e80fc9f98c6 28-Dec-2010 Cameron Zwarich <zwarich@apple.com> Avoid iterating every operand of an instruction in StrongPHIElimination, since
we are only interested in the defs when discovering interferences.

This is a 28% speedup running StrongPHIElimination on 403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122596 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
2aea490e163b53e966d693285c17c1a934db5e8d 28-Dec-2010 Duncan Sands <baldrick@free.fr> Pacify the compiler. BestWeight cannot in fact be used uninitialized
in this function, but the compiler was warning that it might be when
doing a release build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122595 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
c3ab20e62e8be9b55cce0145d02ebdd20775a53a 27-Dec-2010 Cameron Zwarich <zwarich@apple.com> Change an assertion to assert what the code actually relies upon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122586 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
4e7f23b1b622c2527c3ccff8df3179b692dbcca6 27-Dec-2010 Cameron Zwarich <zwarich@apple.com> Land a first cut at StrongPHIElimination. There are only 5 new test failures
when running without the verifier, and I have not yet checked them to see if
the new results are still correct. There are more verifier failures, but they
all seem to be additional occurrences of verifier failures that occur with the
existing PHIElimination pass. There are a few obvious issues with the code:

1) It doesn't properly update the register equivalence classes during copy
insertion, and instead recomputes them before merging live intervals and
renaming registers. I wanted to keep this first patch simple for debugging
purposes, but it shouldn't be very hard to do this.

2) It doesn't mix the renaming and live interval merging with the copy insertion
process, which leads to a lot of virtual register churn. Virtual registers and
live intervals are created, only to later be merged into others. The code should
be smarter and only create a new virtual register if there is no existing
register in the same congruence class.

3) In one place the code uses a DenseMap per basic block, which is unnecessary
heap allocation. There should be an inline storage version of DenseMap.

I did a quick compile-time test of running llc on 403.gcc with and without
StrongPHIElimination. It is slightly slower with StrongPHIElimination, because
the small decrease in the coalescer runtime can't beat the increase in phi
elimination runtime. Perhaps fixing the above performance issues will narrow
the gap.

I also haven't yet run any tests of the quality of the generated code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122582 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
4eee42cb282753ad43e929b0955d7d44c1580905 27-Dec-2010 Cameron Zwarich <zwarich@apple.com> Add knowledge of phi-def and phi-kill valnos to MachineVerifier's predecessor
valno verification. The "Different value live out of predecessor" check is
incorrect in the case of phi-def valnos, so just skip that check for phi-def
valnos and instead check that all of the valnos for predecessors have phi-kill.
Fixes PR8863.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122581 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
a75ce9f5d2236d93c117e861e60e6f3f748c9555 24-Dec-2010 Andrew Trick <atrick@apple.com> Minor cleanup related to my latest scheduler changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
24312230ada6f4cfa8776351dafb12eea8a81b33 24-Dec-2010 Andrew Trick <atrick@apple.com> Fix a few cases where the scheduler is not checking for phys reg copies. The scheduling node may have a NULL DAG node, yuck.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122544 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
2da8bc8a5f7705ac131184cd247f48500da0d74e 24-Dec-2010 Andrew Trick <atrick@apple.com> Various bits of framework needed for precise machine-level selection
DAG scheduling during isel. Most new functionality is currently
guarded by -enable-sched-cycles and -enable-sched-hazard.

Added InstrItineraryData::IssueWidth field, currently derived from
ARM itineraries, but could be initialized differently on other targets.

Added ScheduleHazardRecognizer::MaxLookAhead to indicate whether it is
active, and if so how many cycles of state it holds.

Added SchedulingPriorityQueue::HasReadyFilter to allowing gating entry
into the scheduler's available queue.

ScoreboardHazardRecognizer now accesses the ScheduleDAG in order to
get information about it's SUnits, provides RecedeCycle for bottom-up
scheduling, correctly computes scoreboard depth, tracks IssueCount, and
considers potential stall cycles when checking for hazards.

ScheduleDAGRRList now models machine cycles and hazards (under
flags). It tracks MinAvailableCycle, drives the hazard recognizer and
priority queue's ready filter, manages a new PendingQueue, properly
accounts for stall cycles, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122541 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
coreboardHazardRecognizer.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
argetInstrInfoImpl.cpp
6e8f4c404825b79f9b9176483653f1aa927dfbde 24-Dec-2010 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122539 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/SelectionDAGISel.cpp
ef485d86585123b5e31a7f88aef22725ebd07e7a 24-Dec-2010 Cameron Zwarich <zwarich@apple.com> Simplify a check for implicit defs and remove a FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122537 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
29d8f0cae425f1bba583565227eaebf58f26ce73 23-Dec-2010 Chris Lattner <sabre@nondot.org> flags -> glue for selectiondag


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122509 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
a4359be0328a91971c486b06892c742de1fa0f2b 23-Dec-2010 Chris Lattner <sabre@nondot.org> sdisel flag -> glue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122507 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2902736a507df1c6fdc0daa4e8f0e385bb5f7820 23-Dec-2010 Andrew Trick <atrick@apple.com> Reorganize ListScheduleBottomUp in preparation for modeling machine cycles and instruction issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122491 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3d420cb2fee925d0888cd3a60a222a19e75cd890 23-Dec-2010 Andrew Trick <atrick@apple.com> Converted LiveRegCycles to LiveRegGens. It's easier to work with and allows multiple nodes per cycle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122474 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
cb7947b81be4cb55fc647ea3722eb7a8613545cb 23-Dec-2010 Andrew Trick <atrick@apple.com> In CheckForLiveRegDef use TRI->getOverlaps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122473 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
1b1658741aa4bc88fc488ef217d9603294e16c58 23-Dec-2010 Andrew Trick <atrick@apple.com> Fixes PR8823: add-with-overflow-128.ll
In the bottom-up selection DAG scheduling, handle two-address
instructions that read/write unspillable registers. Treat
the entire chain of two-address nodes as a single live range.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122472 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
8e68c3873549ca31533e2e3e40dda3a43cb79566 23-Dec-2010 Jeffrey Yasskin <jyasskin@google.com> Change all self assignments X=X to (void)X, so that we can turn on a
new gcc warning that complains on self-assignments and
self-initializations.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122458 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
cheduleDAGEmit.cpp
electionDAG/InstrEmitter.cpp
tackSlotColoring.cpp
f50125ecaab0cc379892280de33f0a2d387f7f5b 23-Dec-2010 Benjamin Kramer <benny.kra@googlemail.com> DAGCombine add (sext i1), X into sub X, (zext i1) if sext from i1 is illegal. The latter usually compiles into smaller code.

example code:
unsigned foo(unsigned x, unsigned y) {
if (x != 0) y--;
return y;
}

before:
_foo: ## @foo
cmpl $1, 4(%esp) ## encoding: [0x83,0x7c,0x24,0x04,0x01]
sbbl %eax, %eax ## encoding: [0x19,0xc0]
notl %eax ## encoding: [0xf7,0xd0]
addl 8(%esp), %eax ## encoding: [0x03,0x44,0x24,0x08]
ret ## encoding: [0xc3]

after:
_foo: ## @foo
cmpl $1, 4(%esp) ## encoding: [0x83,0x7c,0x24,0x04,0x01]
movl 8(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x08]
adcl $-1, %eax ## encoding: [0x83,0xd0,0xff]
ret ## encoding: [0xc3]



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122455 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
770d42de3b7643b2b4f835f32e3a16275b9fbdba 22-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When RegAllocGreedy decides to spill the interferences of the current register,
pick the victim with the lowest total spill weight.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122445 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
c64379da075a59bd5178c62c970c8d2b84457ab2 22-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Include a shadow of the original CFG edges in the edge bundle graph.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122444 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
cbf68dfbc0b36de8ef20bb42ce0c7d75cb132fc7 22-Dec-2010 Chris Lattner <sabre@nondot.org> Fix a bug in ReduceLoadWidth that wasn't handling extending
loads properly. We miscompiled the testcase into:

_test: ## @test
movl $128, (%rdi)
movzbl 1(%rdi), %eax
ret

Now we get a proper:

_test: ## @test
movl $128, (%rdi)
movsbl (%rdi), %eax
movzbl %ah, %eax
ret

This fixes PR8757.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122392 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7a2a7faf9cfdbdf5f1de720385dc8a0009cd60a6 22-Dec-2010 Chris Lattner <sabre@nondot.org> more cleanups, move a check for "roundedness" earlier to reject
unhanded cases faster and simplify code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122391 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4c32bc24ded3d36db1f9fda301e46c16d1df6786 22-Dec-2010 Chris Lattner <sabre@nondot.org> reduce indentation and improve comments, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122389 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
feac09801b5c03412d452e685570baff6eb84c88 21-Dec-2010 Andrew Trick <atrick@apple.com> In DelayForLiveRegsBottomUp, handle instructions that read and write
the same physical register. Simplifies the fix from the previous
checkin r122211.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122370 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
38036d8b36fa5d1b2f3530f47fd716e9da7bffab 21-Dec-2010 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122368 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
c72b18cdc8f155dbb99d554056f3bb6b38f5f72c 21-Dec-2010 Dale Johannesen <dalej@apple.com> Reapply 122353-122355 with fixes. 122354 was wrong;
the shift type was needed one place, the shift count
type another. The transform in 123555 had the same
problem.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122366 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d0cf2585a00bc7dd9a682b65dc53245db37ec366 21-Dec-2010 Dale Johannesen <dalej@apple.com> Revert 122353-122355 for the moment, they broke stuff.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122360 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a83bf35d167c43ff2eb8c61bdea0cb660d2b07d8 21-Dec-2010 Dale Johannesen <dalej@apple.com> Add a new transform to DAGCombiner.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5ecc340e34e6ca4b9f6ebde6c1379cb3b8084f69 21-Dec-2010 Dale Johannesen <dalej@apple.com> Get the type of a shift from the shift, not from its shift
count operand. These should be the same but apparently are
not always, and this is cleaner anyway. This improves the
code in an existing test.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122354 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
efc96dd38c285c1a01aa6f613f533d1205e4acb2 21-Dec-2010 Dale Johannesen <dalej@apple.com> Shift by the word size is invalid IR; don't create it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122353 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
90b0364cff2531008831428a9b4576bf4be47c70 21-Dec-2010 Chris Lattner <sabre@nondot.org> fix some typos


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
56500edc7a2599e651d39df71a714e1e255ed96a 21-Dec-2010 Stuart Hastings <stuart@apple.com> Fix indentation, add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122345 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2965e69e040d86002128b91a439eb9bfc6b83df1 21-Dec-2010 Stuart Hastings <stuart@apple.com> Missing logic for nested CALLSEQ_START/END.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122342 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
47bce43229d1ccb9bdbd9f854809d588865e9648 21-Dec-2010 Cameron Zwarich <zwarich@apple.com> Incremental progress towards a new implementation of StrongPHIElimination. Most
of the problems with my last attempt were in the updating of LiveIntervals
rather than the coalescing itself. Therefore, I decided to get that right first
by essentially reimplementing the existing PHIElimination using LiveIntervals.

It works correctly, with only a few tests failing (which may not be legitimate
failures) and no new verifier failures (at least as far as I can tell, I didn't
count the number per file).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122321 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
f1b4eafbfec976f939ec0ea3e8acf91cef5363e3 21-Dec-2010 Chris Lattner <sabre@nondot.org> rename MVT::Flag to MVT::Glue. "Flag" is a terrible name for
something that just glues two nodes together, even if it is
sometimes used for flags.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/InstrEmitter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
5df1578decc8b05ffaec0e7f5d1532234bc1be19 21-Dec-2010 Chris Lattner <sabre@nondot.org> improve "cannot yet select" errors a trivial amount: now
they are just as useless, but at least a bit more gramatical


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8d0963f72c8922bafffb36ff49b18064098a3cab 21-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add EdgeBundles to SplitKit.

Edge bundles is an annotation on the CFG that turns it into a bipartite directed
graph where each basic block is connected to an outgoing and an ingoing bundle.
These bundles are useful for identifying regions of the CFG for live range
splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122301 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
b907e8a2d40dc546f21ff7e122a80b121653851a 21-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use IntEqClasses to compute connected components of live intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122296 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
025cc6e1be4cc3d780f10bb9ec92eba831a45f79 20-Dec-2010 Dale Johannesen <dalej@apple.com> Cosmetic changes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122259 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2100d21f39a9471254564e359ab8c5901c7aecff 20-Dec-2010 Cameron Zwarich <zwarich@apple.com> MachineVerifier should count landing pad successors as basic blocks rather than
out-edges. Fixes PR8824.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122228 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
0b13d7db281d1c64194269822713ae30a1f921d5 20-Dec-2010 Cameron Zwarich <zwarich@apple.com> Teach MachineVerifier that early clobber defs begin at USE slots and other defs
begin at DEF slots. Fixes the second half of PR8813.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122225 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
5e61f9916eb1e97cf4d696cdc416ad1314ad7138 20-Dec-2010 Cameron Zwarich <zwarich@apple.com> Add a missing check from r122218.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122224 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
5c3d4f0fc90c86a6c4ee9871835d70c9ff3833d5 20-Dec-2010 Chris Lattner <sabre@nondot.org> implement type legalization promotion support for SMULO and UMULO, giving
ARM (and other 32-bit-only) targets support for i8 and i16 overflow
multiplies. The generated code isn't great, but this at least fixes
CodeGen/Generic/overflow.ll when running on ARM hosts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122221 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
636f15ff04c9188ea3bf91477fda1cc29f2c4a61 20-Dec-2010 Cameron Zwarich <zwarich@apple.com> Don't assume that an instruction ending a register's live range always reads
the register; it may be a dead def instead. Fixes PR8820.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122218 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
37944985a569f8c2b0d75dafd9e2739a9887ac5d 20-Dec-2010 Chris Lattner <sabre@nondot.org> Fix a bug in the scheduler's handling of "unspillable" vregs.
Imagine we see:

EFLAGS = inst1
EFLAGS = inst2 FLAGS
gpr = inst3 EFLAGS

Previously, we would refuse to schedule inst2 because it clobbers
the EFLAGS of the predecessor. However, it also uses the EFLAGS
of the predecessor, so it is safe to emit. SDep edges ensure that
the right order happens already anyway.

This fixes 2 testsuite crashes with the X86 patch I'm going to
commit next.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122211 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
142d21c861c0b686e38a515b1271f4157cd24004 20-Dec-2010 Chris Lattner <sabre@nondot.org> the result of CheckForLiveRegDef is dead, remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122209 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
5078293cc28dd03236384fa0a3b6c8347e0701fb 20-Dec-2010 Chris Lattner <sabre@nondot.org> reduce indentation, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122208 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
8ec88ba58866a840a27ab5172fd2b954780b52f3 20-Dec-2010 Cameron Zwarich <zwarich@apple.com> Ignore debug values when performing MachineVerifier liveness checks. Fixes
PR8822.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122207 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
1b031ddedec2901ef01f103512b1d79f63a1bb85 20-Dec-2010 Cameron Zwarich <zwarich@apple.com> Early clobber operands are allowed to be defined at use indices. This fixes one
half of PR8813.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122205 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
fb69f6037d1b79f83c895ed62dc3247e02bd2b5b 19-Dec-2010 Cameron Zwarich <zwarich@apple.com> Fix PR8815 by checking for an explicit clobber def tied to a use operand in
ConnectedVNInfoEqClasses::Classify().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122202 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
22d67cf6ac84c06867681a2fe72f78d5d2b9444d 19-Dec-2010 Cameron Zwarich <zwarich@apple.com> Fix PR8811 by teaching MachineVerifier about optional defs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122199 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
c44270dd6f53e6db36a2614a57a23c9c6fe3137b 19-Dec-2010 Cameron Zwarich <zwarich@apple.com> StrongPHIElimination will never run before TwoAddressInstructionPass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122197 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
476b242fe7a61e5f9ac6214b0bc5c680d24f152e 19-Dec-2010 Nick Lewycky <nicholas@mxc.ca> Add missing standard headers. Patch by Joerg Sonnenberger!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122193 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
electionDAG/TargetLowering.cpp
da60588402e8913f5b7ec40945d4170d0c4ffaf5 19-Dec-2010 Chris Lattner <sabre@nondot.org> teach MaskedValueIsZero how to analyze ADDE. This is
enough to teach it that ADDE(0,0) is known 0 except the
low bit, for example.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122191 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d959da92a5a479c7f8f4ccbf7a7e3fb87f9fda0c 19-Dec-2010 Cameron Zwarich <zwarich@apple.com> Remove some checks for StrongPHIElim. These checks make it impossible to use an
alternative register allocator that does not require LiveIntervals by specifying
it on the command-line for a target that has StrongPHIElimination enabled by
default.

These checks are pretty meaningless anyways, since StrongPHIElimination and
PHIElimination are never used at the same time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122176 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
96ba57fddac5999ef6d4009d8baef24607da6221 19-Dec-2010 Chris Lattner <sabre@nondot.org> fix PR8642: if a critical edge has a PHI value that can trap,
isel is *required* to split the edge. PHI values get evaluated
on the edge, not in their predecessor block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122170 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
390482569c2446a05518034c891fcfb378079a80 18-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Apparently, operandices is not a word.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122135 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
83d1ba572815c92a74817cc68e2bb48c59a87b5d 18-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach the inline spiller to attempt folding a load instruction into its single
use before rematerializing the load.

This allows us to produce:

addps LCPI0_1(%rip), %xmm2

Instead of:

movaps LCPI0_1(%rip), %xmm3
addps %xmm3, %xmm2

Saving a register and an instruction. The standard spiller already knows how to
do this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122133 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.h
87c6d25c71b028695641642d86d0cf4a3ff22096 18-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Tweak debug spew.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122132 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
dfe3b6d2a9a452f2fd748416cd8e4c2583e0e8c5 18-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Check that the register is live-in to the loop header before inserting copies in
the loop predecessors.

The register can be live-out from a predecessor without being live-in to the
loop header if there is a critical edge from the predecessor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122123 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
bb1744ec1531fff3fd22fdfcd65f0f72d99c4fa5 18-Dec-2010 Nick Lewycky <nicholas@mxc.ca> Fix GCC warning:
lib/CodeGen/RegAllocGreedy.cpp:311: error: unused variable 'PhysReg' [-Wunused-variable]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122122 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
89cab93fe999f6d81b4b99a71ac797b7ecfec277 18-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Pass a Banner argument to the machine code verifier both from
createMachineVerifierPass and MachineFunction::verify.

The banner is printed before the machine code dump, just like the printer pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122113 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
LVMTargetMachine.cpp
achineVerifier.cpp
egAllocBasic.cpp
egAllocGreedy.cpp
8d121404370cd57be7e72543127a1afe2faa1b10 18-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid dereferencing end() in collectInterferingVRegs() when there is no
interference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122108 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
af24964251e27c2dd863239ba66ffd967b593be5 18-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make the -verify-regalloc command line option available to base classes as
RegAllocBase::VerifyEnabled.

Run the machine code verifier in a few interesting places during RegAllocGreedy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122107 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
f428eb6c1b09a2322b7a577b0bf2e49dd107bcea 18-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable loop splitting in RegAllocGreedy.

The heuristics split around the largest loop where the current register may be
allocated without interference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122106 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
976ef86689ed065361a748f81c44ca3510af2202 18-Dec-2010 Bill Wendling <isanbard@gmail.com> During local stack slot allocation, the materializeFrameBaseRegister function
may be called. If the entry block is empty, the insertion point iterator will be
the "end()" value. Calling ->getParent() on it (among others) causes problems.

Modify materializeFrameBaseRegister to take the machine basic block and insert
the frame base register at the beginning of that block. (It's very similar to
what the code does all ready. The only difference is that it will always insert
at the beginning of the entry block instead of after a previous materialization
of the frame base register. I doubt that that matters here.)

<rdar://problem/8782198>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122104 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
d727343a407bd3056f93e96c60eee72725d458c8 18-Dec-2010 Bob Wilson <bob.wilson@apple.com> Fix a DAGCombiner crash when folding binary vector operations with constant
BUILD_VECTOR operands where the element type is not legal. I had previously
changed this code to insert TRUNCATE operations, but that was just wrong.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122102 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f5daf8bb7ff9539f7a6e0113609b39e4b9b64ff5 17-Dec-2010 Dale Johannesen <dalej@apple.com> Add a transform to DAG Combiner. This improves the
code for the case where 32-bit divide by constant is
turned into 64-bit multiply by constant. 8771012.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122090 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2f3a4aa550f8f196a546f7957b2df944e04404a2 17-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow missing kill flags on an untied operand of a two-address instruction when
the operand uses the same register as a tied operand:

%r1 = add %r1, %r1

If add were a three-address instruction, kill flags would be required on at
least one of the uses. Since it is a two-address instruction, the tied use
operand must not have a kill flag.

This change makes the kill flag on the untied use operand optional.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122082 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
090100fdb166e87bc539e3e4048d18c721c187d0 17-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineLoopRange comparators for sorting loop lists by number and by area.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122073 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopRanges.cpp
ff2e9b4225ab55ee049b33158a9cce1ef138c2f7 17-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Provide LiveIntervalUnion::Query::checkLoopInterference.

This is a three-way interval list intersection between a virtual register, a
live interval union, and a loop. It will be used to identify interference-free
loops for live range splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122034 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
achineLoopRanges.cpp
495de3b783c239b4b3244a1e739b2a5b82561b1b 17-Dec-2010 Bob Wilson <bob.wilson@apple.com> Fix crash compiling a QQQQ REG_SEQUENCE for a Neon vld3_lane operation.
Radar 8776599

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122018 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
woAddressInstructionPass.cpp
c7c5e781a306efc62f86d88dc3b3d44057310c13 17-Dec-2010 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122016 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
745dacc91d7ee9531bfba76b21beb5d4eef93a7d 16-Dec-2010 Daniel Dunbar <daniel@zuster.org> MC: Make TargetAsmBackend available to the AsmStreamer.
- Treaty talks on the non-proliferation of MC objects broke down.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121949 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
d0bb5e2ca05d9c942223bf05e5940bb0c6cc9d3f 16-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Start using SplitKit and MachineLoopRanges in RegAllocGreedy in preparation of
live range splitting around loops guided by register pressure.

So far, trySplit() simply prints a lot of debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121918 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
egAllocGreedy.cpp
ceadc01e9101329cd820ee687f85c012e9609ab1 16-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineLoopRanges analysis.

A MachineLoopRange contains the intervals of slot indexes covered by the blocks
in a loop. This representation of the loop blocks is more efficient to compare
against interfering registers during register coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121917 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
achineLoopRanges.cpp
a63cde26ff698284ecdbec357966ca9d69e1d83a 15-Dec-2010 Evan Cheng <evan.cheng@apple.com> Teach machine cse to commute instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121903 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
5034dd318a9dfa0dc45a3ac01e58e60f2aa2498d 15-Dec-2010 Dan Gohman <gohman@apple.com> Move Value::getUnderlyingObject to be a standalone
function so that it can live in Analysis instead of
VMCore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121885 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
6203295473f158bff892ae6659cb8f7fdb0a47b2 15-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121872 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
697483addf056595c997302f1316cc59244eefaa 15-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Detect and enumerate bypass loops.

Bypass loops have the current live range live through, but contain no uses or
defs. Splitting around a bypass loop can free registers for other uses inside
the loop by spilling the split range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121871 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
521a453721aeefbb6783b6acc8ea36b3c18b4931 15-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Separate SplitAnalysis::getSplitLoops().

This method returns the set of loops with uses that are candidates for
splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121870 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
33e77d3cb98de64b8657c011b549bdb54abf73fc 15-Dec-2010 Chris Lattner <sabre@nondot.org> take care of some todos, transforming [us]mul_lohi into
a wider mul if the wider mul is legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121848 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1a0fbe2cf438ac2788df669284293789681424e1 15-Dec-2010 Chris Lattner <sabre@nondot.org> when transforming a MULHS into a wider MUL, there is no need to SRA the
result, the top bits are truncated off anyway, just use SRL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121846 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
257c556d85ba949a1ccff99cd7d1e58417aa6e33 15-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify RegAllocGreedy's use of register aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121807 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
eb7464ebdad70ab5f24b747cea453051cf21a0f8 15-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify CCState's use of register aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121806 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
597faa8f1fd208d6ed99d1771293d77ac486f092 15-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify AggressiveAntiDepBreaker's use of register aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121805 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
16999da951677a94a2f30d98c8126ff175f457e1 15-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplyfy RegAllocBasic by using getOverlaps instead of getAliasSet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121801 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
bbc726d6240f1d8480b312832eba5f7dd914fa4d 14-Dec-2010 Evan Cheng <evan.cheng@apple.com> Fix a minor bug in two-address pass. It was missing a commute opportunity.
regB = move RCX
regA = op regB, regC
RAX = move regA
where both regB and regC are killed. If regB is constrainted to non-compatible
physical registers but regC is not constrainted at all, then it's better to
commute the instruction.
movl %edi, %eax
shlq $32, %rcx
leaq (%rcx,%rax), %rax
=>
movl %edi, %eax
shlq $32, %rcx
orq %rcx, %rax
rdar://8762995


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121793 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
3ef9f3da397d27e2340742274a7f6e8b8f1149cf 14-Dec-2010 Matt Beaumont-Gay <matthewbg@google.com> Move debugging code entirely within DEBUG(). Silences an unused variable
warning in the opt build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121791 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
bfce678de7b509a497ac6d91f29e749adab7e40c 14-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add LiveIntervalUnion print methods, RegAllocGreedy::trySplit debug spew.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121783 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocGreedy.cpp
4a84cce3ed0008baf72ccc6831a046215addd2d7 14-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use TRI::printReg instead of AbstractRegisterDescription when printing
LiveIntervalUnions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121781 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBasic.cpp
d84de8cf62991597c15e948ecb121ad0233ba4ec 14-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Q.seenAllInterferences() must be called after Q.collectInterferingVRegs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121774 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
885b3283eacb01bf281245ed0c19ae8ccca1fc8a 14-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unused vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121741 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
46c83c80c5737743c955ff007fa6409804a7abf0 14-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Try reassigning all virtual register interferences, not just those with lower
spill weight. Filter out fixed registers instead.

Add support for reassigning an interference that was assigned to an alias.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121737 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
b64d92e29f38002e52a22fe36ea2d488968e3537 14-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add stub for RAGreedy::trySplit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121736 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
de1c3605a649239cf8a96ba31885c8fbef2bc838 13-Dec-2010 Chris Lattner <sabre@nondot.org> Add a couple dag combines to transform mulhi/mullo into a wider multiply
when the wider type is legal. This allows us to compile:

define zeroext i16 @test1(i16 zeroext %x) nounwind {
entry:
%div = udiv i16 %x, 33
ret i16 %div
}

into:

test1: # @test1
movzwl 4(%esp), %eax
imull $63551, %eax, %eax # imm = 0xF83F
shrl $21, %eax
ret

instead of:

test1: # @test1
movw $-1985, %ax # imm = 0xFFFFFFFFFFFFF83F
mulw 4(%esp)
andl $65504, %edx # imm = 0xFFE0
movl %edx, %eax
shrl $5, %eax
ret

Implementing rdar://8760399 and example #4 from:
http://blog.regehr.org/archives/320

We should implement the same thing for [su]mul_hilo, but I don't
have immediate plans to do this.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
11ae9e29a98595c1899047a64f621fbe46ce7015 13-Dec-2010 Chris Lattner <sabre@nondot.org> remove the verbose-asm "constant pool double" comments that we were printing
for each constant pool entry. Using WriteTypeSymbolic here takes time
proportional to the size of the module, for each constant pool entry.

This speeds up -verbose-asm llc on 252.eon (a random testcase at my disposal)
from 4.4s to 2.137s. llc takes 2.11s with asm-verbose off, so this is now a
pretty reasonable cost for verbose comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121691 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d5b4db982478e349a8c8759da182636b888b875f 13-Dec-2010 Chris Lattner <sabre@nondot.org> reduce indentation by using continue, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121662 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a30b7d2c707b5720691f7aea0652e37bd333d3af 12-Dec-2010 Duncan Sands <baldrick@free.fr> Catch attempts to remove a deleted node from the CSE maps. Better to
catch this here rather than later after accessing uninitialized memory
etc. Fires when compiling the testcase in PR8237.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
533f58ecdd8a4732c2f0e149387c4d8d8d4142de 11-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add named timer groups for the different stages of register allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121604 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
4680dec5fb3a1b624f13ca9b2a555ca90a07973e 11-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Move MRI into RegAllocBase. Clean up debug output a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121599 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
a0bb037283341912c680cc9a82f3586c763345f9 11-Dec-2010 Nick Lewycky <nicholas@mxc.ca> Remove extraneous close parenthesis.
Fix build breakage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121596 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
5a4308bca86728767ea5d9e5df8d8e3351e33c9a 11-Dec-2010 Nick Lewycky <nicholas@mxc.ca> Move variable that's unused in an NDEBUG build inside the DEBUG() macro, fixing
lib/CodeGen/RegAllocGreedy.cpp:233: error: unused variable 'TRC' [-Wunused-variable]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121594 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
f6dff84d4e44d6c4a46c4f8a18e13c78f804547c 10-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Force the greedy register allocator to always use the inline spiller.

Soon, RegAllocGreedy will start splitting live ranges, and then deferred
spilling won't work anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121591 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
piller.cpp
piller.h
3bda29eb4f111015974d3f07675a26ec980e4a45 10-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Rip out live range splitting support from the inline spiller.

The spiller should only spill. The register allocator will drive live range
splitting, it has the needed information about register pressure and
interferences.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121590 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
dd479e9769eceee9fcc34e2173376024f3aa3c5f 10-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use AllocationOrder in RegAllocGreedy, fix a bug in the hint calculation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121584 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.cpp
egAllocGreedy.cpp
6ce219ec64088fc4ee550afbb6cd30621fbba27e 10-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix miscompilation caused by trivial logic error in the reassignVReg()
interference check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121519 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
c9672cb8bea13fcbcbdb1cf26708d831c034c089 10-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an AllocationOrder class that can iterate over the allocatable physical
registers for a given virtual register.

Reserved registers are filtered from the allocation order, and any valid hint is
returned as the first suggestion.

For target dependent hints, a number of arcane target hooks are invoked.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121497 91177308-0d34-0410-b5e6-96231b3b80d8
llocationOrder.cpp
llocationOrder.h
MakeLists.txt
irtRegMap.h
89b9372605db2ce3b0085c84089e389f7bc1fbdd 10-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Fixed version of 121434 with no new memory leaks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121471 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
achineModuleInfo.cpp
argetLoweringObjectFileImpl.cpp
f7fd4aa2610f46467369de07f3ec669561d79be0 10-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Revert my previous patch to make the valgrind bots happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121461 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
achineModuleInfo.cpp
argetLoweringObjectFileImpl.cpp
1c952b9cc98e84b28f68f0f6cf11197263f89863 10-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Initial support for the cfi directives. This is just enough to get

f:
.cfi_startproc
nop
.cfi_endproc

assembled (on ELF).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121434 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
achineModuleInfo.cpp
argetLoweringObjectFileImpl.cpp
a304d02791b3e0297a9d545e0c602c9f916691f9 09-Dec-2010 Stuart Hastings <stuart@apple.com> Initial support for nested CALLSEQ_START/CALLSEQ_END constructs in LegalizeDAG.
Necessary for byval support on ARM. Radar 7662569.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121412 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ff092faffb85410b0013fb70bc991bb98b5663a5 09-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to filter out reserved rergisters from the allocation order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121411 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
a0382c629093a2edd175dc256750667c296d3a43 09-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a forgotten initializer for CheckedFirstInterference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121410 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
b853e6c3702149cdbbd6fa404334e3ba0055641a 09-Dec-2010 Andrew Trick <atrick@apple.com> Added register reassignment prototype to RAGreedy. It's a simple
heuristic to reshuffle register assignments when we can't find an
available reg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121388 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
503a64dcd47e6ed9216a75ac68299a2f081b313c 09-Dec-2010 Eric Christopher <echristo@apple.com> 80-col fixups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a35cce1a14d8eee7e250e02b03903a5096d22c2f 09-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> IntervalMap iterators are heavyweight, so avoid copying them around and use
references instead.

Similarly, IntervalMap::begin() is almost as expensive as find(), so use find(x)
instead of begin().advanceTo(x);

This makes RegAllocBasic run another 5% faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121344 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
d639c7cab42f8919b2d9f5ab169203bf8bc45f10 09-Dec-2010 Devang Patel <dpatel@apple.com> DW_FORM_data1 may not provide sufficient room for vtable index, use _udata instead.
This fixes radar 8730409.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121323 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9b0c4f8af3e303c85ddb5ff0ee2c8e27a4d77203 09-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly deal with empty intervals when checking for interference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121319 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
egAllocGreedy.cpp
90c1d7ddfc65654f7efe72d56cad65d1af9e6b2a 08-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement very primitive hinting support in RegAllocGreedy.

The hint is simply tried first and then forgotten if it couldn't be allocated
immediately.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121306 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
d0bec3e62c98b1f0ef3a41db8f95599b2014c131 08-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Store (priority,regnum) pairs in the priority queue instead of providing an
abstract priority queue interface in subclasses that want to override the
priority calculations.

Subclasses must provide a getPriority() implementation instead.

This approach requires less code as long as priorities are expressable as simple
floats, and it avoids the dangers of defining potentially expensive priority
comparison functions.

It also should speed up priority_queue operations since they no longer have to
chase pointers when comparing registers. This is not measurable, though.

Preferably, we shouldn't use floats to guide code generation. The use of floats
here is derived from the use of floats for spill weights. Spill weights have a
dynamic range that doesn't lend itself easily to a fixpoint implementation.

When someone invents a stable spill weight representation, it can be reused for
allocation priorities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121294 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
egAllocBasic.cpp
egAllocGreedy.cpp
bece04845e6746fd162bc36e79a6cfd095165c23 08-Dec-2010 Eric Christopher <echristo@apple.com> Reword comment slightly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121293 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
f299da8ec3fee88a1b275560a7f94be4cf10d089 08-Dec-2010 Eric Christopher <echristo@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121285 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
753936602ef6c5e97aba29e89606087b51a6c886 08-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Trim includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121283 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocGreedy.cpp
6b1207267f01877ff9b351786c902cb2ecd354c0 08-Dec-2010 Andrew Trick <atrick@apple.com> Generalize PostRAHazardRecognizer so it can be used in any pass for
both forward and backward scheduling. Rename it to
ScoreboardHazardRecognizer (Scoreboard is one word). Remove integer
division from the scoreboard's critical path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121274 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
ostRAHazardRecognizer.cpp
coreboardHazardRecognizer.cpp
argetInstrInfoImpl.cpp
cba2e06d525b723849cd8e1f083eb1e59a494b4e 08-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Stub out RegAllocGreedy.

This new register allocator is initially identical to RegAllocBasic, but it will
receive all of the tricks that RegAllocBasic won't get.

RegAllocGreedy will eventually replace linear scan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121234 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
egAllocGreedy.cpp
1b19dc1d8b7594434ea9a157bfe2ae68eabf9f05 08-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Move RABasic::addMBBLiveIns to the base class, it is generally useful.

Minor optimization to the use of IntervalMap iterators. They are fairly
heavyweight, so prefer SI.valid() over SI != end().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121217 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
953af2c3c560a13bd5eeb676c128b7e362dca684 08-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch LiveIntervalUnion from std::set to IntervalMap.

This speeds up RegAllocBasic by 20%, not counting releaseMemory which becomes
way faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121201 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
2b38c51f0ece16ef00068da56bee4623fb9ae485 07-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121162 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
40f8f6264d5af2c38e797e0dc59827cd231e8ff7 07-Dec-2010 Jay Foad <jay.foad@gmail.com> PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() and
zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method
trunc(), to be const and to return a new value instead of modifying the
object in place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121120 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
1fe045279b10550f06fd755c1aa6377e67ff0473 07-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unused member.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121098 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
b7313e274c0b26879b45023a85a3c8a4b5ac5c92 06-Dec-2010 Devang Patel <dpatel@apple.com> Undefined value in reg 0 may need a marker to identify end of source range.
This will be used to truncate live range of DBG_VALUE instruction by register allocator and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121061 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
afeaae7a940ce16e7874af31f3e5e91d8ca89e19 06-Dec-2010 Devang Patel <dpatel@apple.com> If dbg_declare() or dbg_value() is not lowered by isel then emit DEBUG message instead of creating DBG_VALUE for undefined value in reg0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121059 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
0bbe0b440ee2cef47dcb7b281825eb70341c16dd 06-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Second try at making direct object emission produce the same results
as llc + llvm-mc. This time ELF is not changed and I tested that llvm-gcc
bootstrap on darwin10 using darwin9's assembler and linker.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121006 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
6d86492f5ed0f9853ddd3b24e1aa037e305e1784 06-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Revert previous two patches while I try to find out how to make both
linux and darwin assemblers happy :-(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121004 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
2303c9dd69476d045af7cee94e112dd77d22fd28 06-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Add an EmitAbsValue helper method and use it in cases where we want to be sure
that no relocations are used (on MochO).
Fixes llc producing different output from llc + llvm-mc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121000 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
9eaf49b320e7725fbf4e24721d91a69a6d36938f 05-Dec-2010 Cameron Zwarich <zwarich@apple.com> Some cleanup before I start committing some incremental progress on
StrongPHIElimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120961 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0a3fdd6e11cd351737b4451c05ec5d794e6855cf 05-Dec-2010 Cameron Zwarich <zwarich@apple.com> Remove the PHIElimination.h header, as it is no longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120959 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
120188605fd1e3228c65daf2c5cd6c7a62d6a335 05-Dec-2010 Cameron Zwarich <zwarich@apple.com> I forgot to actually remove the FindCopyInsertPoint() declaration from
PHIElimination.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120953 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.h
2225dd81e91a24a8d61cac935dee237c7d5da2ed 05-Dec-2010 Cameron Zwarich <zwarich@apple.com> Remove the SplitCriticalEdge() method declaration from PHIElimination.h. At one
time, this method existed, but now PHIElimination uses the method of the same
name on MachineBasicBlock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120952 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.h
a474685d069a900ab931ee1540c9a79fdd6607a9 05-Dec-2010 Cameron Zwarich <zwarich@apple.com> Move the FindCopyInsertPoint method of PHIElimination to a new standalone
function so that it can be shared with StrongPHIElimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120951 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
HIElimination.cpp
HIEliminationUtils.cpp
HIEliminationUtils.h
2a7942926b753d185cb23ee29a91f2863eda4778 04-Dec-2010 Cameron Zwarich <zwarich@apple.com> Remove PHIElimination's private copy of SkipPHIsAndLabels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120918 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
3069cbf7b3ef9a31bbb8e434686b7259052c364a 04-Dec-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove unneeded zero arrays.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120910 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
6ed4c6af97db8b2bbfd6b54dd2a58f16cf0c592b 03-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename virtRegMap to avoid confusion with the VirtRegMap that it isn't.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120846 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
5daec2215bdb6f484956362d81e5923bb2bffd58 03-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Coalesce debug locations when possible, causing less DBG_VALUE instructions to
be emitted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120845 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
42acf069c9e46395a2fa230ed6b89b402828e3d5 03-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Emit DBG_VALUE instructions from LiveDebugVariables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120842 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
iveDebugVariables.h
egAllocLinearScan.cpp
8d2584a1d9ab56d35884d035e4da6146b4d7391f 03-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Also update virtRegMap when renaming virtual registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120841 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
68be956fff5db5152f5b0ec7e94c42b14e92a3e8 03-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete the StrongPHIElimination pass, leaving only a shell.

The StrongPHIElimination pass did not work, and nobody has worked on it for two
years.

A rewrite is underway, so I am leaving this shell pass instead of deleting it
completely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120830 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
30e2128a731e5a0bcac45a6a79a03bdedce68a0a 02-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Update LiveDebugVariables during coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120720 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
iveDebugVariables.h
impleRegisterCoalescing.cpp
0613516b16466a92c68d60734801221506c85e86 02-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement the first half of LiveDebugVariables.

Scan the MachineFunction for DBG_VALUE instructions, and replace them with a
data structure similar to LiveIntervals. The live range of a DBG_VALUE is
determined by propagating it down the dominator tree until a new DBG_VALUE is
found. When a DBG_VALUE lives in a register, its live range is confined to the
live range of the register's value.

LiveDebugVariables runs before coalescing, so DBG_VALUEs are not artificially
extended when registers are joined.

The missing half will recreate DBG_VALUE instructions from the intervals when
register allocation is complete.

The pass is disabled by default. It can be enabled with the temporary command
line option -live-debug-variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120636 91177308-0d34-0410-b5e6-96231b3b80d8
iveDebugVariables.cpp
iveDebugVariables.h
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
7a874ddda037349184fbeb22838cc11a1a9bb78f 01-Dec-2010 Jay Foad <jay.foad@gmail.com> PR5207: Rename overloaded APInt methods set(), clear(), flip() to
setAllBits(), setBit(unsigned), etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120564 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
34fff59caddd8cb4f25730360b6dceadca710275 01-Dec-2010 Andrew Trick <atrick@apple.com> Comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120504 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
3d2125c9dbac695c93f42c0f59fd040e413fd711 01-Dec-2010 Evan Cheng <evan.cheng@apple.com> Enable sibling call optimization of libcalls which are expanded during
legalization time. Since at legalization time there is no mapping from
SDNode back to the corresponding LLVM instruction and the return
SDNode is target specific, this requires a target hook to check for
eligibility. Only x86 and ARM support this form of sibcall optimization
right now.
rdar://8707777


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120501 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/LegalizeDAG.cpp
18c57a8a09a7c79fbcf4348b0ad8135246ab984f 01-Dec-2010 Andrew Trick <atrick@apple.com> Coding style. No significant functionality. Abandon linear scan style
in favor of the widespread llvm style. Capitalize variables and add
newlines for visual parsing. Rename variables for readability.
And other cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120490 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
de189be53f5831737f38e720f10dbcdcce6876c6 30-Nov-2010 Chris Lattner <sabre@nondot.org> add TLI support indicating that jumps are more expensive than logical operations
and use this to disable a specific optimization. Patch by Micah Villmow!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120435 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
a99793c5ea24dd3839f4925b89b1f6acfcb24604 30-Nov-2010 Jay Foad <jay.foad@gmail.com> PR5207: Make APInt::set(), APInt::clear() and APInt::flip() return void.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120413 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
bb7b23f5b79a7ca2aa62faa1a6078428af597234 30-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Stub out a new LiveDebugVariables pass.

This analysis is going to run immediately after LiveIntervals. It will stay
alive during register allocation and keep track of user variables mentioned in
DBG_VALUE instructions.

When the register allocator is moving values between registers and the stack, it
is very hard to keep track of DBG_VALUE instructions. We usually get it wrong.
This analysis maintains a data structure that makes it easy to update DBG_VALUE
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120385 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
iveDebugVariables.cpp
iveDebugVariables.h
1f6efa3996dd1929fbc129203ce5009b620e6969 29-Nov-2010 Michael J. Spencer <bigcheesegs@gmail.com> Merge System into Support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
LF.h
seudoSourceValue.cpp
electionDAG/SDNodeDbgValue.h
electionDAG/SelectionDAG.cpp
bebfbc560bba894c8d0aa0e8b6ee109fda2d1b0c 28-Nov-2010 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120235 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
94c5ae08750f314bc3cf1bf882b686244a3927d9 28-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> Move more PEI-related hooks to TFI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120229 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
cd775ceff0b25a0b026f643a7990c2924bd310a3 28-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> Move callee-saved regs spills / reloads to TFI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120228 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c62feda741f9d5811b625967c40f1847fb2040e7 25-Nov-2010 Benjamin Kramer <benny.kra@googlemail.com> Namespacify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120146 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
bf17cfa3f904e488e898ac2e3af706fd1a892f08 23-Nov-2010 Wesley Peck <peckw@wesleypeck.com> Renaming ISD::BIT_CONVERT to ISD::BITCAST to better reflect the LLVM IR concept.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
ce750f03322fe29ced3aca0718424fe173f22298 22-Nov-2010 Benjamin Kramer <benny.kra@googlemail.com> Implement the "if (X == 6 || X == 4)" -> "if ((X|2) == 6)" optimization.

This currently only catches the most basic case, a two-case switch, but can be
extended later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
82f58740c76b42af8370247b23677a0318f6dde8 20-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> Move some more hooks to TargetFrameInfo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119904 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
CStrategy.cpp
3ca136312abe3c41f3422e9de280b7be0dc65362 20-Nov-2010 Benjamin Kramer <benny.kra@googlemail.com> Silence Release build warnings about unused functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119903 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
59d2dad59ebba1d82e5b72f78b7a5b2c873445d7 20-Nov-2010 Duncan Sands <baldrick@free.fr> On X86, MEMBARRIER, MFENCE, SFENCE, LFENCE are not target memory intrinsics,
so don't claim they are. They are allocated using DAG.getNode, so attempts
to access MemSDNode fields results in reading off the end of the allocated
memory. This fixes crashes with "llc -debug" due to debug code trying to
print MemSDNode fields for these barrier nodes (since the crashes are not
deterministic, use valgrind to see this). Add some nasty checking to try
to catch this kind of thing in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119901 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b9e6fe1e3afe3c4cdbdddfb563adc10c439dc296 20-Nov-2010 Andrew Trick <atrick@apple.com> Removing the useless test that I added recently. It was meant as an example, but not complicated enough to merit another test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119898 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
316df4bfe3db625a4394ff018c51d61f223aad86 20-Nov-2010 Andrew Trick <atrick@apple.com> RABasic fix. Regalloc is responsible for updating block live ins.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119896 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
13bdbb0544900643b4520f67cc48c6046c515c65 20-Nov-2010 Andrew Trick <atrick@apple.com> Whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119895 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
04d14ff349d5d807afbc4777d85ae1eaa7e4c8f7 20-Nov-2010 Bill Wendling <isanbard@gmail.com> Check for _setjmp too, because it's also used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119875 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cab98e3168558a40675a06bc830eb87b8e40070e 19-Nov-2010 Mon P Wang <wangmp@apple.com> Make isScalarToVector to return false if the node is a scalar. This will prevent
DAGCombine from making an illegal transformation of bitcast of a scalar to a
vector into a scalar_to_vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119819 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e7fbdcdfc6b5e562d2741cceec8aee1bd3dd1c2d 19-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't attempt trivial coalescing for sub-register copies.

Patch by Krister Wombell!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119791 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
195a0ce484cd12a5adae9184188f6d0fb52b84c0 19-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Change some methods in MCDwarf.cpp to be able to handle an arbitrary
MCStreamer instead of just MCObjectStreamer. Address changes cannot
be as efficient as we have to use DW_LNE_set_addres, but at least
most of the logic is shared.

This will be used so that, with CodeGen still using EmitDwarfLocDirective,
llvm-gcc is able to produce debug_line sections without needing an
assembler that supports .loc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119777 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
d9e3385ced2dc887e2fe8e1c071bd2611e4d3ede 19-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> Move getInitialFrameState() to TargetFrameInfo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119754 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
d0c38176690e9602a93a20a43f1bd084564a8116 18-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> Move hasFP() and few related hooks to TargetFrameInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119740 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
b9064bb96458ab48a878e1a7e678cada2e22ab7a 18-Nov-2010 Duncan Sands <baldrick@free.fr> Fix thinko: we must turn select(anyext, sext) into sext(select)
not anyext(select). Spotted by Frits van Bommel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119739 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
dcfd3a798ffbd5e02d4892eeef562c9124598844 18-Nov-2010 Duncan Sands <baldrick@free.fr> The DAGCombiner was threading select over pairs of extending loads even
if the extension types were not the same. The result was that if you
fed a select with sext and zext loads, as in the testcase, then it
would get turned into a zext (or sext) of the select, which is wrong
in the cases when it should have been an sext (resp. zext). Reported
and diagnosed by Sebastien Deldon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119728 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bd77d399c4cdc2440abde96b2861b149fae4f33e 18-Nov-2010 Dan Gohman <gohman@apple.com> Oops, missed this file when remaing ExpandPseudos to ExpandISelPseudos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119717 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
8ec9d62380f7139c7c85bae9609e8e93d2799500 18-Nov-2010 Dan Gohman <gohman@apple.com> Rename ExpandPseudos to ExpandISelPseudos to help clarify its role.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119716 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
xpandISelPseudos.cpp
xpandPseudos.cpp
4229c62dcfb6a02d5d93ca9f022910dced77dcb0 18-Nov-2010 Dan Gohman <gohman@apple.com> Fix typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119712 91177308-0d34-0410-b5e6-96231b3b80d8
xpandPseudos.cpp
409d64a7645ed94a1a23f6c3e03d46cb6d24b382 18-Nov-2010 Dan Gohman <gohman@apple.com> ExpandPseudos doesn't have any dependencies, so it can use the
simple form of INITIALIZE_PASS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119707 91177308-0d34-0410-b5e6-96231b3b80d8
xpandPseudos.cpp
5c0556341e29246e697c73844a5f9b1e14474715 18-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Change CodeGen to use .loc directives. This produces a lot more readable output
and testing is easier. A good example is the unknown-location.ll test that
now can just look for ".loc 1 0 0". We also don't use a DW_LNE_set_address for
every address change anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119613 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
b4ac2858dad1f6e892c8bfe981a6cf32e9a385f8 18-Nov-2010 Dale Johannesen <dalej@apple.com> Do not throw away alignment when generating the DAG for
memset; we may need it to decide between MOVAPS and MOVUPS
later. Adjust a test that was looking for wrong code.
PR 3866 / 8675131.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7730318000e8b1b0779eb773c87e29eb9f24d930 18-Nov-2010 John Thompson <John.Thompson.JTSoftware@gmail.com> Bug 8621 fix - pointer cast stripped from inline asm constraint argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119590 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c4af4638dfdab0dc3b6257276cfad2ee45053060 17-Nov-2010 Evan Cheng <evan.cheng@apple.com> Remove ARM isel hacks that fold large immediates into a pair of add, sub, and,
and xor. The 32-bit move immediates can be hoisted out of loops by machine
LICM but the isel hacks were preventing them.

Instead, let peephole optimization pass recognize registers that are defined by
immediates and the ARM target hook will fold the immediates in.

Other changes include 1) do not fold and / xor into cmp to isel TST / TEQ
instructions if there are multiple uses. This happens when the 'and' is live
out, machine sink would have sinked the computation and that ends up pessimizing
code. The peephole pass would recognize situations where the 'and' can be
toggled to define CPSR and eliminate the comparison anyway.

2) Move peephole pass to after machine LICM, sink, and CSE to avoid blocking
important optimizations.

rdar://8663787, rdar://8241368


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119548 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
eepholeOptimizer.cpp
ce1b9ad539e67c6d05cc6b47ca5f6e62a6d91eff 17-Nov-2010 Chris Lattner <sabre@nondot.org> With the newly simplified SourceMgr interfaces and the generalized
SrcMgrDiagHandler, we can improve clang diagnostics for inline asm:
instead of reporting them on a source line of the original line,
we can report it on the correct line wherever the string literal came
from. For something like this:

void foo() {
asm("push %rax\n"
".code32\n");
}

we used to get this: (note that the line in t.c isn't helpful)

t.c:4:7: error: warning: ignoring directive for now
asm("push %rax\n"
^
<inline asm>:2:1: note: instantiated into assembly here
.code32
^

now we get:

t.c:5:8: error: warning: ignoring directive for now
".code32\n"
^
<inline asm>:2:1: note: instantiated into assembly here
.code32
^

Note that we're pointing to line 5 properly now.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119488 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
4afa12890f679034e9741a687a6ce33f2846f129 17-Nov-2010 Chris Lattner <sabre@nondot.org> now that AsmPrinter::EmitInlineAsm is factored right, we can eliminate the
cookie argument to the SourceMgr diagnostic stuff. This cleanly separates
LLVMContext's inlineasm handler from the sourcemgr error handling
definition, increasing type safety and cleaning things up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119486 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
6e30c6a1d32f187804d24ecd1868d63c60330b22 17-Nov-2010 Chris Lattner <sabre@nondot.org> rearrange how the handler in SourceMgr is installed, eliminating the use of
the cookie argument to setDiagHandler


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119483 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
a38941d458273946594d3592ed5debdc9730db08 17-Nov-2010 Chris Lattner <sabre@nondot.org> refactor the interface to EmitInlineAsm a bit, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119482 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
113a06cff443f5d73c4f1f89bd31b0efb4222227 17-Nov-2010 Eric Christopher <echristo@apple.com> Only avoid the check if we're the last operand before the variable
operands in a variadic instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119446 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
76043670d5cb1337d171e9cd391a9b31876002a4 16-Nov-2010 Dan Gohman <gohman@apple.com> Fix grammaro.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119386 91177308-0d34-0410-b5e6-96231b3b80d8
xpandPseudos.cpp
61f1a97e61bf56bfdc56da0e20f5a866f66919f6 16-Nov-2010 Evan Cheng <evan.cheng@apple.com> Add ExpandPseudos.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119385 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
668ac2fdae69ed358ecf690d6a07428e5a9ee2f7 16-Nov-2010 Dan Gohman <gohman@apple.com> Split pseudo-instruction expansion into a separate pass, to make it
easier to debug, and to avoid complications when the CFG changes
in the middle of the instruction selection process.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119382 91177308-0d34-0410-b5e6-96231b3b80d8
xpandPseudos.cpp
LVMTargetMachine.cpp
electionDAG/InstrEmitter.cpp
f4840c07f84d018c4de5dbdad4166b9e162f8f89 16-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix emergency spilling in LiveIntervals::spillPhysRegAroundRegDefsUses.

Always spill the full representative register at any point where any subregister
is live.

This fixes PR8620 which caused the old logic to get confused and not spill
anything at all.

The fundamental problem here is that the coalescer is too aggressive about
physical register coalescing. It sometimes makes it impossible to allocate
registers without these emergency spills.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119375 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
fd900a2c07f54b4687315edf3df0ec99e4462942 16-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out the register class of the current interval.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119374 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
800e57313e19a30749ca59ed03f33583ffff4a3a 16-Nov-2010 Eric Christopher <echristo@apple.com> Make the verifier a little quieter on instructions that it's probably
(and likely) wrong about anyhow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119320 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
615c85391ffa0af0bd5a2c69e45752545bc0455c 16-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to resize SpillSlotToUsesMap when allocating an emergency spill slot.

Use amazing new function call technology instead of writing identical code in
multiple places.

This fixes PR8604.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119306 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
b55e91e08738b804f17109a49881e51b69e91299 16-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to resize SpillSlotToUsesMap when allocating an emergency spill slot.

Use amazing new function call technology instead of writing identical code in
multiple places.

This fixes PR8604.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119306 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
3517c8603deeba405e1e1953d2d716798fc0ceb3 16-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR8612 in the standard spiller, take two.

The live range of a register defined by an early clobber starts at the use slot,
not the def slot.

Except when it is an early clobber tied to a use operand. Then it starts at the
def slot like a standard def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119305 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7c2e4a8715836a44e82ac6c7370826519ccdfddb 16-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR8612 in the standard spiller, take two.

The live range of a register defined by an early clobber starts at the use slot,
not the def slot.

Except when it is an early clobber tied to a use operand. Then it starts at the
def slot like a standard def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119305 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f3e608eb3ce68164699490a5da28e0a831d4b336 15-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Fix PR8612 in the standard spiller as well."

This reverts r119183 which borke the buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119270 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
bea0b6a0495c8c80ad7d52d4bc28acdee926020b 15-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Fix PR8612 in the standard spiller as well."

This reverts r119183 which borke the buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119270 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8c5826be10ecf5eca355a0c9110b4f1d0865d5f5 15-Nov-2010 Evan Cheng <evan.cheng@apple.com> Code clean up. The peephole pass should be the one updating the instruction
iterator, not TII->OptimizeCompareInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119186 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
eb96a2f6c03c0ec97c56a3493ac38024afacc774 15-Nov-2010 Evan Cheng <evan.cheng@apple.com> Code clean up. The peephole pass should be the one updating the instruction
iterator, not TII->OptimizeCompareInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119186 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
b23f6cbd3ddba6d696ec2a298085266810a2566b 15-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR8612 in the standard spiller as well.

The live range of a register defined by an early clobber starts at the use slot,
not the def slot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119183 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a284aa1657d08390209b87f57782936e45d562ba 15-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR8612 in the standard spiller as well.

The live range of a register defined by an early clobber starts at the use slot,
not the def slot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119183 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4e407c041b08b429716a37ddf92efa4bb48221ec 15-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When spilling a register defined by an early clobber, make sure that the new
live ranges for the spill register are also defined at the use slot instead of
the normal def slot.

This fixes PR8612 for the inline spiller. A use was being allocated to the same
register as a spilled early clobber def.

This problem exists in all the spillers. A fix for the standard spiller is
forthcoming.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119182 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
68257e61eb6e7d528759bd7830db47d409dace89 15-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When spilling a register defined by an early clobber, make sure that the new
live ranges for the spill register are also defined at the use slot instead of
the normal def slot.

This fixes PR8612 for the inline spiller. A use was being allocated to the same
register as a spilled early clobber def.

This problem exists in all the spillers. A fix for the standard spiller is
forthcoming.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119182 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
b87e6afa1369ea12e485b1037184f78e42dc73df 15-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> First step of huge frame-related refactoring: move emit{Prologue,Epilogue} out of TargetRegisterInfo to TargetFrameInfo, which is definitely much better suitable place

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119097 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
33464912237efaa0ed7060829e66b59055bdd48b 15-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> First step of huge frame-related refactoring: move emit{Prologue,Epilogue} out of TargetRegisterInfo to TargetFrameInfo, which is definitely much better suitable place

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119097 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
009e587ba2456d93ac816e05e93eb50f4f93510a 14-Nov-2010 Chris Lattner <sabre@nondot.org> move the pic base symbol stuff up to MachineFunction
since it is trivial and will be shared between ppc and x86.
This substantially simplifies the X86 backend also.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119089 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
142b531e024c7b814df74951b378b9e3e11d0d42 14-Nov-2010 Chris Lattner <sabre@nondot.org> move the pic base symbol stuff up to MachineFunction
since it is trivial and will be shared between ppc and x86.
This substantially simplifies the X86 backend also.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119089 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
f23f7c482522661ec05a864a8f3607b2485bb31b 13-Nov-2010 Devang Patel <dpatel@apple.com> Remove DW_AT_start_scope support. It is incomplete and superseeded by location entries support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118940 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
522ad74e4bd27e9156916ed58dd5c7f1a17a541d 13-Nov-2010 Devang Patel <dpatel@apple.com> Remove DW_AT_start_scope support. It is incomplete and superseeded by location entries support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118940 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
af16f1f936ad883d3b32e8ff59b805a857c59d31 12-Nov-2010 Andrew Trick <atrick@apple.com> typo (4th checkin for one fix)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118913 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f06202f8e80a4b5ef579712e792cf6c416ece601 12-Nov-2010 Andrew Trick <atrick@apple.com> typo (4th checkin for one fix)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118913 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
28372aab8ff625730f6c2f7a03549966a093663d 12-Nov-2010 Andrew Trick <atrick@apple.com> Fixes PR8287: SD scheduling time. The fix is a failsafe that prevents
catastrophic compilation time in the event of unreasonable LLVM
IR. Code quality is a separate issue--someone upstream needs to do a
better job of reducing to llvm.memcpy. If the situation can be reproduced with
any supported frontend, then it will be a separate bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118904 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
de91f3c5eb3d6dc222e62f2e6ea2597674c41a84 12-Nov-2010 Andrew Trick <atrick@apple.com> Fixes PR8287: SD scheduling time. The fix is a failsafe that prevents
catastrophic compilation time in the event of unreasonable LLVM
IR. Code quality is a separate issue--someone upstream needs to do a
better job of reducing to llvm.memcpy. If the situation can be reproduced with
any supported frontend, then it will be a separate bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118904 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
80b5f9e065b7c7699aa72e8cf363693a11299661 12-Nov-2010 Chris Lattner <sabre@nondot.org> tidy up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118896 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a29aae7aca6d8b9a9e95238d7e4067d8c16b0079 12-Nov-2010 Chris Lattner <sabre@nondot.org> tidy up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118896 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9c2117b17f1a7527bf3c10765f2b34bbcb89a094 12-Nov-2010 Lang Hames <lhames@gmail.com> Fix some style issues in PBQP. Patch by David Blaikie.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118883 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
5e77f4b1d239a61dbdb37026bfc92d83d82ceb70 12-Nov-2010 Lang Hames <lhames@gmail.com> Fix some style issues in PBQP. Patch by David Blaikie.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118883 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
acd9aaed8299d871a27f31ae21abdfd22b2ff08f 11-Nov-2010 Dan Gohman <gohman@apple.com> Add a FIXME comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118803 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
fca0b106f7df867912cd1de8bbd6285bb2ab7225 11-Nov-2010 Dan Gohman <gohman@apple.com> Add a FIXME comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118803 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
52e9ded77626ba02dcefb36b3cfaf01c42227921 11-Nov-2010 Andrew Trick <atrick@apple.com> Check TRI->getReservedRegs because other allocators do it. Even though
it makes no sense for allocation_order iterators to visit reserved regs.
The inline spiller depends on AliasAnalysis.
Manage the Query state to avoid uninitialized or stale results.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118800 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
8a83d54528c197675ba0f21ebe95ac30fa3d8841 11-Nov-2010 Andrew Trick <atrick@apple.com> Check TRI->getReservedRegs because other allocators do it. Even though
it makes no sense for allocation_order iterators to visit reserved regs.
The inline spiller depends on AliasAnalysis.
Manage the Query state to avoid uninitialized or stale results.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118800 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
8e8c477357cdb5ec953ef2b28b5f0882809751b5 11-Nov-2010 Dan Gohman <gohman@apple.com> Remove the memmove->memcpy optimization from CodeGen. MemCpyOpt does this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118789 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
efb8a9d0c2c6be209c6e34f4249ff14fc232bf9f 11-Nov-2010 Dan Gohman <gohman@apple.com> Remove the memmove->memcpy optimization from CodeGen. MemCpyOpt does this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118789 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b7f04694823796f671c1b254c37bac3e1bc1707d 11-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete SplittingSpiller. It was not being used by anyone, and it is being
superceded by SplitKit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118754 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
a05f60b2413150ee11de7072f71d68d9567359ac 11-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete SplittingSpiller. It was not being used by anyone, and it is being
superceded by SplitKit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118754 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
643cc3357cb3eb0eccd2b42e22085b2b08fe847d 11-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Insert two blank SlotIndexes between basic blocks instead of just one.

This is the first small step towards using closed intervals for liveness instead
of the half-open intervals we're using now.

We want to be able to distinguish between a SlotIndex that represents a variable
being live-out of a basic block, and an index representing a variable live-in to
its successor.

That requires two separate indexes between blocks. One for live-outs and one for
live-ins.

With this change, getMBBEndIdx(MBB).getPrevSlot() becomes stable so it stays
greater than any instructions inserted at the end of MBB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118747 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
1e8e72d72a71ec3fb6c81bd35a34261f34436900 11-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Insert two blank SlotIndexes between basic blocks instead of just one.

This is the first small step towards using closed intervals for liveness instead
of the half-open intervals we're using now.

We want to be able to distinguish between a SlotIndex that represents a variable
being live-out of a basic block, and an index representing a variable live-in to
its successor.

That requires two separate indexes between blocks. One for live-outs and one for
live-ins.

With this change, getMBBEndIdx(MBB).getPrevSlot() becomes stable so it stays
greater than any instructions inserted at the end of MBB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118747 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
1f2685d070647ce37b44a208ebf1e5d196679233 11-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> No need to add liveness that's already there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118742 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
b5f327b30f048b989c6f08d3bf84568d541b7644 11-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> No need to add liveness that's already there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118742 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
687aca31b93064bbd32da779cde12c3f6f880095 11-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Hook up AliasAnalysis in InlineSpiller. This is used for rematerializing
constant loads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118741 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocLinearScan.cpp
e93198af07517b92f276192c974ce3a6006ce998 11-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Hook up AliasAnalysis in InlineSpiller. This is used for rematerializing
constant loads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118741 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocLinearScan.cpp
3e28ee0dbbb59d3fa7990a594d6e7ccab44290d5 10-Nov-2010 Devang Patel <dpatel@apple.com> Take care of special characters while creating named MDNode name to hold function specific local variable's info.
This fixes radar 8653152. I am checking in testcase as a separate check-in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118726 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
62367045a493f9bffa433e34b68fc7dda96e1edd 10-Nov-2010 Devang Patel <dpatel@apple.com> Take care of special characters while creating named MDNode name to hold function specific local variable's info.
This fixes radar 8653152. I am checking in testcase as a separate check-in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118726 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
77ecaa159bd19b35e537f2fb2e776d3b6bbc6b4a 10-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Basic rematerialization during splitting.

Whenever splitting wants to insert a copy, it checks if the value can be
rematerialized cheaply instead.

Missing features:
- Delete instructions when all uses have been rematerialized.
- Truncate live ranges to the remaining uses after rematerialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118702 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
cfa7134a9c33c0c7f8dda359c89dc6763a258e07 10-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Basic rematerialization during splitting.

Whenever splitting wants to insert a copy, it checks if the value can be
rematerialized cheaply instead.

Missing features:
- Delete instructions when all uses have been rematerialized.
- Truncate live ranges to the remaining uses after rematerialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118702 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
e9157e10cd2be2b3dbaf26baa925765562819266 10-Nov-2010 Andrew Trick <atrick@apple.com> RABasic is nearly functionally complete. There are a few remaining
benchmarks hitting an assertion.
Adds LiveIntervalUnion::collectInterferingVRegs.
Fixes "late spilling" by checking for any unspillable live vregs among
all physReg aliases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118701 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveIntervalAnalysis.cpp
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
piller.cpp
piller.h
f4baeaf8485f01beda46d29fd55753199dc68070 10-Nov-2010 Andrew Trick <atrick@apple.com> RABasic is nearly functionally complete. There are a few remaining
benchmarks hitting an assertion.
Adds LiveIntervalUnion::collectInterferingVRegs.
Fixes "late spilling" by checking for any unspillable live vregs among
all physReg aliases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118701 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveIntervalAnalysis.cpp
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
piller.cpp
piller.h
353e7153f105d20a8e307dcca5b12a90b39991bc 10-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify the LiveRangeEdit::canRematerializeAt() interface a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118661 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
b80e973c95034e5754d888140497a9658a7c1ded 10-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify the LiveRangeEdit::canRematerializeAt() interface a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118661 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
c129a6947aa39948bce6a35afb55dbd2e31f4fb3 10-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Fixed version of 118639 with an extra assert to catch similar problems
earlier. Implicit bool -> int conversions are evil!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118651 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
34be396a12b00a95a1353c356d64868798ea3098 10-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Fixed version of 118639 with an extra assert to catch similar problems
earlier. Implicit bool -> int conversions are evil!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118651 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
2857876ab4cb39749f0763d148c23b57eeeaf232 09-Nov-2010 Andrew Trick <atrick@apple.com> Adds RABasic verification and tracing.
(retry now that the windows build is green)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118630 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
071d1c063f1080c70a7141d947a96cf511a1ba45 09-Nov-2010 Andrew Trick <atrick@apple.com> Adds RABasic verification and tracing.
(retry now that the windows build is green)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118630 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
3f0c73f34557c7b4fb14bed7ecb638f803ca787d 09-Nov-2010 Matt Beaumont-Gay <matthewbg@google.com> Add a trivial virtual dtor to AbstractRegisterDescription to appease
-Wnon-virtual-dtor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118616 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
e33daaaaf9d67f30b141430bffc34bbda93063d1 09-Nov-2010 Matt Beaumont-Gay <matthewbg@google.com> Add a trivial virtual dtor to AbstractRegisterDescription to appease
-Wnon-virtual-dtor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118616 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.h
6c7228faf7b8bc03ee4fdad3ab462f96978ceaed 09-Nov-2010 Andrew Trick <atrick@apple.com> Reverting r118604. Windows build broke.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118613 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
32d9aeb1df982638766757704c4e23f58ffb40d1 09-Nov-2010 Andrew Trick <atrick@apple.com> Reverting r118604. Windows build broke.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118613 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
d74b00cd80ece16e4909f7605795d03072e82493 09-Nov-2010 Andrew Trick <atrick@apple.com> Adds RABasic verification and tracing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118604 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
39a5ce46a51c8e855a2f52c9f733d9d5dd8a65c4 09-Nov-2010 Andrew Trick <atrick@apple.com> Adds RABasic verification and tracing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118604 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
8793b9f59a676704580e09a948999409bf8dfdaa 09-Nov-2010 Dan Gohman <gohman@apple.com> Fix DAGCombiner to avoid folding a sext-in-reg or similar through a shl
in order to fold it into a load.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118471 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6a559cd6959bef28d20acef2129e5510bcc12bb8 09-Nov-2010 Dan Gohman <gohman@apple.com> Fix DAGCombiner to avoid folding a sext-in-reg or similar through a shl
in order to fold it into a load.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118471 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2ee498cb2d9226159c070685625c552a2cfdeeca 09-Nov-2010 Dale Johannesen <dalej@apple.com> Fix an inline asm pasto from 117667; was preventing
{i64, i64} from matching i128.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
71365d3774a6c02f3f198fbf08a56e4b6346bbcc 09-Nov-2010 Dale Johannesen <dalej@apple.com> Fix an inline asm pasto from 117667; was preventing
{i64, i64} from matching i128.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
038a1039e1774669ebd9eb09c8bd2237467627c3 08-Nov-2010 Andrew Trick <atrick@apple.com> Adds support for spilling previously allocated live intervals to
handle cases in which a register is unavailable for spill code.
Adds LiveIntervalUnion::extract. While processing interferences on a
live virtual register, reuses the same Query object for each
physcial reg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118423 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
e141a4960f702bef957b28abde3801ec64e32d87 08-Nov-2010 Andrew Trick <atrick@apple.com> Adds support for spilling previously allocated live intervals to
handle cases in which a register is unavailable for spill code.
Adds LiveIntervalUnion::extract. While processing interferences on a
live virtual register, reuses the same Query object for each
physcial reg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118423 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
a1746d56c346e415e508b997e31f4e354ebaebd9 08-Nov-2010 Che-Liang Chiou <clchiou@gmail.com> Add registry hook for assembly text output


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118394 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
6da24ca51d0a0483b4ff1537a177bd172997f129 08-Nov-2010 Che-Liang Chiou <clchiou@gmail.com> Add registry hook for assembly text output


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118394 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
fbf8b4c050489431d314b091bb69a7f5a668dd25 06-Nov-2010 Benjamin Kramer <benny.kra@googlemail.com> Prune includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118342 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
jLjEHPrepare.cpp
irtRegRewriter.cpp
f788854d20b12c60fd8b43c587adb3227b6b1bff 06-Nov-2010 Benjamin Kramer <benny.kra@googlemail.com> Prune includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118342 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
jLjEHPrepare.cpp
irtRegRewriter.cpp
fb480f9e57c29ac68528e933cfafd23cf596ed24 05-Nov-2010 Duncan Sands <baldrick@free.fr> When passing a parameter using the 'byval' mechanism, inline code needs to be used
to perform the copy, which may be of lots of memory [*]. It would be good if the
fall-back code generated something reasonable, i.e. did the copy in a loop, rather
than vast numbers of loads and stores. Add a note about this. Currently target
specific code seems to always kick in so this is more of a theoretical issue rather
than a practical one now that X86 has been fixed.
[*] It's amazing how often people pass mega-byte long arrays by copy...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118275 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
69300a2f47541a32cf453c857b2a6075c0c65632 05-Nov-2010 Duncan Sands <baldrick@free.fr> When passing a parameter using the 'byval' mechanism, inline code needs to be used
to perform the copy, which may be of lots of memory [*]. It would be good if the
fall-back code generated something reasonable, i.e. did the copy in a loop, rather
than vast numbers of loads and stores. Add a note about this. Currently target
specific code seems to always kick in so this is more of a theoretical issue rather
than a practical one now that X86 has been fixed.
[*] It's amazing how often people pass mega-byte long arrays by copy...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118275 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7a263c0f8e983ccbaaa4a942a2f1b999d59bad7d 04-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Add 118023 back, but with proper spelling for .uleb128/.sleb128.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118254 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
738734501635a15d8ed2d1c8d52962ed5f319bd3 04-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Add 118023 back, but with proper spelling for .uleb128/.sleb128.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118254 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
e8f099da6cd2f31f14e01b7522c877106520a1d2 04-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Revert previous patch. Some targets don't support uleb and say
they do :-(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118250 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
537ebeaffcce2b44705f678a67802ea77c5a3f92 04-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Revert previous patch. Some targets don't support uleb and say
they do :-(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118250 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
98eea4dc9750c7333821212b567f80cc9bd4e915 04-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> MCize.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118249 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
40f6514ff08e880504f920887e0cc54bef23ef97 04-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> MCize.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118249 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
05b343ad87802070ad17ed8a1c72ce521714ccbe 04-Nov-2010 Duncan Sands <baldrick@free.fr> In the calling convention logic, ValVT is always a legal type,
and as such can be represented by an MVT - the more complicated
EVT is not needed. Use MVT for ValVT everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118245 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
1e96bab329eb23e4ce8a0dc3cc6b33a3f03d15bf 04-Nov-2010 Duncan Sands <baldrick@free.fr> In the calling convention logic, ValVT is always a legal type,
and as such can be represented by an MVT - the more complicated
EVT is not needed. Use MVT for ValVT everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118245 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
a8384c26c1e394b9c533935a5a31fc84c5c21aa4 04-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Disable fancy splitting during spilling unless -extra-spiller-splits is given.

This way, InlineSpiller does the same amount of splitting as the standard
spiller. Splitting should really be guided by the register allocator, and
doesn't belong in the spiller at all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118216 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
8c42f48d023c4b9164b3c39ad0513b53f1cc1e91 04-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Disable fancy splitting during spilling unless -extra-spiller-splits is given.

This way, InlineSpiller does the same amount of splitting as the standard
spiller. Splitting should really be guided by the register allocator, and
doesn't belong in the spiller at all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118216 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
611dc907031cf99666a4b39a3c0e34a6152c8554 03-Nov-2010 Eric Christopher <echristo@apple.com> Just return undef for invalid masks or elts, and since we're doing that,
just do it earlier too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d81f17acb4f2d755759a4d8a83a71a98ade0edd3 03-Nov-2010 Eric Christopher <echristo@apple.com> Just return undef for invalid masks or elts, and since we're doing that,
just do it earlier too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9616a22b86efa9a2eecc1a912de688a327e517ef 03-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Let RegAllocBasic require MachineDominators - they are already available and
splitting needs them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118194 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
964bc25e5a03be208427ce2ebadb22a42681ef9c 03-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Let RegAllocBasic require MachineDominators - they are already available and
splitting needs them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118194 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBasic.cpp
1b34293f89166fd15290d107c65496987c9de09c 03-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Tag debug output as regalloc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118193 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
376dcbd6c2c7adb8281f89d045b307eee7bd682a 03-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Tag debug output as regalloc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118193 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
465b5af7980d8ee7cdf82694791b2fb9748b4684 03-Nov-2010 Duncan Sands <baldrick@free.fr> Simplify uses of MVT and EVT. An MVT can be compared directly
with a SimpleValueType, while an EVT supports equality and
inequality comparisons with SimpleValueType.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
cdfad36b401be6fc709ea4051f9de58e1a30bcc9 03-Nov-2010 Duncan Sands <baldrick@free.fr> Simplify uses of MVT and EVT. An MVT can be compared directly
with a SimpleValueType, while an EVT supports equality and
inequality comparisons with SimpleValueType.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
08903968f7100c2693a113b25b86d2ff39f81b5a 03-Nov-2010 Duncan Sands <baldrick@free.fr> Inside the calling convention logic LocVT is always a simple
value type, so there is no point in passing it around using
an EVT. Use the simpler MVT everywhere. Rather than trying
to propagate this information maximally in all the code that
using the calling convention stuff, I chose to do a mainly
low impact change instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118167 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
electionDAG/SelectionDAGBuilder.cpp
1440e8b918d7116c3587cb95f4f7ac7a0a0b65ad 03-Nov-2010 Duncan Sands <baldrick@free.fr> Inside the calling convention logic LocVT is always a simple
value type, so there is no point in passing it around using
an EVT. Use the simpler MVT everywhere. Rather than trying
to propagate this information maximally in all the code that
using the calling convention stuff, I chose to do a mainly
low impact change instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118167 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
electionDAG/SelectionDAGBuilder.cpp
99257956e5562c6d206fa64bced563657519262d 03-Nov-2010 Eric Christopher <echristo@apple.com> If we have an undef mask our Elt will be -1 for our access, handle
this by using an undef as a pointer.

Fixes rdar://8625016


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
caebdd44f3a2c89457f09d0fa45a998c912235d2 03-Nov-2010 Eric Christopher <echristo@apple.com> If we have an undef mask our Elt will be -1 for our access, handle
this by using an undef as a pointer.

Fixes rdar://8625016


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
89ca5c05b852db9dc2cb47573b5442af019b49b8 03-Nov-2010 Dan Gohman <gohman@apple.com> Fix DAGCombiner to avoid going into an infinite loop when it
encounters (and:i64 (shl:i64 (load:i64), 1), 0xffffffff).
This fixes rdar://8606584.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118143 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
394d6298bcf89a75b51c8314a6705f6984e46b49 03-Nov-2010 Dan Gohman <gohman@apple.com> Fix DAGCombiner to avoid going into an infinite loop when it
encounters (and:i64 (shl:i64 (load:i64), 1), 0xffffffff).
This fixes rdar://8606584.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118143 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6c35fb1a67dd7e4c71d1a3da6406908ab323577a 03-Nov-2010 Evan Cheng <evan.cheng@apple.com> Two sets of changes. Sorry they are intermingled.

1. Fix pre-ra scheduler so it doesn't try to push instructions above calls to
"optimize for latency". Call instructions don't have the right latency and
this is more likely to use introduce spills.
2. Fix if-converter cost function. For ARM, it should use instruction latencies,
not # of micro-ops since multi-latency instructions is completely executed
even when the predicate is false. Also, some instruction will be "slower"
when they are predicated due to the register def becoming implicit input.
rdar://8598427


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118135 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
8239daf7c83a65a189c352cce3191cdc3bbfe151 03-Nov-2010 Evan Cheng <evan.cheng@apple.com> Two sets of changes. Sorry they are intermingled.

1. Fix pre-ra scheduler so it doesn't try to push instructions above calls to
"optimize for latency". Call instructions don't have the right latency and
this is more likely to use introduce spills.
2. Fix if-converter cost function. For ARM, it should use instruction latencies,
not # of micro-ops since multi-latency instructions is completely executed
even when the predicate is false. Also, some instruction will be "slower"
when they are predicated due to the register def becoming implicit input.
rdar://8598427


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118135 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
41a46bcc97cb6a9aeda742b308ab61e4532f8fea 02-Nov-2010 Andrew Trick <atrick@apple.com> Fixes <rdar://problem/8612856>: During postRAsched, the antidependence
breaker needs to check all definitions of the antidepenent register to
avoid multiple defs of the same new register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118032 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
46388526963aba92344ee8ebd9e86d3556baa088 02-Nov-2010 Andrew Trick <atrick@apple.com> Fixes <rdar://problem/8612856>: During postRAsched, the antidependence
breaker needs to check all definitions of the antidepenent register to
avoid multiple defs of the same new register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118032 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
0b765ed38b918f25c6511cefa515a1f9d2f369b5 02-Nov-2010 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118027 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c8821046f8998c3e69985fdc53d8241c6ad4c762 02-Nov-2010 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118027 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c2a8bdee8fc89aa5ab3166f2346566b8152d63eb 02-Nov-2010 Devang Patel <dpatel@apple.com> If value map does not have register for an argument then try to find frame index before giving up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118022 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8bc9ef77b7e9910fbeb40725dfa49d793158db51 02-Nov-2010 Devang Patel <dpatel@apple.com> If value map does not have register for an argument then try to find frame index before giving up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118022 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
42e67b32ecb01210f2137605f2dcde3c2e139edf 02-Nov-2010 Devang Patel <dpatel@apple.com> Use frameindex, if available, as a last resort to emit debug info for a parameter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118020 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a90b305af910f0cbfa0c6934a2034a2a0444e715 02-Nov-2010 Devang Patel <dpatel@apple.com> Use frameindex, if available, as a last resort to emit debug info for a parameter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118020 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
62b17c0b76f331bb87d93cccb7876a9d139ab237 02-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't try to split weird critical edges that really aren't:

BB#1: derived from LLVM BB %bb.nph28
Live Ins: %AL
Predecessors according to CFG: BB#0
TEST8rr %reg16384<kill>, %reg16384, %EFLAGS<imp-def>; GR8:%reg16384
JNE_4 <BB#2>, %EFLAGS<imp-use,kill>
JMP_4 <BB#2>
Successors according to CFG: BB#2 BB#2

These double CFG edges only ever occur in bugpoint-generated code, so there is
no need to attempt something clever.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117992 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
371e82bf513778bf2bde4c3eebe9407af2cef21f 02-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't try to split weird critical edges that really aren't:

BB#1: derived from LLVM BB %bb.nph28
Live Ins: %AL
Predecessors according to CFG: BB#0
TEST8rr %reg16384<kill>, %reg16384, %EFLAGS<imp-def>; GR8:%reg16384
JNE_4 <BB#2>, %EFLAGS<imp-use,kill>
JMP_4 <BB#2>
Successors according to CFG: BB#2 BB#2

These double CFG edges only ever occur in bugpoint-generated code, so there is
no need to attempt something clever.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117992 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
ffabe7d2b964d5f62847859da80d04c96a7d4807 02-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> MachineLICM should not claim to be preserving the CFG when it can split critical
edges on demand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117982 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
8bcf7603f7e3be558991000fd99b8b7ac359204f 02-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> MachineLICM should not claim to be preserving the CFG when it can split critical
edges on demand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117982 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
72185fae5d19bb5042b5a5f8c81d48fdff8ab1e3 02-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more precise about verifying missing kill flags.

It is legal for an instruction to have two operands using the same register,
only one a kill. This is interpreted as a kill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117981 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
962c71089d5c725784135146177736c43d550813 02-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more precise about verifying missing kill flags.

It is legal for an instruction to have two operands using the same register,
only one a kill. This is interpreted as a kill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117981 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
1f5e6239207c3628cd864223c9f6ca9d8ca02ac8 02-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When inserting copies during splitting, always use the parent register as the
source, and let rewrite() clean it up.

This way, kill flags on the inserted copies are fixed as well during rewrite().

We can't just assume that all the copies we insert are going to be kills since
critical edges into loop headers sometimes require both source and dest to be
live out of a block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117980 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
3d4114c464d1ec6c9a6088e04d2156f72c4b42ce 02-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When inserting copies during splitting, always use the parent register as the
source, and let rewrite() clean it up.

This way, kill flags on the inserted copies are fixed as well during rewrite().

We can't just assume that all the copies we insert are going to be kills since
critical edges into loop headers sometimes require both source and dest to be
live out of a block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117980 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
50d5f4ec79014cb65801500960a6dd0f6daf17ca 01-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add kill flag verification.

At least X86FloatingPoint requires correct kill flags after register allocation,
and targets using register scavenging benefit. Conservative kill flags are not
enough.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117960 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
1c163d2a06e94375b811f807b1667d419f5cb258 01-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add kill flag verification.

At least X86FloatingPoint requires correct kill flags after register allocation,
and targets using register scavenging benefit. Conservative kill flags are not
enough.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117960 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
7899e707584483a0488a6da6e5a84ee8b5592e67 01-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Update kill flags while rewriting instructions after splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117959 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
79cb53ce9563fff74605454560e98ea0aa4b523f 01-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Update kill flags while rewriting instructions after splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117959 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
53b2e23459e1c21c51bf220e7a548baf69217dfd 01-Nov-2010 Bill Wendling <isanbard@gmail.com> When we look at instructions to convert to setting the 's' flag, we need to look
at more than those which define CPSR. You can have this situation:

(1) subs ...
(2) sub r6, r5, r4
(3) movge ...
(4) cmp r6, 0
(5) movge ...

We cannot convert (2) to "subs" because (3) is using the CPSR set by
(1). There's an analogous situation here:

(1) sub r1, r2, r3
(2) sub r4, r5, r6
(3) cmp r4, ...
(5) movge ...
(6) cmp r1, ...
(7) movge ...

We cannot convert (1) to "subs" because of the intervening use of CPSR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117950 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
40a5eb18b031fa1a5e9697e21e251e613d441cc5 01-Nov-2010 Bill Wendling <isanbard@gmail.com> When we look at instructions to convert to setting the 's' flag, we need to look
at more than those which define CPSR. You can have this situation:

(1) subs ...
(2) sub r6, r5, r4
(3) movge ...
(4) cmp r6, 0
(5) movge ...

We cannot convert (2) to "subs" because (3) is using the CPSR set by
(1). There's an analogous situation here:

(1) sub r1, r2, r3
(2) sub r4, r5, r6
(3) cmp r4, ...
(5) movge ...
(6) cmp r1, ...
(7) movge ...

We cannot convert (1) to "subs" because of the intervening use of CPSR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117950 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
23a698e5c756c5cac7b0a7f640391443b3809dcb 01-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't assign new registers created during a split to the same stack slot, but
give them individual stack slots once the are actually spilled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117945 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
a37d5cf3425eb93a25cc5da2bbf9b6a47c757b45 01-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't assign new registers created during a split to the same stack slot, but
give them individual stack slots once the are actually spilled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117945 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
185f6317716d5a8e12cbdaac33cf2616962ac091 01-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add basic LiveStacks verification.

When an instruction refers to a spill slot with a LiveStacks entry, check that
the spill slot is live at the instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117944 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
e8f0823a68cfc0201fffb100c7e4a1a2940cf9a9 01-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add basic LiveStacks verification.

When an instruction refers to a spill slot with a LiveStacks entry, check that
the spill slot is live at the instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117944 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
adb6bb0f8b18971371f1b459f4e044885411f9a3 01-Nov-2010 Bill Wendling <isanbard@gmail.com> The testcase is now XFAILed. Sorry about the breakage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117904 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
9e7cb3d2434e252cc0b81d88169d3d8989fcd78f 01-Nov-2010 Bill Wendling <isanbard@gmail.com> The testcase is now XFAILed. Sorry about the breakage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117904 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
9e0ddea9688253e7b22d374fbaa8fc9dc29627e2 31-Oct-2010 Eric Christopher <echristo@apple.com> Revert r117876 for now, it's causing more testsuite failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117879 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
b698a56dd4739fb1a407b2b286bf2aa7bdf86fde 31-Oct-2010 Eric Christopher <echristo@apple.com> Revert r117876 for now, it's causing more testsuite failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117879 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
7182d7348e28743afd7d884a8f94961f32ff4d99 31-Oct-2010 Bill Wendling <isanbard@gmail.com> Disable the peephole optimizer until 186.crafty on armv6 is fixed. This is what
looks like is happening:

Without the peephole optimizer:
(1) sub r6, r6, #32
orr r12, r12, lr, lsl r9
orr r2, r2, r3, lsl r10
(x) cmp r6, #0
ldr r9, LCPI2_10
ldr r10, LCPI2_11
(2) sub r8, r8, #32
(a) movge r12, lr, lsr r6
(y) cmp r8, #0
LPC2_10:
ldr lr, [pc, r10]
(b) movge r2, r3, lsr r8

With the peephole optimizer:
ldr r9, LCPI2_10
ldr r10, LCPI2_11
(1*) subs r6, r6, #32
(2*) subs r8, r8, #32
(a*) movge r12, lr, lsr r6
(b*) movge r2, r3, lsr r8

(1) is used by (x) for the conditional move at (a). (2) is used by (y) for the
conditional move at (b). After the peephole optimizer, these the flags resulting
from (1*) are ignored and only the flags from (2*) are considered for both
conditional moves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117876 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
b3747706fc0ccece33516b257f6601508c3a2a45 31-Oct-2010 Bill Wendling <isanbard@gmail.com> Disable the peephole optimizer until 186.crafty on armv6 is fixed. This is what
looks like is happening:

Without the peephole optimizer:
(1) sub r6, r6, #32
orr r12, r12, lr, lsl r9
orr r2, r2, r3, lsl r10
(x) cmp r6, #0
ldr r9, LCPI2_10
ldr r10, LCPI2_11
(2) sub r8, r8, #32
(a) movge r12, lr, lsr r6
(y) cmp r8, #0
LPC2_10:
ldr lr, [pc, r10]
(b) movge r2, r3, lsr r8

With the peephole optimizer:
ldr r9, LCPI2_10
ldr r10, LCPI2_11
(1*) subs r6, r6, #32
(2*) subs r8, r8, #32
(a*) movge r12, lr, lsr r6
(b*) movge r2, r3, lsr r8

(1) is used by (x) for the conditional move at (a). (2) is used by (y) for the
conditional move at (b). After the peephole optimizer, these the flags resulting
from (1*) are ignored and only the flags from (2*) are considered for both
conditional moves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117876 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
20ae9004cb66adc5872e9b80946226d631122e49 31-Oct-2010 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Attach a GCModuleInfo to a MachineFunction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117867 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineFunctionAnalysis.cpp
7a5a3f75eb6751c35682f506887c34bf57d6ea3e 31-Oct-2010 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Attach a GCModuleInfo to a MachineFunction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117867 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineFunctionAnalysis.cpp
40e9105c7a6e41feb6af1dc9bea025471a861d61 30-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Include MachineBasicBlock numbers in viewCFG() output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117765 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
e5f4e9fb2be8525a8ca16bd4719665ed7402b55b 30-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Include MachineBasicBlock numbers in viewCFG() output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117765 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
6aab7edd8718f1924f0f8e75328ecb255fd3e2a5 30-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make sure copies are inserted after any exception handling labels at the top of
a basic block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117764 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
5b4bb218d1fb248474c997b865491182bad6ff61 30-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make sure copies are inserted after any exception handling labels at the top of
a basic block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117764 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
a2aeadc489e1ff8e7775c036564a723194cfece0 30-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SkipPHIsAndLabels from PHIElimination to MachineBasicBlock. It is needed
elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117763 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
92095e7b3f1eef7b4f2eb0cf037e6b7a01478dab 30-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SkipPHIsAndLabels from PHIElimination to MachineBasicBlock. It is needed
elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117763 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
3e82b0b1458fa21492e003320ee3863340ec2a15 30-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Disable more of physical register live intervals verification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117762 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
ab56647e6b2a7b376f0c245a0bc92cd632107edb 30-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Disable more of physical register live intervals verification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117762 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
f773801d14718847aad6df8c9fc39da65d0f468f 30-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out register class of spilled register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117761 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
7d57753df3bbad14e3e3ddf396b4edbdc4c55d7d 30-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out register class of spilled register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117761 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
9622ada43d6fd2dde7b7123868b5bfd769f947ef 30-Oct-2010 Evan Cheng <evan.cheng@apple.com> Teach machine cse to eliminate instructions with multiple physreg uses and defs. rdar://8610857.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117745 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
189c1ec4c162ca3d36d9bca803b032eb19de434a 30-Oct-2010 Evan Cheng <evan.cheng@apple.com> Teach machine cse to eliminate instructions with multiple physreg uses and defs. rdar://8610857.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117745 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
8f21e25ac5ae43066b25d3f99b889e4adb4a9abb 30-Oct-2010 Bob Wilson <bob.wilson@apple.com> Remove DAG combiner patch to fold vector splats. Instcombiner does it now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117720 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
46455096bea2b6c81bb4b0226701524d2a9eb242 30-Oct-2010 Bob Wilson <bob.wilson@apple.com> Remove DAG combiner patch to fold vector splats. Instcombiner does it now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117720 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5ec99c0d9ab593450598a204fb44c4fc4458ac7e 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix sign error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117677 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.h
db4eec3d2ce6d0176ed8f689fc63737fba125b90 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix sign error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117677 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.h
d9818d9f3d989f528a4ae03fa3f3a826a066c9b7 29-Oct-2010 Evan Cheng <evan.cheng@apple.com> Avoiding overly aggressive latency scheduling. If the two nodes share an
operand and one of them has a single use that is a live out copy, favor the
one that is live out. Otherwise it will be difficult to eliminate the copy
if the instruction is a loop induction variable update. e.g.

BB:
sub r1, r3, #1
str r0, [r2, r3]
mov r3, r1
cmp
bne BB

=>

BB:
str r0, [r2, r3]
sub r3, r3, #1
cmp
bne BB

This fixed the recent 256.bzip2 regression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117675 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
089751535d6e9adf65842e2ca5867bf9a70e1e95 29-Oct-2010 Evan Cheng <evan.cheng@apple.com> Avoiding overly aggressive latency scheduling. If the two nodes share an
operand and one of them has a single use that is a live out copy, favor the
one that is live out. Otherwise it will be difficult to eliminate the copy
if the instruction is a loop induction variable update. e.g.

BB:
sub r1, r3, #1
str r0, [r2, r3]
mov r3, r1
cmp
bne BB

=>

BB:
str r0, [r2, r3]
sub r3, r3, #1
cmp
bne BB

This fixed the recent 256.bzip2 regression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117675 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
63664042cf07901bc4e117f8ed9d5f9364a0db73 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't transfer unused values to the new intervals formed by splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117673 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
3ccfce0e35371d20fb84f65185f7f0126d072461 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't transfer unused values to the new intervals formed by splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117673 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
5aba6b7f3326dd97175c0d3b2593b39af4a5bb3d 29-Oct-2010 Benjamin Kramer <benny.kra@googlemail.com> Silence Release build warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117671 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
8a8e26fb1867b45ab7c5832dc3f509127d6624b8 29-Oct-2010 Benjamin Kramer <benny.kra@googlemail.com> Silence Release build warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117671 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
b7c8490ceb58fd61e6e51175334210cffad681da 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach ConnectedVNInfoEqClasses::Classify to deal with unused values.

We don't want unused values forming their own equivalence classes, so we lump
them all together in one class, and then merge them with the class of the last
used value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117670 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
6d309059a7d6257ddeb3b07e6c4b8b71cce2f707 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach ConnectedVNInfoEqClasses::Classify to deal with unused values.

We don't want unused values forming their own equivalence classes, so we lump
them all together in one class, and then merge them with the class of the last
used value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117670 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
12eae4b609bf2d24b600364cd86a900f2fe7e742 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Never propagate the idom value out of a block that defines its own value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117669 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
c94fcb1507db5c043558f3f58d389e774bc2f71d 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Never propagate the idom value out of a block that defines its own value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117669 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
baaadc0c041f03553dd0a1b3327395480c3dd7c7 29-Oct-2010 John Thompson <john.thompson.jtsoftware@gmail.com> Inline asm multiple alternative constraints development phase 2 - improved basic logic, added initial platform support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117667 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
44ab89eb376af838d1123293a79975aede501464 29-Oct-2010 John Thompson <John.Thompson.JTSoftware@gmail.com> Inline asm multiple alternative constraints development phase 2 - improved basic logic, added initial platform support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117667 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
1d6d79ce0643968541a7a0133e8894b6c3392c6b 29-Oct-2010 Bill Wendling <isanbard@gmail.com> This may be an ARM target, so check for _Unwind_SjLj_Resume.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117643 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
49ad731adf0f3f03a99d4944b2b367a6bfd355d0 29-Oct-2010 Bill Wendling <isanbard@gmail.com> This may be an ARM target, so check for _Unwind_SjLj_Resume.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117643 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
1737e65f591d10b99225eb96b547f849e2a22dcb 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix broken equivalence class calculation. We could probably also use
EquvivalenceClasses.h except it looks like overkill when elements are continuous
integers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117631 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
eeaae20be02979a5d1459cc479c4533be3c05ed5 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix broken equivalence class calculation. We could probably also use
EquvivalenceClasses.h except it looks like overkill when elements are continuous
integers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117631 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
f3cd960317f0c05c9e23c633d7abb39e65f62530 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out the connected components in the verifier after complaining about their
multiplicity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117630 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
cb367778c0fb3200292df4f3982f54167444d1f6 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out the connected components in the verifier after complaining about their
multiplicity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117630 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
a0e156e1777cb0151ca1054887c97e64a1ddb33b 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Run a verification pass before any splitting to better distribute blame.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117629 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
1f46a0ac6611b2811084bb8f9bf884733bcfd2b0 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Run a verification pass before any splitting to better distribute blame.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117629 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
e4e91faa650d26ba3bcaae173d51ce4ac3b595bc 29-Oct-2010 Devang Patel <dpatel@apple.com> Ignore empty blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117615 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4d7f9a00a58c391f3e1235a9d9c28fd20d1405f5 29-Oct-2010 Devang Patel <dpatel@apple.com> Ignore empty blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117615 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7210f20644020f5058a988046ba7cc45f9dbafb3 28-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> One day, physical register live ranges will be sensible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117602 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
8c4564287d5231421d5358d71d23f46cd0be18c7 28-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> One day, physical register live ranges will be sensible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117602 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
cd909a45e7e093ff7046c44666d53c3fb42b1e28 28-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace SplitKit SSA update with an iterative algorithm very similar to the one
in SSAUpdaterImpl.h

Verifying live intervals revealed that the old method was completely wrong, and
we need an iterative approach to calculating PHI placemant. Fortunately, we have
MachineDominators available, so we don't have to compute that over and over
like SSAUpdaterImpl.h must.

Live-out values are cached between calls to mapValue() and computed in a greedy
way, so most calls will be working with very small block sets.

Thanks to Bob for explaining how this should work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117599 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
e1dde7b05a83438eeba4bd83f8cf080f56d22c5b 28-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace SplitKit SSA update with an iterative algorithm very similar to the one
in SSAUpdaterImpl.h

Verifying live intervals revealed that the old method was completely wrong, and
we need an iterative approach to calculating PHI placemant. Fortunately, we have
MachineDominators available, so we don't have to compute that over and over
like SSAUpdaterImpl.h must.

Live-out values are cached between calls to mapValue() and computed in a greedy
way, so most calls will be working with very small block sets.

Thanks to Bob for explaining how this should work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117599 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
e718ce4b2676cbec0cf609e7300073f31b6687b4 28-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make MachineDominators available for SplitEditor. We are going to need it for
proper SSA updating.

This doesn't cause MachineDominators to be recomputed since we are already
requiring MachineLoopInfo which uses dominators as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117598 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocLinearScan.cpp
plitKit.cpp
plitKit.h
d68f458244b9d9a6644a9550dd5cee60331c9e7d 28-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make MachineDominators available for SplitEditor. We are going to need it for
proper SSA updating.

This doesn't cause MachineDominators to be recomputed since we are already
requiring MachineLoopInfo which uses dominators as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117598 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocLinearScan.cpp
plitKit.cpp
plitKit.h
a8feeb15c84015b9d3b4cb9acd47f7c6bd5f9ba0 28-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a temporary command line option to verify machine code after each spill or
split.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117597 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
26b92be9222e267447efe943f12848775075e22f 28-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a temporary command line option to verify machine code after each spill or
split.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117597 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
7881803762d3e313ebaa186079fa322d4f12cab0 28-Oct-2010 Devang Patel <dpatel@apple.com> Do not work too hard to find type's file info. There is a special field to record file info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117588 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
bc2bb9bbd0610bc43f08be6678431148898591aa 28-Oct-2010 Devang Patel <dpatel@apple.com> Do not work too hard to find type's file info. There is a special field to record file info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117588 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0b018c1e2182bcb8a5c0c612781cbcabcc653506 28-Oct-2010 Devang Patel <dpatel@apple.com> Technically DIFile scope should also be handled here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117563 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3cabc9d2c974140c384e21cf5c1904b514acb82b 28-Oct-2010 Devang Patel <dpatel@apple.com> Technically DIFile scope should also be handled here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117563 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3cf5450b1ac2e37f338f33a9e8abb8673441846e 28-Oct-2010 Bob Wilson <bob.wilson@apple.com> Teach the DAG combiner to fold a splat of a splat. Radar 8597790.
Also do some minor refactoring to reduce indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0f1db1a6c64bb6661f15be1eab21645a0cbcccd8 28-Oct-2010 Bob Wilson <bob.wilson@apple.com> Teach the DAG combiner to fold a splat of a splat. Radar 8597790.
Also do some minor refactoring to reduce indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1c84f66defee7f096924b517f08b401a6d88054d 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> Re-commit 117518 and 117519 now that ARM MC test failures are out of the way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117531 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
7e2fe9150f905167f6685c9730911c2abc08293c 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> Re-commit 117518 and 117519 now that ARM MC test failures are out of the way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117531 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
9c25d0a6067d2770fb86a0a0ffeb4ac57a2f6c1d 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> Revert 117518 and 117519 for now. They changed scheduling and cause MC tests to fail. Ugh.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117520 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
9e08ee5d16b596078e20787f0b5f36121f099333 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> Revert 117518 and 117519 for now. They changed scheduling and cause MC tests to fail. Ugh.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117520 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
5b4191a28efa79bfcafb5c083859818b2ddeb1b8 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> Fix a major bug in operand latency computation. The use index must be adjusted
by the number of defs first for it to match the instruction itinerary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117518 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
7c88cdcc3ba49101fa119ec3b403e9980934384e 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> Fix a major bug in operand latency computation. The use index must be adjusted
by the number of defs first for it to match the instruction itinerary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117518 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
35315d2265227552d73617ef67540c8e415fb1ba 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> Putting r117193 back except for the compile time cost. Rather than assuming fallthroughs uses all registers, just gather the union of all successor liveins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117506 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
de5fa932b9bc0eebe803c9549586bf512eeb12f9 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> Putting r117193 back except for the compile time cost. Rather than assuming fallthroughs uses all registers, just gather the union of all successor liveins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117506 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
955b5b469883307c90389ddf8546946be0f81039 27-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> COFF: Add IMAGE_SCN_MEM_READ to text sections.

There are currently 100 references to COFF::IMAGE_SCN in 6 files
and 11 different functions. Section to attribute mapping really
needs to happen in one place to avoid problems like this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117473 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
3931b54a5f274183f850b912e0003f9aa1600584 27-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> COFF: Add IMAGE_SCN_MEM_READ to text sections.

There are currently 100 references to COFF::IMAGE_SCN in 6 files
and 11 different functions. Section to attribute mapping really
needs to happen in one place to avoid problems like this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117473 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
25a66dd61203908deb192651700cf4610e7743c1 27-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Fix whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117472 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
579d7a3dccaf3c2e91ee81c026c47a0850803820 27-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Fix whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117472 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
c818307a9212bad4e516e6cbcb568083bac1dd17 27-Oct-2010 Jim Grosbach <grosbach@apple.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117453 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
0ed257c0365f1e2227ccd9f42c2ae1f80815d6d2 27-Oct-2010 Jim Grosbach <grosbach@apple.com> Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117453 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
a7edf918f7ad0aaa84c6448c3644c3cc238fa21a 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle critical loop predecessors by making both inside and outside registers
live out.

This doesn't prevent us from inserting a loop preheader later on, if that is
better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117424 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
c95c1465fdba059f6cbf24d1d9fd84f442c60fe4 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle critical loop predecessors by making both inside and outside registers
live out.

This doesn't prevent us from inserting a loop preheader later on, if that is
better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117424 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
4e9697a89ed25bc81aa05c8c20151aceeac8aada 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Compute critical loop predecessors in the same way as critical loop exits.

Critical edges going into a loop are not as bad as critical exits. We can handle
them by splitting the critical edge, or by having both inside and outside
registers live out of the predecessor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117423 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
0960a650b7047373da25bee6ec2eb73889c3b7bb 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Compute critical loop predecessors in the same way as critical loop exits.

Critical edges going into a loop are not as bad as critical exits. We can handle
them by splitting the critical edge, or by having both inside and outside
registers live out of the predecessor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117423 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
c8f95ebb841e8524ce7b61439d943e710bd08241 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Physical registers trivially have multiple connected components all the time.
Only virtuals should be requires to be connected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117422 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
8c593f9173bb3b4474c8de964478f213e90764b9 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Physical registers trivially have multiple connected components all the time.
Only virtuals should be requires to be connected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117422 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
5e2285d6011dcb7959e10b089d3aad9a36d14e59 27-Oct-2010 Dale Johannesen <dalej@apple.com> Use a MemIntrinsicSDNode for ISD::PREFETCH, which touches
memory, so a MachineMemOperand is useful (not propagated
into the MachineInstr yet). No functional change except
for dump output.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117413 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
1de4aa904e9672abfc2e755d798c926d324e2d36 27-Oct-2010 Dale Johannesen <dalej@apple.com> Use a MemIntrinsicSDNode for ISD::PREFETCH, which touches
memory, so a MachineMemOperand is useful (not propagated
into the MachineInstr yet). No functional change except
for dump output.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117413 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
cb84f6fd9d21c7ec5f4ff04a4ae203dad70e186e 27-Oct-2010 Andrew Trick <atrick@apple.com> Remove the vector of live vregs. I thought we would need to track
them, but hopefully we won't. And this is not the right data structure
to do it anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117412 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
3d26d5d5240fb3bfe121434d4881da22f4b35ba5 27-Oct-2010 Andrew Trick <atrick@apple.com> Remove the vector of live vregs. I thought we would need to track
them, but hopefully we won't. And this is not the right data structure
to do it anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117412 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
9b669ae291528f2484be65938fcc2c8893811145 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> After splitting, compute connected components of all new registers, not just for
the remainder register.

Example:

bb0:
x = 1
bb1:
use(x)
...
x = 2
jump bb1

When x is isolated in bb1, the inner part breaks into two components, x1 and x2:

bb0:
x0 = 1
bb1:
x1 = x0
use(x1)
...
x2 = 2
x0 = x2
jump bb1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117408 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.h
plitKit.cpp
3a0e0715a5691e26ca70bc853d6d3d116e5949b8 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> After splitting, compute connected components of all new registers, not just for
the remainder register.

Example:

bb0:
x = 1
bb1:
use(x)
...
x = 2
jump bb1

When x is isolated in bb1, the inner part breaks into two components, x1 and x2:

bb0:
x0 = 1
bb1:
x1 = x0
use(x1)
...
x2 = 2
x0 = x2
jump bb1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117408 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.h
plitKit.cpp
8504483b7eec1258ff21bd38fa791b1c5338cf8c 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that live intervals are connected. If there are multiple connected
components, each should get its own virtual register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117407 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
501dc4224586d3cee61101ed6cd0ccc8ba74c43c 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that live intervals are connected. If there are multiple connected
components, each should get its own virtual register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117407 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
fac57d79d8f192523c06783aa46bd70ce394fdcd 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Call RenumberValues for all new registers created during splitting. This is
necessary to get correct hasPHIKill flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117406 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
f1354ae95ac6d7a2f31452301ccce46b6c116e37 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Call RenumberValues for all new registers created during splitting. This is
necessary to get correct hasPHIKill flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117406 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
ff935f5cffcbb2208bda1183af0a0b89da0effaf 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Preserve PHIDef bits in cloned values during splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117405 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
79c0262fa8516d0b673b2fcacff920dcc62a9b94 27-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Preserve PHIDef bits in cloned values during splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117405 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
753af1190ed5ae9f03af48cbc30876fa6b2d5018 27-Oct-2010 Devang Patel <dpatel@apple.com> Assign source ordering to nodes created for StoreInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117404 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7e13efad388f86a4adcb48ec164ee0ba154d0296 27-Oct-2010 Devang Patel <dpatel@apple.com> Assign source ordering to nodes created for StoreInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117404 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b87d1b277c48489cae4fb53cdbb331e9d8f3fd81 26-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach MachineBasicBlock::print() to annotate instructions and blocks with
SlotIndexes when available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117392 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineVerifier.cpp
f4a1e1a69f0727762a73ef0d551e3bbd16b7c04e 26-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach MachineBasicBlock::print() to annotate instructions and blocks with
SlotIndexes when available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117392 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineVerifier.cpp
f1a419c19af17c2a2536310833c2e4c429437850 26-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remmeber to print full live interval on verification error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117391 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
dbcc2e119d57dba1e2f013d304ebfbe894c98106 26-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remmeber to print full live interval on verification error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117391 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
43745184cda123d0da6bd37425d94c9ca7dac354 26-Oct-2010 Andrew Trick <atrick@apple.com> Jakob's review of the basic register allocator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117384 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
e16eecc323879744dcff4f359ba9ccdb25bd6909 26-Oct-2010 Andrew Trick <atrick@apple.com> Jakob's review of the basic register allocator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117384 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
2bfdc27b1926830b7ab6b6da4d7f02bcd0e8eb2f 26-Oct-2010 Devang Patel <dpatel@apple.com> s/beginScope/beginInstruction/g
s/endScope/endInstruction/g



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117376 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
cbbe287f8adc82a90827f036e048bb53d1573fed 26-Oct-2010 Devang Patel <dpatel@apple.com> s/beginScope/beginInstruction/g
s/endScope/endInstruction/g



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117376 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
e28738b59e651ba4db95fb3afdfccbaabecd04b8 26-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't verify physical registers going into landing pads.
Magic is happening that we don't understand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117370 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
e459d55f2832b52a3cfe0350d791c88a0a45fad8 26-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't verify physical registers going into landing pads.
Magic is happening that we don't understand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117370 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
b674a439d5771e3e9fd6874261263e3c845e5fe2 26-Oct-2010 Evan Cheng <evan.cheng@apple.com> Use instruction itinerary to determine what instructions are 'cheap'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117348 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
c8141dfc7f983cb04e65d8acd6bcbdc8e4b8a0ae 26-Oct-2010 Evan Cheng <evan.cheng@apple.com> Use instruction itinerary to determine what instructions are 'cheap'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117348 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
4402af69903becaeb7204583a5e202c1766d6608 26-Oct-2010 Nick Lewycky <nicholas@mxc.ca> For statistics that are only used in functions declared in !NDEBUG, wrap the
declarations in !NDEBUG to avoid -Wunused-variable warnings. Patch by
Matt Beaumont-Gay!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117345 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/SelectionDAGISel.cpp
a568d66512759f93e0d37af7c8f905603dd27449 26-Oct-2010 Nick Lewycky <nicholas@mxc.ca> For statistics that are only used in functions declared in !NDEBUG, wrap the
declarations in !NDEBUG to avoid -Wunused-variable warnings. Patch by
Matt Beaumont-Gay!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117345 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/SelectionDAGISel.cpp
8854def9ffef9673dfcf34ed151ae53b4b3371ee 26-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> InlineSpiller can also update LiveStacks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117338 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
0a12b801b546269b87c3806c6d4606cf2b287daa 26-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> InlineSpiller can also update LiveStacks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117338 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
799e085b239bde853628329fd8c9f0364e1d8a0a 26-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make the spiller responsible for updating the LiveStacks analysis.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117337 91177308-0d34-0410-b5e6-96231b3b80d8
iveStackAnalysis.cpp
egAllocLinearScan.cpp
piller.cpp
2d17293dd00d32208c7857ecdb20b79b0225c353 26-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make the spiller responsible for updating the LiveStacks analysis.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117337 91177308-0d34-0410-b5e6-96231b3b80d8
iveStackAnalysis.cpp
egAllocLinearScan.cpp
piller.cpp
9667aaadc15752eab1148afbad34a89d52405da3 26-Oct-2010 Bob Wilson <bob.wilson@apple.com> When the "true" and "false" blocks of a diamond if-conversion are the same,
do not double-count the duplicate instructions by counting once from the
beginning and again from the end. Keep track of where the duplicates from
the beginning ended and don't go past that point when counting duplicates
at the end. Radar 8589805.

This change causes one of the MC/ARM/simple-fp-encoding tests to produce
different (better!) code without the vmovne instruction being tested.
I changed the test to produce vmovne and vmoveq instructions but moving
between register files in the opposite direction. That's not quite the same
but predicated versions of those instructions weren't being tested before,
so at least the test coverage is not any worse, just different.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117333 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
7c730e77908123a83abcfffe781d368e9b873ce9 26-Oct-2010 Bob Wilson <bob.wilson@apple.com> When the "true" and "false" blocks of a diamond if-conversion are the same,
do not double-count the duplicate instructions by counting once from the
beginning and again from the end. Keep track of where the duplicates from
the beginning ended and don't go past that point when counting duplicates
at the end. Radar 8589805.

This change causes one of the MC/ARM/simple-fp-encoding tests to produce
different (better!) code without the vmovne instruction being tested.
I changed the test to produce vmovne and vmoveq instructions but moving
between register files in the opposite direction. That's not quite the same
but predicated versions of those instructions weren't being tested before,
so at least the test coverage is not any worse, just different.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117333 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
9c30a7720174f555f550b6eece8b31edbdf68bb2 26-Oct-2010 Bob Wilson <bob.wilson@apple.com> Change if-conversion to keep track of the extra cost due to microcoded
instructions separately from the count of non-predicated instructions. The
instruction count is used in places to determine how many instructions to
copy, predicate, etc. and things get confused if that count includes the
extra cost for microcoded ops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117332 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
2ad40d34947ced36d96f351f6c2a4d57a044e2a4 26-Oct-2010 Bob Wilson <bob.wilson@apple.com> Change if-conversion to keep track of the extra cost due to microcoded
instructions separately from the count of non-predicated instructions. The
instruction count is used in places to determine how many instructions to
copy, predicate, etc. and things get confused if that count includes the
extra cost for microcoded ops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117332 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
6e29e526293993dc3098a64208f5d378530f178f 26-Oct-2010 Evan Cheng <evan.cheng@apple.com> Neuter r117193 as it causes significant post-ra scheduler compile time regression.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117329 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
38fd9f2a2dedc2c4ce73fcf4890b79b6eb8c2e8f 26-Oct-2010 Evan Cheng <evan.cheng@apple.com> Neuter r117193 as it causes significant post-ra scheduler compile time regression.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117329 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
78c8a43c53ec1d5b24ef10debd7ea5a8ac808a3c 25-Oct-2010 Devang Patel <dpatel@apple.com> Simplify.
Do not count use of sdisel for single call instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117316 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
df8370bd70c228036f887a3f500ad3e79bc657b9 25-Oct-2010 Devang Patel <dpatel@apple.com> Simplify.
Do not count use of sdisel for single call instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117316 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f2712cab4244d9110fa224a715137f73ce685544 25-Oct-2010 Devang Patel <dpatel@apple.com> Add counters to count basic blocks and machine basic blocks with out of order line number info.
Add counters to count how many basic blocks are entirely selected by fastisel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
948f7d0216cbd847a68fc6aaf391f01816a02494 25-Oct-2010 Devang Patel <dpatel@apple.com> Add counters to count basic blocks and machine basic blocks with out of order line number info.
Add counters to count how many basic blocks are entirely selected by fastisel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
aca2f0325fc65e2e5a2acb19f9e641388f43d22b 25-Oct-2010 Devang Patel <dpatel@apple.com> Add simple counter to count no. of basic blocks without any line number information. At -O0, these basic block coule cause less than optimial debugging experience.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117307 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9a31f0f398df8830161507a6dcf369961269c6cf 25-Oct-2010 Devang Patel <dpatel@apple.com> Add simple counter to count no. of basic blocks without any line number information. At -O0, these basic block coule cause less than optimial debugging experience.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117307 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b229bfcc2bb6e1dc448d0375b0c5fce81930d01a 25-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> In which I learn how to forward declare template classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117272 91177308-0d34-0410-b5e6-96231b3b80d8
piller.h
d3b48954141847af12919a5bf4ea8623d19fc1d5 25-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> In which I learn how to forward declare template classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117272 91177308-0d34-0410-b5e6-96231b3b80d8
piller.h
a70d37154f528d30af1c320fd2888974e949dac4 23-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Move the remaining attribute macros to systematic names based on the attribute
name and prefixed with 'LLVM_'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
19e57025d458d3cb50804fd821fd89b868a819bd 23-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Move the remaining attribute macros to systematic names based on the attribute
name and prefixed with 'LLVM_'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
988ee241beab90bb6b33c7f64d8ebf924f0b1058 23-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Fix a likely bug in an assertion by adding parentheses around '||'. This bug
was found by a GCC warning. ;]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117199 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
2b3ef8b065ff655c52efe273e9b150db302e8a5a 23-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Fix a likely bug in an assertion by adding parentheses around '||'. This bug
was found by a GCC warning. ;]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117199 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalUnion.cpp
55a0857c6a38259dedfd34df368b9445029e847f 23-Oct-2010 Evan Cheng <evan.cheng@apple.com> Properly model the latency of register defs which are 1) function returns or
2) live-outs.

Previously the post-RA schedulers completely ignore these dependencies since
returns, branches, etc. are all scheduling barriers. This patch model the
latencies between instructions being scheduled and the barriers. It also
handle calls by marking their register uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117193 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
ec6906ba47d6d32cc817e85eddb87b320d6ae18c 23-Oct-2010 Evan Cheng <evan.cheng@apple.com> Properly model the latency of register defs which are 1) function returns or
2) live-outs.

Previously the post-RA schedulers completely ignore these dependencies since
returns, branches, etc. are all scheduling barriers. This patch model the
latencies between instructions being scheduled and the barriers. It also
handle calls by marking their register uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117193 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
93113bd32ca2807fc3884f5f23a2065696376715 23-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify LiveIntervals against the CFG, ensuring that live-in values are live-out
of all predecessors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117191 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
7871687604944d68455a777c3047ff2a6ca5985f 23-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify LiveIntervals against the CFG, ensuring that live-in values are live-out
of all predecessors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117191 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
1abba8ad94353ab43041d29ec41f28053e04dace 23-Oct-2010 Andrew Trick <atrick@apple.com> Nonvirtual dtor that was accessible enough to be bad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117180 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
f4331060548004471f5bb10e330ba4ce4de28ad2 23-Oct-2010 Andrew Trick <atrick@apple.com> Nonvirtual dtor that was accessible enough to be bad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117180 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBase.h
8ce8b809ef4aec7f09f2d55e37f317fb3623fd25 23-Oct-2010 Andrew Trick <atrick@apple.com> This is a prototype of an experimental register allocation
framework. It's purpose is not to improve register allocation per se,
but to make it easier to develop powerful live range splitting. I call
it the basic allocator because it is as simple as a global allocator
can be but provides the building blocks for sophisticated register
allocation with live range splitting.

A minimal implementation is provided that trivially spills whenever it
runs out of registers. I'm checking in now to get high-level design
and style feedback. I've only done minimal testing. The next step is
implementing a "greedy" allocation algorithm that does some register
reassignment and makes better splitting decisions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117174 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
plitKit.h
14e8d71cc945034d4ee6e76be00e00f14efac62f 23-Oct-2010 Andrew Trick <atrick@apple.com> This is a prototype of an experimental register allocation
framework. It's purpose is not to improve register allocation per se,
but to make it easier to develop powerful live range splitting. I call
it the basic allocator because it is as simple as a global allocator
can be but provides the building blocks for sophisticated register
allocation with live range splitting.

A minimal implementation is provided that trivially spills whenever it
runs out of registers. I'm checking in now to get high-level design
and style feedback. I've only done minimal testing. The next step is
implementing a "greedy" allocation algorithm that does some register
reassignment and makes better splitting decisions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117174 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
iveIntervalUnion.cpp
iveIntervalUnion.h
egAllocBase.h
egAllocBasic.cpp
plitKit.h
7b3c694544fce21bfb736e61da4ebcd65d7c7b92 23-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add more verification of LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117170 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
3bf7cf9f0e5a34ade5e44c47f39e3f46c8ae2c76 23-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add more verification of LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117170 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
f989aab4acefa4caab1dd698ad2cd07a00eb8ee9 23-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more strict about detecting multi-use blocks for isolation.

When a block has exactly two uses and the register is both live-in and live-out,
don't isolate the block. We would be inserting two copies, so we haven't really
made any progress.

If the live-in and live-out values separate into disconnected components after
splitting, we would be making progress. We can't detect that for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117169 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
2bfb32468404eb68dcc1b69a34336794b20e3f33 23-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more strict about detecting multi-use blocks for isolation.

When a block has exactly two uses and the register is both live-in and live-out,
don't isolate the block. We would be inserting two copies, so we haven't really
made any progress.

If the live-in and live-out values separate into disconnected components after
splitting, we would be making progress. We can't detect that for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117169 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
eb0e961cc9f97d8ba6c40503083731bc38636114 22-Oct-2010 Evan Cheng <evan.cheng@apple.com> Unbreak build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117155 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
impleRegisterCoalescing.cpp
c8f46c45a0bdefdb91593cabc87547cc45f9d89d 22-Oct-2010 Evan Cheng <evan.cheng@apple.com> Unbreak build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117155 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
impleRegisterCoalescing.cpp
19694bcf496c44bd130a947ed2dcf4219da590f5 22-Oct-2010 Evan Cheng <evan.cheng@apple.com> Transfer implicit ops when forming load multiple and return instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117151 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b179b46cc558c720d23a066c768bad71f975eb93 22-Oct-2010 Evan Cheng <evan.cheng@apple.com> Transfer implicit ops when forming load multiple and return instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117151 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
652710ea24812e1cc54bb9dae751eefd01109981 22-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more strict when detecting critical edges before loop splitting.

An exit block with a critical edge must only have predecessors in the loop, or
just before the loop. This guarantees that the inserted copies in the loop
predecessors dominate the exit block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117144 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
2c1442e1b2ea874a8766025e2ccff96e87879c2b 22-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more strict when detecting critical edges before loop splitting.

An exit block with a critical edge must only have predecessors in the loop, or
just before the loop. This guarantees that the inserted copies in the loop
predecessors dominate the exit block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117144 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
38258b960b1bf4e11e455f3488f621e7efd7366a 22-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add print methods

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117143 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
532de3dc6ea98387368954c0ac0e07b0adca8b62 22-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add print methods

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117143 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
fdade011ee008347f1add68d49c21d9aeda55aa0 21-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> X86: Base _fltused on the FunctionType of the called value instead of the potentially null "CalledFunction". Thanks Duncan!

This is needed for indirect calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117061 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
391b43bf33b77cb73966c9582d5b3fdfe0c38e80 21-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> X86: Base _fltused on the FunctionType of the called value instead of the potentially null "CalledFunction". Thanks Duncan!

This is needed for indirect calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117061 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
4e3a59c5c47a5ad2ddba9cd8d19529a013915214 21-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't include the destination interval in the union when computing
Parent - union(Y, ...). Doh.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117042 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
9d999772df3a7fd96857bb9155e1e9ab5fee7a13 21-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't include the destination interval in the union when computing
Parent - union(Y, ...). Doh.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117042 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
126005f19439db171e04eaff24f908a2417fab48 21-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Permit landing pad successor blocks when verifying basic blocks that end in an
unconditional branch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117041 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
0a7bbcb0cc3c6f1905cd26697c5baf4859ac6443 21-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Permit landing pad successor blocks when verifying basic blocks that end in an
unconditional branch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117041 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
4ab64ccb5fa09bde29059ce9e15f99a7ef3463f1 21-Oct-2010 Duncan Sands <baldrick@free.fr> The variable liTRC is not used for anything useful, zap it
(gcc-4.6 warning).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117022 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
9bc20ca72839299029eb0d0f34ecdea7c376299e 21-Oct-2010 Duncan Sands <baldrick@free.fr> The variable liTRC is not used for anything useful, zap it
(gcc-4.6 warning).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117022 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
9e4be6d372d1c5d799da0310400808e56cda358d 21-Oct-2010 Duncan Sands <baldrick@free.fr> Remove some variables that are never really used
(gcc-4.6 warns about these).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117021 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
6abfa46987e4cb47e2d88ea02574c2c082b0625d 21-Oct-2010 Duncan Sands <baldrick@free.fr> Remove some variables that are never really used
(gcc-4.6 warns about these).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117021 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
70037772a28c8d26598598863423af0067f5013a 21-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> CodeGen-Windows: Only emit _fltused if a VarArg function is called with floating point args.
This should be the minimum set of functions that could possibly need it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116978 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
dd0a00a6e377b11c3c122e111da3d1f53f13756d 21-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> CodeGen-Windows: Only emit _fltused if a VarArg function is called with floating point args.
This should be the minimum set of functions that could possibly need it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116978 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
d567dd1fcd0b60249964112aaf4b0e0025ea39ab 21-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to keep track of rematted values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116962 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
f1583ae84a8eeb0f6c0f81bd5bf189bdc9eaecb2 21-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to keep track of rematted values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116962 91177308-0d34-0410-b5e6-96231b3b80d8
iveRangeEdit.cpp
bdb370d8d6ecf50298d2b6009ad267550037feed 21-Oct-2010 Evan Cheng <evan.cheng@apple.com> More accurate estimate / tracking of register pressure.
- Initial register pressure in the loop should be all the live defs into the
loop. Not just those from loop preheader which is often empty.
- When an instruction is hoisted, update register pressure from loop preheader
to the original BB.
- Treat only use of a virtual register as kill since the code is still SSA.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116956 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
134982daa9bcd87f79c357e3a2686804b9baddd9 21-Oct-2010 Evan Cheng <evan.cheng@apple.com> More accurate estimate / tracking of register pressure.
- Initial register pressure in the loop should be all the live defs into the
loop. Not just those from loop preheader which is often empty.
- When an instruction is hoisted, update register pressure from loop preheader
to the original BB.
- Treat only use of a virtual register as kill since the code is still SSA.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116956 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
d96c9853192af2baea0d164228582f1dac8efbf2 21-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Move some of the InlineSpiller rematerialization code into LiveRangeEdit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116951 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
080c316ff8a066cd164d9a8f92df509d8cb63110 21-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Move some of the InlineSpiller rematerialization code into LiveRangeEdit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116951 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
c848d55f2163367981aff9c1c9ad55df8da09724 20-Oct-2010 Dale Johannesen <dalej@apple.com> Remove Synthesizable from the Type system; as MMX vector
types are no longer Legal on X86, we don't need it.
No functional change. 8499854.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116947 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
electionDAG/TargetLowering.cpp
e93d99cf0742eebab859022e4cfdcf03cb9d5dfa 20-Oct-2010 Dale Johannesen <dalej@apple.com> Remove Synthesizable from the Type system; as MMX vector
types are no longer Legal on X86, we don't need it.
No functional change. 8499854.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116947 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
electionDAG/TargetLowering.cpp
2ef57df403dfea6913b5df1946d53727b7ed93a0 20-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When SimpleRegisterCoalescing is trimming kill flags on a physical register
operand, also check if subregisters are killed.

Add <imp-def> operands for subregisters that remain alive after a super register
is killed.

I don't have a testcase for this that reproduces on trunk. <rdar://problem/8441758>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116940 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9b259404740cb48313615d2cfd88a6b1045560bf 20-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When SimpleRegisterCoalescing is trimming kill flags on a physical register
operand, also check if subregisters are killed.

Add <imp-def> operands for subregisters that remain alive after a super register
is killed.

I don't have a testcase for this that reproduces on trunk. <rdar://problem/8441758>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116940 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
228c8d1ff62ec211a56d9af228c272e56bc7ad96 20-Oct-2010 Dan Gohman <gohman@apple.com> Make CodeGen TBAA-aware.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116890 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
achineLICM.cpp
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
f96e4bd2a3b11928af75fb7472288930d16fec0b 20-Oct-2010 Dan Gohman <gohman@apple.com> Make CodeGen TBAA-aware.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116890 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
achineLICM.cpp
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
06c918d2981b0b470eb4e25642150303264381e8 20-Oct-2010 Jim Grosbach <grosbach@apple.com> Add a pre-dispatch SjLj EH hook on the unwind edge for targets to do any
setup they require. Use this for ARM/Darwin to rematerialize the base
pointer from the frame pointer when required. rdar://8564268

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
jLjEHPrepare.cpp
e4ad387a5a88dae20f0f7578e55170bbc8eee2a9 20-Oct-2010 Jim Grosbach <grosbach@apple.com> Add a pre-dispatch SjLj EH hook on the unwind edge for targets to do any
setup they require. Use this for ARM/Darwin to rematerialize the base
pointer from the frame pointer when required. rdar://8564268

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
jLjEHPrepare.cpp
255352dd7810ed674245a01a8866f40eccff699f 19-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Shrink MachineOperand from 40 to 32 bytes on 64-bit hosts.

Pull an unsigned out of the Contents union such that it has the same size as two
pointers and no padding.

Arrange members such that the Contents union and all pointers can be 8-byte
aligned without padding.

This speeds up code generation by 0.8% on a 64-bit host. 32-bit hosts should be
unaffected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116857 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
2594746045258958673ebe42db2a27a4d05b0b73 19-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Shrink MachineOperand from 40 to 32 bytes on 64-bit hosts.

Pull an unsigned out of the Contents union such that it has the same size as two
pointers and no padding.

Arrange members such that the Contents union and all pointers can be 8-byte
aligned without padding.

This speeds up code generation by 0.8% on a 64-bit host. 32-bit hosts should be
unaffected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116857 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
21e36b85449fb02a67f818137045fb6b919e78c9 19-Oct-2010 Evan Cheng <evan.cheng@apple.com> Re-enable register pressure aware machine licm with fixes. Hoist() may have
erased the instruction during LICM so UpdateRegPressureAfter() should not
reference it afterwards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116845 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
2312842de0c641107dd04d7e056d02491cc781ca 19-Oct-2010 Evan Cheng <evan.cheng@apple.com> Re-enable register pressure aware machine licm with fixes. Hoist() may have
erased the instruction during LICM so UpdateRegPressureAfter() should not
reference it afterwards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116845 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
a65d6a686e6ad865c61aec70c5bdfb30bf6f5b22 19-Oct-2010 Owen Anderson <resistor@mac.com> Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize
the pass's dependencies.

Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.

I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems
with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass
registration/creation, please send the testcase to me directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116820 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
achineCSE.cpp
achineDominators.cpp
achineLICM.cpp
achineModuleInfo.cpp
achineSink.cpp
achineVerifier.cpp
ptimizePHIs.cpp
HIElimination.h
eepholeOptimizer.cpp
reAllocSplitting.cpp
rologEpilogInserter.h
egAllocFast.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
enderMachineFunction.h
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.h
plitter.h
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
081c34b725980f995be9080eaec24cd3dfaaf065 19-Oct-2010 Owen Anderson <resistor@mac.com> Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize
the pass's dependencies.

Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.

I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems
with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass
registration/creation, please send the testcase to me directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116820 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
achineCSE.cpp
achineDominators.cpp
achineLICM.cpp
achineModuleInfo.cpp
achineSink.cpp
achineVerifier.cpp
ptimizePHIs.cpp
HIElimination.h
eepholeOptimizer.cpp
reAllocSplitting.cpp
rologEpilogInserter.h
egAllocFast.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
enderMachineFunction.h
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.h
plitter.h
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
1ea11fd65ecb7650ec9346aa24e1b716af04a59a 19-Oct-2010 Daniel Dunbar <daniel@zuster.org> Revert r116781 "- Add a hook for target to determine whether an instruction def
is", which breaks some nightly tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116816 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
98694138025fdb0cec0cda5727201ad00ded3d63 19-Oct-2010 Daniel Dunbar <daniel@zuster.org> Revert r116781 "- Add a hook for target to determine whether an instruction def
is", which breaks some nightly tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116816 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
e889983a4df54abae30c4476eebf25c210756bc2 19-Oct-2010 NAKAMURA Takumi <geek4civic@gmail.com> lib/CodeGen/TargetLoweringObjectFileImpl.cpp: Tweak to emit ".{section}${name}" instead of ".{section}$linkonce_{name}" for linkonce sections.

It seems GNU ld/PECOFF relies on section names, linking with g++'s libstdc++.a would fail.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116791 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
3b3b0ebd2ec9cd1de709007f31f40790c9243511 19-Oct-2010 NAKAMURA Takumi <geek4civic@gmail.com> lib/CodeGen/TargetLoweringObjectFileImpl.cpp: Tweak to emit ".{section}${name}" instead of ".{section}$linkonce_{name}" for linkonce sections.

It seems GNU ld/PECOFF relies on section names, linking with g++'s libstdc++.a would fail.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116791 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
a7a7b05f1bdba65ef6049855a4e75ec0c9b05da2 19-Oct-2010 Andrew Trick <atrick@apple.com> Fix for machine licm assert: RCCost <= RegPressure[RCId]
in MultiSource/Benchmarks/VersaBench/beamformer/beamformer.
SmallSet.insert returns true if the element is inserted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116790 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
dc986d2462ca8df72af9e2f6afac0ba86b753e5b 19-Oct-2010 Andrew Trick <atrick@apple.com> Fix for machine licm assert: RCCost <= RegPressure[RCId]
in MultiSource/Benchmarks/VersaBench/beamformer/beamformer.
SmallSet.insert returns true if the element is inserted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116790 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
ca4762cf48c713cfeda2ca8262853590c25e2a1d 19-Oct-2010 Evan Cheng <evan.cheng@apple.com> - Add a hook for target to determine whether an instruction def is
"long latency" enough to hoist even if it may increase spilling. Reloading
a value from spill slot is often cheaper than performing an expensive
computation in the loop. For X86, that means machine LICM will hoist
SQRT, DIV, etc. ARM will be somewhat aggressive with VFP and NEON
instructions.
- Enable register pressure aware machine LICM by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116781 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
11e8b74a7ae9ecd59b64180a59143e39bc3b9514 19-Oct-2010 Evan Cheng <evan.cheng@apple.com> - Add a hook for target to determine whether an instruction def is
"long latency" enough to hoist even if it may increase spilling. Reloading
a value from spill slot is often cheaper than performing an expensive
computation in the loop. For X86, that means machine LICM will hoist
SQRT, DIV, etc. ARM will be somewhat aggressive with VFP and NEON
instructions.
- Enable register pressure aware machine LICM by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116781 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
48c2c93170baeb4c25558777774c8bd5eb51ac94 18-Oct-2010 Bill Wendling <isanbard@gmail.com> Don't recompute MachineRegisterInfo in the Optimize* method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116750 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
b41ee96d76ccf1eec2fd898def4cfd7c16868708 18-Oct-2010 Bill Wendling <isanbard@gmail.com> Don't recompute MachineRegisterInfo in the Optimize* method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116750 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
da209d687c759498309b276455a5bc84c5223312 18-Oct-2010 Dan Gohman <gohman@apple.com> Add TypeBasedAliasAnalysis to the standard pass lists. Note that it
is currently inert by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116732 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
4021fccf9fdb60906e5f16c98e72042240867495 18-Oct-2010 Dan Gohman <gohman@apple.com> Add TypeBasedAliasAnalysis to the standard pass lists. Note that it
is currently inert by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116732 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
edf9b77e65278603415c64c4169dfd410e290ea9 18-Oct-2010 Dan Gohman <gohman@apple.com> Make BasicAliasAnalysis a normal AliasAnalysis implementation which
does normal initialization and normal chaining. Change the default
AliasAnalysis implementation to NoAlias.

Update StandardCompileOpts.h and friends to explicitly request
BasicAliasAnalysis.

Update tests to explicitly request -basicaa.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116720 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
c1be92f3bb9158eade30d97db6997e2fe78150ab 18-Oct-2010 Dan Gohman <gohman@apple.com> Make BasicAliasAnalysis a normal AliasAnalysis implementation which
does normal initialization and normal chaining. Change the default
AliasAnalysis implementation to NoAlias.

Update StandardCompileOpts.h and friends to explicitly request
BasicAliasAnalysis.

Update tests to explicitly request -basicaa.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116720 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
9fb3e7fa74ab8c36787ecb2b66d2028a09fa70b6 18-Oct-2010 Jim Grosbach <grosbach@apple.com> Trivial grammar tweak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116710 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c0c7c2b6061e7ca2d528bbedadb1bea0561c9158 18-Oct-2010 Jim Grosbach <grosbach@apple.com> Trivial grammar tweak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116710 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
37deb66d836b1a36f49f07a21cd4062bea9cfa18 16-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> X86-Windows: Emit an undefined global __fltused symbol when targeting Windows
if any floating point arguments are passed to an external function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116665 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
84ac4d5a2a8fd0e6f95ec46088c0ca7bb63423ac 16-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> X86-Windows: Emit an undefined global __fltused symbol when targeting Windows
if any floating point arguments are passed to an external function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116665 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
a79b3988ab901603b9ca933449d0ba29f9209113 16-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Whitespace!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116664 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
e70c526d59e92048c89281d1b7011af0b1d9ee95 16-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Whitespace!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116664 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
26a8a13a596f62199389b952ed37ed6af9c0098c 16-Oct-2010 Evan Cheng <evan.cheng@apple.com> More machine LICM work. It now tracks register pressure for path from preheader to current BB and use the information determine whether hoisting is worthwhile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116654 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
03a9fdf2e755c1cebdb8371d79b591d46daa9463 16-Oct-2010 Evan Cheng <evan.cheng@apple.com> More machine LICM work. It now tracks register pressure for path from preheader to current BB and use the information determine whether hoisting is worthwhile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116654 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
b95dd1d0c99d42746e9d316ba50c0c43809b55ad 15-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unused accessor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116580 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.h
50cef5829dd8fcbda052c8fb702483c6212f803b 15-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unused accessor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116580 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.h
2d2ba6a213ae77d06984d540bab8604a601967a0 15-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate curli from SplitEditor. Use the LiveRangeEdit reference instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116547 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
9d5d48bc41b182a1b76b1df25069ad4fb6fc45a7 15-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate curli from SplitEditor. Use the LiveRangeEdit reference instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116547 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
d6f5f4a0893ebdfe7067ca89de78ac7db44794aa 15-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Move stack slot assignments into LiveRangeEdit.

All registers created during splitting or spilling are assigned to the same
stack slot as the parent register.

When splitting or rematting, we may not spill at all. In that case the stack
slot is still assigned, but it will be dead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116546 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
plitKit.cpp
2a0180fbff4870995482d96986ad780ab9de8af4 15-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Move stack slot assignments into LiveRangeEdit.

All registers created during splitting or spilling are assigned to the same
stack slot as the parent register.

When splitting or rematting, we may not spill at all. In that case the stack
slot is still assigned, but it will be dead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116546 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
plitKit.cpp
e6bd095f25c5449095f60871e37f5256a18c0ec3 15-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Create a new LiveRangeEdit class to keep track of the new registers created when
splitting or spillling, and to help with rematerialization.

Use LiveRangeEdit in InlineSpiller and SplitKit. This will eventually make it
possible to share remat code between InlineSpiller and SplitKit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116543 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
plitKit.cpp
plitKit.h
a17768f5822ab62bc18608e5ba473187bf726b84 15-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Create a new LiveRangeEdit class to keep track of the new registers created when
splitting or spillling, and to help with rematerialization.

Use LiveRangeEdit in InlineSpiller and SplitKit. This will eventually make it
possible to share remat code between InlineSpiller and SplitKit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116543 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
nlineSpiller.cpp
iveRangeEdit.cpp
iveRangeEdit.h
plitKit.cpp
plitKit.h
8000c17d05973443290d701001afe7f9a422cc5b 14-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Only split around a loop if the live range has uses outside the loop periphery.

Before we would also split around a loop if any peripheral block had multiple
uses. This could cause repeated splitting when splitting a different live range
would insert uses into the periphery.

Now -spiller=inline passes the nightly test suite again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116494 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
ab00e9f498a23a511a06d9fcd33e7232e9a3f916 14-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Only split around a loop if the live range has uses outside the loop periphery.

Before we would also split around a loop if any peripheral block had multiple
uses. This could cause repeated splitting when splitting a different live range
would insert uses into the periphery.

Now -spiller=inline passes the nightly test suite again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116494 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
3386b0a6430d34fb08f88dcffcfb85cc984c81cb 14-Oct-2010 Evan Cheng <evan.cheng@apple.com> Register pressure and instruction latency aware machine LICM. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116465 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
0e673919f0f02f39e2210c365f732299a21db49e 14-Oct-2010 Evan Cheng <evan.cheng@apple.com> Register pressure and instruction latency aware machine LICM. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116465 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
fe368c948b6ddf1fdf6ce7d04de0359476afa4c7 13-Oct-2010 Owen Anderson <resistor@mac.com> Analysis groups need to initialize their default implementations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116441 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
325e2643559fcec8b0396dfa16e415cc86a22a09 13-Oct-2010 Owen Anderson <resistor@mac.com> Analysis groups need to initialize their default implementations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116441 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
cdb0c03397e05fb01ed67a7caaa5f82ec993c564 12-Oct-2010 Owen Anderson <resistor@mac.com> Begin adding static dependence information to passes, which will allow us to
perform initialization without static constructors AND without explicit initialization
by the client. For the moment, passes are required to initialize both their
(potential) dependencies and any passes they preserve. I hope to be able to relax
the latter requirement in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116334 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineCSE.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineSink.cpp
eepholeOptimizer.cpp
reAllocSplitting.cpp
rocessImplicitDefs.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
enderMachineFunction.cpp
impleRegisterCoalescing.cpp
plitter.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
2ab36d350293c77fc8941ce1023e4899df7e3a82 12-Oct-2010 Owen Anderson <resistor@mac.com> Begin adding static dependence information to passes, which will allow us to
perform initialization without static constructors AND without explicit initialization
by the client. For the moment, passes are required to initialize both their
(potential) dependencies and any passes they preserve. I hope to be able to relax
the latter requirement in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116334 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineCSE.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineSink.cpp
eepholeOptimizer.cpp
reAllocSplitting.cpp
rocessImplicitDefs.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
enderMachineFunction.cpp
impleRegisterCoalescing.cpp
plitter.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
11cfc5a0097203a29c56715bee315cefa730d3c4 11-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace FindLiveRangeContaining() with getVNInfoAt() in LiveIntervalAnalysis.

This helps hiding the LiveRange class which really should be private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116244 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
31cc3ec3308c8fafd9865388214ae11662a71af4 11-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace FindLiveRangeContaining() with getVNInfoAt() in LiveIntervalAnalysis.

This helps hiding the LiveRange class which really should be private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116244 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ffc7d072786e0fef19fe9bf7d070991105108813 11-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly handle reloading and spilling around partial redefines in
LocalRewriter.

This is a bit of a hack that adds an implicit use operand to model the
read-modify-write nature of a partial redef. Uses and defs are rewritten in
separate passes, and a single operand would never be processed twice.

<rdar://problem/8518892>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116210 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
40ef4fe82aefc3333f2cdeffb6ad28d9dfaccb8c 11-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly handle reloading and spilling around partial redefines in
LocalRewriter.

This is a bit of a hack that adds an implicit use operand to model the
read-modify-write nature of a partial redef. Uses and defs are rewritten in
separate passes, and a single operand would never be processed twice.

<rdar://problem/8518892>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116210 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
ace3a93c8fcd74723fcdf922f336fef1cce84978 11-Oct-2010 Chris Lattner <sabre@nondot.org> Per discussion with Sanjiv, remove the PIC16 target from mainline. When/if
it comes back, it will be largely a rewrite, so keeping the old codebase
in tree isn't helping anyone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116190 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
60cb528246dd01b80b1b1260a2a877ea488e620a 11-Oct-2010 Chris Lattner <sabre@nondot.org> Per discussion with Sanjiv, remove the PIC16 target from mainline. When/if
it comes back, it will be largely a rewrite, so keeping the old codebase
in tree isn't helping anyone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116190 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
39e98bb80322a4f0aec6fae3892750240891f386 10-Oct-2010 Chris Lattner <sabre@nondot.org> fix the default va_arg expansion (in the realignment case) to not implicitly
truncate the stack pointer to 32-bits on a 64-bit machine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
07e3a38c78d2788e05d716e7fa552b9449c87c33 10-Oct-2010 Chris Lattner <sabre@nondot.org> fix the default va_arg expansion (in the realignment case) to not implicitly
truncate the stack pointer to 32-bits on a 64-bit machine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
dad1ea2713c883ab6c663b117ce3cfbf81c5e9ee 09-Oct-2010 Benjamin Kramer <benny.kra@googlemail.com> Silence compiler warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116156 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
ccefe32141c96faa05445bce0b26f1acd8bdc1b8 09-Oct-2010 Benjamin Kramer <benny.kra@googlemail.com> Silence compiler warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116156 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
914c4ccca98c144fccfbf54658cf612dfe812c97 09-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename SplitEditor::rewrite to finish() and break it out into a couple of new
functions: computeRemainder and rewrite.

When the remainder breaks up into multiple components, remember to rewrite those
uses as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116121 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
7466927b1af264b359c860cb9f7d1f3b275cc5cd 09-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename SplitEditor::rewrite to finish() and break it out into a couple of new
functions: computeRemainder and rewrite.

When the remainder breaks up into multiple components, remember to rewrite those
uses as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116121 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
c9ebc9275d63482b9233e57230947e4ddaf026bf 09-Oct-2010 Evan Cheng <evan.cheng@apple.com> Avoid compiler warning: comparison between signed and unsigned integer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116119 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
d82de8341c99c1756624020000bd51a03a5f355c 09-Oct-2010 Evan Cheng <evan.cheng@apple.com> Avoid compiler warning: comparison between signed and unsigned integer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116119 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
2fc9ecbb42ccd18594a27950a5f1826f2eb34546 09-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract method ProcessUses from LocalRewriter::RewriteMBB. Both parent and child
are still way too long, but it's a start.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116116 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
a32181a57d08f44767b6baf4e67e6860691b53fa 09-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract method ProcessUses from LocalRewriter::RewriteMBB. Both parent and child
are still way too long, but it's a start.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116116 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
dcf1f10d145b6d477c249fdba7fab82064d34a65 08-Oct-2010 Anton Korobeynikov <asl@math.spbu.ru> Do not check that the bodies of two defs of same linkonce global are the same.
Such a check does not make any sense in presense of inlining and other compiler-dependent stuff.
This should fix bunch of warnings on mingw32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116113 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
657985eb8b8cbbde2391befafccfafbddf04242a 08-Oct-2010 Anton Korobeynikov <asl@math.spbu.ru> Do not check that the bodies of two defs of same linkonce global are the same.
Such a check does not make any sense in presense of inlining and other compiler-dependent stuff.
This should fix bunch of warnings on mingw32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116113 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
7ce707af7b77b7a44db0c4097fed8da5341c0fb3 08-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Classify value numbers into connected components in linear time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116105 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
54f32e6575d0c1b920ae5151c229f1187bae0cbf 08-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Classify value numbers into connected components in linear time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116105 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
9aafd5bbad0cf4efd0e1452ffe31d7794080b7fd 08-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Call InitSections in llc and clang so that the binaries produced by them
are easier to diff with those produced by llvm-mc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116095 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ff9dfedd101e1a591ec8f7fac9999777cde80efb 08-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Call InitSections in llc and clang so that the binaries produced by them
are easier to diff with those produced by llvm-mc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116095 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
c70fea831145260af1e66df82c06557825be3cf9 08-Oct-2010 Evan Cheng <evan.cheng@apple.com> Don't waste time unfolding simple loads. The unfolded copy won't be hoisted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116081 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
e95f3195b8c65f377a59cc716bfda58c8f7c2f5e 08-Oct-2010 Evan Cheng <evan.cheng@apple.com> Don't waste time unfolding simple loads. The unfolded copy won't be hoisted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116081 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
1d9dea3e7654d3032038fec632f0ee66d8d5f69b 08-Oct-2010 Evan Cheng <evan.cheng@apple.com> Fix operand latency computation in cases where the definition operand is
implicit. e.g.
%D6<def>, %D7<def> = VLD1q16 %R2<kill>, 0, ..., %Q3<imp-def>
%Q1<def> = VMULv8i16 %Q1<kill>, %Q3<kill>, ...

The real definition indices are 0,1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116080 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
1aca5bc1353d4e2c7706149efbc5393aa9e2cc3f 08-Oct-2010 Evan Cheng <evan.cheng@apple.com> Fix operand latency computation in cases where the definition operand is
implicit. e.g.
%D6<def>, %D7<def> = VLD1q16 %R2<kill>, 0, ..., %Q3<imp-def>
%Q1<def> = VMULv8i16 %Q1<kill>, %Q3<kill>, ...

The real definition indices are 0,1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116080 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
8c05fd42b5b61bef47e5ac90d2e01e6cbe248ac6 08-Oct-2010 Devang Patel <dpatel@apple.com> Line number 0 indicates there is no source line/file name info available for this construct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116061 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b2bada305ef63479f987ba5feb6c2a8d11904b53 08-Oct-2010 Devang Patel <dpatel@apple.com> Line number 0 indicates there is no source line/file name info available for this construct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116061 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
392d7d8fc6914f5bbf6c50261379471e6056df31 08-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> After splitting, the remaining LiveInterval may be fragmented into multiple
connected components. These components should be allocated different virtual
registers because there is no reason for them to be allocated together.

Add the ConnectedVNInfoEqClasses class to calculate the connected components,
and move values to new LiveIntervals.

Use it from SplitKit::rewrite by creating new virtual registers for the
components.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116006 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
plitKit.cpp
0253df9a897ce541d56146699cedd79c464bda5e 08-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> After splitting, the remaining LiveInterval may be fragmented into multiple
connected components. These components should be allocated different virtual
registers because there is no reason for them to be allocated together.

Add the ConnectedVNInfoEqClasses class to calculate the connected components,
and move values to new LiveIntervals.

Use it from SplitKit::rewrite by creating new virtual registers for the
components.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116006 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
plitKit.cpp
1434dfa8cead98bd1e63411fcb9424e1d37f61ac 08-Oct-2010 Owen Anderson <resistor@mac.com> Now with fewer extraneous semicolons!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115996 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
eadMachineInstructionElim.cpp
CMetadata.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
iveVariables.cpp
achineCSE.cpp
achineDominators.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineSink.cpp
achineVerifier.cpp
ptimizePHIs.cpp
HIElimination.cpp
eepholeOptimizer.cpp
reAllocSplitting.cpp
rocessImplicitDefs.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egisterCoalescer.cpp
enderMachineFunction.cpp
impleRegisterCoalescing.cpp
lotIndexes.cpp
plitter.cpp
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
ce665bd2e2b581ab0858d1afe359192bac96b868 08-Oct-2010 Owen Anderson <resistor@mac.com> Now with fewer extraneous semicolons!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115996 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
eadMachineInstructionElim.cpp
CMetadata.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
iveVariables.cpp
achineCSE.cpp
achineDominators.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineSink.cpp
achineVerifier.cpp
ptimizePHIs.cpp
HIElimination.cpp
eepholeOptimizer.cpp
reAllocSplitting.cpp
rocessImplicitDefs.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egisterCoalescer.cpp
enderMachineFunction.cpp
impleRegisterCoalescing.cpp
lotIndexes.cpp
plitter.cpp
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
7a4f891bb9274036aabba99ae26917482a84ec98 08-Oct-2010 Devang Patel <dpatel@apple.com> Provie a clearner interface so that FE can decide whether a function has prototype or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115988 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7b172c6ae6c4fea90db785902b4326afb21ad584 08-Oct-2010 Devang Patel <dpatel@apple.com> Provie a clearner interface so that FE can decide whether a function has prototype or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115988 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
90ee2420ad4f0c9b0656f46373634f5a52c6db34 07-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print more loop info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115951 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
452a9fdf541413d76d9ea1d91e1702aaf2f651c7 07-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print more loop info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115951 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
d439e70b1547cbf4f53bd70275b738e81429565f 07-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out MBB number when rewriting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115950 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
8fc3d1187ce547f42a43ec6adb229c8d2423a6b1 07-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out MBB number when rewriting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115950 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
4ec91034dee0e6beb449f5a055af5f97168d292d 07-Oct-2010 Owen Anderson <resistor@mac.com> Add initialization routines for CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115949 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
78b152470d80c27eec82087b2a3c3fdf809e0050 07-Oct-2010 Owen Anderson <resistor@mac.com> Add initialization routines for CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115949 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odeGen.cpp
a00cda12f42fac709afadc5fbed5881201eba86a 07-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Cache interval iterators in SplitEditor::addTruncSimpleRange so we only have to
do one find().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115929 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
4b3041c43e8134d0f2471255c736745f2eb3214d 07-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Cache interval iterators in SplitEditor::addTruncSimpleRange so we only have to
do one find().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115929 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
b301d1605d31a9cba822790202c4df7a849ae6d8 07-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up debug printing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115928 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
9b24afe41e06572f901edf2e78ef71fb228db29e 07-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up debug printing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115928 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
b22342dea0a19e97c52428a0b8027ddba05d6b69 07-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineRegisterInfo::constrainRegClass and use it in MachineCSE.

This function is intended to be used when inserting a machine instruction that
trivially restricts the legal registers, like LEA requiring a GR32_NOSP
argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115875 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
achineRegisterInfo.cpp
bf4699c56100a0184bbe4fb53937c7204ca1ceb0 07-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineRegisterInfo::constrainRegClass and use it in MachineCSE.

This function is intended to be used when inserting a machine instruction that
trivially restricts the legal registers, like LEA requiring a GR32_NOSP
argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115875 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
achineRegisterInfo.cpp
89b96b4d17ae606bbc90856bb3e76b7ffd81ecf6 07-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Skip unused registers when verifying LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115874 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
893ab5d7014dd112fb111a67504bd556be9bd393 07-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Skip unused registers when verifying LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115874 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
954c2432204be4e03a77e6196e4a2d7993a3d8da 06-Oct-2010 Owen Anderson <resistor@mac.com> Hide analysis group registration behind a macro, just like pass registration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115835 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
e9ef41a47d2ee637b6aed5d018c4d90019d987ac 06-Oct-2010 Owen Anderson <resistor@mac.com> Hide analysis group registration behind a macro, just like pass registration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115835 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
e7763c8b9800be717587a61c4cc4ac5dd8ce05d5 06-Oct-2010 Devang Patel <dpatel@apple.com> Add support for DW_TAG_unspecified_parameters.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115833 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d6747df5e0354256a9e440d38f21c0b3ca82af28 06-Oct-2010 Devang Patel <dpatel@apple.com> Add support for DW_TAG_unspecified_parameters.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115833 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b46c19c2361c6e166bd47f7030329be87075cb82 06-Oct-2010 Nick Lewycky <nicholas@mxc.ca> Remove unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115802 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
9c220fc165ab3543a383d7101cb80544e0c220e3 06-Oct-2010 Nick Lewycky <nicholas@mxc.ca> Remove unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115802 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
19deef36944f6a5dddb7ab874e997f72edd24fd6 06-Oct-2010 Dan Gohman <gohman@apple.com> ComputeLinearIndex doesn't need its TLI argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115792 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/SelectionDAGBuilder.cpp
0dadb15927b912c98918e8a9e7466af77062149f 06-Oct-2010 Dan Gohman <gohman@apple.com> ComputeLinearIndex doesn't need its TLI argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115792 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/SelectionDAGBuilder.cpp
5cb06cba2dffe2a72ba3fcc947b0c265232355c8 06-Oct-2010 Evan Cheng <evan.cheng@apple.com> - Add TargetInstrInfo::getOperandLatency() to compute operand latencies. This
allow target to correctly compute latency for cases where static scheduling
itineraries isn't sufficient. e.g. variable_ops instructions such as
ARM::ldm.
This also allows target without scheduling itineraries to compute operand
latencies. e.g. X86 can return (approximated) latencies for high latency
instructions such as division.
- Compute operand latencies for those defined by load multiple instructions,
e.g. ldm and those used by store multiple instructions, e.g. stm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115755 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
a0792de66c8364d47b0a688c7f408efb7b10f31b 06-Oct-2010 Evan Cheng <evan.cheng@apple.com> - Add TargetInstrInfo::getOperandLatency() to compute operand latencies. This
allow target to correctly compute latency for cases where static scheduling
itineraries isn't sufficient. e.g. variable_ops instructions such as
ARM::ldm.
This also allows target without scheduling itineraries to compute operand
latencies. e.g. X86 can return (approximated) latencies for high latency
instructions such as division.
- Compute operand latencies for those defined by load multiple instructions,
e.g. ldm and those used by store multiple instructions, e.g. stm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115755 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
0865f954fd617569b85a076366b4a7c600ef79d6 06-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Count uses in all nested loops, not just the deepest.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115710 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
9b90d7eae2e72ee3f816194b6b6f9af94fb0fd0b 06-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Count uses in all nested loops, not just the deepest.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115710 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
cbf067d941409c0ac81f80a8f66a4327125b816c 06-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove SplitAnalysis::removeUse. It was only used to make SplitAnalysis
reusable, but that is no longer relevant since a split will always replace the
original.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115709 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
fc3ef3c2e9e1a01f19aaf1e362d8d2f209c09a46 06-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove SplitAnalysis::removeUse. It was only used to make SplitAnalysis
reusable, but that is no longer relevant since a split will always replace the
original.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115709 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
66fd57ff302c7146d18ba4dfc012b07cfb1610e5 06-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> dupli always has an interval now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115708 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
d00f7e0c76d997b6b685ea66ba78aba2b952cd92 06-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> dupli always has an interval now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115708 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
7b6f163437eca400683381a1d166310d857e5715 06-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> We can split around loops with multiple exits now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115696 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
2e2be60e0386c33b3e28a29af3ddfbafafc45aea 06-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> We can split around loops with multiple exits now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115696 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
7a2a53b1520dd783ea242f443ad91774fae0728d 06-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Update SplitEditor API to reflect the fact that the original live interval is
never kept after splitting.

Keeping the original interval made sense when the split region doesn't modify
the register, and the original is spilled. We can get the same effect by
detecting reloaded values when spilling around copies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115695 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
plitKit.h
57d0f2deb0afefe69770a28937a4363e7b1f9753 06-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Update SplitEditor API to reflect the fact that the original live interval is
never kept after splitting.

Keeping the original interval made sense when the split region doesn't modify
the register, and the original is spilled. We can get the same effect by
detecting reloaded values when spilling around copies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115695 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
plitKit.h
d505c17bd671ac77f36c7f8367c98fc36e2f97b3 06-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Intervals are half-open.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115694 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
dbc36091ff7be76d22105b67db73e18224bebb2f 06-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Intervals are half-open.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115694 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
d74a760b2b1b682c2bf924cc219fb80a1499e7f2 05-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When we find a reaching definition, make sure it is visited from all paths by
erasing it from the visited set. That ensures we create the right phi defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115666 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
984a7fc32ce2df9deb4bde8ddd086185b91bb358 05-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When we find a reaching definition, make sure it is visited from all paths by
erasing it from the visited set. That ensures we create the right phi defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115666 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
9d6500955693196b238af7993d527312784f2456 05-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't use nextIndex to check for live out of instruction.
Insert copy after defining instruction.

Fix LiveIntervalMap::extendTo to properly handle live segments starting before
the current basic block.

Make sure the open live range is extended to the inserted copy's use slot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115665 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
fc60d7729bb5b63b7d61e370e51bd05e9a18b8bc 05-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't use nextIndex to check for live out of instruction.
Insert copy after defining instruction.

Fix LiveIntervalMap::extendTo to properly handle live segments starting before
the current basic block.

Make sure the open live range is extended to the inserted copy's use slot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115665 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
4f9fb4486ef20d6ce673f32f742731ab8f20e9d4 05-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Tweak VNInfo printing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115650 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
a818c072af2f94704d08776d5bc7c50a012e40c2 05-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Tweak VNInfo printing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115650 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
c89f1a92dc1fe07d94470848484ca84f7190d80f 05-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add assert for valid slot indexes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115649 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
201ecfca9892b2eab2d04aa5da59f3f5e1efe49d 05-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add assert for valid slot indexes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115649 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
5ecfab6436cffabe6e039b8c9e090b3b4ca05a46 05-Oct-2010 Owen Anderson <resistor@mac.com> Use a more efficient lowering of uint64_t --> float that can take advantage of hardware signed integer conversion without
having to do a double cast (uint64_t --> double --> float). This is based on the algorithm from compiler_rt's __floatundisf
for X86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3a9e7690ba99c27d9b09fa8e61fb9f7ba01364c9 05-Oct-2010 Owen Anderson <resistor@mac.com> Use a more efficient lowering of uint64_t --> float that can take advantage of hardware signed integer conversion without
having to do a double cast (uint64_t --> double --> float). This is based on the algorithm from compiler_rt's __floatundisf
for X86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
566eafd5f5365332578134b3a801b1c27e085678 05-Oct-2010 Evan Cheng <evan.cheng@apple.com> This DAG combine BRCOND transformation can look pass truncate of the operand:
// %a = ...
// %b = and i32 %a, 2
// %c = srl i32 %b, 1
// brcond i32 %c ...
//
// into
//
// %a = ...
// %b = and i32 %a, 2
// %c = setcc eq %b, 0
// brcond %c ...

Make sure it restores local variable N1, which corresponds to the condition operand if it fails to match.

This apparently breaks TCE but since that backend isn't in the tree I don't have a test for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2a135ae53057ef7d0e9123d450b958d0d59d8ccc 05-Oct-2010 Evan Cheng <evan.cheng@apple.com> This DAG combine BRCOND transformation can look pass truncate of the operand:
// %a = ...
// %b = and i32 %a, 2
// %c = srl i32 %b, 1
// brcond i32 %c ...
//
// into
//
// %a = ...
// %b = and i32 %a, 2
// %c = setcc eq %b, 0
// brcond %c ...

Make sure it restores local variable N1, which corresponds to the condition operand if it fails to match.

This apparently breaks TCE but since that backend isn't in the tree I don't have a test for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
17cee16243016c92e4139d4070e0bb13b35bf6b9 04-Oct-2010 Lang Hames <lhames@gmail.com> Removed the older style (in-allocator) problem construction system from the PBQP allocator. Problem construction is now done exclusively with the new builders.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115502 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
ab62b7e8618bda8063b49afab181bc7ed5546104 04-Oct-2010 Lang Hames <lhames@gmail.com> Removed the older style (in-allocator) problem construction system from the PBQP allocator. Problem construction is now done exclusively with the new builders.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115502 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
1aa99b74939eaaa90eca124851bf6afeb97f15c8 02-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop using LiveRange in MachineVerifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115408 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
ed8263553ab80e99704554c6f34d7d5a27bf45f0 02-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop using LiveRange in MachineVerifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115408 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
59c0e413346ff71634522714441b3f502ae54d27 02-Oct-2010 Bob Wilson <bob.wilson@apple.com> Fix a miscompile in 186.crafty for Thumb2 that was exposed by Evan's
scheduling change in svn 115121. The CriticalAntiDepBreaker had bad
liveness information. It was calculating the KillIndices for one scheduling
region in a basic block, rescheduling that region so the KillIndices were
no longer valid, and then using those wrong KillIndices to make decisions
for the next scheduling region. I've not been able to reduce a small
testcase for this. Radar 8502534.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115400 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
f70007e89e7b252abc9dc175aab92191c09bebf7 02-Oct-2010 Bob Wilson <bob.wilson@apple.com> Fix a miscompile in 186.crafty for Thumb2 that was exposed by Evan's
scheduling change in svn 115121. The CriticalAntiDepBreaker had bad
liveness information. It was calculating the KillIndices for one scheduling
region in a basic block, rescheduling that region so the KillIndices were
no longer valid, and then using those wrong KillIndices to make decisions
for the next scheduling region. I've not been able to reduce a small
testcase for this. Radar 8502534.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115400 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
421d137cf3da66f90e7da0505d86a59d7594a243 02-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Drop the use of LiveInterval::iterator and the LiveRange class in
RemoveCopyByCommutingDef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115386 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5f2d1fa0f7c484f319d20e7f1c04f110a4b86648 02-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Drop the use of LiveInterval::iterator and the LiveRange class in
RemoveCopyByCommutingDef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115386 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
685626d5209bcd5bd763bca26c63ba50c0c2fb09 02-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When RemoveCopyByCommutingDef is creating additional identity copies, just use
LiveInterval::MergeValueNumberInto instead of trying to extend LiveRanges and
getting it wrong.

This fixed PR8249 where a valno with a multi-segment live range was defined by
an identity copy created by RemoveCopyByCommutingDef. Some of the live
segments disappeared.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115385 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
e0a73ec0a982a4213f3de9860545d9bf2814593d 02-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When RemoveCopyByCommutingDef is creating additional identity copies, just use
LiveInterval::MergeValueNumberInto instead of trying to extend LiveRanges and
getting it wrong.

This fixed PR8249 where a valno with a multi-segment live range was defined by
an identity copy created by RemoveCopyByCommutingDef. Some of the live
segments disappeared.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115385 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
458f79bd04313887c3a01ddbfa7fad39d3813f83 02-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Pretty up the debug output during RemoveCopyByCommutingDef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115384 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
a9b85c1074dd91ef6702b4c13499c5900616ad02 02-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Pretty up the debug output during RemoveCopyByCommutingDef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115384 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
127b12b6ddfb431453fdbccd5bef79bb6aadca5d 02-Oct-2010 Devang Patel <dpatel@apple.com> Add support to let FE mark explict methods as explict in debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115378 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
21ea1d5b4cad8c8dee1288453f797572766c94d8 02-Oct-2010 Devang Patel <dpatel@apple.com> Add support to let FE mark explict methods as explict in debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115378 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ce027318293ddd2a0ea0cab4e9fa6af059d3bed2 02-Oct-2010 Jim Grosbach <grosbach@apple.com> Nuke trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
2b2de24fe2bdbe0c533bab2208f4b666ea0d6e86 02-Oct-2010 Jim Grosbach <grosbach@apple.com> Nuke trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
97d3291809ac35f2551f8d71bd7ff190ac4f45a2 02-Oct-2010 Owen Anderson <resistor@mac.com> Thread the determination of branch prediction hit rates back through the if-conversion heuristic APIs. For now,
stick with a constant estimate of 90% (branch predictors are good!), but we might find that we want to provide
more nuanced estimates in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115364 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
e3cc84a43d6a4bb6c50f58f3dd8e60e28787509e 02-Oct-2010 Owen Anderson <resistor@mac.com> Thread the determination of branch prediction hit rates back through the if-conversion heuristic APIs. For now,
stick with a constant estimate of 90% (branch predictors are good!), but we might find that we want to provide
more nuanced estimates in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115364 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
f41fcf7f3cfa5530922837d91b409469ca91915c 01-Oct-2010 Devang Patel <dpatel@apple.com> Fix code gen crash reported in PR 8235. We still lose debug info for the unused argument here. This is a known limitation recorded debuginfo-tests/trunk/dbg-declare2.ll function 'f6' test case.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115323 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
27f46cd6397c456df6f6f22a46752e64c0954fca 01-Oct-2010 Devang Patel <dpatel@apple.com> Fix code gen crash reported in PR 8235. We still lose debug info for the unused argument here. This is a known limitation recorded debuginfo-tests/trunk/dbg-declare2.ll function 'f6' test case.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115323 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
d3cc98112ac03df4b15d59ad339d4860a13e10ea 01-Oct-2010 Gabor Greif <ggreif@gmail.com> typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
fb4032f4223bfec5a1f76f13c501ea333f7af55f 01-Oct-2010 Gabor Greif <ggreif@gmail.com> typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
393d45094c3cb00a8651c7ff3332aa7034c488d4 01-Oct-2010 Chris Lattner <sabre@nondot.org> fix typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6bf263b4a2837161f827dbd711957d0e3ffa16e2 01-Oct-2010 Chris Lattner <sabre@nondot.org> fix typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
dd75196ded16ee38a03ad2b04e5d1e0d0849bce9 01-Oct-2010 Chris Lattner <sabre@nondot.org> fix rdar://8494845 + PR8244 - a miscompile exposed by my patch in r101350


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115294 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2831a194954cb4a79049e8a666d246a9a1662b92 01-Oct-2010 Chris Lattner <sabre@nondot.org> fix rdar://8494845 + PR8244 - a miscompile exposed by my patch in r101350


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115294 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c48ef0d1a2817f312353d3e2cd4ebfbe6c8046c7 01-Oct-2010 Dale Johannesen <dalej@apple.com> Massive rewrite of MMX:
The x86_mmx type is used for MMX intrinsics, parameters and
return values where these use MMX registers, and is also
supported in load, store, and bitcast.

Only the above operations generate MMX instructions, and optimizations
do not operate on or produce MMX intrinsics.

MMX-sized vectors <2 x i32> etc. are lowered to XMM or split into
smaller pieces. Optimizations may occur on these forms and the
result casted back to x86_mmx, provided the result feeds into a
previous existing x86_mmx operation.

The point of all this is prevent optimizations from introducing
MMX operations, which is unsafe due to the EMMS problem.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115243 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
0488fb649a56b7fc89a5814df5308813f9e5a85d 01-Oct-2010 Dale Johannesen <dalej@apple.com> Massive rewrite of MMX:
The x86_mmx type is used for MMX intrinsics, parameters and
return values where these use MMX registers, and is also
supported in load, store, and bitcast.

Only the above operations generate MMX instructions, and optimizations
do not operate on or produce MMX intrinsics.

MMX-sized vectors <2 x i32> etc. are lowered to XMM or split into
smaller pieces. Optimizations may occur on these forms and the
result casted back to x86_mmx, provided the result feeds into a
previous existing x86_mmx operation.

The point of all this is prevent optimizations from introducing
MMX operations, which is unsafe due to the EMMS problem.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115243 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
d61fc38e3dd74f01134d21747d8003b3ea64d459 30-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When isel is emitting instructions for an x86 target without CMOV, the CFG is
edited during emission.

If the basic block ends in a switch that gets lowered to a jump table, any
phis at the default edge were getting updated wrong. The jump table data
structure keeps a pointer to the header blocks that wasn't getting updated
after the MBB is split.

This bug was exposed on 32-bit Linux when disabling critical edge splitting in
codegen prepare.

The fix is to uipdate stale MBB pointers whenever a block is split during
emission.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115191 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
2622f4622c36ec9924fb908085154ffdd7174aff 30-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When isel is emitting instructions for an x86 target without CMOV, the CFG is
edited during emission.

If the basic block ends in a switch that gets lowered to a jump table, any
phis at the default edge were getting updated wrong. The jump table data
structure keeps a pointer to the header blocks that wasn't getting updated
after the MBB is split.

This bug was exposed on 32-bit Linux when disabling critical edge splitting in
codegen prepare.

The fix is to uipdate stale MBB pointers whenever a block is split during
emission.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115191 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
66704776c990f9ffd2b0c27b33d13748bf3107d0 30-Sep-2010 Devang Patel <dpatel@apple.com> Let FE mark a variable as artificial variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115102 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3cf763dc7a9741c14432710943ab66b439562881 30-Sep-2010 Devang Patel <dpatel@apple.com> Let FE mark a variable as artificial variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115102 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3ace4f36ced9f788c7e06afd1bc76a41fad8539e 30-Sep-2010 Evan Cheng <evan.cheng@apple.com> Model Cortex-a9 load to SUB, RSB, ADD, ADC, SBC, RSC, CMN, MVN, or CMP
pipeline forwarding path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115098 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
3881cb7a5d54c0011b40997adcd742e1c7b91abd 30-Sep-2010 Evan Cheng <evan.cheng@apple.com> Model Cortex-a9 load to SUB, RSB, ADD, ADC, SBC, RSC, CMN, MVN, or CMP
pipeline forwarding path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115098 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
4aad8bdb06a250ddd3d5684a4bb33eb02f5750d5 30-Sep-2010 Benjamin Kramer <benny.kra@googlemail.com> Silence msvc warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115097 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
6406d004c98af569632ecc1db5d852ac7da9b7c8 30-Sep-2010 Benjamin Kramer <benny.kra@googlemail.com> Silence msvc warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115097 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
3cfe86c25bc1f0a533a7bf2f156766b123eea235 29-Sep-2010 Devang Patel <dpatel@apple.com> Add support to let FE encode method access specifier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115089 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1a30123b609d48ac50f9a9e088e55683df70cfc3 29-Sep-2010 Devang Patel <dpatel@apple.com> Add support to let FE encode method access specifier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115089 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
99e2c97f8260a7c1badeee5d003e56a9f41d7776 29-Sep-2010 Owen Anderson <resistor@mac.com> UnreachableBlockElim could incorrectly return false when it had not modified the CFG, but HAD modified some PHI nodes. Fixes PR8174.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115083 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
b0725316cd1807b954eed4b9966250249d1fd884 29-Sep-2010 Owen Anderson <resistor@mac.com> UnreachableBlockElim could incorrectly return false when it had not modified the CFG, but HAD modified some PHI nodes. Fixes PR8174.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115083 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
44797890dd6368e1523f98798347b0f45d6a717a 29-Sep-2010 Devang Patel <dpatel@apple.com> Assign DW_ACCESS_public accessibility attribute to members by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115067 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2a3616012c19e0bb0db31ec740c5cf683be87d84 29-Sep-2010 Devang Patel <dpatel@apple.com> Assign DW_ACCESS_public accessibility attribute to members by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115067 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7b88c40f48324964204ede66e4a45205a6dd525f 29-Sep-2010 Bill Wendling <isanbard@gmail.com> Revert r114997. It was causing a failure on darwin10-selfhost.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115002 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
2ff6e1e62cf73c83379e660baa570c786ba92f12 29-Sep-2010 Bill Wendling <isanbard@gmail.com> Revert r114997. It was causing a failure on darwin10-selfhost.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115002 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
335edd1b5f4d10458376cf20cda536fc291f5a10 29-Sep-2010 Oscar Fuentes <ofv@wanadoo.es> Removed a bunch of unnecessary target_link_libraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114999 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
electionDAG/CMakeLists.txt
3609eb0de2f786ca6917d0388c37c23873dbd247 29-Sep-2010 Oscar Fuentes <ofv@wanadoo.es> Removed a bunch of unnecessary target_link_libraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114999 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
electionDAG/CMakeLists.txt
8aa2dde39f55368b375f38d7817f0a4bf6be5cca 29-Sep-2010 Bill Wendling <isanbard@gmail.com> Fix a FIXME. _foo.eh symbols are currently always exported so that the linker
knows about them. This is not necessary on 10.6 and later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114997 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
4edab1a9e8fd28a60b2d09cc38333652155c0a20 29-Sep-2010 Bill Wendling <isanbard@gmail.com> Fix a FIXME. _foo.eh symbols are currently always exported so that the linker
knows about them. This is not necessary on 10.6 and later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114997 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
d4397bb0100040d84d42ca569873c38c3e9e8826 28-Sep-2010 Owen Anderson <resistor@mac.com> Give the if-converter access to MachineLoopInfo, and use it to generate plausible branch prediction
estimates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114981 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
7571ee7885e270192a5f1b945c94c342d45e56f8 28-Sep-2010 Owen Anderson <resistor@mac.com> Give the if-converter access to MachineLoopInfo, and use it to generate plausible branch prediction
estimates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114981 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
e527996e6891f18196ca628be56aa31beff2e593 28-Sep-2010 Owen Anderson <resistor@mac.com> Part one of switching to using a more sane heuristic for determining if-conversion profitability.
Rather than having arbitrary cutoffs, actually try to cost model the conversion.

For now, the constants are tuned to more or less match our existing behavior, but these will be
changed to reflect realistic values as this work proceeds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114973 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
b20b85168c0e9819e6545f08281e9b83c82108f0 28-Sep-2010 Owen Anderson <resistor@mac.com> Part one of switching to using a more sane heuristic for determining if-conversion profitability.
Rather than having arbitrary cutoffs, actually try to cost model the conversion.

For now, the constants are tuned to more or less match our existing behavior, but these will be
changed to reflect realistic values as this work proceeds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114973 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
61167333d23652de1c0863ca9231551eb5bbca43 28-Sep-2010 Devang Patel <dpatel@apple.com> Provide an interface to let FEs anchor debug info for types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114969 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1a7ca0354a44e321d5f4839a73239e6eaec54ad5 28-Sep-2010 Devang Patel <dpatel@apple.com> Provide an interface to let FEs anchor debug info for types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114969 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ba6c6eb572dcc63b1aac4b487057f2f2e492deec 28-Sep-2010 Devang Patel <dpatel@apple.com> Remove dead argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114920 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
ee70fa77b4f8bdfd93741609a4d33a831476d505 28-Sep-2010 Devang Patel <dpatel@apple.com> Remove dead argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114920 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c9b35a78eefc5ab379de4576c6c92a85b21d84f7 27-Sep-2010 Dale Johannesen <dalej@apple.com> Don't try to make a vector of x86mmx; this won't work,
and asserts.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
61b20efd9aae99101acf6fd480dee017b702f68b 27-Sep-2010 Dale Johannesen <dalej@apple.com> Don't try to make a vector of x86mmx; this won't work,
and asserts.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
82f9a8eae4cb689b5fe40faf35c16279164e2fdb 27-Sep-2010 Chris Lattner <sabre@nondot.org> the latest assembler that runs on powerpc 10.4 machines doesn't
support aligned comm. Detect when compiling for 10.4 and don't
emit an alignment for comm. THis will hopefully fix PR8198.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114817 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
argetLoweringObjectFileImpl.cpp
8048ebe91d76f5ee58f5c2c7535151d782af4b29 27-Sep-2010 Chris Lattner <sabre@nondot.org> the latest assembler that runs on powerpc 10.4 machines doesn't
support aligned comm. Detect when compiling for 10.4 and don't
emit an alignment for comm. THis will hopefully fix PR8198.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114817 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
argetLoweringObjectFileImpl.cpp
0a60d9e6dcf924a616a3eabebd07f78884e64394 26-Sep-2010 Lang Hames <lhames@gmail.com> Fixed some tests to avoid LiveIntervals::getInstructionFromIndex(..) overhead where possible. Thanks to Jakob for the suggestions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114798 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
cec2945f3092c4d087716eb96062d7c7ef6fe60c 26-Sep-2010 Lang Hames <lhames@gmail.com> Fixed some tests to avoid LiveIntervals::getInstructionFromIndex(..) overhead where possible. Thanks to Jakob for the suggestions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114798 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
773b0584652387f0dd90921b0a39d382d0e4997a 25-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid using VNInfo::getCopy as much as possible. I want to get rid of it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114794 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
207f8f688b0d530ebe4542ae0db599a6463b670b 25-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid using VNInfo::getCopy as much as possible. I want to get rid of it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114794 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
47a1c339ca204a78f86153b814ed82adb46ec4c1 25-Sep-2010 Lang Hames <lhames@gmail.com> Removed VNInfo::isDefAccurate(). Def "accuracy" can be checked by testing whether LiveIntervals::getInstructionFromIndex(def) returns NULL.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114791 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
piller.cpp
plitKit.cpp
plitter.cpp
6e2968c85c1e162ee5bc813769eab223e3df0f15 25-Sep-2010 Lang Hames <lhames@gmail.com> Removed VNInfo::isDefAccurate(). Def "accuracy" can be checked by testing whether LiveIntervals::getInstructionFromIndex(def) returns NULL.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114791 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
piller.cpp
plitKit.cpp
plitter.cpp
bfd9a9590cf1f4fedd927c0f34e83ff7311bac16 25-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove SlotIndex::PHI_BIT. It is no longer used by anything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114779 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
lotIndexes.cpp
plitter.cpp
011e5910719265ba5d41e8af2290e55c5eb50526 25-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove SlotIndex::PHI_BIT. It is no longer used by anything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114779 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
lotIndexes.cpp
plitter.cpp
0363e36c4f3eeb28bf7f069b23735fe39a1f3edc 25-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the only use of SlotIndex::isPHI. This bit is not being set consistently
and it will be removed shortly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114778 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
7c78e2624c4548ccf1bcfdbc2efaae401ec7f83e 25-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the only use of SlotIndex::isPHI. This bit is not being set consistently
and it will be removed shortly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114778 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
7a611f87989d0b737cc4d549679bd57083ffd6ff 25-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Terminator gaps were unused. Might as well delete them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114776 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
1803b37bad85cca19a15c0040979719240f48626 25-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Terminator gaps were unused. Might as well delete them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114776 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
dd8bd470de3df62ced32e94af5ec97a97d93418a 25-Sep-2010 John Thompson <john.thompson.jtsoftware@gmail.com> Fix for test/CodeGen/PowerPC/2008-10-17-AsmMatchingOperands.ll crash.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114767 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
54584743f3827c7fd9e247db25cc5cfedaa9bab9 25-Sep-2010 John Thompson <John.Thompson.JTSoftware@gmail.com> Fix for test/CodeGen/PowerPC/2008-10-17-AsmMatchingOperands.ll crash.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114767 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
02816c04c59ebb4c2fdf4083b8008372aa7d3111 24-Sep-2010 Michael J. Spencer <bigcheesegs@gmail.com> Get rid of pop_macro warnings on MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114750 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuilder.cpp
1f4096054367cab3acab3a74c719ef6d3090606a 24-Sep-2010 Michael J. Spencer <bigcheesegs@gmail.com> Get rid of pop_macro warnings on MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114750 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuilder.cpp
bbde071719f9e50a376103cca23eedce394549c8 24-Sep-2010 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Attach a DebugLoc to a GC point in order to get precise information in the JIT of a GC point.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114736 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
946e3c9f9db2d0ab5bd75ad0283c224366807fa6 24-Sep-2010 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Attach a DebugLoc to a GC point in order to get precise information in the JIT of a GC point.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114736 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
710c10d44301184306cf12d041c3532a74b09652 23-Sep-2010 Evan Cheng <evan.cheng@apple.com> Revert 114634 for now since buildbot claim it broke Clang self-hosting. I doubt it but it's possible it's exposing another bug somewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114681 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8c1f4329e2f90dea203f3a85a992865e936dea4a 23-Sep-2010 Evan Cheng <evan.cheng@apple.com> Revert 114634 for now since buildbot claim it broke Clang self-hosting. I doubt it but it's possible it's exposing another bug somewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114681 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8dc5013f982a219b352a67322519614bf8335587 23-Sep-2010 Oscar Fuentes <ofv@wanadoo.es> Fix VS 2010 build.

Patch by Nathan Jeffords!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114661 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
df30bdb3a735a81b4182d80b870bc39846824396 23-Sep-2010 Oscar Fuentes <ofv@wanadoo.es> Fix VS 2010 build.

Patch by Nathan Jeffords!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114661 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8a5e39c602e7dde61f000e35c13ac5ed4dd57772 23-Sep-2010 Evan Cheng <evan.cheng@apple.com> Follow up to r114630. Do not optimize away unconditional branch following a conditional one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b8db1981b8cdd7cc52a9ad94a12c73e4fb1e8b39 23-Sep-2010 Evan Cheng <evan.cheng@apple.com> Follow up to r114630. Do not optimize away unconditional branch following a conditional one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
472b9486e8b7bfc4f37fe3ec793e9ffd5be978cf 23-Sep-2010 Evan Cheng <evan.cheng@apple.com> Don't sink insert_subreg, subreg_to_reg, reg_sequence. They are meant to be
close to their sources to facilitate coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114631 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
b0cdf8a4466d02c66c84b6b30953709fa9225a30 23-Sep-2010 Evan Cheng <evan.cheng@apple.com> Don't sink insert_subreg, subreg_to_reg, reg_sequence. They are meant to be
close to their sources to facilitate coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114631 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
9da9e78c618bb33e24833d3859acc1c1f62877b0 23-Sep-2010 Evan Cheng <evan.cheng@apple.com> SDISel should not optimize a unconditional branch following a conditional branch
when the unconditional branch destination is the fallthrough block. The
canonicalization makes it easier to allow optimizations on DAGs to invert
conditional branches. The branch folding pass (and AnalyzeBranch) will clean up
the unnecessary unconditional branches later.

This is one of the patches leading up to disabling codegen prepare critical edge
splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
266a99d161069071f32c7c09dded481fd573a82e 23-Sep-2010 Evan Cheng <evan.cheng@apple.com> SDISel should not optimize a unconditional branch following a conditional branch
when the unconditional branch destination is the fallthrough block. The
canonicalization makes it easier to allow optimizations on DAGs to invert
conditional branches. The branch folding pass (and AnalyzeBranch) will clean up
the unnecessary unconditional branches later.

This is one of the patches leading up to disabling codegen prepare critical edge
splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3ba0c11374182a03304639037fe5e99ea20c832f 23-Sep-2010 Lang Hames <lhames@gmail.com> Moved the PBQP allocator class out of the header and back in to the cpp file to hide the gory details.
Allocator instances can now be created by calling createPBQPRegisterAllocator.

Tidied up use of CoalescerPair as per Jakob's suggestions.

Made the new PBQPBuilder based construction process the default. The internal construction process
remains in-place and available via -pbqp-builder=false for now. It will be removed shortly if the new
process doesn't cause any regressions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114626 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
f70e7cc7a2871d498dbecbec2d1c3beb3da2af33 23-Sep-2010 Lang Hames <lhames@gmail.com> Moved the PBQP allocator class out of the header and back in to the cpp file to hide the gory details.
Allocator instances can now be created by calling createPBQPRegisterAllocator.

Tidied up use of CoalescerPair as per Jakob's suggestions.

Made the new PBQPBuilder based construction process the default. The internal construction process
remains in-place and available via -pbqp-builder=false for now. It will be removed shortly if the new
process doesn't cause any regressions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114626 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
44a62c61355a29a89e20a61d4003fbee218ccf71 23-Sep-2010 Owen Anderson <resistor@mac.com> A select between a constant and zero, when fed by a bit test, can be efficiently
lowered using a series of shifts.
Fixes <rdar://problem/8285015>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114599 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ed1088afb51189efff02886891c4e25a5a5fb5f9 23-Sep-2010 Owen Anderson <resistor@mac.com> A select between a constant and zero, when fed by a bit test, can be efficiently
lowered using a series of shifts.
Fixes <rdar://problem/8285015>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114599 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0518b7a18117e3325c0d041ba37db1276dbe3569 22-Sep-2010 Devang Patel <dpatel@apple.com> Use DW_OP_fbreg when offset is based on frame register.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114585 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
be90c3a0ea66fb05dfe72fbe42cca2713c6c8b1a 22-Sep-2010 Devang Patel <dpatel@apple.com> Use DW_OP_fbreg when offset is based on frame register.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114585 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a18271ef02ef195449780744ea28b843d6aaa3be 22-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Build the complement interval dupli after the split intervals instead of
creating it before and subtracting split ranges.

This way, the SSA update code in LiveIntervalMap can properly create and use new
phi values in dupli. Now it is possible to create split regions where a value
escapes along two different CFG edges, creating phi values outside the split
region.

This is a work in progress and probably quite broken.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114492 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
5fa42a45a1845046dde84089fb4d8e1e1b329b65 22-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Build the complement interval dupli after the split intervals instead of
creating it before and subtracting split ranges.

This way, the SSA update code in LiveIntervalMap can properly create and use new
phi values in dupli. Now it is possible to create split regions where a value
escapes along two different CFG edges, creating phi values outside the split
region.

This is a work in progress and probably quite broken.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114492 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
bb688953d97948619af60e560c70720abaddbe1f 22-Sep-2010 John Thompson <john.thompson.jtsoftware@gmail.com> Fixed pr20314-2.c failure, added E, F, p constraint letters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114490 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
67aff164c039765e3ec19e5a31659250c8427dfb 22-Sep-2010 John Thompson <John.Thompson.JTSoftware@gmail.com> Fixed pr20314-2.c failure, added E, F, p constraint letters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114490 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d206fb899ae94a41c3f4d216d830fb926f455a97 22-Sep-2010 Chris Lattner <sabre@nondot.org> Rework passing parent pointers into complexpatterns, I forgot
that complex patterns are matched after the entire pattern has
a structural match, therefore the NodeStack isn't in a useful
state when the actual call to the matcher happens.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d847bc20b89679279e75412ddc51dc1d299da942 22-Sep-2010 Chris Lattner <sabre@nondot.org> Rework passing parent pointers into complexpatterns, I forgot
that complex patterns are matched after the entire pattern has
a structural match, therefore the NodeStack isn't in a useful
state when the actual call to the matcher happens.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0e02bf10fd684b8ae14c4ec3cc3f7a84029907a5 21-Sep-2010 Devang Patel <dpatel@apple.com> If only user of a vreg is an copy instruction to export copy of vreg out of current basic block then insert DBG_VALUE so that debug value of the variable is also transfered to new vreg.
Testcase is in r114476.
This fixes radar 8412415.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114478 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
44cfe14445bcdd591d4f2ed59fe73582360bd8c9 21-Sep-2010 Devang Patel <dpatel@apple.com> If only user of a vreg is an copy instruction to export copy of vreg out of current basic block then insert DBG_VALUE so that debug value of the variable is also transfered to new vreg.
Testcase is in r114476.
This fixes radar 8412415.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114478 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9d2f6e46a050d0971187dc86e5e72ed25924f039 21-Sep-2010 Chris Lattner <sabre@nondot.org> correct this logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114474 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
77bd88cda5e007c6f4e042fc6b6104c9ae62083b 21-Sep-2010 Chris Lattner <sabre@nondot.org> correct this logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114474 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
33fca6d2189b11e577bbf82618930f7e8d3344ef 21-Sep-2010 Owen Anderson <resistor@mac.com> Reimplement r114460 in target-independent DAGCombine rather than target-dependent, by using
the predicate to discover the number of sign bits. Enhance X86's target lowering to provide
a useful response to this query.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114473 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bc146b0a4dcee601459eee943b4133d3cf63f1dd 21-Sep-2010 Owen Anderson <resistor@mac.com> Reimplement r114460 in target-independent DAGCombine rather than target-dependent, by using
the predicate to discover the number of sign bits. Enhance X86's target lowering to provide
a useful response to this query.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114473 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6dedbda40f263c0fe0278bc1cf4e8ed7ee716f58 21-Sep-2010 Chris Lattner <sabre@nondot.org> just like they can opt into getting the root of the pattern being
matched, allow ComplexPatterns to opt into getting the parent node
of the operand being matched.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114472 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
78d3af47f532d67611e7d625b505fa832d713a26 21-Sep-2010 Chris Lattner <sabre@nondot.org> just like they can opt into getting the root of the pattern being
matched, allow ComplexPatterns to opt into getting the parent node
of the operand being matched.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114472 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f88c5ad84673585f444d766ea5ac8caa22396af4 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Refix MSVC9 and upper_bound. It actually needs a fully symmetric comparator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114469 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
7c727072168c55493ec362e254af1cd740d7eaf2 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Refix MSVC9 and upper_bound. It actually needs a fully symmetric comparator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114469 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
12eab7b1e9b3e5c594607c3968e21f3b2e78f98c 21-Sep-2010 Chris Lattner <sabre@nondot.org> finish pushing MachinePointerInfo through selectiondags. At this point,
I think I've audited all uses, so it should be dependable for address spaces,
and the pointer+offset info should also be accurate when there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
84bd98ac7b9f9eaa0c4259b510847481a45844a7 21-Sep-2010 Chris Lattner <sabre@nondot.org> finish pushing MachinePointerInfo through selectiondags. At this point,
I think I've audited all uses, so it should be dependable for address spaces,
and the pointer+offset info should also be accurate when there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
6dc99a966d7f72d627750142b8e69e08f967bb3b 21-Sep-2010 Chris Lattner <sabre@nondot.org> convert a couple more places to use the new getStore()



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114463 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
fc448ff89b4fb7721de9da0b96fd00c13160c4c7 21-Sep-2010 Chris Lattner <sabre@nondot.org> convert a couple more places to use the new getStore()



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114463 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e42e5550ec99a5fb294e5106034585c57777aa80 21-Sep-2010 Chris Lattner <sabre@nondot.org> update a bunch of code to use the MachinePointerInfo version of getStore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
6229d0acb8f395552131a7015a5d1e7b2bae2111 21-Sep-2010 Chris Lattner <sabre@nondot.org> update a bunch of code to use the MachinePointerInfo version of getStore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
3c843c5a0bb2fe0ef15c568f170e483ff47403ec 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't pollute the global namespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114459 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
89bfef003ec71792d078d489566655006b89bc43 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't pollute the global namespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114459 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
d437ac79b8350cfc7bc936c60ac0db2d7cd7c731 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> MSVC9 does not support upper_bound with an asymmetric comparator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114455 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
2de0e808c1fa742f3eac68b5d10d182699cbbe04 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> MSVC9 does not support upper_bound with an asymmetric comparator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114455 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
daa44a53c9445429820033b1f74f00d5ac6a338f 21-Sep-2010 Bob Wilson <bob.wilson@apple.com> Define the TargetLowering::getTgtMemIntrinsic hook for ARM so that NEON load
and store intrinsics are represented with MemIntrinsicSDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
65ffec49f73d1f8856211b107712c58cc9636b78 21-Sep-2010 Bob Wilson <bob.wilson@apple.com> Define the TargetLowering::getTgtMemIntrinsic hook for ARM so that NEON load
and store intrinsics are represented with MemIntrinsicSDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
0cedbb841abd75afb300857fcc16e3e46e86d78e 21-Sep-2010 Chris Lattner <sabre@nondot.org> eliminate an old SelectionDAG::getTruncStore method, propagating
MachinePointerInfo around more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114452 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
da2d8e1032eb4c2fefb1f647d7877910b9483835 21-Sep-2010 Chris Lattner <sabre@nondot.org> eliminate an old SelectionDAG::getTruncStore method, propagating
MachinePointerInfo around more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114452 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
baeb05c7716a497cf25b4a81f0f7ebe02d0100e7 21-Sep-2010 Chris Lattner <sabre@nondot.org> eliminate last SelectionDAG::getLoad old entrypoint, on to stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114450 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
5cd9391a089d146d8a18ade602769502e5a8d36f 21-Sep-2010 Chris Lattner <sabre@nondot.org> eliminate last SelectionDAG::getLoad old entrypoint, on to stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114450 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
741d79a807a8197f2a21a58315da3620dfc57620 21-Sep-2010 Chris Lattner <sabre@nondot.org> fix the code that infers SV info to be correct when dealing
with an indexed load/store that has an offset in the index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114449 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d0e139fa7409a009c416f2b0bcf4665f23ddca83 21-Sep-2010 Chris Lattner <sabre@nondot.org> fix the code that infers SV info to be correct when dealing
with an indexed load/store that has an offset in the index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114449 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8a45aa41d7f7e10438854c687d43c47bae8aea13 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add LiveInterval::find and use it for most LiveRange searching operations
instead of calling lower_bound or upper_bound directly.

This cleans up the search logic a bit because {lower,upper}_bound compare
LR->start by default, and it is usually simpler to search LR->end.

Funnelling all searches through one function also makes it possible to replace
the search algorithm with something faster than binary search.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114448 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
f568b2706e274c7d8081cfd0a7ee9b881e5c313b 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add LiveInterval::find and use it for most LiveRange searching operations
instead of calling lower_bound or upper_bound directly.

This cleans up the search logic a bit because {lower,upper}_bound compare
LR->start by default, and it is usually simpler to search LR->end.

Funnelling all searches through one function also makes it possible to replace
the search algorithm with something faster than binary search.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114448 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
459337e653577256e2f7828ca162ec5806981525 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove dead method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114447 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
0635ead2c4f2182a480a3281b9b2fff084a10634 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove dead method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114447 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
d303da66e894ca276164414ceb99b18eb9e1dae0 21-Sep-2010 Chris Lattner <sabre@nondot.org> propagate MachinePointerInfo through various uses of the old
SelectionDAG::getExtLoad overload, and eliminate it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114446 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
3d6ccfba314ed38e4506dae2781a060e9a3e07ac 21-Sep-2010 Chris Lattner <sabre@nondot.org> propagate MachinePointerInfo through various uses of the old
SelectionDAG::getExtLoad overload, and eliminate it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114446 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
df7096f01384c4e8a8ac9e42c2b784e54c53da8e 21-Sep-2010 Chris Lattner <sabre@nondot.org> continue MachinePointerInfo'izing, eliminating use of one of the old
getLoad overloads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
ecf42c4720aba6ee315d0166045c54187ac2de4d 21-Sep-2010 Chris Lattner <sabre@nondot.org> continue MachinePointerInfo'izing, eliminating use of one of the old
getLoad overloads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
3b1bbc9cf9270fefc34fb1eef14c593a82e0f2a5 21-Sep-2010 Chris Lattner <sabre@nondot.org> convert dagcombine off the old form of getLoad. This fixes several bugs
with SVOffset computation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114442 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fa45901eaaecbad3b95042518d7991ad0e5c08a0 21-Sep-2010 Chris Lattner <sabre@nondot.org> convert dagcombine off the old form of getLoad. This fixes several bugs
with SVOffset computation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114442 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a20f1a3ded7a7398133760d91262d683a5e91a37 21-Sep-2010 Chris Lattner <sabre@nondot.org> simplify DAGCombiner::SimplifySelectOps step #2/2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114437 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f16580665589584d3249d8a3c4dd4ea90dfb9e47 21-Sep-2010 Chris Lattner <sabre@nondot.org> simplify DAGCombiner::SimplifySelectOps step #2/2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114437 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6e69083eb6da924271c88d4e70cc879d8cc36978 21-Sep-2010 Chris Lattner <sabre@nondot.org> substantially reduce indentation and simplify DAGCombiner::SimplifySelectOps.
no functionality change (step #1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1806161a0bfbc3fa57aa90470d467425ffaf05bb 21-Sep-2010 Chris Lattner <sabre@nondot.org> substantially reduce indentation and simplify DAGCombiner::SimplifySelectOps.
no functionality change (step #1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a62ff7be06d9de9dd28f55c576f29d9b2c744988 21-Sep-2010 Lang Hames <lhames@gmail.com> Fixed ambiguous call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114431 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
08982914902a3e164bdfca3157b296a38c7324ad 21-Sep-2010 Lang Hames <lhames@gmail.com> Fixed ambiguous call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114431 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
6be37364596f4d8750844a4e322c96d256d336c8 21-Sep-2010 Lang Hames <lhames@gmail.com> Added an additional PBQP problem builder which adds coalescing costs (both between pairs of virtuals, and between virtuals and physicals).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114429 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
e9c935662d77b8c5a3a26f5622dc2a3ed22d75c8 21-Sep-2010 Lang Hames <lhames@gmail.com> Added an additional PBQP problem builder which adds coalescing costs (both between pairs of virtuals, and between virtuals and physicals).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114429 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
3b65acae5390d2c798806fbbb0080f2530771c14 21-Sep-2010 Gabor Greif <ggreif@gmail.com> Move the search for the appropriate AND instruction
into OptimizeCompareInstr.
This necessitates the passing of CmpValue around,
so widen the virtual functions to accomodate.

No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114428 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
04ac81d5db058a3a9492e1aff1f398a8643bfda9 21-Sep-2010 Gabor Greif <ggreif@gmail.com> Move the search for the appropriate AND instruction
into OptimizeCompareInstr.
This necessitates the passing of CmpValue around,
so widen the virtual functions to accomodate.

No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114428 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
c966e21cbfd398386008492059e48d19616f3137 21-Sep-2010 Chris Lattner <sabre@nondot.org> a few more trivial updates. This fixes PerformInsertVectorEltInMemory to not
pass a completely incorrect SrcValue, which would result in a miscompile with
combiner-aa.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114411 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
85ca1066328639119f94c47a83b698c48b84ebb0 21-Sep-2010 Chris Lattner <sabre@nondot.org> a few more trivial updates. This fixes PerformInsertVectorEltInMemory to not
pass a completely incorrect SrcValue, which would result in a miscompile with
combiner-aa.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114411 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
5cd72905d86cca9d3d0308887ab974e911532bce 21-Sep-2010 Chris Lattner <sabre@nondot.org> add some accessors


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114409 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1daa6f479dd5fb4123f1ffbb10a3825da7d2c6b8 21-Sep-2010 Chris Lattner <sabre@nondot.org> add some accessors


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114409 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
3262a9cd64bcbadcfa25cb90968f947cdbfa7ab7 21-Sep-2010 Chris Lattner <sabre@nondot.org> it's more elegant to put the "getConstantPool" and
"getFixedStack" on the MachinePointerInfo class. While
this isn't the problem I'm setting out to solve, it is the
right way to eliminate PseudoSourceValue, so lets go with it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114406 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e8639036b1fb3a5b5e9589fe4e9f2ee1b77c36bd 21-Sep-2010 Chris Lattner <sabre@nondot.org> it's more elegant to put the "getConstantPool" and
"getFixedStack" on the MachinePointerInfo class. While
this isn't the problem I'm setting out to solve, it is the
right way to eliminate PseudoSourceValue, so lets go with it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114406 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
c515938bc6c609b156fbf3609a2849091489282d 21-Sep-2010 Chris Lattner <sabre@nondot.org> reimplement memcpy/memmove/memset lowering to use MachinePointerInfo
instead of srcvalue/offset pairs. This corrects SV info for mem
operations whose size is > 32-bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114401 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
e72f2027e9116c55a5b39ac72732df8d6c45d37c 21-Sep-2010 Chris Lattner <sabre@nondot.org> reimplement memcpy/memmove/memset lowering to use MachinePointerInfo
instead of srcvalue/offset pairs. This corrects SV info for mem
operations whose size is > 32-bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114401 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
01e1be4c049f736a67bd3d265a9a576366a7b9cf 21-Sep-2010 Chris Lattner <sabre@nondot.org> add some helpful accessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114400 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
40a858f6e71ed8d68779d00c63dad15baded3562 21-Sep-2010 Chris Lattner <sabre@nondot.org> add some helpful accessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114400 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f060d7344826f0180d64256dceb3bf84f10a48d2 21-Sep-2010 Chris Lattner <sabre@nondot.org> add overloads for SelectionDAG::getLoad, getStore, getTruncStore that take a
MachinePointerInfo. Among other virtues, this doesn't silently truncate the
svoffset to 32-bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5c5cb2a1717f8e30b1849d7ec1cf269bc5d66877 21-Sep-2010 Chris Lattner <sabre@nondot.org> add overloads for SelectionDAG::getLoad, getStore, getTruncStore that take a
MachinePointerInfo. Among other virtues, this doesn't silently truncate the
svoffset to 32-bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3f9c0f65fddf9316246754ecfb8548bb6eccb4da 21-Sep-2010 Chris Lattner <sabre@nondot.org> simplify interface to SelectionDAG::getMemIntrinsicNode, making it take a MachinePointerInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114397 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
e9ba5dd236f48708a00bd3bb0519148f943cc897 21-Sep-2010 Chris Lattner <sabre@nondot.org> simplify interface to SelectionDAG::getMemIntrinsicNode, making it take a MachinePointerInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114397 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
acf2f7663c1ba10f6e73c435938bc33a0c0f8fb2 21-Sep-2010 Chris Lattner <sabre@nondot.org> chagne interface to SelectionDAG::getAtomic to take a MachinePointerInfo,
eliminating some weird "infer a frame address" logic which was dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114396 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
60bddc8bcd787be645d2f3b64117fee884270e6a 21-Sep-2010 Chris Lattner <sabre@nondot.org> chagne interface to SelectionDAG::getAtomic to take a MachinePointerInfo,
eliminating some weird "infer a frame address" logic which was dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114396 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
db4a2576c3eb914fef435ae87903ac520a5cc614 21-Sep-2010 Chris Lattner <sabre@nondot.org> don't implicitly drop the offset of a machinememoperand when legalizing atomics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114395 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
0531356e4da1451b1b0b9e8c85365c2a58ca8282 21-Sep-2010 Chris Lattner <sabre@nondot.org> don't implicitly drop the offset of a machinememoperand when legalizing atomics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114395 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
60d6def76a7bf3b4ed56adb81f6ce228e41730e5 21-Sep-2010 Chris Lattner <sabre@nondot.org> force clients of MachineFunction::getMachineMemOperand to provide a
MachinePointerInfo, propagating the type out a level of API. Remove
the old MachineFunction::getMachineMemOperand impl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114393 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAG.cpp
argetInstrInfoImpl.cpp
93a95ae8a9d8eb19dc0d90281473be2fb1c05a17 21-Sep-2010 Chris Lattner <sabre@nondot.org> force clients of MachineFunction::getMachineMemOperand to provide a
MachinePointerInfo, propagating the type out a level of API. Remove
the old MachineFunction::getMachineMemOperand impl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114393 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAG.cpp
argetInstrInfoImpl.cpp
c6952b35a44a5a367f43a7b90d5cff395a32a2d5 21-Sep-2010 Chris Lattner <sabre@nondot.org> start pushing MachinePointerInfo out through the MachineMemOperand interface
to the MachineFunction construction methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114390 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
da39c3964423744b4d79aebef8bece3e9141d5fc 21-Sep-2010 Chris Lattner <sabre@nondot.org> start pushing MachinePointerInfo out through the MachineMemOperand interface
to the MachineFunction construction methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114390 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
057ef8fe135e0fd7d6a8bc083b59920897f508b5 21-Sep-2010 Chris Lattner <sabre@nondot.org> refactor the Value*/offset pair from MachineMemOperand out to a new
MachinePointerInfo struct, no functionality change.

This also adds an assert to MachineMemOperand::MachineMemOperand
that verifies that the Value* is either null or is an IR pointer type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114389 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e8e2e80f40495fdd5ad475beb54fcf0989b6b7c5 21-Sep-2010 Chris Lattner <sabre@nondot.org> refactor the Value*/offset pair from MachineMemOperand out to a new
MachinePointerInfo struct, no functionality change.

This also adds an assert to MachineMemOperand::MachineMemOperand
that verifies that the Value* is either null or is an IR pointer type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114389 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
6056129781af324825d565a69c635752392b8637 21-Sep-2010 Evan Cheng <evan.cheng@apple.com> Enable machine sinking critical edge splitting. e.g.

define double @foo(double %x, double %y, i1 %c) nounwind {
%a = fdiv double %x, 3.2
%z = select i1 %c, double %a, double %y
ret double %z
}

Was:
_foo:
divsd LCPI0_0(%rip), %xmm0
testb $1, %dil
jne LBB0_2
movaps %xmm1, %xmm0
LBB0_2:
ret

Now:
_foo:
testb $1, %dil
je LBB0_2
divsd LCPI0_0(%rip), %xmm0
ret
LBB0_2:
movaps %xmm1, %xmm0
ret

This avoids the divsd when early exit is taken.
rdar://8454886


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114372 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
44be1a8d661cfab0cc3d11b0dd158271b2d2ca04 21-Sep-2010 Evan Cheng <evan.cheng@apple.com> Enable machine sinking critical edge splitting. e.g.

define double @foo(double %x, double %y, i1 %c) nounwind {
%a = fdiv double %x, 3.2
%z = select i1 %c, double %a, double %y
ret double %z
}

Was:
_foo:
divsd LCPI0_0(%rip), %xmm0
testb $1, %dil
jne LBB0_2
movaps %xmm1, %xmm0
LBB0_2:
ret

Now:
_foo:
testb $1, %dil
je LBB0_2
divsd LCPI0_0(%rip), %xmm0
ret
LBB0_2:
movaps %xmm1, %xmm0
ret

This avoids the divsd when early exit is taken.
rdar://8454886


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114372 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
17dadf40cc44f3be7c2e1858b30f112ba46b6016 20-Sep-2010 Owen Anderson <resistor@mac.com> When TCO is turned on, it is possible to end up with aliasing FrameIndex's. Therefore,
CombinerAA cannot assume that different FrameIndex's never alias, but can instead use
MachineFrameInfo to get the actual offsets of these slots and check for actual aliasing.

This fixes CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll and CodeGen/X86/tailcallstack64.ll
when CombinerAA is enabled, modulo a different register allocation sequence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4a9f150926d593b30354db76d8d061fe4c9d124d 20-Sep-2010 Owen Anderson <resistor@mac.com> When TCO is turned on, it is possible to end up with aliasing FrameIndex's. Therefore,
CombinerAA cannot assume that different FrameIndex's never alias, but can instead use
MachineFrameInfo to get the actual offsets of these slots and check for actual aliasing.

This fixes CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll and CodeGen/X86/tailcallstack64.ll
when CombinerAA is enabled, modulo a different register allocation sequence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9f9563edde6c3a4a6d78ea65ae0c454ea5352582 20-Sep-2010 Evan Cheng <evan.cheng@apple.com> Avoid splitting critical edge twice for a set of PHI uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114338 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
7af6dc47a552d0d7d09752ad2e747d3973125b48 20-Sep-2010 Evan Cheng <evan.cheng@apple.com> Avoid splitting critical edge twice for a set of PHI uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114338 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
f2bb41caa3cb62ce492c500beaa616d6f05eb11f 19-Sep-2010 Owen Anderson <resistor@mac.com> Revert r114312 while I sort out some issues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114313 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0dcc8142766b3c55915eb9c2d404bdea6bb0f7dd 19-Sep-2010 Owen Anderson <resistor@mac.com> Revert r114312 while I sort out some issues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114313 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d6e999d7999fa7c4acd584165b22c72bbab956f0 19-Sep-2010 Owen Anderson <resistor@mac.com> Tentatively enabled DAGCombiner Alias Analysis by default. As far as I know,
r114268 fixed the last of the blockers to enabling it. I will be monitoring
for failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114312 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d910fb2f12782d8636950baaccbf43bd046e828f 19-Sep-2010 Owen Anderson <resistor@mac.com> Tentatively enabled DAGCombiner Alias Analysis by default. As far as I know,
r114268 fixed the last of the blockers to enabling it. I will be monitoring
for failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114312 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
75cfb70a26dce51730d9ffd81912b8a5bede5061 18-Sep-2010 Benjamin Kramer <benny.kra@googlemail.com> Unbreak msvc build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114284 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
9e8d1f97e9f32c87aac1189edbc3263a1f4a81f3 18-Sep-2010 Benjamin Kramer <benny.kra@googlemail.com> Unbreak msvc build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114284 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
1a5afc430527ffe9ffcad6eb32106b92123381ef 18-Sep-2010 Lang Hames <lhames@gmail.com> Fixed non-const iterator error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114273 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
481630dee5f221c04bb26fe12f0887b4f25f8455 18-Sep-2010 Lang Hames <lhames@gmail.com> Fixed non-const iterator error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114273 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
472e06e2b2e2556bfee5fbe773b91a739bf00578 18-Sep-2010 Lang Hames <lhames@gmail.com> Added a separate class (PBQPBuilder) for PBQP Problem construction. This class can be extended to support custom constraints.

For now the allocator still uses the old (internal) construction mechanism by default. This will be phased out soon assuming
no issues with the builder system come up.

To invoke the new construction mechanism just pass '-regalloc=pbqp -pbqp-builder' to llc. To provide custom constraints a
Target just needs to extend PBQPBuilder and pass an instance of their derived builder to the RegAllocPBQP constructor.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114272 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/Graph.h
BQP/HeuristicBase.h
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
BQP/Math.h
BQP/Solution.h
egAllocPBQP.cpp
eb6c8f53b4df1488f3d07c11af8f754cc4620f3a 18-Sep-2010 Lang Hames <lhames@gmail.com> Added a separate class (PBQPBuilder) for PBQP Problem construction. This class can be extended to support custom constraints.

For now the allocator still uses the old (internal) construction mechanism by default. This will be phased out soon assuming
no issues with the builder system come up.

To invoke the new construction mechanism just pass '-regalloc=pbqp -pbqp-builder' to llc. To provide custom constraints a
Target just needs to extend PBQPBuilder and pass an instance of their derived builder to the RegAllocPBQP constructor.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114272 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/Graph.h
BQP/HeuristicBase.h
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
BQP/Math.h
BQP/Solution.h
egAllocPBQP.cpp
7c30304c7ba25fbae52d4db2f5ae230ba2475288 18-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix code that break critical edges for PHI uses. Watch out for multiple PHIs in different blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114270 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
2399786b279b6db7077ac36020153714530365df 18-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix code that break critical edges for PHI uses. Watch out for multiple PHIs in different blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114270 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
0f49691f58d39d80fa2270753a21fd61ceb6e1ea 18-Sep-2010 Owen Anderson <resistor@mac.com> Invert the logic of reachesChainWithoutSideEffects(). What we want to check is that there is
NO path to the destination containing side effects, not that SOME path contains no side effects.
In practice, this only manifests with CombinerAA enabled, because otherwise the chain has little
to no branching, so "any" is effectively equivalent to "all".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114268 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
14ac1dd2be4f72ae1e48a1fd1c2f9bedc7f980e2 18-Sep-2010 Owen Anderson <resistor@mac.com> Invert the logic of reachesChainWithoutSideEffects(). What we want to check is that there is
NO path to the destination containing side effects, not that SOME path contains no side effects.
In practice, this only manifests with CombinerAA enabled, because otherwise the chain has little
to no branching, so "any" is effectively equivalent to "all".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114268 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2a193d05cb6a5a3bb25dc399503aad847f89bf08 18-Sep-2010 Evan Cheng <evan.cheng@apple.com> Teach machine sink to
1) Do forward copy propagation. This makes it easier to estimate the cost of the
instruction being sunk.
2) Break critical edges on demand, including cases where the value is used by
PHI nodes.
Critical edge splitting is not yet enabled by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114227 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
6edb0eac87a6e46b89de3ad5d8e39c41969e2a54 18-Sep-2010 Evan Cheng <evan.cheng@apple.com> Teach machine sink to
1) Do forward copy propagation. This makes it easier to estimate the cost of the
instruction being sunk.
2) Break critical edges on demand, including cases where the value is used by
PHI nodes.
Critical edge splitting is not yet enabled by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114227 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
acc20fbd415a6888fe1393a8a2ae64e432fffd39 17-Sep-2010 Evan Cheng <evan.cheng@apple.com> Machine CSE was forgetting to clear some data structures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114222 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
c2b768f09e108b71348af58f3ab31d0fc6d15dd6 17-Sep-2010 Evan Cheng <evan.cheng@apple.com> Machine CSE was forgetting to clear some data structures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114222 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
1cc1bc86986faee8a7f52ff338671b5eb7371e58 17-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix a potential bug that can cause miscomparison with and without debug info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114220 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
f437f733484169cf67f7c3e798908bbf27175580 17-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix a potential bug that can cause miscomparison with and without debug info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114220 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
0d5b5b50ad03f89d598541b588cd334b87014d7a 16-Sep-2010 Devang Patel <dpatel@apple.com> If FE forgot to provide a file name (usually it uses "stdin" as name in such situation) then make one up to ensure that debug info is not malformed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114119 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1905a18abcb46e6a57eeaa291cd81fc669cedfd0 16-Sep-2010 Devang Patel <dpatel@apple.com> If FE forgot to provide a file name (usually it uses "stdin" as name in such situation) then make one up to ensure that debug info is not malformed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114119 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8810c25cc63df93c878282ab78f7b43fe89a782e 16-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the value mapping provided by LiveIntervalMap. This simplifies the code a
great deal because we don't have to worry about maintaining SSA form.

Unconditionally copy back to dupli when the register is live out of the split
range, even if the live-out value was defined outside the range. Skipping the
back-copy only makes sense when the live range is going to spill outside the
split range, and we don't know that it will. Besides, this was a hack to avoid
SSA update issues.

Clear up some confusion about the end point of a half-open LiveRange. Methinks
LiveRanges need to be closed so both start and end are included in the range.
The low bits of a SlotIndex are symbolic, so a half-open range doesn't really
make sense. This would be a pervasive change, though.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114043 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
f6a129a24b866635c3c51edf08749755f952b5f2 16-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the value mapping provided by LiveIntervalMap. This simplifies the code a
great deal because we don't have to worry about maintaining SSA form.

Unconditionally copy back to dupli when the register is live out of the split
range, even if the live-out value was defined outside the range. Skipping the
back-copy only makes sense when the live range is going to spill outside the
split range, and we don't know that it will. Besides, this was a hack to avoid
SSA update issues.

Clear up some confusion about the end point of a half-open LiveRange. Methinks
LiveRanges need to be closed so both start and end are included in the range.
The low bits of a SlotIndex are symbolic, so a half-open range doesn't really
make sense. This would be a pervasive change, though.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114043 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
f2eeed6b8fffbc8182992e14bb07682abbbae84f 15-Sep-2010 Devang Patel <dpatel@apple.com> Check bb to ensure that alloca is in separate basic block.
This fixes funcargs.exp regression reported by gdb testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
27ede1ba6daa893557db477fe3252084fd9f6147 15-Sep-2010 Devang Patel <dpatel@apple.com> Check bb to ensure that alloca is in separate basic block.
This fixes funcargs.exp regression reported by gdb testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7e7171fe4cacef7122983d5b46000c3ff80dd820 15-Sep-2010 Devang Patel <dpatel@apple.com> If dbg.declare from non-entry block is using alloca from entry block then use offset available in StaticAllocaMap to emit DBG_VALUE. Right now, this has no material impact because varible info also collected using offset table maintained in machine module info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
1397fdc0ab272a6a295149fba0903f65a6d1885e 15-Sep-2010 Devang Patel <dpatel@apple.com> If dbg.declare from non-entry block is using alloca from entry block then use offset available in StaticAllocaMap to emit DBG_VALUE. Right now, this has no material impact because varible info also collected using offset table maintained in machine module info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e5325c047e40dc31ece5a21be3a1885af874a1e5 14-Sep-2010 Gabor Greif <ggreif@gmail.com> must not peephole away side effects

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113848 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
4f7d107d1d2b2392ce8eb1647e2daa04a81f6c99 14-Sep-2010 Gabor Greif <ggreif@gmail.com> must not peephole away side effects

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113848 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
5ef4652c411701db836c77ffe5a8778400b7b0bc 14-Sep-2010 Devang Patel <dpatel@apple.com> Use frame index, if available for byval argument while lowering dbg_declare. Otherwise let getRegForValue() find register for this argument.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
6fe75aaaeb6b0587d402228ba291c729a13eb6d7 14-Sep-2010 Devang Patel <dpatel@apple.com> Use frame index, if available for byval argument while lowering dbg_declare. Otherwise let getRegForValue() find register for this argument.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
f318164d18455fe44fcc9e03329036917f303edc 14-Sep-2010 Michael J. Spencer <bigcheesegs@gmail.com> Revert "CMake: Get rid of LLVMLibDeps.cmake and export the libraries normally."

This reverts commit r113632

Conflicts:

cmake/modules/AddLLVM.cmake

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113819 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
electionDAG/CMakeLists.txt
3a210e2d302758101ac06946e86027b327c7d0f3 14-Sep-2010 Michael J. Spencer <bigcheesegs@gmail.com> Revert "CMake: Get rid of LLVMLibDeps.cmake and export the libraries normally."

This reverts commit r113632

Conflicts:

cmake/modules/AddLLVM.cmake

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113819 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
electionDAG/CMakeLists.txt
28b6fac0009a210d7ef606e60491901ad64d6787 14-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Mechanically replace LiveInterval* with LiveIntervalMap for intervals being
edited without actually using LiveIntervalMap functionality.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113816 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
dd9f3fdc77b77b10710c27050d508d7c7fb40c25 14-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Mechanically replace LiveInterval* with LiveIntervalMap for intervals being
edited without actually using LiveIntervalMap functionality.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113816 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
d0b553fb8db23eecaea143aac4e2c7e3530c1544 14-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow LiveIntervalMap to be reused by resetting the current live interval.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113815 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
9ca2aeb2d223d11fd01b0bb8f13fe7f3a969714d 14-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow LiveIntervalMap to be reused by resetting the current live interval.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113815 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
daa9cee8d238559b321e2313229440839b769d5f 13-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Let's just declare that it is impossible to construct a std::pair from a null
pointer and work around that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113788 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
b3e9681cc0ea2d52a1f8cd09880656780dce4073 13-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Let's just declare that it is impossible to construct a std::pair from a null
pointer and work around that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113788 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
b8bf17a57543429072e916145b5d28de09f4910b 13-Sep-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix linux/msvc build, move include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113776 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
12ea76563276b656b4bcf7ff38a404c10b0a675f 13-Sep-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix linux/msvc build, move include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113776 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
ec0f8b3e51fa403dc546ea533dfd3e817d6d2873 13-Sep-2010 Eric Christopher <echristo@apple.com> Silence more warnings. Two more unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113771 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
1a56e083e7ee7cc05afe02eff40a45858cd9adda 13-Sep-2010 Eric Christopher <echristo@apple.com> Silence more warnings. Two more unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113771 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
f3e8af7f999544ee8a213cb2e03b8d507ca7ce54 13-Sep-2010 John Thompson <john.thompson.jtsoftware@gmail.com> Added skeleton for inline asm multiple alternative constraint support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113766 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
eac6e1d0c748afc3d1496be0753ffbe5f5a4279b 13-Sep-2010 John Thompson <John.Thompson.JTSoftware@gmail.com> Added skeleton for inline asm multiple alternative constraint support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113766 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
a95f589c757c8c857096a07e0d376ca9aaec6c2c 11-Sep-2010 Shih-wei Liao <sliao@google.com> Apply changes on LLVM r112364 after merge.

Change-Id: I9688675d46dca0d564206616c40b005669269010
ndroid.mk
smPrinter/AsmPrinter.cpp
electionDAG/Android.mk
da61c1662bd86ea1f7fad601e9966f1b700636c1 11-Sep-2010 Shih-wei Liao <sliao@google.com> Merge commit '69494cf8102cf872e9cb76662e9960be7c112112' into HEAD

Conflicts:
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/Target/ARM/ARMCodeEmitter.cpp
lib/Target/ARM/ARMJITInfo.cpp
lib/Target/ARM/ARMRelocations.h
lib/Transforms/IPO/MergeFunctions.cpp

Change-Id: I23d40983717e072fa49334c1fa54f2cf961476c7
5d7db1fa13488aa726bf61a1c7f544661cb01ef4 11-Sep-2010 Bill Wendling <isanbard@gmail.com> Rename ConvertToSetZeroFlag to something more general.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113670 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
a65568676d0d9d53dd4aae8f1c58271bb4cfff10 11-Sep-2010 Bill Wendling <isanbard@gmail.com> Rename ConvertToSetZeroFlag to something more general.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113670 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
df43da9e50014e1f89626bf9bd3868d90586b3c9 11-Sep-2010 Bill Wendling <isanbard@gmail.com> No need to recompute the SrcReg and CmpValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113666 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
3665661a5708c8adc2727be38b56d1d87ddeb661 11-Sep-2010 Bill Wendling <isanbard@gmail.com> No need to recompute the SrcReg and CmpValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113666 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
f93cebaf113032a711b2f434bf2c37e1bc6a4cee 11-Sep-2010 Bill Wendling <isanbard@gmail.com> Move some of the decision logic for converting an instruction into one that sets
the 'zero' bit down into the back-end. There are other cases where this logic
isn't sufficient, so they should be handled separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113665 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
92ad57f066e9f256e4e3d72febf152e68caa80c7 11-Sep-2010 Bill Wendling <isanbard@gmail.com> Move some of the decision logic for converting an instruction into one that sets
the 'zero' bit down into the back-end. There are other cases where this logic
isn't sufficient, so they should be handled separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113665 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
a91007a3a63008db6aa85222642ef2ed05a8b4dd 11-Sep-2010 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113653 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
59718a4f42551fc0034b860cb8119f728023c303 11-Sep-2010 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113653 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
c9c9de1260bf0fd85b9628c614cb7289f30ffb9a 10-Sep-2010 Bill Wendling <isanbard@gmail.com> Modify the comparison optimizations in the peephole optimizer to update the
iterator when an optimization took place. This allows us to do more insane
things with the code than just remove an instruction or two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113640 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
220e240bdf3235252c2a1fc8fcc5d4b8e8117918 10-Sep-2010 Bill Wendling <isanbard@gmail.com> Modify the comparison optimizations in the peephole optimizer to update the
iterator when an optimization took place. This allows us to do more insane
things with the code than just remove an instruction or two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113640 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
338c97baad1444a4158a7d99162e0e654f058c43 10-Sep-2010 Michael J. Spencer <bigcheesegs@gmail.com> CMake: Get rid of LLVMLibDeps.cmake and export the libraries normally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113632 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
electionDAG/CMakeLists.txt
4e9c939312ff73bd0c6a6485fd5f97012f5910fa 10-Sep-2010 Michael J. Spencer <bigcheesegs@gmail.com> CMake: Get rid of LLVMLibDeps.cmake and export the libraries normally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113632 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
electionDAG/CMakeLists.txt
9b68a42a9d1a03052dfb8cf4e5a9414fcb9c11a6 10-Sep-2010 Devang Patel <dpatel@apple.com> Add DEBUG message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113614 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
electionDAG/FastISel.cpp
4bafda9618f9dfa9edc8da08bb3001ef2d1a9b68 10-Sep-2010 Devang Patel <dpatel@apple.com> Add DEBUG message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113614 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
electionDAG/FastISel.cpp
0cf9a820e435a74ef93930dcaf8917323f2f99be 10-Sep-2010 Evan Cheng <evan.cheng@apple.com> Teach if-converter to be more careful with predicating instructions that would
take multiple cycles to decode.
For the current if-converter clients (actually only ARM), the instructions that
are predicated on false are not nops. They would still take machine cycles to
decode. Micro-coded instructions such as LDM / STM can potentially take multiple
cycles to decode. If-converter should take treat them as non-micro-coded
simple instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113570 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
ostRAHazardRecognizer.cpp
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
argetInstrInfoImpl.cpp
3ef1c8759a20167457eb7fd82ebcaffe7ccaa1d1 10-Sep-2010 Evan Cheng <evan.cheng@apple.com> Teach if-converter to be more careful with predicating instructions that would
take multiple cycles to decode.
For the current if-converter clients (actually only ARM), the instructions that
are predicated on false are not nops. They would still take machine cycles to
decode. Micro-coded instructions such as LDM / STM can potentially take multiple
cycles to decode. If-converter should take treat them as non-micro-coded
simple instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113570 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
ostRAHazardRecognizer.cpp
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
argetInstrInfoImpl.cpp
1eac61d65261a55529277d5c94dffef46519a7cc 08-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113386 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
4a4bc3fba61dbb513f7213c7aa93faa30d18e0a2 08-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113386 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
920f2e7b25fafd19ae6fe1071c876bfb6b1e1222 08-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't add <imp-def> operands during register rewriting.

LiveIntervals already adds <imp-def> operands for super-registers when a subreg
def defines the whole register. Thus, it is not necessary to do it again when
rewriting.

In fact, the super-register imp-defs caused miscompilations because the late
scheduler couldn't see that the super-register was read.

We still add super-reg <imp-use,kill> operands when rewriting virtuals to
physicals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113299 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
6b964cd21118e816a4669d660d2c96751dc7ccf3 08-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't add <imp-def> operands during register rewriting.

LiveIntervals already adds <imp-def> operands for super-registers when a subreg
def defines the whole register. Thus, it is not necessary to do it again when
rewriting.

In fact, the super-register imp-defs caused miscompilations because the late
scheduler couldn't see that the super-register was read.

We still add super-reg <imp-use,kill> operands when rewriting virtuals to
physicals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113299 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
c1f3acb7b71a00f9a95bbbcf4de1cd02c805ac8a 05-Sep-2010 Chris Lattner <sabre@nondot.org> add a comment about where this should eventually move.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113117 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
dfe254b86e93b131cceb6aa27c33b33b2c8102d6 05-Sep-2010 Chris Lattner <sabre@nondot.org> add a comment about where this should eventually move.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113117 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0ec2ca4855a9a7c035e48780481011e43ad2e75f 05-Sep-2010 Lang Hames <lhames@gmail.com> Added initialisers for reduction rule counters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113108 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/Solution.h
b76d20969f987cf18285bf8439d00444ce5aa6fb 05-Sep-2010 Lang Hames <lhames@gmail.com> Added initialisers for reduction rule counters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113108 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/Solution.h
083b9e18e561b1b7f00a159a6936c7b81e3c8a2b 05-Sep-2010 Chris Lattner <sabre@nondot.org> implement rdar://6653118 - fastisel should fold loads where possible.

Since mem2reg isn't run at -O0, we get a ton of reloads from the stack,
for example, before, this code:

int foo(int x, int y, int z) {
return x+y+z;
}

used to compile into:

_foo: ## @foo
subq $12, %rsp
movl %edi, 8(%rsp)
movl %esi, 4(%rsp)
movl %edx, (%rsp)
movl 8(%rsp), %edx
movl 4(%rsp), %esi
addl %edx, %esi
movl (%rsp), %edx
addl %esi, %edx
movl %edx, %eax
addq $12, %rsp
ret

Now we produce:

_foo: ## @foo
subq $12, %rsp
movl %edi, 8(%rsp)
movl %esi, 4(%rsp)
movl %edx, (%rsp)
movl 8(%rsp), %edx
addl 4(%rsp), %edx ## Folded load
addl (%rsp), %edx ## Folded load
movl %edx, %eax
addq $12, %rsp
ret

Fewer instructions and less register use = faster compiles.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113102 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
beac75da3784929aee9f0357fc5cd76d49d6c3d7 05-Sep-2010 Chris Lattner <sabre@nondot.org> implement rdar://6653118 - fastisel should fold loads where possible.

Since mem2reg isn't run at -O0, we get a ton of reloads from the stack,
for example, before, this code:

int foo(int x, int y, int z) {
return x+y+z;
}

used to compile into:

_foo: ## @foo
subq $12, %rsp
movl %edi, 8(%rsp)
movl %esi, 4(%rsp)
movl %edx, (%rsp)
movl 8(%rsp), %edx
movl 4(%rsp), %esi
addl %edx, %esi
movl (%rsp), %edx
addl %esi, %edx
movl %edx, %eax
addq $12, %rsp
ret

Now we produce:

_foo: ## @foo
subq $12, %rsp
movl %edi, 8(%rsp)
movl %esi, 4(%rsp)
movl %edx, (%rsp)
movl 8(%rsp), %edx
addl 4(%rsp), %edx ## Folded load
addl (%rsp), %edx ## Folded load
movl %edx, %eax
addq $12, %rsp
ret

Fewer instructions and less register use = faster compiles.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113102 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fa2d83d5a9a3fabe46c671ca2d54625b26b0e637 04-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove dead code.

Clobber ranges are no longer used when joining physical registers.
Instead, all aliases are checked for interference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113084 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
07c2b7ff685523458f92339facfd814689e55873 04-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove dead code.

Clobber ranges are no longer used when joining physical registers.
Instead, all aliases are checked for interference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113084 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
81760863d144656b1d9753cbedb4d97927429b81 04-Sep-2010 Chris Lattner <sabre@nondot.org> zap dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113073 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
achineModuleInfo.cpp
17aa68055beed6faa48ca3a995c5b6fdf5092fd4 04-Sep-2010 Chris Lattner <sabre@nondot.org> zap dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113073 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
achineModuleInfo.cpp
3e810aef11470d6cb178cfbf53ba1ba7dacc72ef 03-Sep-2010 Jim Grosbach <grosbach@apple.com> previous patch was a little too tricky for its own good. Don't try to
overload UserInInstr. Explicitly check Allocatable. The early exit in the
condition will mean the performance impact of the extra test should be
minimal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113016 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
ee72651df4b783c973bb682bef7eab2ff9a703e2 03-Sep-2010 Jim Grosbach <grosbach@apple.com> previous patch was a little too tricky for its own good. Don't try to
overload UserInInstr. Explicitly check Allocatable. The early exit in the
condition will mean the performance impact of the extra test should be
minimal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113016 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
f08ed5c39b8e628e864ea8ec0923267948978a84 03-Sep-2010 Bob Wilson <bob.wilson@apple.com> Add a missing check when legalizing a vector extending load. This doesn't
solve the root problem, but it corrects the bug in the code I added to
support legalizing in the case where the non-extended type is also legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112997 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ef134d02e0036ef981983d4b5e40c678dd241583 03-Sep-2010 Bob Wilson <bob.wilson@apple.com> Add a missing check when legalizing a vector extending load. This doesn't
solve the root problem, but it corrects the bug in the code I added to
support legalizing in the case where the non-extended type is also legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112997 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a7f4dd58ccfdd8c26a1d749a7e6235ea41f84f96 03-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> VirtRegRewriter checks for early clobbers before it reuses an available stack
slot.

Teach it to also check for early clobbered aliases, and early clobber operands
following the current operand.

This fixes the miscompilation in PR8044 where EC registers eax and ecx were
being used for inputs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112988 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
1e3aeefc088db2fe32958eb17f46e60011d34949 03-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> VirtRegRewriter checks for early clobbers before it reuses an available stack
slot.

Teach it to also check for early clobbered aliases, and early clobber operands
following the current operand.

This fixes the miscompilation in PR8044 where EC registers eax and ecx were
being used for inputs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112988 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
ae50911f5e14644c9caaca698dd4dc3174f123af 03-Sep-2010 Duncan Sands <baldrick@free.fr> Reapply commit 112702 which was speculatively reverted by echristo.
Original commit message:
Use the SSAUpdator to turn calls to eh.exception that are not in a
landing pad into uses of registers rather than loads from a stack
slot. Doesn't touch the 'orrible hack code - Bill needs to persuade
me harder :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112952 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
850fcd4705177d8630530ea6a18538782eb68a39 03-Sep-2010 Duncan Sands <baldrick@free.fr> Reapply commit 112702 which was speculatively reverted by echristo.
Original commit message:
Use the SSAUpdator to turn calls to eh.exception that are not in a
landing pad into uses of registers rather than loads from a stack
slot. Doesn't touch the 'orrible hack code - Bill needs to persuade
me harder :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112952 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
e5e909fd58ca898235e13a949b6e89f08000ef1d 03-Sep-2010 Devang Patel <dpatel@apple.com> There is no need to use .set here.
Thanks Chris!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112900 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a660be7587f52d269135a54e2d485bf7a7bc9c50 03-Sep-2010 Devang Patel <dpatel@apple.com> There is no need to use .set here.
Thanks Chris!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112900 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e3e1a0ba26187dd48cfb7942c4b7f1f5fb03d0b2 02-Sep-2010 Devang Patel <dpatel@apple.com> Detect undef value early and save unnecessary NodeMap query.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112864 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3f74a116c80b483ffc7c2e6922ff62f0f73d83f5 02-Sep-2010 Devang Patel <dpatel@apple.com> Detect undef value early and save unnecessary NodeMap query.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112864 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6f8a8cd3933c07a1431b798599a1e6720bfcda28 02-Sep-2010 Dan Gohman <gohman@apple.com> Don't narrow the load and store in a load+twiddle+store sequence unless
there are clearly no stores between the load and the store. This fixes
this miscompile reported as PR7833.

This breaks the test/CodeGen/X86/narrow_op-2.ll optimization, which is
safe, but awkward to prove safe. Move it to X86's README.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112861 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
24bde5bce192119ee0fc4f94ef8757fd4031e5f6 02-Sep-2010 Dan Gohman <gohman@apple.com> Don't narrow the load and store in a load+twiddle+store sequence unless
there are clearly no stores between the load and the store. This fixes
this miscompile reported as PR7833.

This breaks the test/CodeGen/X86/narrow_op-2.ll optimization, which is
safe, but awkward to prove safe. Move it to X86's README.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112861 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b8151e3f0ea922dd36032c06f7cb80826e264b82 02-Sep-2010 Devang Patel <dpatel@apple.com> Tidy up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112858 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8e741ed2fa16f46ab586bf3a54526cd9c2338c5b 02-Sep-2010 Devang Patel <dpatel@apple.com> Tidy up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112858 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f6e4444b4e1dbed50c021ad541fa0bdbbc6ca2be 02-Sep-2010 Jim Grosbach <grosbach@apple.com> The scavenger should just use getAllocatableSet() rather than reinventing it
locally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112845 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
9204ddad5c30216e48c5bba0528ba24d66a22e13 02-Sep-2010 Jim Grosbach <grosbach@apple.com> The scavenger should just use getAllocatableSet() rather than reinventing it
locally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112845 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
2f6036058529a862f1800b99e0b03f7506d4eb53 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Anti-dependency breaking needs to be careful not to use reserved regs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112832 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
riticalAntiDepBreaker.cpp
9b041c92efb5b0f6e74e154f0a6151968dc1ab58 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Anti-dependency breaking needs to be careful not to use reserved regs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112832 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
riticalAntiDepBreaker.cpp
17e9a62a01856bfe87c5cadacdf03b9d51397b56 02-Sep-2010 Devang Patel <dpatel@apple.com> Fix .debug_range for linux. Patch by Krister Wombell.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112830 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
b1fcfbe89bd155fb88485b2a3a995adba3994003 02-Sep-2010 Devang Patel <dpatel@apple.com> Fix .debug_range for linux. Patch by Krister Wombell.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112830 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
753eea4b9c4f76b7208d02345afb300260aec408 02-Sep-2010 Lang Hames <lhames@gmail.com> Added support for register allocators to record which intervals are spill intervals, and where the uses and defs of the original intervals were in the original code.

Spill intervals can be hidden using the "-rmf-intervals=virt-nospills*" option.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112811 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
enderMachineFunction.cpp
enderMachineFunction.h
33198391d6d30127643c0d1f4ae9ed1ef85ed7f0 02-Sep-2010 Lang Hames <lhames@gmail.com> Added support for register allocators to record which intervals are spill intervals, and where the uses and defs of the original intervals were in the original code.

Spill intervals can be hidden using the "-rmf-intervals=virt-nospills*" option.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112811 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
enderMachineFunction.cpp
enderMachineFunction.h
07987c32b62dab2cee09936b144f3b093b0e894d 02-Sep-2010 Chandler Carruth <chandlerc@gmail.com> Silence an ambiguous else warning from GCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112809 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/HeuristicBase.h
4315093eb76b8806fed72273f0909d68645f12d3 02-Sep-2010 Chandler Carruth <chandlerc@gmail.com> Silence an ambiguous else warning from GCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112809 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/HeuristicBase.h
3522e1f08bb1dc8fdc9f687ff09443808e32915c 02-Sep-2010 Lang Hames <lhames@gmail.com> Added counters for PBQP reduction rules.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112807 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/HeuristicBase.h
BQP/HeuristicSolver.h
BQP/Solution.h
7642572e6d5e3ca0c5d18e2591989bd5c4f4b31c 02-Sep-2010 Lang Hames <lhames@gmail.com> Added counters for PBQP reduction rules.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112807 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/HeuristicBase.h
BQP/HeuristicSolver.h
BQP/Solution.h
620f9d993bfea9ce88cc7adb036741785d27839d 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Add a bit of debug output for register scavenging

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112787 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
d273a003b6ad27720b2f0bab1a0996150a3d6fbe 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Add a bit of debug output for register scavenging

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112787 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
55fb7ac98050daeef904b5f05381f30486d90e24 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Tweak to ignoring reserved regs. The allocator was occasionally still looking
at them since they'd end up in the register weights list. Tell it to stop
doing that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112756 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
188da252ab1b20bdb368e8f64a97c0fa4d5f5d66 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Tweak to ignoring reserved regs. The allocator was occasionally still looking
at them since they'd end up in the register weights list. Tell it to stop
doing that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112756 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
86fb1aede3d1c22c17980230a64eb4fc15e88f43 02-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach RemoveCopyByCommutingDef to check all aliases, not just subregisters.

This caused a miscompilation in WebKit where %RAX had conflicting defs when
RemoveCopyByCommutingDef was commuting a %EAX use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112751 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0077114efc8c1680e58980d05606ada2708c4295 02-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach RemoveCopyByCommutingDef to check all aliases, not just subregisters.

This caused a miscompilation in WebKit where %RAX had conflicting defs when
RemoveCopyByCommutingDef was commuting a %EAX use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112751 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
ea1bc5c1e6cc7cf7732be6b0ccc63d90e363ab80 01-Sep-2010 Jim Grosbach <grosbach@apple.com> tidy up trailing whitespace and an 80 column violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112746 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
662fb77687c7a40db72144bb9104bf886705cc85 01-Sep-2010 Jim Grosbach <grosbach@apple.com> tidy up trailing whitespace and an 80 column violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112746 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
f1b063d8e34386cd84179faa58558f356441cbf7 01-Sep-2010 Jim Grosbach <grosbach@apple.com> cleanup per feedback. use a helper function for getting the first non-reserved
physical register in a register class. Make sure to assert if the register
class is empty.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112743 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
5a4cbea3120f5e921849bd89c0b43096ef65787f 01-Sep-2010 Jim Grosbach <grosbach@apple.com> cleanup per feedback. use a helper function for getting the first non-reserved
physical register in a register class. Make sure to assert if the register
class is empty.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112743 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
d9a7ec07f9e281c16ca4b365dc03a354a0b78e61 01-Sep-2010 Jim Grosbach <grosbach@apple.com> The register allocator shouldn't consider allocating reserved registers. PBQP version.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112742 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
269354e57024ab815bdb74f06cc6309a879d1f9f 01-Sep-2010 Jim Grosbach <grosbach@apple.com> The register allocator shouldn't consider allocating reserved registers. PBQP version.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112742 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
76fd62745d0f863d66d2b1b61ebbf7a490fd8741 01-Sep-2010 Jim Grosbach <grosbach@apple.com> The register allocator shouldn't consider allocating reserved registers.
r112728 did this for fast regalloc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112741 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
067a648599a99dc5a499e0241a85436fe6037c5a 01-Sep-2010 Jim Grosbach <grosbach@apple.com> The register allocator shouldn't consider allocating reserved registers.
r112728 did this for fast regalloc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112741 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
2984541208516fa115cda953d2339be04761713e 01-Sep-2010 Jim Grosbach <grosbach@apple.com> The register allocator shouldn't consider allocating reserved registers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112728 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
1f758831cbbdbfcb0cf164959b08b8219deac018 01-Sep-2010 Jim Grosbach <grosbach@apple.com> The register allocator shouldn't consider allocating reserved registers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112728 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
5818a3ee4d1a5b4474c67ce70e245237b1edf29b 01-Sep-2010 Jim Grosbach <grosbach@apple.com> tidy up a few 80-column and trailing whitespace bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112726 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
07cb689d6260b78861d829bb05b188e1558c528e 01-Sep-2010 Jim Grosbach <grosbach@apple.com> tidy up a few 80-column and trailing whitespace bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112726 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
24b0cd689b7b2db54251c47d9ba9af2c29842529 01-Sep-2010 Eric Christopher <echristo@apple.com> Speculatively revert 112699 and 112702, they seem to be causing
self host errors on clang-x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112719 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
adc581f5cb6bdb929b1c6a155c330151ebd3bf72 01-Sep-2010 Eric Christopher <echristo@apple.com> Speculatively revert 112699 and 112702, they seem to be causing
self host errors on clang-x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112719 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
2960c389ead08ffff8d01876906ddfa82059e401 01-Sep-2010 Duncan Sands <baldrick@free.fr> Use the SSAUpdator to turn calls to eh.exception that are not in a
landing pad into uses of registers rather than loads from a stack
slot. Doesn't touch the 'orrible hack code - Bill needs to persuade
me harder :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112702 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
fb4e8ab200b0027c77b5ac873d50601ea18013e9 01-Sep-2010 Duncan Sands <baldrick@free.fr> Use the SSAUpdator to turn calls to eh.exception that are not in a
landing pad into uses of registers rather than loads from a stack
slot. Doesn't touch the 'orrible hack code - Bill needs to persuade
me harder :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112702 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
265228e6020c662fb1b22998a4a374a065914081 01-Sep-2010 Devang Patel <dpatel@apple.com> Use absolute label for DW_AT_stmt_list if a target does not prefer offset here.
This patch was developed on top of original patch by Artur Pietrek.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112678 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ae84d5b9bafd1ba88aa12e8398e5385f229fa306 01-Sep-2010 Devang Patel <dpatel@apple.com> Use absolute label for DW_AT_stmt_list if a target does not prefer offset here.
This patch was developed on top of original patch by Artur Pietrek.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112678 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5a4501459d69cd65252c8309612b396f6fa17176 01-Sep-2010 Devang Patel <dpatel@apple.com> Reapply r112623. Included additional check for unused byval argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112659 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
0b48eade42022c929fcf0f2afcffdf849c5bd05a 01-Sep-2010 Devang Patel <dpatel@apple.com> Reapply r112623. Included additional check for unused byval argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112659 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
d9e1fc71d8d656e3eb8aa1cc4765ba09d5392fd2 31-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Track liveness of unallocatable, unreserved registers in machine DCE.

Reserved registers are unpredictable, and are treated as always live by machine
DCE.

Allocatable registers are never reserved, and can be used for virtual registers.

Unreserved, unallocatable registers can not be used for virtual registers, but
otherwise behave like a normal allocatable register. Most targets only have
the flag register in this set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112649 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
f14a648d80bcb45fa07db35f8f1f58e47111dc9e 31-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Track liveness of unallocatable, unreserved registers in machine DCE.

Reserved registers are unpredictable, and are treated as always live by machine
DCE.

Allocatable registers are never reserved, and can be used for virtual registers.

Unreserved, unallocatable registers can not be used for virtual registers, but
otherwise behave like a normal allocatable register. Most targets only have
the flag register in this set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112649 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
8d7f94df79024b05f6d7905140a2c1a7c055f151 31-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Ignore unallocatable registers in RegAllocFast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112632 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
9d4b51b696e27b9c061955d4c76f9dbff529b143 31-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Ignore unallocatable registers in RegAllocFast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112632 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
4c8d7cf0fac920dd08c875da8a23c6e19893519d 31-Aug-2010 Devang Patel <dpatel@apple.com> Revert r112623. It is causing self host build failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112631 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
81b79b5fa808730d102cdc4b60a52e602d425de5 31-Aug-2010 Devang Patel <dpatel@apple.com> Revert r112623. It is causing self host build failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112631 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
873476d74cb9d9cee1c8a9e27fbab4b539aab7f7 31-Aug-2010 Devang Patel <dpatel@apple.com> Remember byval argument's frame index during argument lowering and use this info to emit debug info.
Fixes Radar 8367011.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112623 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
8480c2e314f6c01638ea16f32149417848352085 31-Aug-2010 Devang Patel <dpatel@apple.com> Remember byval argument's frame index during argument lowering and use this info to emit debug info.
Fixes Radar 8367011.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112623 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
c26adccf2ab67ea09b13b8e948ca86120cec6e73 31-Aug-2010 Jim Grosbach <grosbach@apple.com> Improve virtual frame base register allocation heuristics.

1. Allocate them in the entry block of the function to enable function-wide
re-use. The instructions to create them should be re-materializable, so
there shouldn't be additional cost compared to creating them local
to the basic blocks where they are used.
2. Collect all of the frame index references for the function and sort them
by the local offset referenced. Iterate over the sorted list to
allocate the virtual base registers. This enables creation of base
registers optimized for positive-offset access of frame references.
(Note: This may be appropriate to later be a target hook to do the
sorting in a target appropriate manner. For now it's done here for
simplicity.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112609 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
864d22ea72ac418ba06feb5e09b18c35ec53b4b2 31-Aug-2010 Jim Grosbach <grosbach@apple.com> Improve virtual frame base register allocation heuristics.

1. Allocate them in the entry block of the function to enable function-wide
re-use. The instructions to create them should be re-materializable, so
there shouldn't be additional cost compared to creating them local
to the basic blocks where they are used.
2. Collect all of the frame index references for the function and sort them
by the local offset referenced. Iterate over the sorted list to
allocate the virtual base registers. This enables creation of base
registers optimized for positive-offset access of frame references.
(Note: This may be appropriate to later be a target hook to do the
sorting in a target appropriate manner. For now it's done here for
simplicity.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112609 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
d2c50213fa4988cb8c70c1ca24a794b56cea116a 31-Aug-2010 Duncan Sands <baldrick@free.fr> Stop using the dom frontier in DwarfEHPrepare by not promoting alloca's
any more. I plan to reimplement alloca promotion using SSAUpdater later.
It looks like Bill's URoR logic really always needs domtree, so the pass
now always asks for domtree info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112597 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
LVMTargetMachine.cpp
22efc18f12d8d5d0fa23b559121d211f4ea222f6 31-Aug-2010 Duncan Sands <baldrick@free.fr> Stop using the dom frontier in DwarfEHPrepare by not promoting alloca's
any more. I plan to reimplement alloca promotion using SSAUpdater later.
It looks like Bill's URoR logic really always needs domtree, so the pass
now always asks for domtree info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112597 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
LVMTargetMachine.cpp
8c624d6e3c75b1870dd063cc3f1248ee8660952b 31-Aug-2010 Devang Patel <dpatel@apple.com> Offset is not always unsigned number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
34ca5ed79717c9a3dad2bf5823d3747aaedbc74a 31-Aug-2010 Devang Patel <dpatel@apple.com> Offset is not always unsigned number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
9392d76b5ca2db126618f8ad6a7d40b8b18478a5 31-Aug-2010 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112583 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9e3bd2c476570217f939f521ed191dd0278b1ada 31-Aug-2010 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112583 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8f1f127fe95447d9dd159ba435d2a6ac98d5f583 31-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> zap unused method. x86 is the only user and already has a more powerfull version

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2e46e78c53011ddbc0587135c09b39077beb0c1e 31-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> zap unused method. x86 is the only user and already has a more powerfull version

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
977d95a2ff3327316e1859ef2d198b752a0d36e9 31-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add experimental -disable-physical-join command line option.

Eventually, we want to disable physreg coalescing completely, and let the
register allocator do its job using hints.

This option makes it possible to measure the impact of disabling physreg
coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112567 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
e49e6a852b29b4f5fb13160ca3d2cc316f43030b 31-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add experimental -disable-physical-join command line option.

Eventually, we want to disable physreg coalescing completely, and let the
register allocator do its job using hints.

This option makes it possible to measure the impact of disabling physreg
coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112567 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0ad053be9e3634e5bb67bb581764bc6c65277667 30-Aug-2010 Chris Lattner <sabre@nondot.org> two changes:
1) nuke ConstDataCoalSection, which is dead.
2) revise my previous patch for rdar://8018335,
which was completely wrong. Specifically, it doesn't
make sense to mark __TEXT,__const_coal as PURE_INSTRUCTIONS,
because it is for readonly data. templates (it turns out)
go to const_coal_nt. The real fix for rdar://8018335 was
to give ConstTextCoalSection a section kind of ReadOnly
instead of Text.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112496 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
1875ce4ad95b8dc7aa7a0ab50a9bf93fb84d50bf 30-Aug-2010 Chris Lattner <sabre@nondot.org> two changes:
1) nuke ConstDataCoalSection, which is dead.
2) revise my previous patch for rdar://8018335,
which was completely wrong. Specifically, it doesn't
make sense to mark __TEXT,__const_coal as PURE_INSTRUCTIONS,
because it is for readonly data. templates (it turns out)
go to const_coal_nt. The real fix for rdar://8018335 was
to give ConstTextCoalSection a section kind of ReadOnly
instead of Text.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112496 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
55035e2b84e590ddcc1929056a926ff96f7aeb51 30-Aug-2010 Bill Wendling <isanbard@gmail.com> Revert r112461. It was failing on PPC...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112463 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
c040719a153df8202f10054f33c9ac581b1c6c57 30-Aug-2010 Bill Wendling <isanbard@gmail.com> Revert r112461. It was failing on PPC...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112463 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
a82a973314080d4ed8b8fa6d9c893151d11a920f 30-Aug-2010 Bill Wendling <isanbard@gmail.com> When adding a register, we should mark it as "def" if it can optionally define
said (physical) register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
25b141912ce4f5a4b8a0684e870569ece21facde 30-Aug-2010 Bill Wendling <isanbard@gmail.com> When adding a register, we should mark it as "def" if it can optionally define
said (physical) register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
0548094822a2fdc089ffdcbdd58bf9b407ba7b0f 30-Aug-2010 Chris Lattner <sabre@nondot.org> revert 112457, it looks like it broke selfhost.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112459 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
a11ce95cfce8f58bf086698404ea33b09ef98eea 30-Aug-2010 Chris Lattner <sabre@nondot.org> revert 112457, it looks like it broke selfhost.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112459 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
5154afcec460529345e6f3210a85f2c2803bc5f2 29-Aug-2010 Chris Lattner <sabre@nondot.org> rewrite DwarfEHPrepare to use SSAUpdater to promote its allocas
instead of PromoteMemToReg. This allows it to stop using DF and DT,
eliminating a computation of DT and DF from clang -O3. Clang is now
down to 2 runs of DomFrontier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112457 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
445560881898fe212c185bd4c0485140d7b4fc88 29-Aug-2010 Chris Lattner <sabre@nondot.org> rewrite DwarfEHPrepare to use SSAUpdater to promote its allocas
instead of PromoteMemToReg. This allows it to stop using DF and DT,
eliminating a computation of DT and DF from clang -O3. Clang is now
down to 2 runs of DomFrontier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112457 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
9a3f3fd545e3739b49efa240cba2d05bb62e6a3d 29-Aug-2010 Chris Lattner <sabre@nondot.org> inline function into its only caller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112455 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
c34c2200a8077f98cf5cac9fe6f8a6d69b89b54c 29-Aug-2010 Chris Lattner <sabre@nondot.org> inline function into its only caller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112455 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
32497e1a4b44bbad671605bf3d382c6dc4b92c23 28-Aug-2010 Chris Lattner <sabre@nondot.org> remove unions from LLVM IR. They are severely buggy and not
being actively maintained, improved, or extended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112356 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAGBuilder.cpp
61c70e98ac3c7504d31dd9bc81c4e9cb998e9984 28-Aug-2010 Chris Lattner <sabre@nondot.org> remove unions from LLVM IR. They are severely buggy and not
being actively maintained, improved, or extended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112356 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAGBuilder.cpp
48b94f4f8fba8cc639cc97abf41b6189cea8f11b 28-Aug-2010 Chris Lattner <sabre@nondot.org> remove dead proto


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112354 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
5f8a87dd766196a259d3f670d928641ca3b00e95 28-Aug-2010 Chris Lattner <sabre@nondot.org> remove dead proto


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112354 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
0544cc94b83456b0b17a5570cbbb0fdc84fd9e5a 28-Aug-2010 Dan Gohman <gohman@apple.com> Completely disable tail calls when fast-isel is enabled, as fast-isel
doesn't currently support dealing with this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112341 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
badcda4afa35bf86ce2e6e77ca20f1ce2365b549 28-Aug-2010 Dan Gohman <gohman@apple.com> Completely disable tail calls when fast-isel is enabled, as fast-isel
doesn't currently support dealing with this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112341 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
d55573912a3e36ee90080419798234afdca34d62 28-Aug-2010 Dan Gohman <gohman@apple.com> Trim a #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.h
7258df71fa21483f03d3804164c57f32cfc22e01 28-Aug-2010 Dan Gohman <gohman@apple.com> Trim a #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.h
8cd320aab9573cbba94c7bcfdd33b43306fff024 28-Aug-2010 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
0991dfbbe048a88c0f85618f8c9a21d11b34d69c 28-Aug-2010 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
29d7d54a8ee2b77344d6f50c249b5f3779d146eb 27-Aug-2010 Bill Wendling <isanbard@gmail.com> Remove now unneeded command line flag that enables 'optimize compares.'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112287 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
69c5eb59f592087af89b971bea072f070f2a5cfa 27-Aug-2010 Bill Wendling <isanbard@gmail.com> Remove now unneeded command line flag that enables 'optimize compares.'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112287 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
91145b6e85eb303b0ef97d05c07370a8ad54e15e 27-Aug-2010 Devang Patel <dpatel@apple.com> Revert r112213. It is not needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112242 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
4cf81c47fe060fad290ea6b95388d1da7fad105a 27-Aug-2010 Devang Patel <dpatel@apple.com> Revert r112213. It is not needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112242 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
32b4e13e59e23f2354f6c3ecc45df8e43a989b0f 27-Aug-2010 Jim Grosbach <grosbach@apple.com> Simplify eliminateFrameIndex() interface back down now that PEI doesn't need
to try to re-use scavenged frame index reference registers. rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112241 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
egisterScavenging.cpp
fcb4a8ead3cd8d9540d5eaa448af5d14a0ee341a 27-Aug-2010 Jim Grosbach <grosbach@apple.com> Simplify eliminateFrameIndex() interface back down now that PEI doesn't need
to try to re-use scavenged frame index reference registers. rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112241 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
egisterScavenging.cpp
96c576bb77ff9536aa90375a586d3fb18cf6c674 27-Aug-2010 Devang Patel <dpatel@apple.com> If node is not available then use FuncInfo.ValueMap to emit debug info for byval parameter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112238 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6cd467bd0e31df2decdf7081868810ef822b64d3 27-Aug-2010 Devang Patel <dpatel@apple.com> If node is not available then use FuncInfo.ValueMap to emit debug info for byval parameter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112238 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
52612574fdef2475196e9f076c66c6cbc579d1bf 27-Aug-2010 Jim Grosbach <grosbach@apple.com> Remove the now obsolete frame index virtual re-use algorithm from PEI. Pre-RA
virtual base registers handle this function, and more. A bit more cleanup
to do on the interface to eliminateFrameIndex() after this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112237 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
700f5df518452162de7dda7461917f88e8f4c56e 27-Aug-2010 Jim Grosbach <grosbach@apple.com> Remove the now obsolete frame index virtual re-use algorithm from PEI. Pre-RA
virtual base registers handle this function, and more. A bit more cleanup
to do on the interface to eliminateFrameIndex() after this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112237 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
098e40cd1cb2e502cd9672aecf75cedde5713c35 26-Aug-2010 Devang Patel <dpatel@apple.com> Speculatively revert r112207.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112216 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e130d78ee193b2dcd49b61d52a9946a4e70b696f 26-Aug-2010 Devang Patel <dpatel@apple.com> Speculatively revert r112207.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112216 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8c1d17c6b913e070b090c1badba0e56600276dff 26-Aug-2010 Devang Patel <dpatel@apple.com> 80 col.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112215 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8f09beacb172b9f66ec561e6c31e164e217aafda 26-Aug-2010 Devang Patel <dpatel@apple.com> 80 col.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112215 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f30282df0ae5c0fc9c4437b573e8521064682482 26-Aug-2010 Devang Patel <dpatel@apple.com> Update DanglingDebugInfo so that it can be used to track llvm.dbg.declare also.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112213 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
f2ec7ae2799c149e4eccfb5a3632f9ba8c6dae7b 26-Aug-2010 Devang Patel <dpatel@apple.com> Update DanglingDebugInfo so that it can be used to track llvm.dbg.declare also.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112213 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
74e08708274a5e2580a784f6ce34e1a554725af9 26-Aug-2010 Devang Patel <dpatel@apple.com> Donot forget to resolve dangling debug info in a case where virtual register, used for a value, is initialized after a dbg intrinsic is seen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112207 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9d0796a0e06e3b44bbdd696259f80066c285d9c3 26-Aug-2010 Devang Patel <dpatel@apple.com> Donot forget to resolve dangling debug info in a case where virtual register, used for a value, is initialized after a dbg intrinsic is seen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112207 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
478795fe95f4e51688771dc5af3a228cc156f803 26-Aug-2010 Chris Lattner <sabre@nondot.org> Add a hackaround for PR7993 which is causing failures on x86 builders that lack sse2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112175 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
341fa09a3c842e8a0df3510d3f9af186ede976c9 26-Aug-2010 Chris Lattner <sabre@nondot.org> Add a hackaround for PR7993 which is causing failures on x86 builders that lack sse2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112175 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
af14747dd46c49b16ea83b0564a880c03cb59175 26-Aug-2010 Chris Lattner <sabre@nondot.org> implement SplitVecOp_CONCAT_VECTORS, fixing the included testcase with SSE1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
8306968c147d5861d8a53fba86ac0fbf5c050b84 26-Aug-2010 Chris Lattner <sabre@nondot.org> implement SplitVecOp_CONCAT_VECTORS, fixing the included testcase with SSE1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
e520d5af029fb92f712d19da721887d82e66c219 26-Aug-2010 Chris Lattner <sabre@nondot.org> zap dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112155 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
6dabd9dba013173460c0b95e6b41b5776c66270d 26-Aug-2010 Chris Lattner <sabre@nondot.org> zap dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112155 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
6bf2478e21ef37dd8e11229ca8605998927e699f 26-Aug-2010 Chris Lattner <sabre@nondot.org> remove some llvmcontext arguments that are now dead post-refactoring.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112104 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
aafe626c7fa9f99150cccd27d0151a2cf7c8c00b 26-Aug-2010 Chris Lattner <sabre@nondot.org> remove some llvmcontext arguments that are now dead post-refactoring.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112104 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
2491aa0b844f5271cd5076d543890a38bc69e1f1 26-Aug-2010 Chris Lattner <sabre@nondot.org> Change handling of illegal vector types to widen when possible instead of
expanding: e.g. <2 x float> -> <4 x float> instead of -> 2 floats. This
affects two places in the code: handling cross block values and handling
function return and arguments. Since vectors are already widened by
legalizetypes, this gives us much better code and unblocks x86-64 abi
and SPU abi work.

For example, this (which is a silly example of a cross-block value):
define <4 x float> @test2(<4 x float> %A) nounwind {
%B = shufflevector <4 x float> %A, <4 x float> undef, <2 x i32> <i32 0, i32 1>
%C = fadd <2 x float> %B, %B
br label %BB
BB:
%D = fadd <2 x float> %C, %C
%E = shufflevector <2 x float> %D, <2 x float> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
ret <4 x float> %E
}

Now compiles into:

_test2: ## @test2
## BB#0:
addps %xmm0, %xmm0
addps %xmm0, %xmm0
ret

previously it compiled into:

_test2: ## @test2
## BB#0:
addps %xmm0, %xmm0
pshufd $1, %xmm0, %xmm1
## kill: XMM0<def> XMM0<kill> XMM0<def>
insertps $0, %xmm0, %xmm0
insertps $16, %xmm1, %xmm0
addps %xmm0, %xmm0
ret

This implements rdar://8230384



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112101 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
e6f7c267df11a44679c35dec79787fbc276839fb 26-Aug-2010 Chris Lattner <sabre@nondot.org> Change handling of illegal vector types to widen when possible instead of
expanding: e.g. <2 x float> -> <4 x float> instead of -> 2 floats. This
affects two places in the code: handling cross block values and handling
function return and arguments. Since vectors are already widened by
legalizetypes, this gives us much better code and unblocks x86-64 abi
and SPU abi work.

For example, this (which is a silly example of a cross-block value):
define <4 x float> @test2(<4 x float> %A) nounwind {
%B = shufflevector <4 x float> %A, <4 x float> undef, <2 x i32> <i32 0, i32 1>
%C = fadd <2 x float> %B, %B
br label %BB
BB:
%D = fadd <2 x float> %C, %C
%E = shufflevector <2 x float> %D, <2 x float> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
ret <4 x float> %E
}

Now compiles into:

_test2: ## @test2
## BB#0:
addps %xmm0, %xmm0
addps %xmm0, %xmm0
ret

previously it compiled into:

_test2: ## @test2
## BB#0:
addps %xmm0, %xmm0
pshufd $1, %xmm0, %xmm1
## kill: XMM0<def> XMM0<kill> XMM0<def>
insertps $0, %xmm0, %xmm0
insertps $16, %xmm1, %xmm0
addps %xmm0, %xmm0
ret

This implements rdar://8230384



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112101 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
91241aeb46c08cac626a34b830528542e7695029 25-Aug-2010 Devang Patel <dpatel@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112086 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.h
ab43add695179614927766269df08b22c157f931 25-Aug-2010 Devang Patel <dpatel@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112086 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.h
21b5abbdec6ca9a100f47a1f1d5cf4a0b27313a0 25-Aug-2010 Devang Patel <dpatel@apple.com> Remove dead argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112085 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
78a06e50b74e5390e3d77bd80d0393191820c7c2 25-Aug-2010 Devang Patel <dpatel@apple.com> Remove dead argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112085 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
18229e1feeec6a214f6bff0d6a296d6cbbe9e8f4 25-Aug-2010 Jim Grosbach <grosbach@apple.com> Add some statistics for PEI register scavenging

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112084 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c52b3cced8aebbc665021ec6b8bcd0974c4ad7ae 25-Aug-2010 Jim Grosbach <grosbach@apple.com> Add some statistics for PEI register scavenging

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112084 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
7464440b04ed805cebb42de4f1ce80bd64bbe389 25-Aug-2010 Chris Lattner <sabre@nondot.org> split the vector case of getCopyFromParts out to its own function,
no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3ac18845098b34b7b76c6fa4b95cfde7752ff8ad 25-Aug-2010 Chris Lattner <sabre@nondot.org> split the vector case of getCopyFromParts out to its own function,
no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
611bf0c193bf00ddbb5f16661606360cff9a0a3e 25-Aug-2010 Chris Lattner <sabre@nondot.org> split the vector case out of getCopyToParts into its own function. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a13b860f4de136687cb219cdcd93d3e18a8c239e 25-Aug-2010 Chris Lattner <sabre@nondot.org> split the vector case out of getCopyToParts into its own function. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
078216e4b3110e3e057d6e64a8dbddcf36bc26c8 25-Aug-2010 Chris Lattner <sabre@nondot.org> tidy up, reduce indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111982 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
549fa267efb00944a418a507d07101bae2f72b51 25-Aug-2010 Chris Lattner <sabre@nondot.org> tidy up, reduce indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111982 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
734d432236e7dd52c2026e105bd22e7537ebcaaa 24-Aug-2010 Jim Grosbach <grosbach@apple.com> Add ARM heuristic for when to allocate a virtual base register for stack
access. rdar://8277890&7352504

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111968 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
3197380143cdc18837722129ac888528b9fbfc2b 24-Aug-2010 Jim Grosbach <grosbach@apple.com> Add ARM heuristic for when to allocate a virtual base register for stack
access. rdar://8277890&7352504

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111968 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
d7ac185d7a151148cecab8162ff8cfaa1e6a956a 24-Aug-2010 Jim Grosbach <grosbach@apple.com> Move enabling the local stack allocation pass into the target where it belongs.
For now it's still a command line option, but the interface to the generic
code doesn't need to know that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111942 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
a273442891ae20fd8192526132e3819ea9e5eda9 24-Aug-2010 Jim Grosbach <grosbach@apple.com> Move enabling the local stack allocation pass into the target where it belongs.
For now it's still a command line option, but the interface to the generic
code doesn't need to know that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111942 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
945ee41a3d773f5ef0599b4ae80361f907f15dfe 24-Aug-2010 Devang Patel <dpatel@apple.com> Revert r107202. It is not adding any value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111870 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
af608bd4fe3c334d2f81f174478825f35b195adc 24-Aug-2010 Devang Patel <dpatel@apple.com> Revert r107202. It is not adding any value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111870 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
36e0890af522bd38455b5c7612878e94266fdc57 23-Aug-2010 Jim Grosbach <grosbach@apple.com> Remove the MFI storage of the local allocation block size. It's not needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111847 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
5e2475598e0dd73c0ed3c8e065cf0669277c3cab 23-Aug-2010 Jim Grosbach <grosbach@apple.com> Remove the MFI storage of the local allocation block size. It's not needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111847 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
53f249755ea8a0425127e4bd310c23590b347654 23-Aug-2010 Jim Grosbach <grosbach@apple.com> Better handling of local offsets for downwards growing stacks. This corrects
relative offsets when there are offsets encoded in the instructions and
simplifies final allocation in PEI. rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111836 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
67ff81a08319f916571cea90ed92e17015c8584f 23-Aug-2010 Jim Grosbach <grosbach@apple.com> Better handling of local offsets for downwards growing stacks. This corrects
relative offsets when there are offsets encoded in the instructions and
simplifies final allocation in PEI. rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111836 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
1eac9de3cea3b4b753c8db371c563c36fba69dd5 23-Aug-2010 Devang Patel <dpatel@apple.com> Handle qualified constants that are directly folded by FE.
PR 7920.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111820 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0c4720c6bdf517d02aaf71d90c0572a5aa4813bc 23-Aug-2010 Devang Patel <dpatel@apple.com> Handle qualified constants that are directly folded by FE.
PR 7920.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111820 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
291fe21a327d29b43f44bf3a58d44f65fc72a293 23-Aug-2010 Owen Anderson <resistor@mac.com> Now that PassInfo and Pass::ID have been separated, move the rest of the passes over to the new registration API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111815 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
achineLoopInfo.cpp
achineVerifier.cpp
HIElimination.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
02dd53e1c5b941ca5f60fca1b95ebcaf9ccd1dfc 23-Aug-2010 Owen Anderson <resistor@mac.com> Now that PassInfo and Pass::ID have been separated, move the rest of the passes over to the new registration API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111815 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
achineLoopInfo.cpp
achineVerifier.cpp
HIElimination.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
b43bbc4ae6f61c27a77e2500133d936b05c97c12 23-Aug-2010 Chandler Carruth <chandlerc@gmail.com> Fix some GCC warnings by providing a virtual destructor in the base of a class
hierarchy with virtual methods and using llvm_unreachable to properly indicate
unreachable states which would otherwise leave variables uninitialized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111803 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
54f616304240fcbc41ca9b9b2af38eeb1171e8a8 23-Aug-2010 Chandler Carruth <chandlerc@gmail.com> Fix some GCC warnings by providing a virtual destructor in the base of a class
hierarchy with virtual methods and using llvm_unreachable to properly indicate
unreachable states which would otherwise leave variables uninitialized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111803 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5e9235bdd10f22cee033714709ddb1f580a3809f 21-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Delete dead comment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111744 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
24a1182184336c088f70e86191ebda47df629beb 21-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Delete dead comment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111744 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
01085e6f25479f3e4075a9c60d028e7a462410bb 21-Aug-2010 Bill Wendling <isanbard@gmail.com> Create the new linker type "linker_private_weak_def_auto".

It's similar to "linker_private_weak", 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 linker_private and
linker_private_weak, linker_private_weak_def_auto may have only default
visibility. The symbols are removed by the linker from the final linked image
(executable or dynamic library).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
55ae515f9db484125a23429d4906c5edaf9f10d2 21-Aug-2010 Bill Wendling <isanbard@gmail.com> Create the new linker type "linker_private_weak_def_auto".

It's similar to "linker_private_weak", 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 linker_private and
linker_private_weak, linker_private_weak_def_auto may have only default
visibility. The symbols are removed by the linker from the final linked image
(executable or dynamic library).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
83465d69b550dfbaedcf725aefbd3e5014dedcd3 20-Aug-2010 Jim Grosbach <grosbach@apple.com> Downwards growing stack allocation order reverses relative offsets

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111673 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
4c207c2ddb3bda2488044b7eac2a5c1051c36bd2 20-Aug-2010 Jim Grosbach <grosbach@apple.com> Downwards growing stack allocation order reverses relative offsets

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111673 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
b4868fd6ec06486231de6fe1512b6fc236e24c90 20-Aug-2010 Jim Grosbach <grosbach@apple.com> Add more dbg output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111670 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
ab6bdec837ebd858b5630fe76444afd46f2591e4 20-Aug-2010 Jim Grosbach <grosbach@apple.com> Add more dbg output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111670 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
fd35181c8e7f00040a6bf1b67339ba66fd3c6d32 20-Aug-2010 Jim Grosbach <grosbach@apple.com> properly check for whether base regs were inserted

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111646 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
2d16f5b0cb5ae03c4b4ff6711d543552d97243a0 20-Aug-2010 Jim Grosbach <grosbach@apple.com> properly check for whether base regs were inserted

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111646 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
28c238c9ded0b5c91e122c94b5a02d76a5245c11 20-Aug-2010 Ying Wang <wangying@google.com> Fix sim build.

Note that this only makes the sim build green, but the built images won't work for sure:
No libbcc.so, which depends on something else that can not build in sim mode.
No x86 bitcode is generated as well, I believe.

Change-Id: Idca8378427196622ac77cd56a38c6a160f03ba22
ndroid.mk
smPrinter/Android.mk
electionDAG/Android.mk
fd0e13305739afae7a77b7f5cf81f73767bdd49b 20-Aug-2010 Bob Wilson <bob.wilson@apple.com> If the target says that an extending load is not legal, regardless of whether
it involves specific floating-point types, legalize should expand an
extending load to a non-extending load followed by a separate extend operation.
For example, we currently expand SEXTLOAD to EXTLOAD+SIGN_EXTEND_INREG (and
assert that EXTLOAD should always be supported). Now we can expand that to
LOAD+SIGN_EXTEND. This is needed to allow vector SIGN_EXTEND and ZERO_EXTEND
to be used for NEON.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111586 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
63241f79e667feafb10936b7c2cf03c33f55dd01 20-Aug-2010 Bob Wilson <bob.wilson@apple.com> If the target says that an extending load is not legal, regardless of whether
it involves specific floating-point types, legalize should expand an
extending load to a non-extending load followed by a separate extend operation.
For example, we currently expand SEXTLOAD to EXTLOAD+SIGN_EXTEND_INREG (and
assert that EXTLOAD should always be supported). Now we can expand that to
LOAD+SIGN_EXTEND. This is needed to allow vector SIGN_EXTEND and ZERO_EXTEND
to be used for NEON.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111586 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8a242004e2fbb8631bef004a62a5d6a3ca98d52b 20-Aug-2010 Jim Grosbach <grosbach@apple.com> Better handling of offsets on frame index references. rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111585 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
e2f556933e1a19cddf6d4f370e2770c0f763b025 20-Aug-2010 Jim Grosbach <grosbach@apple.com> Better handling of offsets on frame index references. rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111585 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
1ddf50e1f168b13f1c4d1d131a27dc0e447db9ac 20-Aug-2010 Evan Cheng <evan.cheng@apple.com> Update debug logs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111575 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
f942c13af8187415e59e82e0bc92420c6fd59009 20-Aug-2010 Evan Cheng <evan.cheng@apple.com> Update debug logs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111575 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
3fdf10389bc06c4744efe12268bd8a2070687093 20-Aug-2010 Evan Cheng <evan.cheng@apple.com> Properly update MachineDominators when splitting critical edge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111574 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
19708923bed9eccd534243bc76c40b9553365b59 20-Aug-2010 Evan Cheng <evan.cheng@apple.com> Properly update MachineDominators when splitting critical edge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111574 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
77c46efc3eb56b252dbb6eb874b32ffeaa992851 19-Aug-2010 Bill Wendling <isanbard@gmail.com> Correct header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111540 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
5567bb0c5fed4f769d51970b73465c82fe903162 19-Aug-2010 Bill Wendling <isanbard@gmail.com> Correct header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111540 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
03450a77e4909dcfec50000b489f111a4596931d 19-Aug-2010 Evan Cheng <evan.cheng@apple.com> It's possible to sink a def if its local uses are PHI's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111537 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
e5e7946018844978d0ac09fdb35998a53b43ad34 19-Aug-2010 Evan Cheng <evan.cheng@apple.com> It's possible to sink a def if its local uses are PHI's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111537 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
f53de21f5aae95fa4c10f1a7c0d0e142e0d852ab 19-Aug-2010 Michael J. Spencer <bigcheesegs@gmail.com> Fix the msvc 2010 build.

The Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01
implements parts of C++0x based on the draft standard. An old version of
the draft had a bug that makes std::pair<T1*, T2*>(something, 0) fail to
compile. This is because the template<class U, class V> pair(U&& x, V&& y)
constructor is selected, even though it later fails to implicitly convert
U and V to frist_type and second_type.

This has been fixed in n3090, but it seems that Microsoft is not going to
update msvc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111535 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
6715be20e23ac19efd20e16d43fdd1f608e3e415 19-Aug-2010 Michael J. Spencer <bigcheesegs@gmail.com> Fix the msvc 2010 build.

The Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01
implements parts of C++0x based on the draft standard. An old version of
the draft had a bug that makes std::pair<T1*, T2*>(something, 0) fail to
compile. This is because the template<class U, class V> pair(U&& x, V&& y)
constructor is selected, even though it later fails to implicitly convert
U and V to frist_type and second_type.

This has been fixed in n3090, but it seems that Microsoft is not going to
update msvc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111535 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
73ff078ae9307ec77b36ed0972b112c4b3159a9f 19-Aug-2010 Evan Cheng <evan.cheng@apple.com> Remove disabled assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111531 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
c546c754597cdc99b2dfa70b4a1054575daa753a 19-Aug-2010 Evan Cheng <evan.cheng@apple.com> Remove disabled assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111531 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
d971fb68d8964c7f0d95200653ab24abbc1b5f4a 19-Aug-2010 Evan Cheng <evan.cheng@apple.com> Teach machine-sink to break critical edges when appropriate. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111530 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
4dc301a7c5fc8e18e7773f8e0d2c495ae1cc44f7 19-Aug-2010 Evan Cheng <evan.cheng@apple.com> Teach machine-sink to break critical edges when appropriate. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111530 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
ca48e70d0444ac828a1f3bed1a70d09eb657e19d 19-Aug-2010 Jim Grosbach <grosbach@apple.com> Update local stack block allocation to let PEI do the allocs if no additional
base registers were required. This will allow for slightly better packing
of the locals when alignment padding is necessary after callee saved registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111508 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
a0fc005321ac163f10ebc5216a85068a496969df 19-Aug-2010 Jim Grosbach <grosbach@apple.com> Update local stack block allocation to let PEI do the allocs if no additional
base registers were required. This will allow for slightly better packing
of the locals when alignment padding is necessary after callee saved registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111508 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
510ae28dd4eb9489fb79a93a24e07edcc5eb3c48 19-Aug-2010 Jim Grosbach <grosbach@apple.com> Add a newline to debug output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111453 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
cd799ce8f8b93dc203aaee41900e346f097eb428 19-Aug-2010 Jim Grosbach <grosbach@apple.com> Add a newline to debug output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111453 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
99ae3328316ca9d05b3a3483a009c1d405215ae9 19-Aug-2010 Evan Cheng <evan.cheng@apple.com> If any def of a machine-sink candidate has local uses, it's obviously not safe to sink it to a successor block. This bug has been hidden because a later check for critical-edge disable these illegal optimizations. This patch should significantly reduce the amount of time spent on checking dominator information for obviously unsafe sinking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111450 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
c3439ad63f4d145ca7357b7918bd72dfde8213d3 19-Aug-2010 Evan Cheng <evan.cheng@apple.com> If any def of a machine-sink candidate has local uses, it's obviously not safe to sink it to a successor block. This bug has been hidden because a later check for critical-edge disable these illegal optimizations. This patch should significantly reduce the amount of time spent on checking dominator information for obviously unsafe sinking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111450 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
931ad7afbae7e7edbf514e24c482183b6138c422 19-Aug-2010 Jim Grosbach <grosbach@apple.com> Enable ARM base register reuse to local stack slot allocation. Whenever a new
frame index reference to an object in the local block is seen, check if
it's near enough to any previously allocaated base register to re-use.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111443 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
2b1e202e1c2137b03f7c6ecc18668e40819fa22f 19-Aug-2010 Jim Grosbach <grosbach@apple.com> Enable ARM base register reuse to local stack slot allocation. Whenever a new
frame index reference to an object in the local block is seen, check if
it's near enough to any previously allocaated base register to re-use.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111443 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
6d3b4eec757f7606cd5654dcc80fa56d4121d37f 18-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Thinking about it, we don't need MachineDominatorTree after all. The DomValue
map discovers the iterated dominance frontier for free.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111400 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
ff3ae8691c18c4c40d09fb21ecac880aea9a536b 18-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Thinking about it, we don't need MachineDominatorTree after all. The DomValue
map discovers the iterated dominance frontier for free.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111400 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
20270bb45782427d5efd5e2922c5d2ac453038ca 18-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r111394. It was too aggressive.

We must complete the DFS, otherwise we might miss needed phi-defs, and
prematurely color live ranges with a non-dominating value.

This is not a big deal since we get to color more of the CFG and the next
mapValue call will be faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111397 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
cf16bea74e3a6f84af914520562e9f9c5dfa0fad 18-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r111394. It was too aggressive.

We must complete the DFS, otherwise we might miss needed phi-defs, and
prematurely color live ranges with a non-dominating value.

This is not a big deal since we get to color more of the CFG and the next
mapValue call will be faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111397 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
a9a3192baef28d49cc2cb1805048c11626ab3f21 18-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Aggressively prune the DFS when inserting phi-defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111394 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
4d440bd786ae4dad7035c30fd09044a9efc8dccd 18-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Aggressively prune the DFS when inserting phi-defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111394 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
cebdfd04596e6f57d76d948ce716e0dc8ac6e82f 18-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add the LiveIntervalMap class. Don't hook it up yet.

LiveIntervalMap maps values from a parent LiveInterval to a child interval that
is a strict subset. It will create phi-def values as needed to preserve the
VNInfo SSA form in the child interval.

This leads to an algorithm very similar to the one in SSAUpdaterImpl.h, but with
enough differences that the code can't be reused:

- We don't need to manipulate PHI instructions.
- LiveIntervals have kills.
- We have MachineDominatorTree.
- We can use df_iterator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111393 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
1407c84242688dbcdbaa5b0296c18f46d102f25a 18-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add the LiveIntervalMap class. Don't hook it up yet.

LiveIntervalMap maps values from a parent LiveInterval to a child interval that
is a strict subset. It will create phi-def values as needed to preserve the
VNInfo SSA form in the child interval.

This leads to an algorithm very similar to the one in SSAUpdaterImpl.h, but with
enough differences that the code can't be reused:

- We don't need to manipulate PHI instructions.
- LiveIntervals have kills.
- We have MachineDominatorTree.
- We can use df_iterator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111393 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
021fd61be69c5a763a5d32bc1912d5ecc83bb96b 18-Aug-2010 Bill Wendling <isanbard@gmail.com> Improve whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111384 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3d7ff08c82be2f95902089dd59cff2a37999a991 18-Aug-2010 Bill Wendling <isanbard@gmail.com> Improve whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111384 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0bcf23f115608757b1d704e2f70a1148132551db 18-Aug-2010 Jim Grosbach <grosbach@apple.com> Add hook for re-using virtual base registers for local stack slot access.
Nothing fancy, just ask the target if any currently available base reg
is in range for the instruction under consideration and use the first one
that is. Placeholder ARM implementation simply returns false for now.

ongoing saga of rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111374 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
74d803a58c7935c067397bb19afc05ec464d8159 18-Aug-2010 Jim Grosbach <grosbach@apple.com> Add hook for re-using virtual base registers for local stack slot access.
Nothing fancy, just ask the target if any currently available base reg
is in range for the instruction under consideration and use the first one
that is. Placeholder ARM implementation simply returns false for now.

ongoing saga of rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111374 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
4fcc88002cfb34b3d96db0df633cd1be721c2959 18-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Preserve subregs on PHI source operands. Patch by Krister Wombell!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111366 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
9ac248848faa839cff8e9f915c9b2c44295bc9f6 18-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Preserve subregs on PHI source operands. Patch by Krister Wombell!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111366 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
0db154b121c5929e8be95ffafc007f128e31be19 18-Aug-2010 Jim Grosbach <grosbach@apple.com> Add materialization of virtual base registers for frame indices allocated into
the local block. Resolve references to those indices to a new base register.
For simplification and testing purposes, a new virtual base register is
allocated for each frame index being resolved. The result is truly horrible,
but correct, code that's good for exercising the new code paths.

Next up is adding thumb1 support, which should be very simple. Following that
will be adding base register re-use and implementing a reasonable ARM
heuristic for when a virtual base register should be generated at all.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111315 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
dc140c6e7b8350ca51aa1d408c10e25a27826e2c 18-Aug-2010 Jim Grosbach <grosbach@apple.com> Add materialization of virtual base registers for frame indices allocated into
the local block. Resolve references to those indices to a new base register.
For simplification and testing purposes, a new virtual base register is
allocated for each frame index being resolved. The result is truly horrible,
but correct, code that's good for exercising the new code paths.

Next up is adding thumb1 support, which should be very simple. Following that
will be adding base register re-use and implementing a reasonable ARM
heuristic for when a virtual base register should be generated at all.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111315 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
19e1b6f4fb4b1955beac6ec65864881350e0aa09 18-Aug-2010 Dale Johannesen <dalej@apple.com> Make fast scheduler handle asm clobbers correctly.
PR 7882. Follows suggestion by Amaury Pouly, thanks.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111306 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
6cf64a631a1522c137a1fcf88858ea1336822abf 18-Aug-2010 Dale Johannesen <dalej@apple.com> Make fast scheduler handle asm clobbers correctly.
PR 7882. Follows suggestion by Amaury Pouly, thanks.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111306 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
dfd2d7c5f4b3577f659bc051f2a6e0217bcd26a4 17-Aug-2010 Evan Cheng <evan.cheng@apple.com> PHI elimination shouldn't require machineloopinfo since it's used at -O0. Move the requirement to LiveIntervalAnalysis instead. Note this does not change the number of times machineloopinfo is computed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111285 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
HIElimination.cpp
HIElimination.h
148341cc9b60d7d88be9c07a2b32b436e0cd301d 17-Aug-2010 Evan Cheng <evan.cheng@apple.com> PHI elimination shouldn't require machineloopinfo since it's used at -O0. Move the requirement to LiveIntervalAnalysis instead. Note this does not change the number of times machineloopinfo is computed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111285 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
HIElimination.cpp
HIElimination.h
b0211714be731bdd6e9eb090e90e0d8146a377a7 17-Aug-2010 Evan Cheng <evan.cheng@apple.com> Machine CSE preserves CFG. Pass manager was freeing machineloopinfo after machine cse before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111281 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
6542416560589c9cfa6298d2edc73f3350ccf56a 17-Aug-2010 Evan Cheng <evan.cheng@apple.com> Machine CSE preserves CFG. Pass manager was freeing machineloopinfo after machine cse before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111281 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
1160f08549905d636857987a930a40d1a7df125b 17-Aug-2010 Jim Grosbach <grosbach@apple.com> silence warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111274 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
8ae231a06ce1f999f07841150635e190ddcba196 17-Aug-2010 Jim Grosbach <grosbach@apple.com> silence warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111274 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
64a2ed70ddd5d095eb7ebb0b1ac342f5a4732847 17-Aug-2010 Jim Grosbach <grosbach@apple.com> Add hook to examine an instruction referencing a frame index to determine
whether to allocate a virtual frame base register to resolve the frame
index reference in it. Implement a simple version for ARM to aid debugging.

In LocalStackSlotAllocation, scan the function for frame index references
to local frame indices and ask the target whether to allocate virtual
frame base registers for any it encounters. Purely infrastructural for
debug output. Next step is to actually allocate base registers, then add
intelligent re-use of them.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111262 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
8708ead5a46f4ec8f2d5f832be23381924d72b8d 17-Aug-2010 Jim Grosbach <grosbach@apple.com> Add hook to examine an instruction referencing a frame index to determine
whether to allocate a virtual frame base register to resolve the frame
index reference in it. Implement a simple version for ARM to aid debugging.

In LocalStackSlotAllocation, scan the function for frame index references
to local frame indices and ask the target whether to allocate virtual
frame base registers for any it encounters. Purely infrastructural for
debug output. Next step is to actually allocate base registers, then add
intelligent re-use of them.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111262 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
064eff7d5699a0dbdeeece5a36a601f673662f55 17-Aug-2010 Evan Cheng <evan.cheng@apple.com> Move the decision logic whether it's a good idea to split a critical edge to clients. Also fixed an erroneous check. An edge is only a back edge when the from and to blocks are in the same loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111256 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
HIElimination.cpp
HIElimination.h
e008384508342a2dec110eafaa87d93614976990 17-Aug-2010 Evan Cheng <evan.cheng@apple.com> Move the decision logic whether it's a good idea to split a critical edge to clients. Also fixed an erroneous check. An edge is only a back edge when the from and to blocks are in the same loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111256 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
HIElimination.cpp
HIElimination.h
c1696103c9cd061022b401626d529363f47deeb5 17-Aug-2010 Evan Cheng <evan.cheng@apple.com> Fix debug message.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111250 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
087fbeb7d14743d0904a94ef3c73cd5dcbc50c96 17-Aug-2010 Evan Cheng <evan.cheng@apple.com> Fix debug message.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111250 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
0d8a0bb360888100e62c1e47c73b2a45a866f776 17-Aug-2010 Eric Christopher <echristo@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111223 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
44a2c3476bd15e03f294bae1b50016851f214f8d 17-Aug-2010 Eric Christopher <echristo@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111223 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
7e3584d845088ea1f6303e95aa6ce611f8eb8733 17-Aug-2010 Evan Cheng <evan.cheng@apple.com> PHI elimination should not break back edge. It can cause some significant code placement issues. rdar://8263994

good:
LBB0_2:
mov r2, r0
. . .
mov r1, r2
bne LBB0_2

bad:
LBB0_2:
mov r2, r0
. . .
@ BB#3:
mov r1, r2
b LBB0_2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111221 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
HIElimination.cpp
97b9b97853d7e4fbb5c8460ef28126013c76e9a9 17-Aug-2010 Evan Cheng <evan.cheng@apple.com> PHI elimination should not break back edge. It can cause some significant code placement issues. rdar://8263994

good:
LBB0_2:
mov r2, r0
. . .
mov r1, r2
bne LBB0_2

bad:
LBB0_2:
mov r2, r0
. . .
@ BB#3:
mov r1, r2
b LBB0_2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111221 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
HIElimination.cpp
a0d3ebeba523cd7e8ddaa013feae764e6b600b82 17-Aug-2010 Jim Grosbach <grosbach@apple.com> tidy up. remove unused local.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111206 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
fecdea0bf77599038eb368db3bc6a38a14900308 17-Aug-2010 Jim Grosbach <grosbach@apple.com> tidy up. remove unused local.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111206 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
bd03657f55405abc2bc149d25baefed154512a1b 17-Aug-2010 Jim Grosbach <grosbach@apple.com> Better handle alignment requirements for local objects in pre-regalloc frame
mapping. Have the local block track its alignment requirement, and then
apply that when the block itself is allocated. Previously, offsets could
get adjusted in PEI to be different, relative to one another, than the
block allocation thought they would be, which defeats the point of doing
the allocation this way. Continuing rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111197 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
4861ed60ac68a543d1b88e631e9fe2c55583b24b 17-Aug-2010 Jim Grosbach <grosbach@apple.com> Better handle alignment requirements for local objects in pre-regalloc frame
mapping. Have the local block track its alignment requirement, and then
apply that when the block itself is allocated. Previously, offsets could
get adjusted in PEI to be different, relative to one another, than the
block allocation thought they would be, which defeats the point of doing
the allocation this way. Continuing rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111197 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
610c3f6dd98a3ab2560f985fdfed96e3b43aa26b 16-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Until uleb/sleb are MC-ized, add a hack to make them work with ELF object
emission.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111177 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
0b95fdbd6f9f9c9275c77c93a522b0998efbbff1 16-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Until uleb/sleb are MC-ized, add a hack to make them work with ELF object
emission.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111177 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
395c0ad3e5726a6fd67f6e82053fe630aae14f88 16-Aug-2010 Jim Grosbach <grosbach@apple.com> track local frame size in MFI, not local to the pass, since PEI needs it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111164 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
63249347c2700fe2481e0bc36caa63f6e2cf6eab 16-Aug-2010 Jim Grosbach <grosbach@apple.com> track local frame size in MFI, not local to the pass, since PEI needs it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111164 91177308-0d34-0410-b5e6-96231b3b80d8
ocalStackSlotAllocation.cpp
8ece80f341eea3613ea2788dd141429066e90361 16-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unused functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111156 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
owerSubregs.cpp
5ba3e4d75d37d4cb145ebd01c2b0b2fec0db27c0 16-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unused functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111156 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
owerSubregs.cpp
50587571c57f3068574d56e0976608d0660788b7 14-Aug-2010 Ted Kremenek <kremenek@apple.com> Update CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111063 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
865287de4a93b9906bcfb2d57b66c32ed1fd870c 14-Aug-2010 Ted Kremenek <kremenek@apple.com> Update CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111063 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
f0b7b5f0d6afdcac071356692a80ab17488ae2ff 14-Aug-2010 Jim Grosbach <grosbach@apple.com> Add a local stack object block allocation pass. This is still an
experimental pass that allocates locals relative to one another before
register allocation and then assigns them to actual stack slots as a block
later in PEI. This will eventually allow targets with limited index offset
range to allocate additional base registers (not just FP and SP) to
more efficiently reference locals, as well as handle situations where
locals cannot be referenced via SP or FP at all (dynamic stack realignment
together with variable sized objects, for example). It's currently
incomplete and almost certainly buggy. Work in progress.

Disabled by default and gated via the -enable-local-stack-alloc command
line option.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111059 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
LVMTargetMachine.cpp
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
3d72367d30c9ce6f387764a028763f7a366cc443 14-Aug-2010 Jim Grosbach <grosbach@apple.com> Add a local stack object block allocation pass. This is still an
experimental pass that allocates locals relative to one another before
register allocation and then assigns them to actual stack slots as a block
later in PEI. This will eventually allow targets with limited index offset
range to allocate additional base registers (not just FP and SP) to
more efficiently reference locals, as well as handle situations where
locals cannot be referenced via SP or FP at all (dynamic stack realignment
together with variable sized objects, for example). It's currently
incomplete and almost certainly buggy. Work in progress.

Disabled by default and gated via the -enable-local-stack-alloc command
line option.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111059 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
LVMTargetMachine.cpp
ocalStackSlotAllocation.cpp
rologEpilogInserter.cpp
f44e6aff1024b3718394172fd85e74415e31c329 14-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up the Spiller.h interface.

The earliestStart argument is entirely specific to linear scan allocation, and
can be easily calculated by RegAllocLinearScan.

Replace std::vector with SmallVector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111055 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocLinearScan.cpp
piller.cpp
piller.h
plitKit.cpp
plitKit.h
0a2b2a1497a77f1db281d4dc9f21d01fe48f6ec6 14-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up the Spiller.h interface.

The earliestStart argument is entirely specific to linear scan allocation, and
can be easily calculated by RegAllocLinearScan.

Replace std::vector with SmallVector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111055 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocLinearScan.cpp
piller.cpp
piller.h
plitKit.cpp
plitKit.h
4aca44260dcea424a6c4aadf08b776b0c45fc99b 13-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement splitting inside a single block.

When a live range is contained a single block, we can split it around
instruction clusters. The current approach is very primitive, splitting before
and after the largest gap between uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111043 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
plitKit.h
fc412d85c46a8656361fe1e9197ea85922e2cd61 13-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement splitting inside a single block.

When a live range is contained a single block, we can split it around
instruction clusters. The current approach is very primitive, splitting before
and after the largest gap between uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111043 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
plitKit.h
51726e454ad4bd1c5f262445016e892e586e656d 13-Aug-2010 Jim Grosbach <grosbach@apple.com> tidy up whitespace a bit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111019 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
c92bb50a0cdecccfa53573df720d5893f83f615e 13-Aug-2010 Jim Grosbach <grosbach@apple.com> tidy up whitespace a bit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111019 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
1aa1dc945219b380d1d55e7f94e8323c41119075 13-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Let LiveInterval::addRange extend existing ranges, it will verify that value
numbers match. The old check could accidentally leave holes in openli.

Also let useIntv add all ranges for the phi-def value inserted by
enterIntvAtEnd. This works as long at the value mapping is established in
enterIntvAtEnd.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110995 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
2780d3ca8114ae11fb43f61655a5ddde22518fb8 13-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Let LiveInterval::addRange extend existing ranges, it will verify that value
numbers match. The old check could accidentally leave holes in openli.

Also let useIntv add all ranges for the phi-def value inserted by
enterIntvAtEnd. This works as long at the value mapping is established in
enterIntvAtEnd.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110995 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
d6c209aaf1ecf0724d981c6e198449f631fd018b 13-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to actually update SplitAnalysis statistics now that we have a fancy
function to do it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110994 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
00667a54f21f2d58382ac2eed973706332ed5817 13-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to actually update SplitAnalysis statistics now that we have a fancy
function to do it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110994 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
d49638d917cd3d868c65937213016953932ab197 13-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle an empty dupli.

This can happen if the original interval has been broken into two disconnected
parts. Ideally, we should be able to detect when the graph is disconnected and
create separate intervals, but that code is not implemented yet.

Example:

Two basic blocks are both branching to a loop header. Our interval is defined in
both basic blocks, and live into the loop along both edges.

We decide to split the interval around the loop. The interval is split into an
inside part and an outside part. The outside part now has two disconnected
segments, one in each basic block.

If we later decide to split the outside interval into single blocks, we get one
interval per basic block and an empty dupli for the remainder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110976 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
09c45d2fe8fb0564ea2095f77fc79e184aa0a1a7 13-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle an empty dupli.

This can happen if the original interval has been broken into two disconnected
parts. Ideally, we should be able to detect when the graph is disconnected and
create separate intervals, but that code is not implemented yet.

Example:

Two basic blocks are both branching to a loop header. Our interval is defined in
both basic blocks, and live into the loop along both edges.

We decide to split the interval around the loop. The interval is split into an
inside part and an outside part. The outside part now has two disconnected
segments, one in each basic block.

If we later decide to split the outside interval into single blocks, we get one
interval per basic block and an empty dupli for the remainder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110976 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
5bac38b2ba90ba5bfe1a25a34f4bc3a39d55010d 13-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Update the SplitAnalysis statistics as uses are moved from curli to the new
split intervals. THis means the analysis can be used for multiple splits as long
as curli doesn't shrink.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110975 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
2dee7a527b083e259f9e826c57c1e5dab9540798 13-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Update the SplitAnalysis statistics as uses are moved from curli to the new
split intervals. THis means the analysis can be used for multiple splits as long
as curli doesn't shrink.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110975 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
c9b836affba0ac9b7ee60684bcc05b94ca68fdc6 12-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Also recompute HasPHIKill flags in LiveInterval::RenumberValues.

If a phi-def value were removed from the interval, the phi-kill flags are no
longer valid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110949 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
plitKit.cpp
fff2c4726baa0d6c9cb184c815677e33c0357c93 12-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Also recompute HasPHIKill flags in LiveInterval::RenumberValues.

If a phi-def value were removed from the interval, the phi-kill flags are no
longer valid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110949 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
plitKit.cpp
aa1ae3f989bb33e7b546519d3a816e3346a54e76 12-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110944 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
1b2932024f098a6968645ac78d5848951d877c19 12-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110944 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
9820ef1382ece54ec8143a62226db4f4a2872181 12-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110940 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
plitKit.cpp
e1f543fbb338ea80cdac021fcb09230ad86896c6 12-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110940 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
plitKit.cpp
fcf88a19a27508bbc8a1017edccf25d39b3f4419 12-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement single block splitting.

Before spilling a live range, we split it into a separate range for each basic
block where it is used. That way we only get one reload per basic block if the
new smaller ranges can allocate to a register.

This type of splitting is already present in the standard spiller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110934 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
plitKit.h
f1b05f2b0ef48cb80b064e2f792b38c626822fc0 12-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement single block splitting.

Before spilling a live range, we split it into a separate range for each basic
block where it is used. That way we only get one reload per basic block if the
new smaller ranges can allocate to a register.

This type of splitting is already present in the standard spiller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110934 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
plitKit.h
178706ff0f48939cf855474aba18c78d8a947bb2 11-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a FIXME. The SlotIndex::Slot enum should be private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110826 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
dfa28b157dd066eed4db9d2256f55c23b88df637 11-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a FIXME. The SlotIndex::Slot enum should be private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110826 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
6d7069e367f247469f3292d1262a1bbf5e97ca81 10-Aug-2010 Bill Wendling <isanbard@gmail.com> Turn optimize compares back on with fix. We needed to test that a machine op was
a register before checking if it was defined.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110733 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
75486dbf4e9611f2070bf13b874f78a5587ed7ff 10-Aug-2010 Bill Wendling <isanbard@gmail.com> Turn optimize compares back on with fix. We needed to test that a machine op was
a register before checking if it was defined.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110733 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
15adb42f03193a02a1b35682e7cc7eff70dd18f1 10-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Give up on register class recalculation when the register is used with subreg
operands. We don't currently have a hook to provide "the largest super class of
A where all registers' getSubReg(subidx) is valid and in B".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110730 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
a516e94cf159b9ea02af31872fc59b7ceeef7965 10-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Give up on register class recalculation when the register is used with subreg
operands. We don't currently have a hook to provide "the largest super class of
A where all registers' getSubReg(subidx) is valid and in B".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110730 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
5fe199233a2ed1a430cb6eccad0b5040c6004989 10-Aug-2010 Dan Gohman <gohman@apple.com> Revert r110718; it broke clang-i386-darwin9.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110726 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
a8c58a6f59880a5bb2ef8fc86ebdeb15e96ed110 10-Aug-2010 Dan Gohman <gohman@apple.com> Revert r110718; it broke clang-i386-darwin9.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110726 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
eedebc5addde40edf5fe43c89bef153e0541d4c3 10-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid editing the current live interval during remat.

The live interval may be used for a spill slot as well, and that spill slot
could be shared by split registers. We cannot shrink it, even if we know the
current register won't need the spill slot in that range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110721 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
b67b12ea64aed7651960dff5444c25d2d0c156b2 10-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid editing the current live interval during remat.

The live interval may be used for a spill slot as well, and that spill slot
could be shared by split registers. We cannot shrink it, even if we know the
current register won't need the spill slot in that range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110721 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
c76e35847395c5d5ea38547ceff604ab91674625 10-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> More debug spew

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110720 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
987eeccb61bc9c155057453b23980e39de71ff8e 10-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> More debug spew

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110720 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
202db801ddc03d8d05ad762e4d62d71f837fa3e9 10-Aug-2010 Bill Wendling <isanbard@gmail.com> Turn optimize cmps on by default so that we can get some testing by the nightly
ARM testers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110718 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
a54e3cddce8e9f5e84e1124466b9134f90961c84 10-Aug-2010 Bill Wendling <isanbard@gmail.com> Turn optimize cmps on by default so that we can get some testing by the nightly
ARM testers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110718 91177308-0d34-0410-b5e6-96231b3b80d8
eepholeOptimizer.cpp
7966dfc430b5b778ad4f2633cb38cb2442601108 10-Aug-2010 Devang Patel <dpatel@apple.com> Do not forget debug info for enums. Use named mdnode to keep track of these types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110712 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e7e5a0f6fb1dec21f296a9872088935860660819 10-Aug-2010 Devang Patel <dpatel@apple.com> Do not forget debug info for enums. Use named mdnode to keep track of these types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110712 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
405c125eb889aa061e241f36dfb9693f1ab83e79 10-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement register class inflation.

When splitting a live range, the new registers have fewer uses and the
permissible register class may be less constrained. Recompute the register class
constraint from the uses of new registers created for a split. This may let them
be allocated from a larger set, possibly avoiding a spill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110703 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
plitKit.cpp
9db3ea46cb7bd6bdf108d314daffd0dfd50a73fe 10-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement register class inflation.

When splitting a live range, the new registers have fewer uses and the
permissible register class may be less constrained. Recompute the register class
constraint from the uses of new registers created for a split. This may let them
be allocated from a larger set, possibly avoiding a spill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110703 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
plitKit.cpp
b38f02435b58eaba878d7a1894b610c4679fbd41 10-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Recalculate the spill weight and allocation hint for virtual registers created
during live range splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110686 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
08e93b14c37277ab40b835de340f89ba357d3332 10-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Recalculate the spill weight and allocation hint for virtual registers created
during live range splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110686 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
3ab1af43d4b9846b4aa69a43de0f86eee781b9d4 10-Aug-2010 Devang Patel <dpatel@apple.com> Handle TAG_constant for integers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110656 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
293680756404020a4888860db9f34728c9cecd1f 10-Aug-2010 Devang Patel <dpatel@apple.com> Handle TAG_constant for integers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110656 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
710dbd3633f0768037bdd2337696df88f51b6e77 10-Aug-2010 Bill Wendling <isanbard@gmail.com> Update CMake...sorry for the breakage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110654 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
94f7950e4d68399954d4ee651ffa6674b87ff299 10-Aug-2010 Bill Wendling <isanbard@gmail.com> Update CMake...sorry for the breakage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110654 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
bcd0b63e939e4c2e44e6dfceea0017739b4d04d8 10-Aug-2010 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110653 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
ecbd8e866bedb87e68946fa711021e6b8efff43a 10-Aug-2010 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110653 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
3526241db68817079a71ea6f4eac7ef604e1307e 10-Aug-2010 Devang Patel <dpatel@apple.com> Drop "const". It does not add value here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110652 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
85e9580e25fdee623dc436d7f06faaefb7525f43 10-Aug-2010 Devang Patel <dpatel@apple.com> Drop "const". It does not add value here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110652 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
669db6bf656392e7eef896d9db628560bbe60c94 10-Aug-2010 Evan Cheng <evan.cheng@apple.com> Add missing null check reported by Amaury Pouly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110649 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
c120af45671c75fd1297ac6300c03a6a9e1264da 10-Aug-2010 Evan Cheng <evan.cheng@apple.com> Add missing null check reported by Amaury Pouly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110649 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
b71395b1625744c00e3b0ec7338b7887a7cfbdc3 10-Aug-2010 Devang Patel <dpatel@apple.com> Do not include file static variable in pubnames list.
Refactor and simplify code to avoid redundant checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110642 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9fa539ce33bbf44595bd4f0a903ab7d9c5e7cd93 10-Aug-2010 Devang Patel <dpatel@apple.com> Do not include file static variable in pubnames list.
Refactor and simplify code to avoid redundant checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110642 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1646071b23513b28e27f5029ccedd2fb1797a5e1 10-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Transpose the calculation of spill weights such that we are calculating one
register at a time. This turns out to be slightly faster than iterating over
instructions, but more importantly, it allows us to compute spill weights for
new registers created after the spill weight pass has run.

Also compute the allocation hint at the same time as the spill weight. This
allows us to use the spill weight as a cost metric for copies, and choose the
most profitable hint if there is more than one possibility.

The new hints provide a very small (< 0.1%) but universal code size improvement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110631 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveInterval.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
df30cf9e61e6586b45b74d1312bef1ee758ef94f 10-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Transpose the calculation of spill weights such that we are calculating one
register at a time. This turns out to be slightly faster than iterating over
instructions, but more importantly, it allows us to compute spill weights for
new registers created after the spill weight pass has run.

Also compute the allocation hint at the same time as the spill weight. This
allows us to use the spill weight as a cost metric for copies, and choose the
most profitable hint if there is more than one possibility.

The new hints provide a very small (< 0.1%) but universal code size improvement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110631 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveInterval.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
cf5c6bcbc173148f9e53bd818c443ef7c391e417 10-Aug-2010 Bill Wendling <isanbard@gmail.com> Merge the OptimizeExts and OptimizeCmps passes into one PeepholeOptimizer
pass. This pass should expand with all of the small, fine-grained optimization
passes to reduce compile time and increase happiment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110627 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ptimizeCmps.cpp
ptimizeExts.cpp
eepholeOptimizer.cpp
6cdb1abe4e4f6364649e7ef656589441754e82ae 10-Aug-2010 Bill Wendling <isanbard@gmail.com> Merge the OptimizeExts and OptimizeCmps passes into one PeepholeOptimizer
pass. This pass should expand with all of the small, fine-grained optimization
passes to reduce compile time and increase happiment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110627 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ptimizeCmps.cpp
ptimizeExts.cpp
eepholeOptimizer.cpp
03049c4f641cb15ac64361fb2b00de8864f09bce 10-Aug-2010 Devang Patel <dpatel@apple.com> Undo accidental commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110623 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
02ecdefbe48a054d962d6977967d1ae57a31a074 10-Aug-2010 Devang Patel <dpatel@apple.com> Undo accidental commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110623 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
b19f735310177781ed8bd969de5b5d0478aee1f8 10-Aug-2010 Devang Patel <dpatel@apple.com> Simplify. Avoid redundant checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110621 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
450b793a0446042ee9af9d384de7cca243856b0b 10-Aug-2010 Devang Patel <dpatel@apple.com> Simplify. Avoid redundant checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110621 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
ee993e30d6a2b172d2682841d89445303ee21d49 09-Aug-2010 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110607 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2739896cdd3c987de3d7f9a41217b4b954287c8d 09-Aug-2010 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110607 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
07c6151f640d973e55b65d55d104987bfcd12999 09-Aug-2010 Devang Patel <dpatel@apple.com> Refactoring. Update DbgVarible to handle queries itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110600 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8bd11de33e9f6ee9d3dd1eed157e801aa27d5783 09-Aug-2010 Devang Patel <dpatel@apple.com> Refactoring. Update DbgVarible to handle queries itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110600 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
e7349c585a7a2765d92fea4463c64d623886a2e8 09-Aug-2010 Devang Patel <dpatel@apple.com> It is ok, and convenient, to pass descriptors by value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110590 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8162574aaafff760abf04ec780c24b45b6d9cfdb 09-Aug-2010 Devang Patel <dpatel@apple.com> It is ok, and convenient, to pass descriptors by value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110590 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
4a20fad0a9dfc11eb94b4d8471793fc86ae2c79b 09-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> A REG_SEQUENCE instruction may use the same register twice.

If we are emitting COPY instructions for the REG_SEQUENCE, make sure the kill
flag goes on the last COPY. Otherwise we may be using a killed register.

<rdar://problem/8287792>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110589 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
e4b9c4f1871c5f17681fdf143104c6834055b25b 09-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> A REG_SEQUENCE instruction may use the same register twice.

If we are emitting COPY instructions for the REG_SEQUENCE, make sure the kill
flag goes on the last COPY. Otherwise we may be using a killed register.

<rdar://problem/8287792>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110589 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
8bdfceca2e8cc919230158d81b5c38b2a470330e 09-Aug-2010 Devang Patel <dpatel@apple.com> Rename a method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110586 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e03161c28e361d1813dd0085cacd596f5cde7327 09-Aug-2010 Devang Patel <dpatel@apple.com> Rename a method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110586 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b38c700c87bd03e5271a8e2e86b7fb5b3060b55e 08-Aug-2010 Bill Wendling <isanbard@gmail.com> Use the "isCompare" machine instruction attribute instead of calling the
relatively expensive comparison analyzer on each instruction. Also rename the
comparison analyzer method to something more in line with what it actually does.

This pass is will eventually be folded into the Machine CSE pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110539 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeCmps.cpp
c98af3370f899a0d1570b1dff01a2e36632f884f 08-Aug-2010 Bill Wendling <isanbard@gmail.com> Use the "isCompare" machine instruction attribute instead of calling the
relatively expensive comparison analyzer on each instruction. Also rename the
comparison analyzer method to something more in line with what it actually does.

This pass is will eventually be folded into the Machine CSE pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110539 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeCmps.cpp
596875c89e8e4fe4eb5ac6940f963c75a37eb00e 07-Aug-2010 Dan Gohman <gohman@apple.com> Tidy some #includes and forward-declarations, and move the C binding code
out of PassManager.cpp and into Core.cpp with the rest of the C binding code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110494 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.h
11112e0d7b1fb2741ed65a5085037918d1425916 07-Aug-2010 Dan Gohman <gohman@apple.com> Tidy some #includes and forward-declarations, and move the C binding code
out of PassManager.cpp and into Core.cpp with the rest of the C binding code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110494 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.h
729effdfba20fb5c1d08fe738d59c9decd9506ed 07-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Lazily defer duplicating the live interval we are splitting until we know it is
necessary.

Sometimes, live range splitting doesn't shrink the current interval, but simply
changes some instructions to use a new interval. That makes the original more
suitable for spilling. In this case, we don't need to duplicate the original.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110481 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
plitKit.h
5eb308b9448ee5b14fac26c0533eac481bc28471 07-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Lazily defer duplicating the live interval we are splitting until we know it is
necessary.

Sometimes, live range splitting doesn't shrink the current interval, but simply
changes some instructions to use a new interval. That makes the original more
suitable for spilling. In this case, we don't need to duplicate the original.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110481 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
plitKit.h
4d5b6ff9b74c2e1d60e5f0c5a3c3f998d42187eb 06-Aug-2010 Jim Grosbach <grosbach@apple.com> Cleanup comment wording

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110466 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
5b02901e91a155feca84d7383c1e569aacd1739e 06-Aug-2010 Jim Grosbach <grosbach@apple.com> Cleanup comment wording

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110466 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
46a0c81c5c6beb1abcd2dcd292bc4f3a1f0b629a 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep the MachiuneFunctionPass pointer around. It is useful for verification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110464 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
6d108e2cb59a3fe4d71bbde41416b55fc7c31d22 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep the MachiuneFunctionPass pointer around. It is useful for verification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110464 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
eb1ebd630d848981711f5b8b9e89eae2cb0f599f 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add LiveInterval::RenumberValues - Garbage collection for VNInfos.

After heavy editing of a live interval, it is much easier to simply renumber the
live values instead of trying to keep track of the unused ones.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110463 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
plitKit.cpp
23436597a8efad427059f2a6db5264e6a40d2dc7 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add LiveInterval::RenumberValues - Garbage collection for VNInfos.

After heavy editing of a live interval, it is much easier to simply renumber the
live values instead of trying to keep track of the unused ones.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110463 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
plitKit.cpp
7569322765651f19eea0609fb082e6b267d5d2b5 06-Aug-2010 Owen Anderson <resistor@mac.com> Reapply r110396, with fixes to appease the Linux buildbot gods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
odePlacementOpt.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
LFWriter.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
owerSubregs.cpp
achineCSE.cpp
achineDominators.cpp
achineFunctionAnalysis.cpp
achineFunctionPrinterPass.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineSink.cpp
achineVerifier.cpp
ptimizeCmps.cpp
ptimizeExts.cpp
ptimizePHIs.cpp
HIElimination.cpp
HIElimination.h
ostRASchedulerList.cpp
reAllocSplitting.cpp
rologEpilogInserter.h
egAllocFast.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
enderMachineFunction.h
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
jLjEHPrepare.cpp
plitter.h
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.h
90c579de5a383cee278acc3f7e7b9d0a656e6a35 06-Aug-2010 Owen Anderson <resistor@mac.com> Reapply r110396, with fixes to appease the Linux buildbot gods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
odePlacementOpt.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
LFWriter.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
owerSubregs.cpp
achineCSE.cpp
achineDominators.cpp
achineFunctionAnalysis.cpp
achineFunctionPrinterPass.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineSink.cpp
achineVerifier.cpp
ptimizeCmps.cpp
ptimizeExts.cpp
ptimizePHIs.cpp
HIElimination.cpp
HIElimination.h
ostRASchedulerList.cpp
reAllocSplitting.cpp
rologEpilogInserter.h
egAllocFast.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
enderMachineFunction.h
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
jLjEHPrepare.cpp
plitter.h
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.h
3a9349621f5085f96c6ecfb945c3ccdfb4b04c26 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add more verification of LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110454 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
58e1248dd2b3d76bbc78a9cb84cd022a35e83955 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add more verification of LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110454 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
9340e5a92d795173afb17df23240d28665b5cfe4 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix swapped COPY operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110453 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
b85f5388a969706f517723bcac94f7af4b2a1870 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix swapped COPY operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110453 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
d53f768299811e2ee83916689dce99c6ddf7c79b 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't try to verify LiveIntervals for physical registers.

When a physical register is in use, some alias of that register has a live
interval with a relevant live range. That is the sad state of intervals after
physreg coalescing of subregs, and it is good enough for correct register
allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110452 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
775aa22da28c0ded619308fa71a9be2b16bcd19b 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't try to verify LiveIntervals for physical registers.

When a physical register is in use, some alias of that register has a live
interval with a relevant live range. That is the sad state of intervals after
physreg coalescing of subregs, and it is good enough for correct register
allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110452 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
c63d6e1bd796f3cec5a046f0e00e0a509888d48e 06-Aug-2010 Ted Kremenek <kremenek@apple.com> Update CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110429 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
9040c2d91076c62c4ce299e418180af04eb013c3 06-Aug-2010 Ted Kremenek <kremenek@apple.com> Update CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110429 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
49fbac55a4aceae06fdfad7d5e24c513363c7cf8 06-Aug-2010 Bill Wendling <isanbard@gmail.com> Add the Optimize Compares pass (disabled by default).

This pass tries to remove comparison instructions when possible. For instance,
if you have this code:

sub r1, 1
cmp r1, 0
bz L1

and "sub" either sets the same flag as the "cmp" instruction or could be
converted to set the same flag, then we can eliminate the "cmp" instruction all
together. This is a important for ARM where the ALU instructions could set the
CPSR flag, but need a special suffix ('s') to do so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110423 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ptimizeCmps.cpp
e4ddbdfd3cf031034020671d03626f0373fbd5ca 06-Aug-2010 Bill Wendling <isanbard@gmail.com> Add the Optimize Compares pass (disabled by default).

This pass tries to remove comparison instructions when possible. For instance,
if you have this code:

sub r1, 1
cmp r1, 0
bz L1

and "sub" either sets the same flag as the "cmp" instruction or could be
converted to set the same flag, then we can eliminate the "cmp" instruction all
together. This is a important for ARM where the ALU instructions could set the
CPSR flag, but need a special suffix ('s') to do so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110423 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ptimizeCmps.cpp
dbe9a67894076f0dc046194b6ea7846eded11fb8 06-Aug-2010 Devang Patel <dpatel@apple.com> While emitting DBG_VALUE for registers spilled at the end of a block do not use location of MBB->end(). If a block does not have terminator then incoming iterator points to end().



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110411 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
31defcf2349916ac759be33baaa4060703fd78df 06-Aug-2010 Devang Patel <dpatel@apple.com> While emitting DBG_VALUE for registers spilled at the end of a block do not use location of MBB->end(). If a block does not have terminator then incoming iterator points to end().



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110411 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
619acdc63ab0a47d125dca0591285c8ac4c9ed20 06-Aug-2010 Owen Anderson <resistor@mac.com> Revert r110396 to fix buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
odePlacementOpt.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
LFWriter.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
owerSubregs.cpp
achineCSE.cpp
achineDominators.cpp
achineFunctionAnalysis.cpp
achineFunctionPrinterPass.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineSink.cpp
achineVerifier.cpp
ptimizeExts.cpp
ptimizePHIs.cpp
HIElimination.cpp
HIElimination.h
ostRASchedulerList.cpp
reAllocSplitting.cpp
rologEpilogInserter.h
egAllocFast.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
enderMachineFunction.h
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
jLjEHPrepare.cpp
plitter.h
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.h
1f74590e9d1b9cf0f1f81a156efea73f76546e05 06-Aug-2010 Owen Anderson <resistor@mac.com> Revert r110396 to fix buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
odePlacementOpt.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
LFWriter.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
owerSubregs.cpp
achineCSE.cpp
achineDominators.cpp
achineFunctionAnalysis.cpp
achineFunctionPrinterPass.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineSink.cpp
achineVerifier.cpp
ptimizeExts.cpp
ptimizePHIs.cpp
HIElimination.cpp
HIElimination.h
ostRASchedulerList.cpp
reAllocSplitting.cpp
rologEpilogInserter.h
egAllocFast.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
enderMachineFunction.h
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
jLjEHPrepare.cpp
plitter.h
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.h
40cf43d39190bcddefc8a8422b02b5a1e6e9d44c 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more aggressive about removing joined physreg copies.

When a joined COPY changes subreg liveness, we keep it around as a KILL,
otherwise it is safe to delete.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110403 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f67202c94d4eb2fab788196cab1ad138ea8e32cd 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more aggressive about removing joined physreg copies.

When a joined COPY changes subreg liveness, we keep it around as a KILL,
otherwise it is safe to delete.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110403 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
987f88fa7179f4d8f14a1526bba7017a7be6e2ec 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't verify LiveVariables if LiveIntervals is available.

LiveVariables becomes horribly wrong while the coalescer is running, but the
analysis is not zapped until after the coalescer pass has run. This causes tons
of false reports when calling verify form the coalescer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110402 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
c910c8d2fa6e73e8f9875e871a2f3a44574a0b01 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't verify LiveVariables if LiveIntervals is available.

LiveVariables becomes horribly wrong while the coalescer is running, but the
analysis is not zapped until after the coalescer pass has run. This causes tons
of false reports when calling verify form the coalescer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110402 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
0e63653ab0d25d579ad99948db606d8723d271dd 06-Aug-2010 Owen Anderson <resistor@mac.com> Don't use PassInfo* as a type identifier for passes. Instead, use the address of the static
ID member as the sole unique type identifier. Clean up APIs related to this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
odePlacementOpt.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
LFWriter.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
owerSubregs.cpp
achineCSE.cpp
achineDominators.cpp
achineFunctionAnalysis.cpp
achineFunctionPrinterPass.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineSink.cpp
achineVerifier.cpp
ptimizeExts.cpp
ptimizePHIs.cpp
HIElimination.cpp
HIElimination.h
ostRASchedulerList.cpp
reAllocSplitting.cpp
rologEpilogInserter.h
egAllocFast.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
enderMachineFunction.h
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
jLjEHPrepare.cpp
plitter.h
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.h
9ccaf53ada99c63737547c0235baeb8454b04e80 06-Aug-2010 Owen Anderson <resistor@mac.com> Don't use PassInfo* as a type identifier for passes. Instead, use the address of the static
ID member as the sole unique type identifier. Clean up APIs related to this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
odePlacementOpt.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
LFWriter.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
owerSubregs.cpp
achineCSE.cpp
achineDominators.cpp
achineFunctionAnalysis.cpp
achineFunctionPrinterPass.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineSink.cpp
achineVerifier.cpp
ptimizeExts.cpp
ptimizePHIs.cpp
HIElimination.cpp
HIElimination.h
ostRASchedulerList.cpp
reAllocSplitting.cpp
rologEpilogInserter.h
egAllocFast.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
enderMachineFunction.h
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
jLjEHPrepare.cpp
plitter.h
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.h
fe178c8344817e9a83d6e14190bd240b79c48fdf 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add basic verification of LiveIntervals.

We verify that the LiveInterval is live at uses and defs, and that all
instructions have a SlotIndex.

Stuff we don't check yet:

- Is the LiveInterval minimal?
- Do all defs correspond to instructions or phis?
- Do all defs dominate all their live ranges?
- Are all live ranges continually reachable from their def?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110386 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
1fe9c34d3f55399dee2c41617d8af4f09e5509e7 06-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add basic verification of LiveIntervals.

We verify that the LiveInterval is live at uses and defs, and that all
instructions have a SlotIndex.

Stuff we don't check yet:

- Is the LiveInterval minimal?
- Do all defs correspond to instructions or phis?
- Do all defs dominate all their live ranges?
- Are all live ranges continually reachable from their def?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110386 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
f1172bbd107d5b180d7986d2517af246c64c5139 05-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove double-def checking from MachineVerifier, so a register does not have to
be killed before being redefined.

These checks are usually disabled, and usually fail when enabled. We de facto
allow live registers to be redefined without a kill, the corresponding
assertions in RegScavenger were removed long ago.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110362 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineVerifier.cpp
73cf709a08d480c4315dc4aa9f644cf86494c4cf 05-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove double-def checking from MachineVerifier, so a register does not have to
be killed before being redefined.

These checks are usually disabled, and usually fail when enabled. We de facto
allow live registers to be redefined without a kill, the corresponding
assertions in RegScavenger were removed long ago.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110362 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineVerifier.cpp
b913342ada6aa8b5194d86a215754a3c565591e1 05-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid using a live std::multimap iterator while editing the map. It looks like
we sometimes compare singular iterators, reported by ENABLE_EXPENSIVE_CHECKS.
This fixes PR7825.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110355 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
a330d4c3ea4037a67e766f11d0010e681f3edf68 05-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid using a live std::multimap iterator while editing the map. It looks like
we sometimes compare singular iterators, reported by ENABLE_EXPENSIVE_CHECKS.
This fixes PR7825.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110355 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
77c87a2011f97e52139ebc624e9246ad9ae9b20b 05-Aug-2010 Bill Wendling <isanbard@gmail.com> The lower invoke pass needs to have unreachable code elimination run after it
because it could create such things. This fixes a MingW buildbot test failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110279 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
af33b7b4a775073585f2037bf4cb56f1cd87d13c 05-Aug-2010 Bill Wendling <isanbard@gmail.com> The lower invoke pass needs to have unreachable code elimination run after it
because it could create such things. This fixes a MingW buildbot test failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110279 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
de96d445aa98615e34adda7a81fdd76b4b96baca 05-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Coalesce stack slot accesses that arise when spilling both sides of a COPY.
This helps avoid silly code:

%R0<def = LOAD <fi#5>
STORE <fi#5>, %R0<kill>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110266 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
1a0f91b7c56fb49be0c5914333363320ac2a5f46 05-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Coalesce stack slot accesses that arise when spilling both sides of a COPY.
This helps avoid silly code:

%R0<def = LOAD <fi#5>
STORE <fi#5>, %R0<kill>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110266 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
50415c1915888b81c4dbbaba3626d1a07721e9d6 05-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Checkpoint SplitKit progress.

We are now at a point where we can split around simple single-entry, single-exit
loops, although still with some bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110257 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
plitKit.h
7536f72a97ad25c3652fdfe26d392fd78b6ea7b9 05-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Checkpoint SplitKit progress.

We are now at a point where we can split around simple single-entry, single-exit
loops, although still with some bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110257 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
plitKit.h
f9a52d20ebe925b21118b8fefb96da67a1a75d62 05-Aug-2010 Devang Patel <dpatel@apple.com> Use location entry only of the location described by DBG_VALUE is valid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110255 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5573a7da298e68db9e63307b766dd650f044287e 05-Aug-2010 Devang Patel <dpatel@apple.com> Use location entry only of the location described by DBG_VALUE is valid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110255 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
23ae32f0fe2c9dd5f3207db4214a50cff187f1d9 04-Aug-2010 Bill Wendling <isanbard@gmail.com> The EH prepare passes really want to be the last passes run before code-gen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110248 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
2464d618c0043b8dcd13170f145f5add7738aad3 04-Aug-2010 Bill Wendling <isanbard@gmail.com> The EH prepare passes really want to be the last passes run before code-gen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110248 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
0d6e3dfee9a157b597280a81773f9a5b39853502 04-Aug-2010 Devang Patel <dpatel@apple.com> Fix typo in comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110244 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a54e0cca4be62678687f943a085e3f64eed9eb2c 04-Aug-2010 Devang Patel <dpatel@apple.com> Fix typo in comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110244 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a3f4d8febfda9cdfaf0184f7faa86d5b9b4fb7f2 04-Aug-2010 Dan Gohman <gohman@apple.com> Change this llvm_unreachable to report_fatal_error, since it can
be triggered by valid, if dubious, IR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110240 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9f6a6862be09df9f1e90b0560e52da7d15935f24 04-Aug-2010 Dan Gohman <gohman@apple.com> Change this llvm_unreachable to report_fatal_error, since it can
be triggered by valid, if dubious, IR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110240 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5a649fd01ace42174f1eb1ef23d65d741e773408 04-Aug-2010 Devang Patel <dpatel@apple.com> While spilling live registers at the end of block check whether they are used by DBG_VALUE machine instructions or not. If a spilled register is used by DBG_VALUE machine instruction then insert a new DBG_VALUE machine instruction to encode variable's new location on stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110235 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
459a36bd34809ffc5d74de79b3e46f6e02e5184f 04-Aug-2010 Devang Patel <dpatel@apple.com> While spilling live registers at the end of block check whether they are used by DBG_VALUE machine instructions or not. If a spilled register is used by DBG_VALUE machine instruction then insert a new DBG_VALUE machine instruction to encode variable's new location on stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110235 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
3221d8addafdf734a26b83c84265e24497154b16 04-Aug-2010 Devang Patel <dpatel@apple.com> If a variable is spilled by code generator then use DW_OP_fbreg to describe its location on stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110234 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b2cf5816f9bada99ee9ba5cc1b56841142ebd706 04-Aug-2010 Devang Patel <dpatel@apple.com> If a variable is spilled by code generator then use DW_OP_fbreg to describe its location on stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110234 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4fdc101bb5a565923ebd4aef7732cdbc0a586988 04-Aug-2010 Dan Gohman <gohman@apple.com> Eliminate unnecessary empty string literals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110183 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
d98af0a5b86425fdc723bb54fc59247c585d63ab 04-Aug-2010 Dan Gohman <gohman@apple.com> Eliminate unnecessary empty string literals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110183 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
df2af2505d05004fee23c2213e4561e5e876a989 03-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Oops. Don't normalize spill weights twice.

When the normalizeSpillWeights function was introduced, I forgot to remove this
normalization.

This change could affect register allocation. Hopefully for the better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110119 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
bae696956b74680a7fedafb7fea70628d1ef14df 03-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Oops. Don't normalize spill weights twice.

When the normalizeSpillWeights function was introduced, I forgot to remove this
normalization.

This change could affect register allocation. Hopefully for the better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110119 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
34894dc705c805d7b40e01eaf80c7a2b50b7d792 03-Aug-2010 Bill Wendling <isanbard@gmail.com> Early exit and reduce indentation. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110069 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeExts.cpp
94e4008fbaa85600777b55605098bfd9cc3b9294 03-Aug-2010 Bill Wendling <isanbard@gmail.com> Early exit and reduce indentation. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110069 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeExts.cpp
bd1ee45bf443225f9e9363663e65dec981ec2c8a 02-Aug-2010 Devang Patel <dpatel@apple.com> Free DbgScope created for dead functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110045 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e9a1ccaf8036fbd46a350ddd3367e25b1fbc8d54 02-Aug-2010 Devang Patel <dpatel@apple.com> Free DbgScope created for dead functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110045 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3951b343e96b52f8707b65b40f1bbdcbcec17950 02-Aug-2010 Oscar Fuentes <ofv@wanadoo.es> Prefix `next' iterator operation with `llvm::'.

Fixes potential ambiguity problems on VS 2010.

Patch by nobled!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110029 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
achineInstr.cpp
electionDAG/SelectionDAG.cpp
ee56c42168f6c4271593f6018c4409b6a5910302 02-Aug-2010 Oscar Fuentes <ofv@wanadoo.es> Prefix `next' iterator operation with `llvm::'.

Fixes potential ambiguity problems on VS 2010.

Patch by nobled!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110029 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
achineInstr.cpp
electionDAG/SelectionDAG.cpp
06a2340b7fcd3f03b591e4e3c505b93b0661e2f6 02-Aug-2010 Eli Friedman <eli.friedman@gmail.com> PR7586: Make sure we don't claim that unknown bits are actually known in the
ISD::AND case of TargetLowering::SimplifyDemandedBits.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110019 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
1d17d199a4cd6190fdf82e35c42b617eaae2cd35 02-Aug-2010 Eli Friedman <eli.friedman@gmail.com> PR7586: Make sure we don't claim that unknown bits are actually known in the
ISD::AND case of TargetLowering::SimplifyDemandedBits.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110019 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
4b3eb330a0dfae55c07e0ded7a309d01d2e69285 01-Aug-2010 Bill Wendling <isanbard@gmail.com> Reference the personalities. Don't copy them into a new vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109966 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
57dba1cf53c87709cbb2839809f6cfa897fac047 01-Aug-2010 Bill Wendling <isanbard@gmail.com> Reference the personalities. Don't copy them into a new vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109966 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
fe1b227c1a71616281beb6dc6981caeafefe13b9 30-Jul-2010 Eli Friedman <eli.friedman@gmail.com> Fix for bug reported by Evzen Muller on llvm-commits: make sure to correctly
check the range of the constant when optimizing a comparison between a
constant and a sign_extend_inreg node.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109854 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
ad78a88711979aa84a89a32576b615ff13b3de15 30-Jul-2010 Eli Friedman <eli.friedman@gmail.com> Fix for bug reported by Evzen Muller on llvm-commits: make sure to correctly
check the range of the constant when optimizing a comparison between a
constant and a sign_extend_inreg node.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109854 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6b9e0db32aa329ee53c48dc04edef340e26b93a3 29-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Plug the remaining MC leaks by giving MCObjectStreamer/MCAsmStreamer ownership of the TargetAsmBackend and the MCCodeEmitter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109767 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
1abcd06856df324eac98d4bf5ba673fb77ae6a11 29-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Plug the remaining MC leaks by giving MCObjectStreamer/MCAsmStreamer ownership of the TargetAsmBackend and the MCCodeEmitter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109767 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
a1470c1187018157cab91c780931221f06d02271 29-Jul-2010 Dale Johannesen <dalej@apple.com> Comment typo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109765 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
c46a5f20c5ab9c497a91d3227d6368e92069cace 29-Jul-2010 Dale Johannesen <dalej@apple.com> Comment typo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109765 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
9e5c880f7a7683c578e0911cb39d1898ebae9157 29-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a bug in the -regalloc=fast handling of exotic two-address instruction with
multiple defs, like t2LDRSB_POST.

The first def could accidentally steal the physreg that the second, tied def was
required to be allocated to.

Now, the tied use-def is treated more like an early clobber, and the physreg is
reserved before allocating the other defs.

This would never be a problem when the tied def was the only def which is the
usual case.

This fixes MallocBench/gs for thumb2 -O0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109715 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
4bd94f7bbe2ed6e0d83d03b06c0d20bb346abeca 29-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a bug in the -regalloc=fast handling of exotic two-address instruction with
multiple defs, like t2LDRSB_POST.

The first def could accidentally steal the physreg that the second, tied def was
required to be allocated to.

Now, the tied use-def is treated more like an early clobber, and the physreg is
reserved before allocating the other defs.

This would never be a problem when the tied def was the only def which is the
usual case.

This fixes MallocBench/gs for thumb2 -O0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109715 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
6940dd54825f3884155612630a7967af8fccb05b 28-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out the regclass of any virtual registers used by a machine instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109608 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a0c5bf19bff7d06faa3e039a0638806c9e5a8ff6 28-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out the regclass of any virtual registers used by a machine instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109608 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
87ac40d70e260ffde8429a1b9b5c585ceda026b8 27-Jul-2010 Devang Patel <dpatel@apple.com> It is FE's responsibility to emit proper directory name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109538 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
37032350c8c95a3d742b75be101c11b32f4211d7 27-Jul-2010 Devang Patel <dpatel@apple.com> It is FE's responsibility to emit proper directory name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109538 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
144a9ad3897f8fa0d324a37a15957dcf76ef7a26 27-Jul-2010 Jim Grosbach <grosbach@apple.com> Grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109525 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
977fa34df8b54595ff64157d0f4e5a14921669e8 27-Jul-2010 Jim Grosbach <grosbach@apple.com> Grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109525 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
c5725d531800584aed0490f8654dd7dfd8b91203 27-Jul-2010 Nate Begeman <natebegeman@mac.com> Fix a crash in the dag combiner caused by ConstantFoldBIT_CONVERTofBUILD_VECTOR calling itself
recursively and returning a SCALAR_TO_VECTOR node, but assuming the input was always a BUILD_VECTOR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109519 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e0efc216eb94f8f92b85cb4f1af2da9ce2a583fc 27-Jul-2010 Nate Begeman <natebegeman@mac.com> Fix a crash in the dag combiner caused by ConstantFoldBIT_CONVERTofBUILD_VECTOR calling itself
recursively and returning a SCALAR_TO_VECTOR node, but assuming the input was always a BUILD_VECTOR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109519 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
897202574a0e6d55be8ba0a06c4f3ef440de551a 27-Jul-2010 Jim Grosbach <grosbach@apple.com> 80 column

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109513 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
57cb4f8be1b6dcac5e504d82c8b2a911909f2deb 27-Jul-2010 Jim Grosbach <grosbach@apple.com> 80 column

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109513 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
0efad29282fd9bf0e6200c4074fdcdeb3251e5ec 27-Jul-2010 Jim Grosbach <grosbach@apple.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109511 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
ae64eedae2531b8c0cbd2d8a415cffa3cd33cb13 27-Jul-2010 Jim Grosbach <grosbach@apple.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109511 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
73570ad9fa08fa18eb3fcf5d0f673236d20f0429 27-Jul-2010 Bill Wendling <isanbard@gmail.com> It's better to have the arrays, which would trigger the creation of stack
protectors, to be near the stack protectors on the stack. Accomplish this by
tagging the stack object with a predicate that indicates that it would trigger
this. In the prolog-epilog inserter, assign these objects to the stack after the
stack protector but before the other objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109481 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
electionDAG/FunctionLoweringInfo.cpp
dfc2c51d12fd53822279b6e564cdd5cef5c00b46 27-Jul-2010 Bill Wendling <isanbard@gmail.com> It's better to have the arrays, which would trigger the creation of stack
protectors, to be near the stack protectors on the stack. Accomplish this by
tagging the stack object with a predicate that indicates that it would trigger
this. In the prolog-epilog inserter, assign these objects to the stack after the
stack protector but before the other objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109481 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
electionDAG/FunctionLoweringInfo.cpp
ca2b7205e07ebc10ce4f60f9bd02706756bdab0a 27-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SplitEditor to SplitKit. This class will be used to edit live intervals and
rewrite instructions for live range splitting.

Still work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109469 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
plitKit.h
irtRegMap.h
f0179004e94259a8adab6c48f295ea9ab18af4c3 27-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SplitEditor to SplitKit. This class will be used to edit live intervals and
rewrite instructions for live range splitting.

Still work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109469 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
plitKit.cpp
plitKit.h
irtRegMap.h
8894ef746827f0205c8a6a520cd1cdcbf43fef3a 27-Jul-2010 Dan Gohman <gohman@apple.com> Fix a use-after-free.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109468 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
3eca15bdb5823d0f9ff5059a179a1759fee1a185 27-Jul-2010 Dan Gohman <gohman@apple.com> Fix a use-after-free.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109468 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
7f9bb1d223d6ab9f65f6b620e0e5329eef75ba6c 27-Jul-2010 Bill Wendling <isanbard@gmail.com> Using llvm.eh.catch.all.value instead of .llvm.eh.catch.all.value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109462 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
warfEHPrepare.cpp
23295cc1dd6dd42b999588f6de85cb52c9651165 27-Jul-2010 Bill Wendling <isanbard@gmail.com> Using llvm.eh.catch.all.value instead of .llvm.eh.catch.all.value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109462 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
warfEHPrepare.cpp
812c8b97ff7a87b99a59c6e23e7479ddba833999 26-Jul-2010 Evan Cheng <evan.cheng@apple.com> The "excess register pressure" returned by HighRegPressure() is not accurate enough to factor into scheduling priority. Eliminate it and add early exits to speed up scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109449 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
e0e925efb31ca98c78e53bf52db8529388a0390a 26-Jul-2010 Evan Cheng <evan.cheng@apple.com> The "excess register pressure" returned by HighRegPressure() is not accurate enough to factor into scheduling priority. Eliminate it and add early exits to speed up scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109449 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
99b93bd70c479f518a0b969a619824eeb7d718f0 26-Jul-2010 Dan Gohman <gohman@apple.com> Handle Values with no value in getCopyFromRegs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7da5d3fc657bf434a245d11ad91f22feb86296c5 26-Jul-2010 Dan Gohman <gohman@apple.com> Handle Values with no value in getCopyFromRegs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
33a417941c660c655b7327387297f59d8c0e841a 26-Jul-2010 Dan Gohman <gohman@apple.com> A block dominates itself, by definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109402 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ce0fe5da0d69dfd332084b9f2c159c8f06f534e0 26-Jul-2010 Dan Gohman <gohman@apple.com> A block dominates itself, by definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109402 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
dcdaddd04e3b806806b8ab9f042d291eb54264e3 26-Jul-2010 Duncan Sands <baldrick@free.fr> Pacify gcc-4.5 which wrongly thinks that RExcess (passed as the Excess parameter)
may be used uninitialized in the callers of HighRegPressure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109393 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
b3893b193b294c4dfd37e101e9d796568b28d461 26-Jul-2010 Duncan Sands <baldrick@free.fr> Pacify gcc-4.5 which wrongly thinks that RExcess (passed as the Excess parameter)
may be used uninitialized in the callers of HighRegPressure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109393 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
368ea11899c74ed22800690410dff9cd90e92427 26-Jul-2010 Lang Hames <lhames@gmail.com> Factored out a bit of common code to mark VNInfos for deletion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109388 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
6f4e4df1005e67917ebfcf66c8ea5bad5f587155 26-Jul-2010 Lang Hames <lhames@gmail.com> Factored out a bit of common code to mark VNInfos for deletion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109388 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
b42df31c2d72b3cfe7f04fad4aa3f57790272b95 25-Jul-2010 Evan Cheng <evan.cheng@apple.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
e28ed16d2507633893269670d289006f3e0b351e 25-Jul-2010 Evan Cheng <evan.cheng@apple.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
2211e5212d5cda6ef616d6afabb662dfec6f27a4 25-Jul-2010 Bob Wilson <bob.wilson@apple.com> Fix crashes when scheduling a CopyToReg node -- getMachineOpcode asserts on
those. Radar 8231572.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109367 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3f92f73970862c1926b4c70fe097c979de5f02d0 25-Jul-2010 Bob Wilson <bob.wilson@apple.com> Fix crashes when scheduling a CopyToReg node -- getMachineOpcode asserts on
those. Radar 8231572.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109367 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3de7500eba1846790f95f6e0b7a20b503d94f25a 24-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Add hook to insert late LLVM=>LLVM passes just before isel

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109354 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
8c64b9766e654079339ea7f3a2da152f18d00179 24-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Add hook to insert late LLVM=>LLVM passes just before isel

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109354 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
bb84fece36a6b5e1e9dfaeacbb91378d5ff75f4e 24-Jul-2010 Bob Wilson <bob.wilson@apple.com> Change ScheduleDAGInstrs::Defs and ::Uses to be variable-size vectors
instead of fixed size arrays, so that increasing FirstVirtualRegister to 16K
won't cause a compile time performance regression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109330 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
f28dd8861190df4926cdc66201a39a6af950d564 24-Jul-2010 Bob Wilson <bob.wilson@apple.com> Change ScheduleDAGInstrs::Defs and ::Uses to be variable-size vectors
instead of fixed size arrays, so that increasing FirstVirtualRegister to 16K
won't cause a compile time performance regression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109330 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
6c8121125d1d2f5a37b9f19b1d17652f4e29c497 24-Jul-2010 Devang Patel <dpatel@apple.com> Use current working directory when Dirname is empty. This only happens when absolute source file path is used on compiler command line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109302 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2f58485fc87143bb97e3d88dde9ab2d28211cd28 24-Jul-2010 Devang Patel <dpatel@apple.com> Use current working directory when Dirname is empty. This only happens when absolute source file path is used on compiler command line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109302 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8b3d5e935ad184f81e8bb63cfa02440b55105ecf 24-Jul-2010 Evan Cheng <evan.cheng@apple.com> Add an ILP scheduler. This is a register pressure aware scheduler that's
appropriate for targets without detailed instruction iterineries.
The scheduler schedules for increased instruction level parallelism in
low register pressure situation; it schedules to reduce register pressure
when the register pressure becomes high.

On x86_64, this is a win for all tests in CFP2000. It also sped up 256.bzip2
by 16%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
70017e44cdba1946cc478ce1856a3e855a767e28 24-Jul-2010 Evan Cheng <evan.cheng@apple.com> Add an ILP scheduler. This is a register pressure aware scheduler that's
appropriate for targets without detailed instruction iterineries.
The scheduler schedules for increased instruction level parallelism in
low register pressure situation; it schedules to reduce register pressure
when the register pressure becomes high.

On x86_64, this is a win for all tests in CFP2000. It also sped up 256.bzip2
by 16%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
8a170eb3c2d87bf912e853234585680b4d619db4 24-Jul-2010 Jim Grosbach <grosbach@apple.com> Remove too-strict assertion. We may want the vreg copy of the physical register
to be of a different register class. For example, in Thumb1 if the live-in is
a high register, we want the vreg to be a low register. rdar://8224931

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109291 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
734738d3bdbb98454a4c517252ef694cd95f4cb6 24-Jul-2010 Jim Grosbach <grosbach@apple.com> Remove too-strict assertion. We may want the vreg copy of the physical register
to be of a different register class. For example, in Thumb1 if the live-in is
a high register, we want the vreg to be a low register. rdar://8224931

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109291 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
fa751bc8046754e15dadeea0fac1e6a69262f47c 24-Jul-2010 Devang Patel <dpatel@apple.com> Revert r109262.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109285 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5f2f69b6481cab766723edc74825eaa1143f4f62 24-Jul-2010 Devang Patel <dpatel@apple.com> Revert r109262.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109285 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
922a4d36f7218b00baed5994960e79f7e977ec56 24-Jul-2010 Evan Cheng <evan.cheng@apple.com> - Allow target to specify when is register pressure "too high". In most cases,
it's too late to start backing off aggressive latency scheduling when most
of the registers are in use so the threshold should be a bit tighter.
- Correctly handle live out's and extract_subreg etc.
- Enable register pressure aware scheduling by default for hybrid scheduler.
For ARM, this is almost always a win on # of instructions. It's runtime
neutral for most of the tests. But for some kernels with high register
pressure it can be a huge win. e.g. 464.h264ref reduced number of spills by
54 and sped up by 20%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3144687df78731ac4ddbc716a24b951678a73f57 24-Jul-2010 Evan Cheng <evan.cheng@apple.com> - Allow target to specify when is register pressure "too high". In most cases,
it's too late to start backing off aggressive latency scheduling when most
of the registers are in use so the threshold should be a bit tighter.
- Correctly handle live out's and extract_subreg etc.
- Enable register pressure aware scheduling by default for hybrid scheduler.
For ARM, this is almost always a win on # of instructions. It's runtime
neutral for most of the tests. But for some kernels with high register
pressure it can be a huge win. e.g. 464.h264ref reduced number of spills by
54 and sped up by 20%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
c034f4c7c0d71d45d583f03845862c9254ed094b 23-Jul-2010 Dan Gohman <gohman@apple.com> Use the proper type for shift counts. This fixes a bootstrap error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109265 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
cd20c6fb18230f399fc99276fbdee14ce9faf6a1 23-Jul-2010 Dan Gohman <gohman@apple.com> Use the proper type for shift counts. This fixes a bootstrap error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109265 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
0f862800821352ea9a12ebb6bc30b145d9ae6596 23-Jul-2010 Devang Patel <dpatel@apple.com> IF directory name is empty then try to extract one using absolute file name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109262 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f83f42599d1242cc498b8062bb514b357aa572ce 23-Jul-2010 Devang Patel <dpatel@apple.com> IF directory name is empty then try to extract one using absolute file name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109262 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ee105e255c7e8f3ee27bcc9a089761f9c4518caa 23-Jul-2010 Dan Gohman <gohman@apple.com> DAGCombine (shl (anyext x, c)) to (anyext (shl x, c)) if the high bits
are not demanded. This often allows the anyext to be folded away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109242 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
a4f4d699ec627e798357929295aecd3d55b8d703 23-Jul-2010 Dan Gohman <gohman@apple.com> DAGCombine (shl (anyext x, c)) to (anyext (shl x, c)) if the high bits
are not demanded. This often allows the anyext to be folded away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109242 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6c2ecad2a59424d0aaeea21de48181d007f9ba37 23-Jul-2010 Dan Gohman <gohman@apple.com> Make SDNode::dump() print a newline at the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109234 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7c98283f0ef74a5663c4c4a0938a344b204336fd 23-Jul-2010 Dan Gohman <gohman@apple.com> Make SDNode::dump() print a newline at the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109234 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
570139c4551620ce2a666aeea8af04434168b70c 23-Jul-2010 Eric Christopher <echristo@apple.com> 80-col.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109205 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
54e1791e4ba30867bda603acadda77fa85de6aa1 23-Jul-2010 Eric Christopher <echristo@apple.com> 80-col.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109205 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
e9576566c90aca1da8c527fcc1656d3068841c10 22-Jul-2010 Chris Lattner <sabre@nondot.org> remove the JIT "NeedsExactSize" feature and supporting logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109167 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
134d8eec8789184c7a7290ee101ca3d6f62f384a 22-Jul-2010 Chris Lattner <sabre@nondot.org> remove the JIT "NeedsExactSize" feature and supporting logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109167 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
bbc54b614225d792d47d5d1dc1aa6767f4657f25 22-Jul-2010 Gabor Greif <ggreif@gmail.com> keep in 80 cols

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
481c4c07347c40fa666d09f3b31fbe2ca27e2d52 22-Jul-2010 Gabor Greif <ggreif@gmail.com> keep in 80 cols

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e035519df392f87833b9f18e113129f55d90a7b7 22-Jul-2010 Gabor Greif <ggreif@gmail.com> mass elimination of reliance on automatic iterator dereferencing

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109103 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
96f1d8ebdd33b3f9bdb3b1163f36072c68599f42 22-Jul-2010 Gabor Greif <ggreif@gmail.com> mass elimination of reliance on automatic iterator dereferencing

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109103 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
af08dfbc409d39bdcb04522161c650c4e26dd060 22-Jul-2010 Gabor Greif <ggreif@gmail.com> undo 80 column trespassing I caused

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109092 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
ntrinsicLowering.cpp
a399781289092fcdceb58b21174229f4373c4191 22-Jul-2010 Gabor Greif <ggreif@gmail.com> undo 80 column trespassing I caused

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109092 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
ntrinsicLowering.cpp
8765b940b160e86c9d88fadbdef1a4dd8ad98df8 22-Jul-2010 Evan Cheng <evan.cheng@apple.com> Re-apply r109079 with fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109083 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
89ba74d117577f5a1bd62ee209dc2ecb090172e3 22-Jul-2010 Evan Cheng <evan.cheng@apple.com> Re-apply r109079 with fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109083 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
296ec6461ef65312e8384445d96e4857522102b8 22-Jul-2010 Owen Anderson <resistor@mac.com> Revert r109079, which broke a lot of CodeGen tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109082 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
8b9177aee2671568182e1688e1c53f2459038e46 22-Jul-2010 Owen Anderson <resistor@mac.com> Revert r109079, which broke a lot of CodeGen tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109082 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
314fffa77ab2916603cc95112ec9829c0b742f8e 22-Jul-2010 Reid Kleckner <reid@kleckner.net> Initial modifications to MCAssembler and TargetMachine for the MCJIT.

Patch by Olivier Meurant!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109080 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
c96a82a53415fd0b6cb1bbea2593dc18683c70cc 22-Jul-2010 Reid Kleckner <reid@kleckner.net> Initial modifications to MCAssembler and TargetMachine for the MCJIT.

Patch by Olivier Meurant!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109080 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
9588e0ee6727eb09bddb7cbf4bd394dbc5ac2379 22-Jul-2010 Evan Cheng <evan.cheng@apple.com> Initialize RegLimit only when register pressure is being tracked.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109079 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
a4081238aa51eb16a46a2da78438ff476798f34d 22-Jul-2010 Evan Cheng <evan.cheng@apple.com> Initialize RegLimit only when register pressure is being tracked.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109079 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
2408253b0680ef77feed50de7e6743881ccfef6e 22-Jul-2010 Evan Cheng <evan.cheng@apple.com> More register pressure aware scheduling work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109064 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
4a863e2c75145432fd660ee65e61b578c5e90ac9 22-Jul-2010 Evan Cheng <evan.cheng@apple.com> More register pressure aware scheduling work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109064 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
30ea00a73f82df33ce1a38628fbff1b56a778f4c 22-Jul-2010 Jim Grosbach <grosbach@apple.com> For ARM/Darwin, add a dwarf entry indicating whether a function is arm or thumb
rdar://8202967

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109057 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
917290043f87b8efa6ba540bec5963013c517912 22-Jul-2010 Jim Grosbach <grosbach@apple.com> For ARM/Darwin, add a dwarf entry indicating whether a function is arm or thumb
rdar://8202967

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109057 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6374c3d4d7b1fece8ed9acb590f809a0e6fb17ee 22-Jul-2010 Owen Anderson <resistor@mac.com> Fix batch of converting RegisterPass<> to INTIALIZE_PASS().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109045 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
eadMachineInstructionElim.cpp
CMetadata.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
iveVariables.cpp
achineCSE.cpp
achineLICM.cpp
achineModuleInfo.cpp
achineSink.cpp
ptimizeExts.cpp
ptimizePHIs.cpp
rocessImplicitDefs.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
enderMachineFunction.cpp
lotIndexes.cpp
plitter.cpp
tackProtector.cpp
tackSlotColoring.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
d13db2c59cc94162d6cf0a04187d408bfef6d4a7 22-Jul-2010 Owen Anderson <resistor@mac.com> Fix batch of converting RegisterPass<> to INTIALIZE_PASS().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109045 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
eadMachineInstructionElim.cpp
CMetadata.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
iveVariables.cpp
achineCSE.cpp
achineLICM.cpp
achineModuleInfo.cpp
achineSink.cpp
ptimizeExts.cpp
ptimizePHIs.cpp
rocessImplicitDefs.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
enderMachineFunction.cpp
lotIndexes.cpp
plitter.cpp
tackProtector.cpp
tackSlotColoring.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
94aec127ded8dbc56fa82f454dbe8c167751d022 21-Jul-2010 Jim Grosbach <grosbach@apple.com> 80 column and trailing whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109037 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1e20b963131dc205dc219a17baeda2b3e27c2b66 21-Jul-2010 Jim Grosbach <grosbach@apple.com> 80 column and trailing whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109037 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
94e59a01f9c8930c75906988d293b93d01d1c59b 21-Jul-2010 Dan Gohman <gohman@apple.com> Disallow null as a named metadata operand.
Make MDNode::destroy private.
Fix the one thing that used MDNode::destroy, outside of MDNode itself.

One should never delete or destroy an MDNode explicitly. MDNodes
implicitly go away when there are no references to them (implementation
details aside).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109028 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
872814ae048df032bddf9299c850f5bda08299a9 21-Jul-2010 Dan Gohman <gohman@apple.com> Disallow null as a named metadata operand.
Make MDNode::destroy private.
Fix the one thing that used MDNode::destroy, outside of MDNode itself.

One should never delete or destroy an MDNode explicitly. MDNodes
implicitly go away when there are no references to them (implementation
details aside).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109028 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
80ad6e82618d61d1618d3ea819bf547c57c6243c 21-Jul-2010 Lang Hames <lhames@gmail.com> Changed OStream templates to functions on raw_ostream, removed the unused "renderWarnings" function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109003 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
enderMachineFunction.h
5a8ea65c5c72ee35c83f611a985d81efb8a4626e 21-Jul-2010 Lang Hames <lhames@gmail.com> Changed OStream templates to functions on raw_ostream, removed the unused "renderWarnings" function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109003 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
enderMachineFunction.h
83bd3e6df5274f42bbae9f5f611b373ac61c945c 21-Jul-2010 Evan Cheng <evan.cheng@apple.com> Teach bottom up pre-ra scheduler to track register pressure. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108991 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/TargetLowering.cpp
4f6b4674be5473319ac5e70c76fd5cb964da2128 21-Jul-2010 Evan Cheng <evan.cheng@apple.com> Teach bottom up pre-ra scheduler to track register pressure. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108991 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/TargetLowering.cpp
1c2a730810e1039c1fcce2386a3e924a5efaddad 21-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Change the createSpiller interface to take a MachineFunctionPass argument.

The spillers can pluck the analyses they need from the pass reference.

Switch some never-null pointers to references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108969 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocLinearScan.cpp
piller.cpp
piller.h
plitKit.cpp
plitKit.h
f2c6e367c1c0d8797e62e58a3ccdb8cceee27987 21-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Change the createSpiller interface to take a MachineFunctionPass argument.

The spillers can pluck the analyses they need from the pass reference.

Switch some never-null pointers to references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108969 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocLinearScan.cpp
piller.cpp
piller.h
plitKit.cpp
plitKit.h
7d2657f05a17755385f752a0c9dbd1d7d2b0e67d 20-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement loop splitting analysis.
Determine which loop exit blocks need a 'pre-exit' block inserted.
Recognize when this would be impossible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108941 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
6a0dc079efe7acf7e71cc4c0948fe814f35ba091 20-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement loop splitting analysis.
Determine which loop exit blocks need a 'pre-exit' block inserted.
Recognize when this would be impossible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108941 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
9d89738c258667352677d5058072d4eae73cf2ef 20-Jul-2010 Dale Johannesen <dalej@apple.com> Fix test for switch statements and increase
threshold a bit per experimentation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108935 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
21d35c1399cbf353abfad82fc47c919ffbe7abc6 20-Jul-2010 Dale Johannesen <dalej@apple.com> Fix test for switch statements and increase
threshold a bit per experimentation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108935 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
9a737a56093478a3fa86a6a0811fe6a8e6606efc 20-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Appease the colonials.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108845 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
abff28087fd6be8150ff0e69def7de7312b2f76b 20-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Appease the colonials.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108845 91177308-0d34-0410-b5e6-96231b3b80d8
plitKit.cpp
plitKit.h
20d56d957f5b3c3ae4ea6316b6eef8b5df2daebb 20-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Beginning SplitKit - utility classes for live range splitting.

This is a work in progress. So far we have some basic loop analysis to help
determine where it is useful to split a live range around a loop.

The actual loop splitting code from Splitter.cpp is also going to move in here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108842 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
nlineSpiller.cpp
plitKit.cpp
plitKit.h
8ae0263471cc29c5f8278ee1ea5b678042ec6dce 20-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Beginning SplitKit - utility classes for live range splitting.

This is a work in progress. So far we have some basic loop analysis to help
determine where it is useful to split a live range around a loop.

The actual loop splitting code from Splitter.cpp is also going to move in here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108842 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
nlineSpiller.cpp
plitKit.cpp
plitKit.h
bd9ad5fefa591e672511f173b28d35ef2e7d1d82 20-Jul-2010 Lang Hames <lhames@gmail.com> Updated css classes for the pressure table legend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108839 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
6089e464dd9fe581ba03563e06e2c315dde05968 20-Jul-2010 Lang Hames <lhames@gmail.com> Updated css classes for the pressure table legend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108839 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
d974ba3ec3c132eb574e890f7f0c49f4cbb4fe3d 20-Jul-2010 Lang Hames <lhames@gmail.com> Oops - I tables render poorly in Chrome without this explicit height specification.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108824 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
2725abd039d7b0189ebe2096ce4fd25794c5cc84 20-Jul-2010 Lang Hames <lhames@gmail.com> Oops - I tables render poorly in Chrome without this explicit height specification.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108824 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
8598a6ba4e6d974c7be1d0f993031b8713da6184 20-Jul-2010 Lang Hames <lhames@gmail.com> Use run-length encoding to represent identical adjacent cells in the pressure
and interval table. Reduces output HTML file sizes by ~80% in my test cases.

Also fix access of private member type by << operator.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108823 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
enderMachineFunction.h
f80f31eb9fd8ffa446310803e9d1da16e1c81c19 20-Jul-2010 Lang Hames <lhames@gmail.com> Use run-length encoding to represent identical adjacent cells in the pressure
and interval table. Reduces output HTML file sizes by ~80% in my test cases.

Also fix access of private member type by << operator.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108823 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
enderMachineFunction.h
5ec4614a0b90235bbd7588602507dfae0bff53e0 20-Jul-2010 Lang Hames <lhames@gmail.com> Added support for turning HTML indentation on and off (indentation off by default).

Reduces output file size ~20% on my test cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108822 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
enderMachineFunction.h
245581b1aca7c4af512772fcef4bde5fb1ad7e84 20-Jul-2010 Lang Hames <lhames@gmail.com> Added support for turning HTML indentation on and off (indentation off by default).

Reduces output file size ~20% on my test cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108822 91177308-0d34-0410-b5e6-96231b3b80d8
enderMachineFunction.cpp
enderMachineFunction.h
4e5aa5a7b1adb0f34df7cfc38c513473d4f7d1aa 20-Jul-2010 Lang Hames <lhames@gmail.com> Switched to rendering after allocation (but before rewriting) in PBQP.

Updated renderer to use allocation information from VirtRegMap (if
available) to render spilled intervals differently.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108815 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
enderMachineFunction.cpp
enderMachineFunction.h
c4bcc778a8dcc385b129852c9aa1c712d042ad63 20-Jul-2010 Lang Hames <lhames@gmail.com> Switched to rendering after allocation (but before rewriting) in PBQP.

Updated renderer to use allocation information from VirtRegMap (if
available) to render spilled intervals differently.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108815 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
enderMachineFunction.cpp
enderMachineFunction.h
f527e4a7083f385f5f6b14ef55b7f01d17618cc4 20-Jul-2010 Dale Johannesen <dalej@apple.com> Don't hoist things out of a large switch inside a
loop, for the reasons in the comments. This is a
major win on 253.perlbmk on ARM Darwin. I expect it
to be a good heuristic in general, but it's possible
some things will regress; I'll be watching.
7940152.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108792 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
bf1ae5e254f8f6f6f3dfe9438d14bef9b955f01f 20-Jul-2010 Dale Johannesen <dalej@apple.com> Don't hoist things out of a large switch inside a
loop, for the reasons in the comments. This is a
major win on 253.perlbmk on ARM Darwin. I expect it
to be a good heuristic in general, but it's possible
some things will regress; I'll be watching.
7940152.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108792 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
45b08d3d2b9adb3282f16e0969f78aa6f20d0038 20-Jul-2010 Stuart Hastings <stuart@apple.com> Correct line info for declarations/definitions. Radar 8063111.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108784 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0db42710693badaab808ccf8bcd265144ce8493d 20-Jul-2010 Stuart Hastings <stuart@apple.com> Correct line info for declarations/definitions. Radar 8063111.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108784 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e29098d3fe7ae7599c1a0087625ce2e1de6aba9f 20-Jul-2010 Devang Patel <dpatel@apple.com> Fix memory leak reported by valgrind.
Do not visit operands of old instruction. Visit all operands of new instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108767 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
58b8176ed39038240984c0966fef847fe37c86c1 20-Jul-2010 Devang Patel <dpatel@apple.com> Fix memory leak reported by valgrind.
Do not visit operands of old instruction. Visit all operands of new instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108767 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
e7b4dec881fced628644b65eb90b9ff72dfc1fee 20-Jul-2010 Dan Gohman <gohman@apple.com> After a custom inserter, in a block which has constant instructions,
update the current basic block in addition to the current insert
position, so that they remain consistent. This fixes rdar://8204072.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108765 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c6e59b71f50c7c77bc448a936dba8e84d90911e8 20-Jul-2010 Dan Gohman <gohman@apple.com> After a custom inserter, in a block which has constant instructions,
update the current basic block in addition to the current insert
position, so that they remain consistent. This fixes rdar://8204072.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108765 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
fe8ff14a3de380455d0aca6de3893bc40b170cdc 20-Jul-2010 Evan Cheng <evan.cheng@apple.com> ARM has to provide its own TargetLowering::findRepresentativeClass because its scalar floating point registers alias its vector registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108761 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d70f57b254114841892425a40944268d38ae0bcd 20-Jul-2010 Evan Cheng <evan.cheng@apple.com> ARM has to provide its own TargetLowering::findRepresentativeClass because its scalar floating point registers alias its vector registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108761 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
2e3c153a446ce1c1c9b8abbcf9865688760661df 19-Jul-2010 Evan Cheng <evan.cheng@apple.com> Teach computeRegisterProperties() to compute "representative" register class for legal value types. A "representative" register class is the largest legal super-reg register class for a value type. e.g. On i386, GR32 is the rep register class for i8 / i16 / i32; on x86_64 it would be GR64.

This property will be used by the register pressure tracking instruction scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108735 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
46dcb57e18884099ca6ad2aebb81fd7e1513c1f6 19-Jul-2010 Evan Cheng <evan.cheng@apple.com> Teach computeRegisterProperties() to compute "representative" register class for legal value types. A "representative" register class is the largest legal super-reg register class for a value type. e.g. On i386, GR32 is the rep register class for i8 / i16 / i32; on x86_64 it would be GR64.

This property will be used by the register pressure tracking instruction scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108735 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e8e44e77afab78b324fd9cd504042d9a02eb6129 19-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Spillers may alter MachineLoopInfo when breaking critical edges, so make it
non-const.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108734 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocLinearScan.cpp
piller.cpp
piller.h
9529a1c3dd9946c1e63075f4bf146a731769ebe2 19-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Spillers may alter MachineLoopInfo when breaking critical edges, so make it
non-const.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108734 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
egAllocLinearScan.cpp
piller.cpp
piller.h
99fbafe915c76d239fbfe568efd58c5237503097 19-Jul-2010 Devang Patel <dpatel@apple.com> Fix PR 7662.
Do not try to insert local variable info to a DIE used for function declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108731 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8b3a6b651e267e5e6e68a3bd0aabd8ee90eb1aac 19-Jul-2010 Devang Patel <dpatel@apple.com> Fix PR 7662.
Do not try to insert local variable info to a DIE used for function declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108731 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e2a22361688856ccb802f8a55b6be9907c146c5b 19-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Update CMake build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108700 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
5907f4c385d6c6f89958a76f6f01fed1b58d8168 19-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Update CMake build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108700 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
22348e3cedb6475985983a3f306eff88821422e7 19-Jul-2010 Lang Hames <lhames@gmail.com> Render MachineFunctions to HTML pages, with options to render register
pressure estimates and liveness alongside.

Still experimental.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108698 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
enderMachineFunction.cpp
enderMachineFunction.h
54cc2efb4e6ba3022ec297746b14a129d97fc07b 19-Jul-2010 Lang Hames <lhames@gmail.com> Render MachineFunctions to HTML pages, with options to render register
pressure estimates and liveness alongside.

Still experimental.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108698 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
enderMachineFunction.cpp
enderMachineFunction.h
af16006b85c9e35af0b8352bfcfd5c12efae7012 19-Jul-2010 Owen Anderson <resistor@mac.com> Remove r108639 now that it is handled by InstCombine instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108688 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
54026c0f1b10fc6335f2a090c12627e5f7126641 19-Jul-2010 Owen Anderson <resistor@mac.com> Remove r108639 now that it is handled by InstCombine instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108688 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a3692dad3ef77c2a5e846f2324927e3ee0afee78 19-Jul-2010 Daniel Dunbar <daniel@zuster.org> Target: Give the TargetAsmParser access to the TargetMachine.
- Unfortunate, but necessary for now to handle subtarget instruction matching. Eventually we should factor out the lower level target machine information so we don't need to do this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108664 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
d73ada7d24832bc2a4c3965b8f00ffd951341acf 19-Jul-2010 Daniel Dunbar <daniel@zuster.org> Target: Give the TargetAsmParser access to the TargetMachine.
- Unfortunate, but necessary for now to handle subtarget instruction matching. Eventually we should factor out the lower level target machine information so we don't need to do this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108664 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
dd7297238f1bcc0edcde64c64a3bb7465aa2f194 18-Jul-2010 Daniel Dunbar <daniel@zuster.org> MC: Move several clients to using AsmParser constructor function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108645 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
9fbb37e10d3b2814877bb8d2893d863fe1da660b 18-Jul-2010 Daniel Dunbar <daniel@zuster.org> MC: Move several clients to using AsmParser constructor function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108645 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
4b1567dc90b900be2c07a860c45169a501a08e9c 18-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Fix struct/class mismatch

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108642 91177308-0d34-0410-b5e6-96231b3b80d8
plitter.h
806de357a512471d34170b7e84e57a1f0d0a0552 18-Jul-2010 Douglas Gregor <dgregor@apple.com> Fix struct/class mismatch

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108642 91177308-0d34-0410-b5e6-96231b3b80d8
plitter.h
25f2c7e1200a14b245b9daafc4318d08a82903d8 18-Jul-2010 Owen Anderson <resistor@mac.com> Add a DAGCombine xform to fold away redundant float->double->float conversions around sqrt instructions.
I am assured by people more knowledgeable than me that there are no rounding issues in eliminating this.

This fixed <rdar://problem/8197504>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108639 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3ecdfafe3b06844ab0412b48f6daedf3e13e7037 18-Jul-2010 Owen Anderson <resistor@mac.com> Add a DAGCombine xform to fold away redundant float->double->float conversions around sqrt instructions.
I am assured by people more knowledgeable than me that there are no rounding issues in eliminating this.

This fixed <rdar://problem/8197504>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108639 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
01faa7b34c441fd85e675d1ee716c7eb0e3b2518 18-Jul-2010 Lang Hames <lhames@gmail.com> Added -pbqp-pre-coalescing flag to PBQP. If enabled this will cause PBQP to require
LoopSplitter be run prior to register allocation.

Entirely for testing purposes at the moment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108634 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
12f35c52a533da0c2c4c3e0a04f83355514992f9 18-Jul-2010 Lang Hames <lhames@gmail.com> Added -pbqp-pre-coalescing flag to PBQP. If enabled this will cause PBQP to require
LoopSplitter be run prior to register allocation.

Entirely for testing purposes at the moment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108634 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
f7e17759079cb76ced7a1c1abf47ade044395c55 17-Jul-2010 Bill Wendling <isanbard@gmail.com> Use isPrologLabel() instead of checking the opcode directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108628 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7490896f9dd4bb7955b39fa601ae7a9325e2775f 17-Jul-2010 Bill Wendling <isanbard@gmail.com> Use isPrologLabel() instead of checking the opcode directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108628 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1fea14871dd85b67d95e899222471baa2c4e6338 17-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> update CMakeLists.txt

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108620 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
d3bb335144a317bafb0f237fc8930595a855845a 17-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> update CMakeLists.txt

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108620 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
c1ffdc229a29b9505f408b78ed7a5d8dfb05f338 17-Jul-2010 Lang Hames <lhames@gmail.com> Removed unused inRange variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108618 91177308-0d34-0410-b5e6-96231b3b80d8
plitter.cpp
3b6702db0cf9360750217e5798c3025c9fdb2c16 17-Jul-2010 Lang Hames <lhames@gmail.com> Removed unused inRange variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108618 91177308-0d34-0410-b5e6-96231b3b80d8
plitter.cpp
2acb3a4a85ee259c8a50a5fdbe22ac210817a26d 17-Jul-2010 Lang Hames <lhames@gmail.com> LoopSplitter - intended to split live intervals over loop boundaries.
Still very much under development. Comments and fixes will be forthcoming.

(This commit includes some small tweaks to LiveIntervals & LoopInfo to support the splitter)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108615 91177308-0d34-0410-b5e6-96231b3b80d8
plitter.cpp
plitter.h
60f422f894ae9aff2f508f34733be36f5a0ed20a 17-Jul-2010 Lang Hames <lhames@gmail.com> LoopSplitter - intended to split live intervals over loop boundaries.
Still very much under development. Comments and fixes will be forthcoming.

(This commit includes some small tweaks to LiveIntervals & LoopInfo to support the splitter)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108615 91177308-0d34-0410-b5e6-96231b3b80d8
plitter.cpp
plitter.h
77228032f77c6ae9be222dd8397d09601115102b 17-Jul-2010 Lang Hames <lhames@gmail.com> Iterating over sets of pointers in a heuristic was a bad idea. Switching
any command line paramater changed the register allocation produced by
PBQP.

Turns out variety is not the spice of life.

Fixed some comparators, added others. All good now.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108613 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/Heuristics/Briggs.h
egAllocPBQP.cpp
d0f6f017319bbc32b57c2e574d774ac91fe20f18 17-Jul-2010 Lang Hames <lhames@gmail.com> Iterating over sets of pointers in a heuristic was a bad idea. Switching
any command line paramater changed the register allocation produced by
PBQP.

Turns out variety is not the spice of life.

Fixed some comparators, added others. All good now.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108613 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/Heuristics/Briggs.h
egAllocPBQP.cpp
ea073c217e2ede8a86e264d85a4a10823ba854fc 17-Jul-2010 Eric Christopher <echristo@apple.com> Propagate alloca alignment information via variable size object frame
information.

No functional change yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108583 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
2b8271e0298f4218d6dddc80b49b51b38a646353 17-Jul-2010 Eric Christopher <echristo@apple.com> Propagate alloca alignment information via variable size object frame
information.

No functional change yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108583 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
5a1bec1ebbe8c4427a31930e6dd6cc81917fc378 17-Jul-2010 Bill Wendling <isanbard@gmail.com> Consider this function:

void foo() { __builtin_unreachable(); }

It will output the following on Darwin X86:

_func1:
Leh_func_begin0:
pushq %rbp
Ltmp0:
movq %rsp, %rbp
Ltmp1:
Leh_func_end0:

This prolog adds a new Call Frame Information (CFI) row to the FDE with an
address that is not within the address range of the code it describes -- part is
equal to the end of the function -- and therefore results in an invalid EH
frame. If we emit a nop in this situation, then the CFI row is now within the
address range.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108568 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
dc86704114a065da0ff1d835edcd62aae51481dd 17-Jul-2010 Bill Wendling <isanbard@gmail.com> Consider this function:

void foo() { __builtin_unreachable(); }

It will output the following on Darwin X86:

_func1:
Leh_func_begin0:
pushq %rbp
Ltmp0:
movq %rsp, %rbp
Ltmp1:
Leh_func_end0:

This prolog adds a new Call Frame Information (CFI) row to the FDE with an
address that is not within the address range of the code it describes -- part is
equal to the end of the function -- and therefore results in an invalid EH
frame. If we emit a nop in this situation, then the CFI row is now within the
address range.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108568 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a02effc0bdeef3db3c148485564cab5ab6a7294a 17-Jul-2010 Bill Wendling <isanbard@gmail.com> Rename DBG_LABEL PROLOG_LABEL, because it's only used during prolog emission and
thus is a much more meaningful name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108563 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7431beaba2a01c3fe299c861b2ec85cbf1dc81c4 17-Jul-2010 Bill Wendling <isanbard@gmail.com> Rename DBG_LABEL PROLOG_LABEL, because it's only used during prolog emission and
thus is a much more meaningful name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108563 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cc2fd8fda05fec20a570a0e5412ab819b11cdb74 16-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove remaining calls to TII::isMoveInstr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108556 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
irtRegRewriter.cpp
af462c4b4f59429d993b10607a0c31deb8a8156f 16-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove remaining calls to TII::isMoveInstr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108556 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
irtRegRewriter.cpp
b2c1c2be5dbabbbcf75ef4868c57426a64b8db6a 16-Jul-2010 Dan Gohman <gohman@apple.com> Revert r108369, sorting llvm.dbg.declare information by source position,
since it doesn't work for front-ends which don't emit column information
(which includes llvm-gcc in its present configuration), and doesn't
work for clang for K&R style variables where the variables are declared
in a different order from the parameter list.

Instead, make a separate pass through the instructions to collect the
llvm.dbg.declare instructions in order. This ensures that the debug
information for variables is emitted in this order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108538 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
9c3d5e41b94ff51dc78ae42397151b52d9c2b546 16-Jul-2010 Dan Gohman <gohman@apple.com> Revert r108369, sorting llvm.dbg.declare information by source position,
since it doesn't work for front-ends which don't emit column information
(which includes llvm-gcc in its present configuration), and doesn't
work for clang for K&R style variables where the variables are declared
in a different order from the parameter list.

Instead, make a separate pass through the instructions to collect the
llvm.dbg.declare instructions in order. This ensures that the debug
information for variables is emitted in this order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108538 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
d557b954a8fb8f563779d364bdce33e62885af2f 16-Jul-2010 Eli Friedman <eli.friedman@gmail.com> Get rid of a bunch of duplicated ELF enum values.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108520 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
10bb4211d69a643e380c537cbc75745c5fea6d6a 16-Jul-2010 Eli Friedman <eli.friedman@gmail.com> Get rid of a bunch of duplicated ELF enum values.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108520 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
def3acbff14a29a3295e245b91a639d05f8dc077 16-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove many calls to TII::isMoveInstr. Targets should be producing COPY anyway.

TII::isMoveInstr is going tobe completely removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108507 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
iveIntervalAnalysis.cpp
achineCSE.cpp
ptimizePHIs.cpp
reAllocSplitting.cpp
rocessImplicitDefs.cpp
egAllocFast.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
04c528a0c86ddf3d6a70681f72e1b2ec07b0b53a 16-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove many calls to TII::isMoveInstr. Targets should be producing COPY anyway.

TII::isMoveInstr is going tobe completely removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108507 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
iveIntervalAnalysis.cpp
achineCSE.cpp
ptimizePHIs.cpp
reAllocSplitting.cpp
rocessImplicitDefs.cpp
egAllocFast.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
7aac0447c1490f83be94329ffb03a3e71bc090ac 16-Jul-2010 Dan Gohman <gohman@apple.com> Use the source-order scheduler instead of the "fast" scheduler at -O0,
because it's more likely to keep debug line information in its original
order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108496 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e667e0172346773cb5718f694efa93ea49114c7b 16-Jul-2010 Dan Gohman <gohman@apple.com> Use the source-order scheduler instead of the "fast" scheduler at -O0,
because it's more likely to keep debug line information in its original
order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108496 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
71710aeac8bd1711f1fc472c5e61b6ac45b59ba6 16-Jul-2010 Dale Johannesen <dalej@apple.com> The SelectionDAGBuilder's handling of debug info, on rare
occasions, caused code to be generated in a different order.
All cases I've seen involved float softening in the type
legalizer, and this could be perhaps be fixed there, but
it's better not to generate things differently in the first
place. 7797940 (6/29/2010..7/15/2010).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
bdc09d9b0943a8c5cee29c4f87666eaa97e081d4 16-Jul-2010 Dale Johannesen <dalej@apple.com> The SelectionDAGBuilder's handling of debug info, on rare
occasions, caused code to be generated in a different order.
All cases I've seen involved float softening in the type
legalizer, and this could be perhaps be fixed there, but
it's better not to generate things differently in the first
place. 7797940 (6/29/2010..7/15/2010).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
22d56b4791f13680c0de7c199f80e9b6d424e59b 16-Jul-2010 Bill Wendling <isanbard@gmail.com> Revert. This isn't the correct way to go.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108478 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
a60f0e7f817f170df55371491e246b95b0d8d6b0 16-Jul-2010 Bill Wendling <isanbard@gmail.com> Revert. This isn't the correct way to go.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108478 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
f2cad15d57b820bba2e01de8307f3553804b7b27 16-Jul-2010 Bill Wendling <isanbard@gmail.com> Handle code gen for the unreachable instruction if it's the only instruction in
the function. We'll just turn it into a "trap" instruction instead.

The problem with not handling this is that it might generate a prologue without
the equivalent epilogue to go with it:

$ cat t.ll
define void @foo() {
entry:
unreachable
}
$ llc -o - t.ll -relocation-model=pic -disable-fp-elim -unwind-tables
.section __TEXT,__text,regular,pure_instructions
.globl _foo
.align 4, 0x90
_foo: ## @foo
Leh_func_begin0:
## BB#0: ## %entry
pushq %rbp
Ltmp0:
movq %rsp, %rbp
Ltmp1:
Leh_func_end0:
...

The unwind tables then have bad data in them causing all sorts of problems.

Fixes <rdar://problem/8096481>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108473 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
e9bf7e692e56656ef13b33af86624d0fdcd578fb 16-Jul-2010 Bill Wendling <isanbard@gmail.com> Handle code gen for the unreachable instruction if it's the only instruction in
the function. We'll just turn it into a "trap" instruction instead.

The problem with not handling this is that it might generate a prologue without
the equivalent epilogue to go with it:

$ cat t.ll
define void @foo() {
entry:
unreachable
}
$ llc -o - t.ll -relocation-model=pic -disable-fp-elim -unwind-tables
.section __TEXT,__text,regular,pure_instructions
.globl _foo
.align 4, 0x90
_foo: ## @foo
Leh_func_begin0:
## BB#0: ## %entry
pushq %rbp
Ltmp0:
movq %rsp, %rbp
Ltmp1:
Leh_func_end0:
...

The unwind tables then have bad data in them causing all sorts of problems.

Fixes <rdar://problem/8096481>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108473 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
ddc0a8b9568a49c9b26f8c35d5ed777bc91c116d 16-Jul-2010 Evan Cheng <evan.cheng@apple.com> Split -enable-finite-only-fp-math to two options:
-enable-no-nans-fp-math and -enable-no-infs-fp-math. All of the current codegen fp math optimizations only care whether the fp arithmetics arguments and results can never be NaN.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108465 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/SelectionDAG.cpp
60108e96bbc5432f4fe06ba313e64448e97a0e15 16-Jul-2010 Evan Cheng <evan.cheng@apple.com> Split -enable-finite-only-fp-math to two options:
-enable-no-nans-fp-math and -enable-no-infs-fp-math. All of the current codegen fp math optimizations only care whether the fp arithmetics arguments and results can never be NaN.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108465 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/SelectionDAG.cpp
5d56a902d64f9ff4aaaf6dabf79a0dc1f71d5213 15-Jul-2010 Chris Lattner <sabre@nondot.org> fix the definitions of ConstTextCoalSection/ConstDataCoalSection
to keep "Text" in sync with the "pure instructions" section attribute.
Lack of this attribute was preventing the assembler from emitting
multibyte noops instructions for templates (and inlines, and other
coalesced stuff) and was causing the assembler to mismatch .o files.

This fixes rdar://8018335



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108461 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
6a624a65f47c850bbcbfc7eff4fd057be824027c 15-Jul-2010 Chris Lattner <sabre@nondot.org> fix the definitions of ConstTextCoalSection/ConstDataCoalSection
to keep "Text" in sync with the "pure instructions" section attribute.
Lack of this attribute was preventing the assembler from emitting
multibyte noops instructions for templates (and inlines, and other
coalesced stuff) and was causing the assembler to mismatch .o files.

This fixes rdar://8018335



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108461 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
6a56ec79c52ad100b3c3d0fe50570b768c1adf7c 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108452 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
87ea294b0d72ef5f29c6d3ea9c9c5faa8be7abc4 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108452 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
79fb120a8f47ab13ecef292360029884bbda9fd8 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108450 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
24173da61db2725bf91b0edf57cfa554ac105e9d 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108450 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
aa8662ee51dcdbb87c38a40d6c31b09d1c2f0c6e 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister. This time
make sure to allocate enough space in the std::vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108449 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
9c2a034730b289a2cf48bc91aa2ef69737a7afbb 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister. This time
make sure to allocate enough space in the std::vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108449 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
5de585a57e8c89ba0f01b6b90a66a413692cc9cd 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Reserve a goodly amount of room for the vectors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108448 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
e4a4147c877777fddfff50a89cac81a596f1a8ba 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Reserve a goodly amount of room for the vectors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108448 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
4ef0321f497397e58d7293973f6ed24253435f1d 15-Jul-2010 Devang Patel <dpatel@apple.com> Fix crash reported in PR7653.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108441 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
07538ad975994123317fe5b32daed4bf28683a1d 15-Jul-2010 Devang Patel <dpatel@apple.com> Fix crash reported in PR7653.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108441 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
1ff672189788b92641eb9fd8659712710f54bbd8 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108440 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
38306d53f9319d0a36a059b229b807578cb2e5c5 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108440 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
c416f97029a85bc9be4b74f86ea724085a80ede4 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108438 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.h
dfb4eeb25c635ee6ad525bd13928a53b7c10d007 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108438 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.h
db24dfbbb21b020f6afc49519240a69a34e12ea2 15-Jul-2010 Chris Lattner <sabre@nondot.org> revert bill's patches in an attempt to fix the buildbot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108419 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
7fa889b946266f5cf3f386acf2487aed244e5d10 15-Jul-2010 Chris Lattner <sabre@nondot.org> revert bill's patches in an attempt to fix the buildbot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108419 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
6c0464208ba23b7481949cb1ca09b4b690fb837d 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Fix headers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108413 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
75a5b712086802daacf8bb646ffe9f8f72602670 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Fix headers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108413 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
f19a69f99860458ca506570deb3630888ec2124c 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of a hard-coded array. The length of that array could
get *very* large, but we only need it to be the size of the number of pregs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108412 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
e010409cab2ccb7c812edaf072da2c1169ddb0da 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of a hard-coded array. The length of that array could
get *very* large, but we only need it to be the size of the number of pregs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108412 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
0edb177ee6dec832b5ad83ab1f198e6e17a360b0 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of a hard-coded array. The length of that array could
get *very* large, but we only need it to be the size of thenumber of pregs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108411 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
f7f72bc1eaf01bfc6f09094d200e6aea35921f65 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of a hard-coded array. The length of that array could
get *very* large, but we only need it to be the size of thenumber of pregs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108411 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
d0c6a6bdc440b527399822b8c3fad444b816b3e0 15-Jul-2010 Chris Lattner <sabre@nondot.org> a more graceful fix for test/Other/inline-asm-newline-terminator.ll,
follow on to r103765


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108390 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
b5b73c4c86b68e5edc3d3fceff28e852c1141b7f 15-Jul-2010 Chris Lattner <sabre@nondot.org> a more graceful fix for test/Other/inline-asm-newline-terminator.ll,
follow on to r103765


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108390 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
501c139176d85d108f879aeed8a0ac4091763e0a 15-Jul-2010 Eric Christopher <echristo@apple.com> 80-col.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108381 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
723a05a66f0c7b2ba8a9e0bc162cf6a44c5569be 15-Jul-2010 Eric Christopher <echristo@apple.com> 80-col.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108381 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
28629a7306f7d4aa67e71e3a6d107307a1e5e399 15-Jul-2010 Dan Gohman <gohman@apple.com> Make the order in which variables are described in debug information
independent of the order that isel happens to visit the dbg_declare
intrinsics. This fixes a bug in which the formal arguments were
being printed in reverse order, now that fast isel is going bottom up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108369 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
336e8d7e7ce87721db464fdb22638bf0c98d6469 15-Jul-2010 Dan Gohman <gohman@apple.com> Make the order in which variables are described in debug information
independent of the order that isel happens to visit the dbg_declare
intrinsics. This fixes a bug in which the formal arguments were
being printed in reverse order, now that fast isel is going bottom up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108369 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
1c64f5b7c8a54030b577e0b12609ec16ae6299d9 15-Jul-2010 Dan Gohman <gohman@apple.com> Properly restore DebugLoc after leaving the local constant area.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
163f78ea4016d594d921154d8df1c9d746fb0ea8 15-Jul-2010 Dan Gohman <gohman@apple.com> Properly restore DebugLoc after leaving the local constant area.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
31e2f82290b4c3f520edb06fb6d866aef7939a10 14-Jul-2010 Dan Gohman <gohman@apple.com> Delete fast-isel's trivial load optimization; it breaks debugging because
it can look past points where a debugger might modify user variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108336 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
2dd50e656f048d222aaaa57168688326fa52421b 14-Jul-2010 Dan Gohman <gohman@apple.com> Delete fast-isel's trivial load optimization; it breaks debugging because
it can look past points where a debugger might modify user variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108336 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a57cf7964f04923f805421545617006c82319355 14-Jul-2010 Evan Cheng <evan.cheng@apple.com> Teach ProcessImplicitDefs to transform more COPY instructions into IMPLICIT_DEF (and subsequently eliminate them). This allows machine LICM to hoist IMPLICIT_DEF's. PR7620.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108304 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
rocessImplicitDefs.cpp
db8980903717e1127463f00a34cae9bd29f82a91 14-Jul-2010 Evan Cheng <evan.cheng@apple.com> Teach ProcessImplicitDefs to transform more COPY instructions into IMPLICIT_DEF (and subsequently eliminate them). This allows machine LICM to hoist IMPLICIT_DEF's. PR7620.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108304 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
rocessImplicitDefs.cpp
f8b30eee74822408e2695de7a228455fe4535e22 14-Jul-2010 Dan Gohman <gohman@apple.com> Don't propagate debug locations to instructions for materializing
constants, since they may not be emited near the other instructions
which get the same line, and this confuses debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108302 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a10b8494a50108482302f6f077d72fbc76d776ed 14-Jul-2010 Dan Gohman <gohman@apple.com> Don't propagate debug locations to instructions for materializing
constants, since they may not be emited near the other instructions
which get the same line, and this confuses debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108302 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
de315e45f15ed924610f0630673f729dbd27e006 13-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print VNInfo flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108277 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
d9f6ec977a9543e88c52fa5fb3737ae03402fc4c 13-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print VNInfo flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108277 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
324c0e335cffaeeacdd15df43fa8beffcf125aca 13-Jul-2010 Dale Johannesen <dalej@apple.com> In inline asm treat indirect 'X' constraint as 'm'.
This may not be right in all cases, but it's better
than asserting which it was doing before. PR 7528.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108268 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b5611a623012fc373ea21d9c062b8a38c0ac75c7 13-Jul-2010 Dale Johannesen <dalej@apple.com> In inline asm treat indirect 'X' constraint as 'm'.
This may not be right in all cases, but it's better
than asserting which it was doing before. PR 7528.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108268 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
2e1ab807069be1b7c68ae30a5c75bcb859923950 13-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an assertion to make PR7542 fail consistently.

LiveInterval::overlapsFrom dereferences end() if it is called on an empty
interval.

It would be reasonable to just return false - an empty interval doesn't overlap
anything, but I want to know who is doing it first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108264 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
6382d2caddb98f30f556b43faa898ff675affaf7 13-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an assertion to make PR7542 fail consistently.

LiveInterval::overlapsFrom dereferences end() if it is called on an empty
interval.

It would be reasonable to just return false - an empty interval doesn't overlap
anything, but I want to know who is doing it first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108264 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
3f0eb54d7f7bcfb8456eca6fd52cbfc4eee79f59 13-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix LiveInterval::overlaps so it doesn't claim touching intervals overlap.
Also, one binary search is enough.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108261 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
186eb73845c29547cc837341f0c8c0f6d9284e67 13-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix LiveInterval::overlaps so it doesn't claim touching intervals overlap.
Also, one binary search is enough.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108261 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
f71d53b68b556ae43b8d3c748873c1fa02ce7a3b 13-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't add memory operands to storeRegToStackSlot / loadRegFromStackSlot results,
they already have one.

This fixes the himenobmtxpa miscompilation on ARM.

The PostRA scheduler got confused by the double memoperand and hoisted a stack
slot load above a store to the same slot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108219 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
9fac4159ddf65d90ebcccd80a0ba513cd8e95be1 13-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't add memory operands to storeRegToStackSlot / loadRegFromStackSlot results,
they already have one.

This fixes the himenobmtxpa miscompilation on ARM.

The PostRA scheduler got confused by the double memoperand and hoisted a stack
slot load above a store to the same slot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108219 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
06987da3f26bf015b05712886288c678ae8a18d6 12-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix a typo and fit in 80 columns. Found by Bob Wilson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
9d544d04166b971ab5ca1ee7ee37465b4af6bbf5 12-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix a typo and fit in 80 columns. Found by Bob Wilson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c2d3eee936fe8da7e8e257cb45580149421190bb 12-Jul-2010 Duncan Sands <baldrick@free.fr> Convert some tab stops into spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108130 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/HeuristicSolver.h
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/SelectionDAGPrinter.cpp
3472766f9eb7d66f234c390ce1b3a8b76f0ee9ce 12-Jul-2010 Duncan Sands <baldrick@free.fr> Convert some tab stops into spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108130 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/HeuristicSolver.h
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/SelectionDAGPrinter.cpp
9300e96920f4c6c61061318f41c173d8bab1f4de 12-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Convert the last use of getPhysicalRegisterRegClass and remove it.

AggressiveAntiDepBreaker should not be using getPhysicalRegisterRegClass. An
instruction might be using a register that can only be replaced with one from
a subclass of getPhysicalRegisterRegClass.

With this patch we use getMinimalPhysRegClass. This is correct, but
conservative. We should check the uses of the register and select the
largest register class that can be used in all of them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108122 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
7e1b566322ecb5ff752c9a5f2feb503b6fb75262 12-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Convert the last use of getPhysicalRegisterRegClass and remove it.

AggressiveAntiDepBreaker should not be using getPhysicalRegisterRegClass. An
instruction might be using a register that can only be replaced with one from
a subclass of getPhysicalRegisterRegClass.

With this patch we use getMinimalPhysRegClass. This is correct, but
conservative. We should check the uses of the register and select the
largest register class that can be used in all of them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108122 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
569270d65ca081470f5efb95a5efe1b25bef3291 12-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Don't use getPhysicalRegisterRegClass in PBQP. The existing checks that the
physical register can be allocated in the class of the virtual are sufficient.

I think that the test for virtual registers is more strict than it needs to be,
it should be possible to coalesce two virtual registers the class of one
is a subclass of the other.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108118 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
cbeb3db8fd502a21f07592f75712d59691ce471f 12-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Don't use getPhysicalRegisterRegClass in PBQP. The existing checks that the
physical register can be allocated in the class of the virtual are sufficient.

I think that the test for virtual registers is more strict than it needs to be,
it should be possible to coalesce two virtual registers the class of one
is a subclass of the other.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108118 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
d3408ec5cb70bab5083c5d6e23aaaaea96aaa9b8 12-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Convert the last getPhysicalRegisterRegClass in VirtRegRewriter.cpp to
getMinimalPhysRegClass. It was used to produce spills, and it is better to
use the most specific class if possible.

Update getLoadStoreRegOpcode to handle GR32_AD.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108115 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
0bfd09201efdbba5fb70039ebf1c8aefc673cde1 12-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Convert the last getPhysicalRegisterRegClass in VirtRegRewriter.cpp to
getMinimalPhysRegClass. It was used to produce spills, and it is better to
use the most specific class if possible.

Update getLoadStoreRegOpcode to handle GR32_AD.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108115 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
1e1ba7afe793ef5fcefa50bf19887adc060e0786 12-Jul-2010 Chris Lattner <sabre@nondot.org> change machinelicm to use MachineInstr::isSafeToMove. No
intended functionality change.

The avoidance of hoistiing implicitdef seems wrong though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108109 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
7791080151a5a8bbda073551289469301d006fcb 12-Jul-2010 Chris Lattner <sabre@nondot.org> change machinelicm to use MachineInstr::isSafeToMove. No
intended functionality change.

The avoidance of hoistiing implicitdef seems wrong though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108109 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
d1eb83768d208ed2fec6e44580b2ea912940ab22 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove TargetInstrInfo::copyRegToReg entirely.

Targets must now implement TargetInstrInfo::copyPhysReg instead. There is no
longer a default implementation forwarding to copyRegToReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108095 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
744b3a5acdbd4d0fac9c6a7c9ad702502cc3cc37 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove TargetInstrInfo::copyRegToReg entirely.

Targets must now implement TargetInstrInfo::copyPhysReg instead. There is no
longer a default implementation forwarding to copyRegToReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108095 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
64a48a98393d53b778ad3e760bce4062ca3714de 11-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Convert uses of getPhysicalRegisterRegClass in VirtRegRewriter.cpp.

The first one was used just to call isSafeToMoveRegClassDefs. In
general, using a more specific reg class is better, in practice only
x86 implements that method and the results are always the same.

The second one is in FindFreeRegister and is used to check if a register
is in a register class, a much more direct call to contains is better as
it should cover more cases and is faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108093 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
db776099911ea3fa42f11519632091e72bdcddfe 11-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Convert uses of getPhysicalRegisterRegClass in VirtRegRewriter.cpp.

The first one was used just to call isSafeToMoveRegClassDefs. In
general, using a more specific reg class is better, in practice only
x86 implements that method and the results are always the same.

The second one is in FindFreeRegister and is used to check if a register
is in a register class, a much more direct call to contains is better as
it should cover more cases and is faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108093 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
f3c1d64b732e9cf5d0eecc2cdcb92f7d724f9a00 11-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Remove two other uses of ATTRIBUTE_UNUSED for variables only used within
assert()s, switching to void-casts. Removed an unneeded Compiler.h include as
a result. There are two other uses in LLVM, but they're not due to assert()s,
so I've left them alone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108088 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/Heuristics/Briggs.h
c5080ba0c8278fba57efe605560d1f16a7a9e973 11-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Remove two other uses of ATTRIBUTE_UNUSED for variables only used within
assert()s, switching to void-casts. Removed an unneeded Compiler.h include as
a result. There are two other uses in LLVM, but they're not due to assert()s,
so I've left them alone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108088 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/Heuristics/Briggs.h
af01e252c54c30e80a1734f256c04a4b273622d1 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use COPY for fast-isel bitconvert, but don't create cross-class copies.

This doesn't change the behavior of SelectBitcast for X86.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108073 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
e7917bb207d5178dfb26066f839e4c295fd3a1eb 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use COPY for fast-isel bitconvert, but don't create cross-class copies.

This doesn't change the behavior of SelectBitcast for X86.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108073 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
deaae440ab24bb0531c2e23bde4f64300291e832 11-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix va_arg for doubles. With this patch VAARG nodes always contain the
correct alignment information, which simplifies ExpandRes_VAARG a bit.

The patch introduces a new alignment information to TargetLoweringInfo. This is
needed since the two natural candidates cannot be used:

* The 's' in target data: If this is set to the minimal alignment of any
argument, getCallFrameTypeAlignment would return 4 for doubles on ARM for
example.
* The getTransientStackAlignment method. It is possible for an architecture to
have argument less aligned than what we maintain the stack pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
cbeeae23c31d32b833c9c7c3e8984e4cbcf22f45 11-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix va_arg for doubles. With this patch VAARG nodes always contain the
correct alignment information, which simplifies ExpandRes_VAARG a bit.

The patch introduces a new alignment information to TargetLoweringInfo. This is
needed since the two natural candidates cannot be used:

* The 's' in target data: If this is set to the minimal alignment of any
argument, getCallFrameTypeAlignment would return 4 for doubles on ARM for
example.
* The getTransientStackAlignment method. It is possible for an architecture to
have argument less aligned than what we maintain the stack pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
da8e3ccd1b8cf437ce008849bf877bdb3a5090be 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use COPY for extracting ImplicitDef'ed values from fast-isel instructions.

This assumes that the registers can be copied which is probably a safe
assumption.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108070 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
e797e0c8644a649d162fb339b148f5db10447d4e 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use COPY for extracting ImplicitDef'ed values from fast-isel instructions.

This assumes that the registers can be copied which is probably a safe
assumption.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108070 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
ac74d40a6fab0f487aba3fb882a6e226fcbafe9a 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use COPY in FastISel everywhere it is safe and trivial.

The remaining copyRegToReg calls actually check the return value (shock!), so we
cannot trivially replace them with COPY instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108069 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5127f7991373d1c69e4d3241ec11913f4f44bb21 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use COPY in FastISel everywhere it is safe and trivial.

The remaining copyRegToReg calls actually check the return value (shock!), so we
cannot trivially replace them with COPY instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108069 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
58296bc252b47fa3839d438d67c58f8a5db89750 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace copyRegToReg with COPY everywhere in lib/CodeGen except for FastISel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108062 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
piller.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
1e1098c6f39590e1e74e5cb3c2a1652d8f3cb16a 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace copyRegToReg with COPY everywhere in lib/CodeGen except for FastISel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108062 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
piller.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
4eca660c9f8861c84330761679a71b5978d3ccf2 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Only collect subreg extracting copies for later coalescing.
This also avoids fatal copies from physregs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108061 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
c0075cce7cf6682af8a09126709106866b2f5971 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Only collect subreg extracting copies for later coalescing.
This also avoids fatal copies from physregs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108061 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
41989a808cb7b72fbea814e8b9bca0df8606acd8 11-Jul-2010 Dan Gohman <gohman@apple.com> Fix a bug in the code which re-inserts DBG_VALUE nodes after scheduling;
if a block is split (by a custom inserter), the insert point may be in a
different block than it was originally. This fixes 32-bit llvm-gcc
bootstrap builds, and I haven't been able to reproduce it otherwise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108060 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
a8dab36f3dfdfcd3f74224afa4ffb32776674c93 11-Jul-2010 Dan Gohman <gohman@apple.com> Fix a bug in the code which re-inserts DBG_VALUE nodes after scheduling;
if a block is split (by a custom inserter), the insert point may be in a
different block than it was originally. This fixes 32-bit llvm-gcc
bootstrap builds, and I haven't been able to reproduce it otherwise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108060 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
49a439e4799aa900e5cc4dbacf74394bfca34f26 10-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Emit COPY instructions instead of using copyRegToReg in InstrEmitter,
ScheduleDAGEmit, TwoAddressLowering, and PHIElimination.

This switches the bulk of register copies to using COPY, but many less used
copyRegToReg calls remain.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108050 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
cheduleDAGEmit.cpp
electionDAG/InstrEmitter.cpp
woAddressInstructionPass.cpp
92c1f72c548e6a5e793ef19a0b04910992115b6c 10-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Emit COPY instructions instead of using copyRegToReg in InstrEmitter,
ScheduleDAGEmit, TwoAddressLowering, and PHIElimination.

This switches the bulk of register copies to using COPY, but many less used
copyRegToReg calls remain.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108050 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
cheduleDAGEmit.cpp
electionDAG/InstrEmitter.cpp
woAddressInstructionPass.cpp
0efe7d3bcc7b0e65143eb25636cc15a7d665adb0 10-Jul-2010 Dan Gohman <gohman@apple.com> Insert IMPLICIT_DEF instructions at the current insert position, not
at the end of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108045 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
3cd26a2909cd5d002fe2742041a264ba217ba88e 10-Jul-2010 Dan Gohman <gohman@apple.com> Insert IMPLICIT_DEF instructions at the current insert position, not
at the end of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108045 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
b4482cf9e41505aa91da0bdea2deba4147e3e495 10-Jul-2010 Dan Gohman <gohman@apple.com> Reapply bottom-up fast-isel, with several fixes for x86-32:
- Check getBytesToPopOnReturn().
- Eschew ST0 and ST1 for return values.
- Fix the PIC base register initialization so that it doesn't ever
fail to end up the top of the entry block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108039 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
LVMTargetMachine.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
84023e0fbefc406a4c611d3d64a10df5d3a97dd7 10-Jul-2010 Dan Gohman <gohman@apple.com> Reapply bottom-up fast-isel, with several fixes for x86-32:
- Check getBytesToPopOnReturn().
- Eschew ST0 and ST1 for return values.
- Fix the PIC base register initialization so that it doesn't ever
fail to end up the top of the entry block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108039 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
LVMTargetMachine.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
f59e11c3be2372dc2fb11391b1bbcf901afbeca6 09-Jul-2010 Devang Patel <dpatel@apple.com> Update DBG_VALUE to refer appropriate stack slot in case of a spill.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108023 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
7a029b6d7e58cb0f1010f14d99d7661e387cfb54 09-Jul-2010 Devang Patel <dpatel@apple.com> Update DBG_VALUE to refer appropriate stack slot in case of a spill.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108023 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
b4598963a68501dc67167512c0a7b83528d58e71 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix small bug in isMoveInstr -> COPY translation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108013 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8ea324093cd512acc37f7b5a60e511e64103699e 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix small bug in isMoveInstr -> COPY translation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108013 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b4737986ba62ecb5647e3bd01bb7a14fbc610f8e 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Automatically fold COPY instructions into stack load/store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108012 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
1f32340d95ac480bfc74bcfd00fd5cffbe078652 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Automatically fold COPY instructions into stack load/store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108012 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
c8d7f9fe4842bb25aab9a895acb261fb621400c5 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remat uncoalescable COPY instrs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108010 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
90fc0f4443726e8be01c2b1ce46bdf75632a1e26 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remat uncoalescable COPY instrs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108010 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
32081510b8ac6bcf8d16793a8fee07e34833e999 09-Jul-2010 Bill Wendling <isanbard@gmail.com> Clarify what mysterious check means.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108005 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8886c495a33703d8bd8319d16b62645cee4dd546 09-Jul-2010 Bill Wendling <isanbard@gmail.com> Clarify what mysterious check means.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108005 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9571e5b43b0cd3370fe480bb6ffd766bcfde46ae 09-Jul-2010 Dan Gohman <gohman@apple.com> Fix MachineLICM to actually visit inner loops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108001 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
aa7426070da3b74d60186763bb7c53af3e095427 09-Jul-2010 Dan Gohman <gohman@apple.com> Fix MachineLICM to actually visit inner loops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108001 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
915559a808b748c5bef27440b78298b1fc6fef5b 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Change TII::foldMemoryOperand API to require the machine instruction to be
inserted in a MBB, and return an already inserted MI.

This target API change is necessary to allow foldMemoryOperand to call
storeToStackSlot and loadFromStackSlot when folding a COPY to a stack slot
reference in a target independent way.

The foldMemoryOperandImpl hook is going to change in the same way, but I'll wait
until COPY folding is actually implemented. Most targets only fold copies and
won't need to specialize this hook at all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107991 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
argetInstrInfoImpl.cpp
irtRegRewriter.cpp
e05442d50806e2850eae1571958816028093df85 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Change TII::foldMemoryOperand API to require the machine instruction to be
inserted in a MBB, and return an already inserted MI.

This target API change is necessary to allow foldMemoryOperand to call
storeToStackSlot and loadFromStackSlot when folding a COPY to a stack slot
reference in a target independent way.

The foldMemoryOperandImpl hook is going to change in the same way, but I'll wait
until COPY folding is actually implemented. Most targets only fold copies and
won't need to specialize this hook at all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107991 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
argetInstrInfoImpl.cpp
irtRegRewriter.cpp
ec25c929e718999b22b3fcee506104f995b3b457 09-Jul-2010 Bob Wilson <bob.wilson@apple.com> --- Reverse-merging r107947 into '.':
U utils/TableGen/FastISelEmitter.cpp
--- Reverse-merging r107943 into '.':
U test/CodeGen/X86/fast-isel.ll
U test/CodeGen/X86/fast-isel-loads.ll
U include/llvm/Target/TargetLowering.h
U include/llvm/Support/PassNameParser.h
U include/llvm/CodeGen/FunctionLoweringInfo.h
U include/llvm/CodeGen/CallingConvLower.h
U include/llvm/CodeGen/FastISel.h
U include/llvm/CodeGen/SelectionDAGISel.h
U lib/CodeGen/LLVMTargetMachine.cpp
U lib/CodeGen/CallingConvLower.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
U lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
U lib/CodeGen/SelectionDAG/FastISel.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
U lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
U lib/CodeGen/SelectionDAG/InstrEmitter.cpp
U lib/CodeGen/SelectionDAG/TargetLowering.cpp
U lib/Target/XCore/XCoreISelLowering.cpp
U lib/Target/XCore/XCoreISelLowering.h
U lib/Target/X86/X86ISelLowering.cpp
U lib/Target/X86/X86FastISel.cpp
U lib/Target/X86/X86ISelLowering.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107987 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
LVMTargetMachine.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
02266e29f9250d74c5ec720aff23add3410ae920 09-Jul-2010 Bob Wilson <bob.wilson@apple.com> --- Reverse-merging r107947 into '.':
U utils/TableGen/FastISelEmitter.cpp
--- Reverse-merging r107943 into '.':
U test/CodeGen/X86/fast-isel.ll
U test/CodeGen/X86/fast-isel-loads.ll
U include/llvm/Target/TargetLowering.h
U include/llvm/Support/PassNameParser.h
U include/llvm/CodeGen/FunctionLoweringInfo.h
U include/llvm/CodeGen/CallingConvLower.h
U include/llvm/CodeGen/FastISel.h
U include/llvm/CodeGen/SelectionDAGISel.h
U lib/CodeGen/LLVMTargetMachine.cpp
U lib/CodeGen/CallingConvLower.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
U lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
U lib/CodeGen/SelectionDAG/FastISel.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
U lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
U lib/CodeGen/SelectionDAG/InstrEmitter.cpp
U lib/CodeGen/SelectionDAG/TargetLowering.cpp
U lib/Target/XCore/XCoreISelLowering.cpp
U lib/Target/XCore/XCoreISelLowering.h
U lib/Target/X86/X86ISelLowering.cpp
U lib/Target/X86/X86FastISel.cpp
U lib/Target/X86/X86ISelLowering.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107987 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
LVMTargetMachine.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
8d4191d6429537222756caa1c45cd809b6c1ab7d 09-Jul-2010 Gabor Greif <ggreif@gmail.com> cache result of operator*

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107980 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
03f09a3e329abcb35c1a5aa3a4546668b1af21ee 09-Jul-2010 Gabor Greif <ggreif@gmail.com> cache result of operator*

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107980 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
da4e8fd8045405042f32227ec15ae69df906ef16 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid creating %physreg:subidx operands in SimpleRegisterCoalescing::RemoveCopyByCommutingDef.

This fixes PR7602.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107957 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
8154f96f44b46cd7e06ccbbe6d9adb0f3134e107 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid creating %physreg:subidx operands in SimpleRegisterCoalescing::RemoveCopyByCommutingDef.

This fixes PR7602.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107957 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
94b9ac922bd49eaa77501cb093204dedc158ff26 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Deal with a few remaining spots that assume physical registers have live intervals.

This fixes PR7601.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107955 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
846a31881f85ab9ad836315a8be4532a26c7335c 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Deal with a few remaining spots that assume physical registers have live intervals.

This fixes PR7601.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107955 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
008bccd351a8bebb88cadb49baddba54fb754ef5 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix broken isCopy handling in TrimLiveIntervalToLastUse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107950 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
665eb1246678f976239e8e14ee7fe3a2874af2df 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix broken isCopy handling in TrimLiveIntervalToLastUse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107950 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
a849b8fd5b0d528398367ece3a2bb635e331ecca 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle COPY in VirtRegRewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107949 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
1769cccfc8f248a34ab794b787752e2bdd9b21b3 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle COPY in VirtRegRewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107949 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
1dac4614d6666137fab13240cbd1988227389164 09-Jul-2010 Dan Gohman <gohman@apple.com> Re-apply bottom-up fast-isel, with fixes. Be very careful to avoid emitting
a DBG_VALUE after a terminator, or emitting any instructions before an EH_LABEL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107943 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
LVMTargetMachine.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
bf87e2491789d6ff788629e22e93d0c1ca02ae85 09-Jul-2010 Dan Gohman <gohman@apple.com> Re-apply bottom-up fast-isel, with fixes. Be very careful to avoid emitting
a DBG_VALUE after a terminator, or emitting any instructions before an EH_LABEL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107943 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
LVMTargetMachine.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
f028ffdf273a61cada6ffe2f838bd0c6770681f1 09-Jul-2010 Bob Wilson <bob.wilson@apple.com> Reenable DAG combining for vector shuffles. It looks like it was temporarily
disabled and then never turned back on again. Adjust some tests, one because
this change avoids an unnecessary instruction, and the other to make it
continue testing what it was intended to test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f1d93ca920a106067d5773d57c85370a7efffe96 09-Jul-2010 Bob Wilson <bob.wilson@apple.com> Reenable DAG combining for vector shuffles. It looks like it was temporarily
disabled and then never turned back on again. Adjust some tests, one because
this change avoids an unnecessary instruction, and the other to make it
continue testing what it was intended to test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fed1703144c218146aa0c1aab7c7b8a844b332ed 09-Jul-2010 Stuart Hastings <stuart@apple.com> Reverting r107918 and r107919. Radar 8063111.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107930 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
99cfb69f17ccf6dca7378fe6d1c60758e5cabd1f 09-Jul-2010 Stuart Hastings <stuart@apple.com> Reverting r107918 and r107919. Radar 8063111.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107930 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8918fb9ec1c75be9e2ee69a3a15be54d5ad3378a 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Fix broken isCopy handling in TrimLiveIntervalToLastUse"

This reverts commit 107921. It broke the clang self host.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107926 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
21e9445952d12ac4ec72ff59506e2b78e469f208 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Fix broken isCopy handling in TrimLiveIntervalToLastUse"

This reverts commit 107921. It broke the clang self host.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107926 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
1b2773bcc4e3443aa1e981c7849e941b00503f08 09-Jul-2010 Devang Patel <dpatel@apple.com> Relax assertion. In optimized code, it is possible that first instruction is coming from a inlined function.
This fixes PR7596 .



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107923 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0afbf23453a7ea2ed2705ca350ea64629852558c 09-Jul-2010 Devang Patel <dpatel@apple.com> Relax assertion. In optimized code, it is possible that first instruction is coming from a inlined function.
This fixes PR7596 .



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107923 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
29b3696ea35b833f392f87faddff61f24a496833 09-Jul-2010 Bill Wendling <isanbard@gmail.com> Extension of r107506. Make sure that we don't mark a function as having a call
if the inline ASM doesn't need a stack frame.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c930cbcada7c62bb474019f4ce21bd6387d1c3f5 09-Jul-2010 Bill Wendling <isanbard@gmail.com> Extension of r107506. Make sure that we don't mark a function as having a call
if the inline ASM doesn't need a stack frame.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
dffba45bcead389e957392f8cb5daef087f2c67c 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix broken isCopy handling in TrimLiveIntervalToLastUse

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107921 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
7cc4f9cd282165940e121745aa5762bb69a98b9b 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix broken isCopy handling in TrimLiveIntervalToLastUse

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107921 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
43e24508090b94c1be5928a5c087baebeb04c49c 09-Jul-2010 Stuart Hastings <stuart@apple.com> Fix decl/def debug info for template functions. Radar 8063111.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107919 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c0e2639a3450e5cca5cd5082cef55a64bbd27ad4 09-Jul-2010 Stuart Hastings <stuart@apple.com> Fix decl/def debug info for template functions. Radar 8063111.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107919 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d36a93d65fd9c67fb529eac11ec3a18050e02365 08-Jul-2010 Devang Patel <dpatel@apple.com> Reuse DIEInteger for 1. This is frequently used while emitting an attribute using dwarf::DW_FORM_flag form.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107903 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
ca76f6f57cc50fcdbdb661ea80f7ffd42220fdbe 08-Jul-2010 Devang Patel <dpatel@apple.com> Reuse DIEInteger for 1. This is frequently used while emitting an attribute using dwarf::DW_FORM_flag form.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107903 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
063fc74fa18287afc12477192f73d059e9947f6a 08-Jul-2010 Jim Grosbach <grosbach@apple.com> Clean up scavengeRegister() a bit to prefer available regs, which allows
the simplification of frame index register scavenging to not have to check
for available registers directly and instead just let scavengeRegister()
handle it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107880 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
ed903d746d96d071305b8182680595ba281b3f12 08-Jul-2010 Jim Grosbach <grosbach@apple.com> Clean up scavengeRegister() a bit to prefer available regs, which allows
the simplification of frame index register scavenging to not have to check
for available registers directly and instead just let scavengeRegister()
handle it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107880 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
4dc8a1eda314b03118daf8dbd1e2c237c8082eea 08-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Convert EXTRACT_SUBREG to COPY when emitting machine instrs.

EXTRACT_SUBREG no longer appears as a machine instruction. Use COPY instead.

Add isCopy() checks in many places using isMoveInstr() and isExtractSubreg().
The isMoveInstr hook will be removed later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107879 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
owerSubregs.cpp
achineCSE.cpp
ptimizeExts.cpp
rocessImplicitDefs.cpp
egAllocLinearScan.cpp
egisterCoalescer.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
0bc25f40402f48ba42fc45403f635b20d90fabb3 08-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Convert EXTRACT_SUBREG to COPY when emitting machine instrs.

EXTRACT_SUBREG no longer appears as a machine instruction. Use COPY instead.

Add isCopy() checks in many places using isMoveInstr() and isExtractSubreg().
The isMoveInstr hook will be removed later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107879 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
owerSubregs.cpp
achineCSE.cpp
ptimizeExts.cpp
rocessImplicitDefs.cpp
egAllocLinearScan.cpp
egisterCoalescer.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
68abc43d979f4218553846cd099f5a64eb5e62f2 08-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove references to INSERT_SUBREG after de-SSA.

Fix X86InstrInfo::convertToThreeAddressWithLEA to generate COPY instead of
INSERT_SUBREG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107878 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
owerSubregs.cpp
rocessImplicitDefs.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
woAddressInstructionPass.cpp
5c00e077952d14899c3fc26709c7b2dfd36d0209 08-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove references to INSERT_SUBREG after de-SSA.

Fix X86InstrInfo::convertToThreeAddressWithLEA to generate COPY instead of
INSERT_SUBREG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107878 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
owerSubregs.cpp
rocessImplicitDefs.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
woAddressInstructionPass.cpp
8ab9612964e9eda2ec3bd968a37efa4613b1a029 08-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Merge the duplicated iabs optimization in DAGCombiner and let it detected a few more idioms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107868 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cde51108def63dbb68ffd47f8950b8bdd43dd074 08-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Merge the duplicated iabs optimization in DAGCombiner and let it detected a few more idioms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107868 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7eb196dc0bcb2af3b6721bb5b2b8409f5fab301e 08-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add TargetInstrInfo::copyPhysReg hook and use it from LowerSubregs.

This target hook is intended to replace copyRegToReg entirely, but for now it
calls copyRegToReg.

Any remaining calls to copyRegToReg wil be replaced by COPY instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107854 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
argetInstrInfoImpl.cpp
3651d92d91062ea4b1ee8b2a88eca03bd39e1968 08-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add TargetInstrInfo::copyPhysReg hook and use it from LowerSubregs.

This target hook is intended to replace copyRegToReg entirely, but for now it
calls copyRegToReg.

Any remaining calls to copyRegToReg wil be replaced by COPY instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107854 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
argetInstrInfoImpl.cpp
af52ee40fb60099ddec2b896aa4c759ef05b70c8 08-Jul-2010 Dan Gohman <gohman@apple.com> Revert 107840 107839 107813 107804 107800 107797 107791.
Debug info intrinsics win for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107850 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
LVMTargetMachine.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
f59514152511694d46ca8b8d2db466d256ab5759 08-Jul-2010 Dan Gohman <gohman@apple.com> Revert 107840 107839 107813 107804 107800 107797 107791.
Debug info intrinsics win for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107850 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
LVMTargetMachine.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
7a5dff91a3068ae6e2898db5814d6494fd1b13a8 08-Jul-2010 Jim Grosbach <grosbach@apple.com> When processing frame index virtual registers, consider all available registers
(if there are any) and use the one which remains available for the longest
rather than just using the first one. This should help enable better re-use
of the loaded frame index values. rdar://7318760



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107847 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
d9642faf7c66273eb3a8d99e5fa6b542da5374dd 08-Jul-2010 Jim Grosbach <grosbach@apple.com> When processing frame index virtual registers, consider all available registers
(if there are any) and use the one which remains available for the longest
rather than just using the first one. This should help enable better re-use
of the loaded frame index values. rdar://7318760



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107847 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
6421ef27c5ea03ae55e4cbaa4775242809f09d6e 08-Jul-2010 Dan Gohman <gohman@apple.com> Don't forward-declare registers for static allocas, which we'll
prefer to materialize as local constants. This fixes the clang
bootstrap abort.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107840 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
49dcb0f9ec865fd5474e5b552723adab2d7bf840 08-Jul-2010 Dan Gohman <gohman@apple.com> Don't forward-declare registers for static allocas, which we'll
prefer to materialize as local constants. This fixes the clang
bootstrap abort.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107840 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
ff6f2bc8452b9fed3bc951818fa1b5b62cb13862 08-Jul-2010 Dan Gohman <gohman@apple.com> Fix -fast-isel-abort to check the right instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107839 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
61b7cea126a0178045839093c98f7a75b6620b72 08-Jul-2010 Dan Gohman <gohman@apple.com> Fix -fast-isel-abort to check the right instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107839 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
82aaacec7c2d63a23febea743bba79186807dbec 08-Jul-2010 Devang Patel <dpatel@apple.com> One MDNode may be used to create regular DIE as well as abstract DIE.
Keep track of abstract subprogram DIEs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107822 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8aa61477e3cbc6ebc399274042799a5cf09629a1 08-Jul-2010 Devang Patel <dpatel@apple.com> One MDNode may be used to create regular DIE as well as abstract DIE.
Keep track of abstract subprogram DIEs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107822 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0284a60ee82d70fdd48c779caae72470cdae3643 08-Jul-2010 Evan Cheng <evan.cheng@apple.com> Move getExtLoad() and (some) getLoad() DebugLoc argument after EVT argument for consistency sake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107820 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
bcc8017c738e92d9c1af221b11c4916cb524184e 08-Jul-2010 Evan Cheng <evan.cheng@apple.com> Move getExtLoad() and (some) getLoad() DebugLoc argument after EVT argument for consistency sake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107820 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
0f532f2930ca2bcbd8ccdd6015cdbbe8f77da0cb 07-Jul-2010 Dan Gohman <gohman@apple.com> Not all custom inserters create new basic blocks. If the inserter
didn't create a new block, don't reset the insert position.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107813 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
5c480432b504bfbe8b3ba028f5f48e7e2e2f1f1e 07-Jul-2010 Dan Gohman <gohman@apple.com> Not all custom inserters create new basic blocks. If the inserter
didn't create a new block, don't reset the insert position.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107813 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
0f23f26115745426b34568a39acdb8d2f130c3ba 07-Jul-2010 Devang Patel <dpatel@apple.com> Rename couple of maps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107810 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
869aa463c82b1a9a92d3683d532fc106e2b96575 07-Jul-2010 Devang Patel <dpatel@apple.com> Rename couple of maps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107810 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
84afdd5f7b616d05f3dff952d8b84428884e3671 07-Jul-2010 Devang Patel <dpatel@apple.com> 80 cols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107807 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6140962aba758e758b04bd581bc6ef050f31549f 07-Jul-2010 Devang Patel <dpatel@apple.com> 80 cols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107807 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
34a97b220a7843f460ff3e700d81e5859f3cd50d 07-Jul-2010 Dan Gohman <gohman@apple.com> Implement bottom-up fast-isel. This has the advantage of not requiring
a separate DCE pass over MachineInstrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107804 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
4df83ed159f21fdf73a57729c3e9d8c9fcd73607 07-Jul-2010 Dan Gohman <gohman@apple.com> Implement bottom-up fast-isel. This has the advantage of not requiring
a separate DCE pass over MachineInstrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107804 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
002cc40ca6295586a9d71fb2dd9c7c3b37d0bac1 07-Jul-2010 Dan Gohman <gohman@apple.com> Add X86FastISel support for return statements. This entails refactoring
a bunch of stuff, to allow the target-independent calling convention
logic to be employed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107800 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
f423a69839c4810b890f8a8b09fb8cfbd6bf0139 07-Jul-2010 Dan Gohman <gohman@apple.com> Add X86FastISel support for return statements. This entails refactoring
a bunch of stuff, to allow the target-independent calling convention
logic to be employed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107800 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
c5d70bbbb306a822cc9f1713ab823f05fbff743b 07-Jul-2010 Dan Gohman <gohman@apple.com> Update the insert position after scheduling, which may change the
position when emitting multiple blocks when executing a custom
inserter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107797 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5fc3da0665c6dab92a4f21f34e75f9b929dc88d5 07-Jul-2010 Dan Gohman <gohman@apple.com> Update the insert position after scheduling, which may change the
position when emitting multiple blocks when executing a custom
inserter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107797 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fb582e2dbbe5652e50fd6023b5f58c77a23aa011 07-Jul-2010 Devang Patel <dpatel@apple.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107796 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
cc87bfb59b34a0543b48d93f661f2abaee6b4cee 07-Jul-2010 Devang Patel <dpatel@apple.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107796 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
a0b270b49bb302c67a37e9918ce8f9258489c916 07-Jul-2010 Dan Gohman <gohman@apple.com> Fix debugging strings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107795 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
643fffe429cc467584c795f6177741944729e0a5 07-Jul-2010 Dan Gohman <gohman@apple.com> Fix debugging strings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107795 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
29e8a67092e97687732a760db9a45094e5a63a7c 07-Jul-2010 Dan Gohman <gohman@apple.com> Give FunctionLoweringInfo an MBB member, avoiding the need to pass it
around everywhere, and also give it an InsertPt member, to enable isel
to operate at an arbitrary position within a block, rather than just
appending to a block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107791 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
eabaed26c3921453d824b71a93557c32132f4fdd 07-Jul-2010 Dan Gohman <gohman@apple.com> Give FunctionLoweringInfo an MBB member, avoiding the need to pass it
around everywhere, and also give it an InsertPt member, to enable isel
to operate at an arbitrary position within a block, rather than just
appending to a block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107791 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
d74a2f95daef7adbedd8758eaaf419ee788c78af 07-Jul-2010 Dan Gohman <gohman@apple.com> Simplify FastISel's constructor by giving it a FunctionLoweringInfo
instance, rather than pointers to all of FunctionLoweringInfo's
members.

This eliminates an NDEBUG ABI sensitivity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107789 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
a4160c3434b08288d1f79f1acbe453d1b9610b22 07-Jul-2010 Dan Gohman <gohman@apple.com> Simplify FastISel's constructor by giving it a FunctionLoweringInfo
instance, rather than pointers to all of FunctionLoweringInfo's
members.

This eliminates an NDEBUG ABI sensitivity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107789 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
27ba216a1c7405ff956c798758dcb1f3ae2bf51d 07-Jul-2010 Dan Gohman <gohman@apple.com> Move FunctionLoweringInfo.h out into include/llvm/CodeGen. This will
allow target-specific fast-isel code to make use of it directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107787 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
4c3fd9f92f89810d659973d2666ab729758de64a 07-Jul-2010 Dan Gohman <gohman@apple.com> Move FunctionLoweringInfo.h out into include/llvm/CodeGen. This will
allow target-specific fast-isel code to make use of it directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107787 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
f53e8cd8b1639a358a97deaea7ee5abae7c560ad 07-Jul-2010 Dan Gohman <gohman@apple.com> Split the SDValue out of OutputArg so that SelectionDAG-independent
code can do calling-convention queries. This obviates OutputArgReg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107786 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
electionDAG/SelectionDAGBuilder.cpp
c9403659a98bf6487ab6fbf40b81628b5695c02e 07-Jul-2010 Dan Gohman <gohman@apple.com> Split the SDValue out of OutputArg so that SelectionDAG-independent
code can do calling-convention queries. This obviates OutputArgReg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107786 91177308-0d34-0410-b5e6-96231b3b80d8
allingConvLower.cpp
electionDAG/SelectionDAGBuilder.cpp
89023e9437883ef7de1b45671d85c62148a86e49 07-Jul-2010 Dan Gohman <gohman@apple.com> Move CallingConvLower.cpp out of the SelectionDAG directory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107781 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
allingConvLower.cpp
electionDAG/CMakeLists.txt
electionDAG/CallingConvLower.cpp
2f2b0abbac946a6e37ffa4a9775f0af5b91e723c 07-Jul-2010 Dan Gohman <gohman@apple.com> Move CallingConvLower.cpp out of the SelectionDAG directory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107781 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
allingConvLower.cpp
electionDAG/CMakeLists.txt
electionDAG/CallingConvLower.cpp
9594c1e1bc0e0b3dba1957cb6a95497ab1165b82 07-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix more places assuming subregisters have live intervals

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107780 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
fcb4ccd7aa674dba05f50de4083944efef6610d3 07-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix more places assuming subregisters have live intervals

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107780 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
1dc212a2004ab8e28c35d47202d010306cd032c0 07-Jul-2010 Dan Gohman <gohman@apple.com> Add a getFirstNonPHI utility function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107778 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
d463a7446402f0771465fe66fe0a7d9f72534902 07-Jul-2010 Dan Gohman <gohman@apple.com> Add a getFirstNonPHI utility function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107778 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
205f02e47fa577e263b11fd132c36c378303b243 07-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Remove references to INSERT_SUBREG after de-SSA" r107725.

Buildbot breakage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107744 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
owerSubregs.cpp
rocessImplicitDefs.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
woAddressInstructionPass.cpp
4b76ffc1ffca2ed016467e916d5223515b485592 07-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Remove references to INSERT_SUBREG after de-SSA" r107725.

Buildbot breakage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107744 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
owerSubregs.cpp
rocessImplicitDefs.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
woAddressInstructionPass.cpp
fb695a291ec7ad5be9f4c13eb7df14c903d4ad15 07-Jul-2010 Jim Grosbach <grosbach@apple.com> By default, the eh.sjlj.setjmp/longjmp intrinsics should just do nothing rather
than assuming a target will custom lower them. Targets which do so should
exlicitly mark them as having custom lowerings. PR7454.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107734 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c66e150b2cb1f2f8e2f4eb124b9177ffc6ef3a74 07-Jul-2010 Jim Grosbach <grosbach@apple.com> By default, the eh.sjlj.setjmp/longjmp intrinsics should just do nothing rather
than assuming a target will custom lower them. Targets which do so should
exlicitly mark them as having custom lowerings. PR7454.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107734 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5f2e4f2abbefe50ff5d7c7fa870b583db4871922 07-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove references to INSERT_SUBREG after de-SSA

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107732 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
owerSubregs.cpp
rocessImplicitDefs.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
woAddressInstructionPass.cpp
d3b376b4483d816367dd28a41bcbccede1cdcbf0 07-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove references to INSERT_SUBREG after de-SSA

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107732 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
owerSubregs.cpp
rocessImplicitDefs.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
woAddressInstructionPass.cpp
b8c57c8a979c5b5e0176b0027019f1b574b1af27 07-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Convert INSERT_SUBREG to COPY in TwoAddressInstructionPass.

INSERT_SUBREG will now only appear in SSA machine instructions.

Fix the handling of partial redefs in ProcessImplicitDefs. This is now relevant
since partial redef COPY instructions appear.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107726 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
rocessImplicitDefs.cpp
woAddressInstructionPass.cpp
ed2185e171a86b8c0e166803fd4066383a6cff08 07-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Convert INSERT_SUBREG to COPY in TwoAddressInstructionPass.

INSERT_SUBREG will now only appear in SSA machine instructions.

Fix the handling of partial redefs in ProcessImplicitDefs. This is now relevant
since partial redef COPY instructions appear.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107726 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
rocessImplicitDefs.cpp
woAddressInstructionPass.cpp
42682b49e727d6c668372d8aa644811105741962 07-Jul-2010 Dan Gohman <gohman@apple.com> CanLowerReturn doesn't need a SelectionDAG; it just needs an LLVMContext.

SelectBasicBlock doesn't needs its BasicBlock argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
c9af33c6854afe7b082af2d892ec5f05dfa383c7 07-Jul-2010 Dan Gohman <gohman@apple.com> CanLowerReturn doesn't need a SelectionDAG; it just needs an LLVMContext.

SelectBasicBlock doesn't needs its BasicBlock argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
de09e922a6a82ff48d31328606f691591ae8fa19 07-Jul-2010 Devang Patel <dpatel@apple.com> Propagate debug loc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107710 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
0d881dabc1a4e1aefad6dd38de166d8358285638 07-Jul-2010 Devang Patel <dpatel@apple.com> Propagate debug loc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107710 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
daa41b4ed9f6828f017691815f79447de913e4eb 06-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> One more case assuming that subregs have live ranges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107700 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5ee99923c1d4cb92b6cbdf6406c0df86ccbcc4df 06-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> One more case assuming that subregs have live ranges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107700 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
3371cce92f3c640cf4f2330d02281ffba41f82c7 06-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix buildbot breakage where a def is missing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107698 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
813eedd2072edc2db3ca8c5306f7f269d372f45a 06-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix buildbot breakage where a def is missing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107698 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
35d76110c9d9b3955ff2f4f541658d4e01e57e44 06-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more forgiving when calculating alias interference for physreg coalescing.

It is OK for an alias live range to overlap if there is a copy to or from the
physical register. CoalescerPair can work out if the copy is coalescable
independently of the alias.

This means that we can join with the actual destination interval instead of
using the getOrigDstReg() hack. It is no longer necessary to merge clobber
ranges into subregisters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107695 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
9c2e7ca3513bf41ad4dd9ff807e0d2742f592722 06-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more forgiving when calculating alias interference for physreg coalescing.

It is OK for an alias live range to overlap if there is a copy to or from the
physical register. CoalescerPair can work out if the copy is coalescable
independently of the alias.

This means that we can join with the actual destination interval instead of
using the getOrigDstReg() hack. It is no longer necessary to merge clobber
ranges into subregisters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107695 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
3dd527d9807fa0c5f81fbbf92858e0362226b327 06-Jul-2010 Dan Gohman <gohman@apple.com> Reapply r107655 with fixes; insert the pseudo instruction into
the block before calling the expansion hook. And don't
put EFLAGS in a mbb's live-in list twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107691 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
electionDAG/InstrEmitter.cpp
14152b480d09c7ca912af7c06d00b0ff3912e4f5 06-Jul-2010 Dan Gohman <gohman@apple.com> Reapply r107655 with fixes; insert the pseudo instruction into
the block before calling the expansion hook. And don't
put EFLAGS in a mbb's live-in list twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107691 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
electionDAG/InstrEmitter.cpp
576bd0a9c1b476b98c06599234cea8ea62067765 06-Jul-2010 Eric Christopher <echristo@apple.com> Fix to 80-col.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107684 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
894339e19fbb45a729008decd1d050ee518589a4 06-Jul-2010 Eric Christopher <echristo@apple.com> Fix to 80-col.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107684 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
8d338e2aadd188d85c27555b7656012876dc25a4 06-Jul-2010 Chris Lattner <sabre@nondot.org> tighten up this code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107670 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
f8bd392dce26226249b99bc1fa8d112602da3e63 06-Jul-2010 Chris Lattner <sabre@nondot.org> tighten up this code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107670 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
17ce26121c7897de51b0206bf012c32e2f2cc53a 06-Jul-2010 Dan Gohman <gohman@apple.com> Revert r107655.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107668 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
258c58cc6257cf61c9bdbb9c4cea67ba2691adf0 06-Jul-2010 Dan Gohman <gohman@apple.com> Revert r107655.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107668 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
d00b3e5a1dcdc5b1b6af951ef43a51215b3353c4 06-Jul-2010 Dan Gohman <gohman@apple.com> Add versions of OutputArgReg, AnalyzeReturn, and AnalyzeCallOperands
which do not depend on SelectionDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107666 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
aa8c19405ac3891ee7fbea1a509c6774ca7a5b59 06-Jul-2010 Dan Gohman <gohman@apple.com> Add versions of OutputArgReg, AnalyzeReturn, and AnalyzeCallOperands
which do not depend on SelectionDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107666 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
0957314cf283ecff14b085645bc3e9f31f7cd680 06-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix a major regression on COFF targets introduced by r103267: 'discardable' section means that it is used only during the program load and can be discarded afterwards.
This way *only* debug sections can be discarded, but not the opposite. Seems like the copy-and-pasto from ELF code, since there it contains the reverse flag ('alloc').

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107658 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
36335be3b95f856b7eb7e0766e01ba423315e1ab 06-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix a major regression on COFF targets introduced by r103267: 'discardable' section means that it is used only during the program load and can be discarded afterwards.
This way *only* debug sections can be discarded, but not the opposite. Seems like the copy-and-pasto from ELF code, since there it contains the reverse flag ('alloc').

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107658 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
56f3378de6b873302cbf2f69582b29811cfd919b 06-Jul-2010 Dan Gohman <gohman@apple.com> Fix a bunch of custom-inserter functions to handle the case where
the pseudo instruction is not at the end of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107655 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
b81c771c0d9ab5a980caf3383932b051eafd1a39 06-Jul-2010 Dan Gohman <gohman@apple.com> Fix a bunch of custom-inserter functions to handle the case where
the pseudo instruction is not at the end of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107655 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
2c36e55d3f9bd31b94aa3d7d0116726e8f94cc61 06-Jul-2010 Eric Christopher <echristo@apple.com> Fix up -fstack-protector on linux to use the segment
registers. Split out testcases per architecture and os
now.

Patch from Nelson Elhage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107640 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
f7a0c7bf8bc8318ed28d889c9a56437ab3e91385 06-Jul-2010 Eric Christopher <echristo@apple.com> Fix up -fstack-protector on linux to use the segment
registers. Split out testcases per architecture and os
now.

Patch from Nelson Elhage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107640 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
062eb0cf4c787f574211dc3a80b45a77ab57514b 05-Jul-2010 Chris Lattner <sabre@nondot.org> more tidying.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107615 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
32b4b5aea6dc38ac5aaff56fc717aebf188e39c9 05-Jul-2010 Chris Lattner <sabre@nondot.org> more tidying.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107615 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
81fa5fa294acd98d86c9f59b102c342c93260390 05-Jul-2010 Chris Lattner <sabre@nondot.org> random tidying


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107612 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
598751ed2544291ba623e013b4e0b61bf56ca9c4 05-Jul-2010 Chris Lattner <sabre@nondot.org> random tidying


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107612 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
7e8c0dc8db3dec3ddb2c2c0aa593b16fe97fd3d4 05-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print symbolic subreg indices on REG_SEQUENCE and INSERT_SUBREG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107602 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b1e11455d1cf4df081a9593660d194c1a53b4334 05-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print symbolic subreg indices on REG_SEQUENCE and INSERT_SUBREG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107602 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
fdceec266f9efd7c1c7ba6a4a3027e935538e932 04-Jul-2010 Evan Cheng <evan.cheng@apple.com> Infer alignments of fixed frame objects when they are constructed. This ensures remat'ed loads from fixed slots have the right alignments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107591 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAG.cpp
f2f490368797fff899e8025133f10c37e3a2ebe5 04-Jul-2010 Evan Cheng <evan.cheng@apple.com> Infer alignments of fixed frame objects when they are constructed. This ensures remat'ed loads from fixed slots have the right alignments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107591 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAG.cpp
b6a40f48353acccac9fe0be0992f3a6d0f6bf202 04-Jul-2010 Bill Wendling <isanbard@gmail.com> Proper indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107581 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d9cb7ca388c400e3c7a509c00d4cf63031de0dde 04-Jul-2010 Bill Wendling <isanbard@gmail.com> Proper indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107581 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b336f9b4deb8c3dc9c6d867112c8409638a3fd17 03-Jul-2010 Eric Christopher <echristo@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107556 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
00e840f4698633123ca799493c54f67ae20756df 03-Jul-2010 Eric Christopher <echristo@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107556 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
9ff54089b59fb811a3530cf96ebb5c946cbb140f 03-Jul-2010 Evan Cheng <evan.cheng@apple.com> Remove isSS argument from CreateFixedObject. Fixed objects cannot be spill slots so it's always false.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107550 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
ed2ae136d29dd36122d2476801e7d7a86e8301e3 03-Jul-2010 Evan Cheng <evan.cheng@apple.com> Remove isSS argument from CreateFixedObject. Fixed objects cannot be spill slots so it's always false.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107550 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
a87d098f0f4caff32ab45a5ad8653c1a4d4c3a8e 03-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Detect and handle COPY in many places.

This code is transitional, it will soon be possible to eliminate
isExtractSubreg, isInsertSubreg, and isMoveInstr in most places.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107547 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineCSE.cpp
ptimizePHIs.cpp
reAllocSplitting.cpp
rocessImplicitDefs.cpp
egAllocFast.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
273f7e42994a5bce0614d04d96dbfdf05fd652e5 03-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Detect and handle COPY in many places.

This code is transitional, it will soon be possible to eliminate
isExtractSubreg, isInsertSubreg, and isMoveInstr in most places.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107547 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineCSE.cpp
ptimizePHIs.cpp
reAllocSplitting.cpp
rocessImplicitDefs.cpp
egAllocFast.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
1e8deafc52f6b2e25fe155866eb7247317724936 03-Jul-2010 Eric Christopher <echristo@apple.com> 80-col fixup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107537 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
cd075a4fb3b3ff52c68903540e1540b68500df4c 03-Jul-2010 Eric Christopher <echristo@apple.com> 80-col fixup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107537 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
6f754853956e1dc90236b64ffc5c5d00aea6da10 03-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a new target independent COPY instruction and code to lower it.

The COPY instruction is intended to replace the target specific copy
instructions for virtual registers as well as the EXTRACT_SUBREG and
INSERT_SUBREG instructions in MachineFunctions. It won't we used in a selection
DAG.

COPY is lowered to native register copies by LowerSubregs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107529 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
a4e1ba53ddedd08669886b2849926bb33facc198 03-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a new target independent COPY instruction and code to lower it.

The COPY instruction is intended to replace the target specific copy
instructions for virtual registers as well as the EXTRACT_SUBREG and
INSERT_SUBREG instructions in MachineFunctions. It won't we used in a selection
DAG.

COPY is lowered to native register copies by LowerSubregs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107529 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
3532d72bae536ecc7f59a9dc83689a8b7c219207 02-Jul-2010 Jim Grosbach <grosbach@apple.com> Custom inserters (e.g., conditional moves in Thumb1 can introduce
new basic blocks, and if used as a function argument, that can cause call frame
setup / destroy pairs to be split across a basic block boundary. That prevents
us from doing a simple assertion to check that the pairs match and alloc/
dealloc the same amount of space. Modify the assertion to only check the
amount allocated when there are matching pairs in the same basic block.

rdar://8022442

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107517 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
6627ac040a14f3a79564fd6ec030f9361f81d20e 02-Jul-2010 Jim Grosbach <grosbach@apple.com> Custom inserters (e.g., conditional moves in Thumb1 can introduce
new basic blocks, and if used as a function argument, that can cause call frame
setup / destroy pairs to be split across a basic block boundary. That prevents
us from doing a simple assertion to check that the pairs match and alloc/
dealloc the same amount of space. Modify the assertion to only check the
amount allocated when there are matching pairs in the same basic block.

rdar://8022442

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107517 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
4cb1de56a6ed9c5d12360773ea32cd8e8b635e7f 02-Jul-2010 Evan Cheng <evan.cheng@apple.com> - Two-address pass should not assume unfolding is always successful.
- X86 unfolding should check if the instructions being unfolded has memoperands.
If there is no memoperands, then it must assume conservative alignment. If this
would introduce an expensive sse unaligned load / store, then unfoldMemoryOperand
etc. should not unfold the instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107509 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
98ec91ea80e042907aac8d3cbd9614d29f6cba45 02-Jul-2010 Evan Cheng <evan.cheng@apple.com> - Two-address pass should not assume unfolding is always successful.
- X86 unfolding should check if the instructions being unfolded has memoperands.
If there is no memoperands, then it must assume conservative alignment. If this
would introduce an expensive sse unaligned load / store, then unfoldMemoryOperand
etc. should not unfold the instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107509 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
908c105be3c4c20123d2d45f434386039aada840 02-Jul-2010 Dale Johannesen <dalej@apple.com> Propagate the AlignStack bit in InlineAsm's to the
PrologEpilog code, and use it to determine whether
the asm forces stack alignment or not. gcc consistently
does not do this for GCC-style asms; Apple gcc inconsistently
sometimes does it for asm blocks. There is no
convenient place to put a bit in either the SDNode or
the MachineInstr form, so I've added an extra operand
to each; unlovely, but it does allow for expansion for
more bits, should we need it. PR 5125. Some
existing testcases are affected.
The operand lists of the SDNode and MachineInstr forms
are indexed with awesome mnemonics, like "2"; I may
fix this someday, but not now. I'm not making it any
worse. If anyone is inspired I think you can find all
the right places from this patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107506 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
achineInstr.cpp
rologEpilogInserter.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
f1e309eb4862459a76445942ba4dafc433b6f317 02-Jul-2010 Dale Johannesen <dalej@apple.com> Propagate the AlignStack bit in InlineAsm's to the
PrologEpilog code, and use it to determine whether
the asm forces stack alignment or not. gcc consistently
does not do this for GCC-style asms; Apple gcc inconsistently
sometimes does it for asm blocks. There is no
convenient place to put a bit in either the SDNode or
the MachineInstr form, so I've added an extra operand
to each; unlovely, but it does allow for expansion for
more bits, should we need it. PR 5125. Some
existing testcases are affected.
The operand lists of the SDNode and MachineInstr forms
are indexed with awesome mnemonics, like "2"; I may
fix this someday, but not now. I'm not making it any
worse. If anyone is inspired I think you can find all
the right places from this patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107506 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
achineInstr.cpp
rologEpilogInserter.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
4bfd5155632750ee51cf7b29cf1320b0fa12dd6d 02-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove invalid assert

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107505 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
6bae55017c49e59746a65cef2513f031bbcebfce 02-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove invalid assert

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107505 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
917990fb72dca7c91b04232629f6cd5f1b9b4382 02-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly handle debug values during inline spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107503 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
3b9c7ebc444ccc311a5e4125b904f9767244577a 02-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly handle debug values during inline spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107503 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
2729776a6786af81ccc2ff9e60fa5d20c4247407 02-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Rematerialize as much as possible before inserting spills and reloads.

This allows us to recognize the common case where all uses could be
rematerialized, and no stack slot allocation is necessary.

If some values could be fully rematerialized, remove them from the live range
before allocating a stack slot for the rest.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107492 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
8de3b1eb868fc5e9b6acb334ee487d943863f810 02-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Rematerialize as much as possible before inserting spills and reloads.

This allows us to recognize the common case where all uses could be
rematerialized, and no stack slot allocation is necessary.

If some values could be fully rematerialized, remove them from the live range
before allocating a stack slot for the rest.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107492 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
32a1ca986d7ea7912e00ae57f78b921b62837462 02-Jul-2010 Jim Grosbach <grosbach@apple.com> 80-column and trailing whitespace cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107490 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6e9926108a69efbc11f1cadf947e98500e4d4228 02-Jul-2010 Jim Grosbach <grosbach@apple.com> 80-column and trailing whitespace cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107490 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cafd7221ff055706e108f6c2d992bacb6b97f8e9 02-Jul-2010 Jim Grosbach <grosbach@apple.com> grammar tweaks

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ee7f8b5f058174a55372159bc23088198e5f5991 02-Jul-2010 Jim Grosbach <grosbach@apple.com> grammar tweaks

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7831c925340089b721aa1c93f30e6b407024d56a 02-Jul-2010 Dan Gohman <gohman@apple.com> Rename CreateReg to CreateRegs, and MakeReg to CreateReg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107451 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
89496d0eb73ab8771b27b3d9c1db6492d8eefc3a 02-Jul-2010 Dan Gohman <gohman@apple.com> Rename CreateReg to CreateRegs, and MakeReg to CreateReg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107451 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
73b3a72bb9b93a3d33b490fd415c2c186a4f2035 02-Jul-2010 Bill Wendling <isanbard@gmail.com> Make the "linker_private" linkage type emit a non-weak symbol to the file. It
will still be stripped by the linker when it generates the final image.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107440 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
eabd735c9a87203a567caf1ef117aeae9d288aaa 02-Jul-2010 Bill Wendling <isanbard@gmail.com> Make the "linker_private" linkage type emit a non-weak symbol to the file. It
will still be stripped by the linker when it generates the final image.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107440 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f823966e3fdbd57c5f85cc1ce856c7435c474bf4 01-Jul-2010 Bill Wendling <isanbard@gmail.com> Implement the "linker_private_weak" linkage type. This will be used for
Objective-C metadata types which should be marked as "weak", but which the
linker will remove upon final linkage. However, this linkage isn't specific to
Objective-C.

For example, the "objc_msgSend_fixup_alloc" symbol is defined like this:

.globl l_objc_msgSend_fixup_alloc
.weak_definition l_objc_msgSend_fixup_alloc
.section __DATA, __objc_msgrefs, coalesced
.align 3
l_objc_msgSend_fixup_alloc:
.quad _objc_msgSend_fixup
.quad L_OBJC_METH_VAR_NAME_1

This is different from the "linker_private" linkage type, because it can't have
the metadata defined with ".weak_definition".

Currently only supported on Darwin platforms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107433 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5e721d768254a920b78b9129d79a84c0163cb3f4 01-Jul-2010 Bill Wendling <isanbard@gmail.com> Implement the "linker_private_weak" linkage type. This will be used for
Objective-C metadata types which should be marked as "weak", but which the
linker will remove upon final linkage. However, this linkage isn't specific to
Objective-C.

For example, the "objc_msgSend_fixup_alloc" symbol is defined like this:

.globl l_objc_msgSend_fixup_alloc
.weak_definition l_objc_msgSend_fixup_alloc
.section __DATA, __objc_msgrefs, coalesced
.align 3
l_objc_msgSend_fixup_alloc:
.quad _objc_msgSend_fixup
.quad L_OBJC_METH_VAR_NAME_1

This is different from the "linker_private" linkage type, because it can't have
the metadata defined with ".weak_definition".

Currently only supported on Darwin platforms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107433 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c7be3133a7438d16d32c98d532fe78143f4d8745 01-Jul-2010 Devang Patel <dpatel@apple.com> Do not require line number entry for undefined local variable.
This is a regression caused by r106792 and caught by gdb testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107430 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7fb231cbecb18634ef4af8d87ab82b6987f664d8 01-Jul-2010 Devang Patel <dpatel@apple.com> Do not require line number entry for undefined local variable.
This is a regression caused by r106792 and caught by gdb testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107430 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
58b651de4926fb540218be70049c896d0ec53bb9 01-Jul-2010 Daniel Dunbar <daniel@zuster.org> MC: Pass the target instance to the AsmParser constructor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107426 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
9186fa6b0c8806786cae78bed50f95d1c7ce2b00 01-Jul-2010 Daniel Dunbar <daniel@zuster.org> MC: Pass the target instance to the AsmParser constructor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107426 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
9e6742e75a3828fe4ccad95cde287c9dab159cf5 01-Jul-2010 Daniel Dunbar <daniel@zuster.org> MC: Move COFF enumeration constants to llvm/Support/COFF.h, patch by Michael
Spencer!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107418 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
94610588af55ae7d16ba7d72d1e68324631ec249 01-Jul-2010 Daniel Dunbar <daniel@zuster.org> MC: Move COFF enumeration constants to llvm/Support/COFF.h, patch by Michael
Spencer!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107418 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
21baf9a969a3edf80b3bc5206308963ee7ed93fb 01-Jul-2010 Dan Gohman <gohman@apple.com> Temporarily disable on-demand fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107393 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
electionDAG/SelectionDAGISel.cpp
63b95a6f820d768797b28bbfd5c12fabf74b7f1d 01-Jul-2010 Dan Gohman <gohman@apple.com> Temporarily disable on-demand fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107393 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
electionDAG/SelectionDAGISel.cpp
4852d8012f8dd3f14a3c1f2c5a21d2e09ff0b6af 01-Jul-2010 Dan Gohman <gohman@apple.com> Use FuncInfo's isExportedInst accessor method instead of
doing the work manually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c6f00e701e744fdf73508d47ff0cc75817ba8474 01-Jul-2010 Dan Gohman <gohman@apple.com> Use FuncInfo's isExportedInst accessor method instead of
doing the work manually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
da3b71300d42cc705f31a4382f6d9a3a36ea450f 01-Jul-2010 Dan Gohman <gohman@apple.com> Rename CreateRegForValue to CreateReg, and change its argument
from a Value to a Type, because it doesn't actually care about
the Value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
ffda6bac113d4c079b534b1bfa7aea5498ee3e83 01-Jul-2010 Dan Gohman <gohman@apple.com> Rename CreateRegForValue to CreateReg, and change its argument
from a Value to a Type, because it doesn't actually care about
the Value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
eef01c1f7105bdcda88be806454bd3f58882aac6 01-Jul-2010 Dan Gohman <gohman@apple.com> Fast isel no longer needs DeadMachineInstrElim to clean up after it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107381 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
a528bc0e8af8e4d70ba03e03319cce7c5775e4ea 01-Jul-2010 Dan Gohman <gohman@apple.com> Fast isel no longer needs DeadMachineInstrElim to clean up after it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107381 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ece06e65c9d40925651216845e0d731d5365d2e3 01-Jul-2010 Dan Gohman <gohman@apple.com> Teach fast-isel to avoid loading a value from memory when it's already
available in a register. This is pretty primitive, but it reduces the
number of instructions in common testcases by 4%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
7fbcc98f20c062273bf16ce9832f40e5b8a205c6 01-Jul-2010 Dan Gohman <gohman@apple.com> Teach fast-isel to avoid loading a value from memory when it's already
available in a register. This is pretty primitive, but it reduces the
number of instructions in common testcases by 4%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
ab845e29e214cb54adaa26e719fc498eb4e7ec90 01-Jul-2010 Dan Gohman <gohman@apple.com> Enable on-demand fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107377 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
20d4be151b54feb18aa1e5cc04033a4aa64137ae 01-Jul-2010 Dan Gohman <gohman@apple.com> Enable on-demand fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107377 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
783c3f3620fe7ba0077c078ce66fe60300325415 01-Jul-2010 Dan Gohman <gohman@apple.com> Reapply r106422, splitting the code for materializing a value out of
SelectionDAGBuilder::getValue into a helper function, with fixes to
use DenseMaps safely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
28a173581c67cda78b2febd24d10edb13f760c4c 01-Jul-2010 Dan Gohman <gohman@apple.com> Reapply r106422, splitting the code for materializing a value out of
SelectionDAGBuilder::getValue into a helper function, with fixes to
use DenseMaps safely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
d9ce03f61cea9dc486bde67a2d256611bc74ea00 01-Jul-2010 Dan Gohman <gohman@apple.com> Don't use operator[] here, because it's not desirable to insert a default
value if the search fails.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107368 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c25ad637662ec24880a7eadad69b1be311ea61ae 01-Jul-2010 Dan Gohman <gohman@apple.com> Don't use operator[] here, because it's not desirable to insert a default
value if the search fails.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107368 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
652afaf8b379e44021fe9d64ca8e401c793a3be6 01-Jul-2010 Mikhail Glushenkov <foldr@codedgers.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107360 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
dd2ad8432f104282ff43c94457f474ea0a264175 01-Jul-2010 Mikhail Glushenkov <foldr@codedgers.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107360 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
651acac957560649e4b349bf0766a71f201f9fbf 01-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add memory operand folding support to InlineSpiller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107355 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
e72a5c5e2e3d09ef02bae00620d499d3e59c8a7f 01-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add memory operand folding support to InlineSpiller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107355 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
5cffd801c77dac1bca59ff953c8b98106f26e9a8 01-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add support for rematerialization to InlineSpiller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107351 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
piller.h
9e55afbf88f4853ac94b6a0ac021a89c5c929d6b 01-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add support for rematerialization to InlineSpiller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107351 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
piller.h
d7cc7fe8c3e19967292c240d9b176a9e6ccdc7fc 01-Jul-2010 Bill Wendling <isanbard@gmail.com> Use the catch-all selectors we already found when converting them to use the
correct catch-all value. This saves having to iterate through all of the
selectors in the program again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107345 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
d9e3b2b547ea4edcf51b2d4a21bcc05ba10e4ef8 01-Jul-2010 Bill Wendling <isanbard@gmail.com> Use the catch-all selectors we already found when converting them to use the
correct catch-all value. This saves having to iterate through all of the
selectors in the program again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107345 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
6c1547368f10302df81ea55ede12db645284f872 01-Jul-2010 Jim Grosbach <grosbach@apple.com> Handle array and vector typed parameters in sjljehprepare like we do
structs. rdar://8145832

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107332 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
e70fc8ea6427934ee780db68d72aca07c629e0cd 01-Jul-2010 Jim Grosbach <grosbach@apple.com> Handle array and vector typed parameters in sjljehprepare like we do
structs. rdar://8145832

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107332 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
97d5c397efa7d205f2726f903d78f312d21c3c56 30-Jun-2010 Jim Grosbach <grosbach@apple.com> grammar tweak in comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107321 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
d27946d1d4272d7e2bbee00fac020dc8147dfd25 30-Jun-2010 Jim Grosbach <grosbach@apple.com> grammar tweak in comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107321 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
5d60d231feb5e098d4fafc015ee3e971b0c42314 30-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Some fool committed without testing (or even building) first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107307 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
d540801e13d1aef4f074f8c32115f55104130e28 30-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Some fool committed without testing (or even building) first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107307 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
1a055fc3c3033bce92c276f0a3b3d487ca258f02 30-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to track spill slot uses in VirtRegMap when inserting loads and stores.
LocalRewriter::runOnMachineFunction uses this information to mark dead spill
slots.

This means that InlineSpiller now also works for functions that spill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107302 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
piller.cpp
61e4a0bc10fa1d36d58935d42d248180993d65bb 30-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to track spill slot uses in VirtRegMap when inserting loads and stores.
LocalRewriter::runOnMachineFunction uses this information to mark dead spill
slots.

This means that InlineSpiller now also works for functions that spill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107302 91177308-0d34-0410-b5e6-96231b3b80d8
nlineSpiller.cpp
piller.cpp
e10f14bdfc65ef0f752c913eb41a1b6cfc9993e9 30-Jun-2010 Duncan Sands <baldrick@free.fr> Remove an unused variable. The call to getRoot has side-effects, so
this could break something (but doesn't seem to).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107295 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3f278ce9997c1885d302afb24619ee4d9c8707e5 30-Jun-2010 Duncan Sands <baldrick@free.fr> Remove an unused variable. The call to getRoot has side-effects, so
this could break something (but doesn't seem to).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107295 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
27265c6024e8e030368af774a37e81d5f7b02a44 30-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107282 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
e767e6bbb78dae999040a6123d2314a7ed11a5c4 30-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107282 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
a8c1d34c5e4722e4385838f04deb50bde8a06a7f 30-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
37387d52883ac7f99826ba627fbda9d180e6656b 30-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f292c8747cbcdfc0189b00c794b9f2307172c234 30-Jun-2010 Gabor Greif <ggreif@gmail.com> use CallSite::arg_end instead of CallInst::op_end

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107276 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
d0fcab915441c0748667ef981ef85989abd28b11 30-Jun-2010 Gabor Greif <ggreif@gmail.com> use CallSite::arg_end instead of CallInst::op_end

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107276 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
84e15a88a41aedb501b2e27a552e69e8ca33541e 30-Jun-2010 John Mosby <ojomojo@gmail.com> Remove trailing whitespace, no functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107244 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
9f71f801b51cdc7df388b2693398cfea69fe67c7 30-Jun-2010 John Mosby <ojomojo@gmail.com> Remove trailing whitespace, no functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107244 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
a6aad8be44ec7487e73b6f039bc4725fef560cf8 30-Jun-2010 Devang Patel <dpatel@apple.com> Do not construct DIE for already processed MDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107237 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
90e19aad7dae346a7dc1a66f07bfe13038e67349 30-Jun-2010 Devang Patel <dpatel@apple.com> Do not construct DIE for already processed MDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107237 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
21958edc58067efccbe30899ac674df6a68ced6b 30-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use skipInstruction() as a simpler way of iterating over instructions using SrcReg

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107234 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
170c41f3d50b7172437d90895a033daeb8d7563a 30-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use skipInstruction() as a simpler way of iterating over instructions using SrcReg

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107234 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d14f306eb1061fa6cba9f6f1ddd26b1cb35e56b6 30-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use clEnumValN macro to work around keyword clash

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107233 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
d5bd68ed08a414b00721c3c556459d0f295ea4d5 30-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use clEnumValN macro to work around keyword clash

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107233 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
014bba213336acc237d464d594d8dd9fb865e0da 30-Jun-2010 Devang Patel <dpatel@apple.com> Add variables into a scope before constructing scope DIE otherwise variables won't be included DIE tree.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107228 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1d68d21bae7602fd1e561a85de9a736dc16eb3e2 30-Jun-2010 Devang Patel <dpatel@apple.com> Add variables into a scope before constructing scope DIE otherwise variables won't be included DIE tree.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107228 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c5d099bb328827d677c2af983ac7b22d953749e3 30-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Begin implementation of an inline spiller.

InlineSpiller inserts loads and spills immediately instead of deferring to
VirtRegMap. This is possible now because SlotIndexes allows instructions to be
inserted and renumbered.

This is work in progress, and is mostly a copy of TrivialSpiller so far. It
works very well for functions that don't require spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107227 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
nlineSpiller.cpp
piller.cpp
914f2ff9e6969214d84a75745ec2851f045000f7 30-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Begin implementation of an inline spiller.

InlineSpiller inserts loads and spills immediately instead of deferring to
VirtRegMap. This is possible now because SlotIndexes allows instructions to be
inserted and renumbered.

This is work in progress, and is mostly a copy of TrivialSpiller so far. It
works very well for functions that don't require spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107227 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
nlineSpiller.cpp
piller.cpp
e066d26445ddf4114e2738021273126206cc4822 30-Jun-2010 Bill Wendling <isanbard@gmail.com> Revert r107205 and r107207.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107215 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
argetLoweringObjectFileImpl.cpp
07d317711781d8c9268f7d6afcf1ba7eadf1d127 30-Jun-2010 Bill Wendling <isanbard@gmail.com> Revert r107205 and r107207.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107215 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
argetLoweringObjectFileImpl.cpp
abb79d9b00c05bee279441be7e3a12ab12743965 30-Jun-2010 Devang Patel <dpatel@apple.com> Print InlinedAt location.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107214 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e025e966a863229feb7ad188f520ce213bb30a34 30-Jun-2010 Devang Patel <dpatel@apple.com> Print InlinedAt location.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107214 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2fce0c9f2e1a59313a509ac2cdc5499dc0f3f7e3 29-Jun-2010 Devang Patel <dpatel@apple.com> Print InlinedAt location.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107208 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
da0e89f4c4057114fe7236fd001e9ef6d836ee82 29-Jun-2010 Devang Patel <dpatel@apple.com> Print InlinedAt location.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107208 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f8b6137ea514c38511dbeedde9c02e27c937cad3 29-Jun-2010 Bill Wendling <isanbard@gmail.com> Introducing the "linker_weak" linkage type. This will be used for Objective-C
metadata types which should be marked as "weak", but which the linker will
remove upon final linkage. For example, the "objc_msgSend_fixup_alloc" symbol is
defined like this:

.globl l_objc_msgSend_fixup_alloc
.weak_definition l_objc_msgSend_fixup_alloc
.section __DATA, __objc_msgrefs, coalesced
.align 3
l_objc_msgSend_fixup_alloc:
.quad _objc_msgSend_fixup
.quad L_OBJC_METH_VAR_NAME_1

This is different from the "linker_private" linkage type, because it can't have
the metadata defined with ".weak_definition".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107205 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
argetLoweringObjectFileImpl.cpp
207855cff9b4811004b9720f28a5bd0adf3784b7 29-Jun-2010 Bill Wendling <isanbard@gmail.com> Introducing the "linker_weak" linkage type. This will be used for Objective-C
metadata types which should be marked as "weak", but which the linker will
remove upon final linkage. For example, the "objc_msgSend_fixup_alloc" symbol is
defined like this:

.globl l_objc_msgSend_fixup_alloc
.weak_definition l_objc_msgSend_fixup_alloc
.section __DATA, __objc_msgrefs, coalesced
.align 3
l_objc_msgSend_fixup_alloc:
.quad _objc_msgSend_fixup
.quad L_OBJC_METH_VAR_NAME_1

This is different from the "linker_private" linkage type, because it can't have
the metadata defined with ".weak_definition".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107205 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
argetLoweringObjectFileImpl.cpp
dd38506815a0144a290312e6150b01044fe39a6f 29-Jun-2010 Devang Patel <dpatel@apple.com> Do not hardcode DW_AT_stmt_list value.
Inspired by Artur Pietrek.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107202 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1e4782d6f95c065d06ed53eb96036737beb66bef 29-Jun-2010 Devang Patel <dpatel@apple.com> Do not hardcode DW_AT_stmt_list value.
Inspired by Artur Pietrek.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107202 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
78e2c3c56b3f494fe2bd50f3948934c05ffec287 29-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix the handling of partial redefines in the fast register allocator.

A partial redefine needs to be treated like a tied operand, and the register
must be reloaded while processing use operands.

This fixes a bug where partially redefined registers were processed as normal
defs with a reload added. The reload could clobber another use operand if it was
a kill that allowed register reuse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107193 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
d1303d2a66241c70e0e35dac371636c883235df8 29-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix the handling of partial redefines in the fast register allocator.

A partial redefine needs to be treated like a tied operand, and the register
must be reloaded while processing use operands.

This fixes a bug where partially redefined registers were processed as normal
defs with a reload added. The reload could clobber another use operand if it was
a kill that allowed register reuse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107193 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
73fe9445048d911d093704eb98e0ef0949590f7d 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix a register scavenger crash when dealing with undefined subregs.
The LowerSubregs pass needs to preserve implicit def operands attached to
EXTRACT_SUBREG instructions when it replaces those instructions with copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107189 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
5d52165e4e2f83e6e66063382f323435da21090d 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix a register scavenger crash when dealing with undefined subregs.
The LowerSubregs pass needs to preserve implicit def operands attached to
EXTRACT_SUBREG instructions when it replaces those instructions with copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107189 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
6441b54e22cc0bad3e0d3da771e7821019135755 29-Jun-2010 Duncan Sands <baldrick@free.fr> It seems clear that this should return Changed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107141 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
80b9b8953753e0ca518671ef572d215d9365d091 29-Jun-2010 Duncan Sands <baldrick@free.fr> It seems clear that this should return Changed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107141 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
dd68477a2b0c937054dce377a953e161d4db7b5f 29-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Add a VT argument to getMinimalPhysRegClass and replace the copy related uses
of getPhysicalRegisterRegClass with it.

If we want to make a copy (or estimate its cost), it is better to use the
smallest class as more efficient operations might be possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107140 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
d31f972bd33de85071c716f69bf5c6d735f730f2 29-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Add a VT argument to getMinimalPhysRegClass and replace the copy related uses
of getPhysicalRegisterRegClass with it.

If we want to make a copy (or estimate its cost), it is better to use the
smallest class as more efficient operations might be possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107140 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
3604cdf289e6596abd16d0c7bc8aec5c0a9140ed 29-Jun-2010 Duncan Sands <baldrick@free.fr> getMachineBasicBlockAddress returns a uintptr_t - don't truncate
to unsigned only to extend back to a pointer sized value on the
next line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107139 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
17c6e6d9cf4c9e56a6a28e4d0ae3699d376a8962 29-Jun-2010 Duncan Sands <baldrick@free.fr> getMachineBasicBlockAddress returns a uintptr_t - don't truncate
to unsigned only to extend back to a pointer sized value on the
next line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107139 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
c2c4b85f9cc14fb3b2cfe087ae6038af17efe853 29-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand APIs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107132 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
9d677680e4eca77a806171aaed179158f1835593 29-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand APIs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107132 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
b375499e2d56fed3125a7d797ef21e03fe220176 29-Jun-2010 Duncan Sands <baldrick@free.fr> Remove initialized but otherwise unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107127 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
electionDAG/SelectionDAGBuilder.cpp
90c64f4aac95ebfcdeb8ad78a373fdb9e61b002c 29-Jun-2010 Duncan Sands <baldrick@free.fr> Remove initialized but otherwise unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107127 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
electionDAG/SelectionDAGBuilder.cpp
a144454e83d1ec105266e004ccc5436c4bbc4fd8 29-Jun-2010 Jim Grosbach <grosbach@apple.com> When processing loops for scheduling latencies (used for live outs on loop
back-edges), make sure not to include dbg_value instructions in the count.
Closing in on the end of rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107119 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
2f2b25451b8fd6ab0625e78df9e5c710eba2d87f 29-Jun-2010 Jim Grosbach <grosbach@apple.com> When processing loops for scheduling latencies (used for live outs on loop
back-edges), make sure not to include dbg_value instructions in the count.
Closing in on the end of rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107119 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
2e99a5698a87b33796c02975ffb00d30496c431f 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Reapply my if-conversion cleanup from svn r106939 with fixes.
There are 2 changes relative to the previous version of the patch:

1) For the "simple" if-conversion case, there's no need to worry about
RemoveExtraEdges not handling an unanalyzable branch. Predicated terminators
are ignored in this context, so RemoveExtraEdges does the right thing.
This might break someday if we ever treat indirect branches (BRIND) as
predicable, but for now, I just removed this part of the patch, because
in the case where we do not add an unconditional branch, we rely on keeping
the fall-through edge to CvtBBI (which is empty after this transformation).

The change relative to the previous patch is:

@@ -1036,10 +1036,6 @@
IterIfcvt = false;
}

- // RemoveExtraEdges won't work if the block has an unanalyzable branch,
- // which is typically the case for IfConvertSimple, so explicitly remove
- // CvtBBI as a successor.
- BBI.BB->removeSuccessor(CvtBBI->BB);
RemoveExtraEdges(BBI);

// Update block info. BB can be iteratively if-converted.


2) My patch exposed a bug in the code for merging the tail of a "diamond",
which had previously never been exercised. The code was simply checking that
the tail had a single predecessor, but there was a case in
MultiSource/Benchmarks/VersaBench/dbms where that single predecessor was
neither edge of the diamond. I added the following change to check for
that:

@@ -1276,7 +1276,18 @@
// tail, add a unconditional branch to it.
if (TailBB) {
BBInfo TailBBI = BBAnalysis[TailBB->getNumber()];
- if (TailBB->pred_size() == 1 && !TailBBI.HasFallThrough) {
+ bool CanMergeTail = !TailBBI.HasFallThrough;
+ // There may still be a fall-through edge from BBI1 or BBI2 to TailBB;
+ // check if there are any other predecessors besides those.
+ unsigned NumPreds = TailBB->pred_size();
+ if (NumPreds > 1)
+ CanMergeTail = false;
+ else if (NumPreds == 1 && CanMergeTail) {
+ MachineBasicBlock::pred_iterator PI = TailBB->pred_begin();
+ if (*PI != BBI1->BB && *PI != BBI2->BB)
+ CanMergeTail = false;
+ }
+ if (CanMergeTail) {
MergeBlocks(BBI, TailBBI);
TailBBI.IsDone = true;
} else {

With these fixes, I was able to run all the SingleSource and MultiSource
tests successfully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107110 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
8eab75f390eb469fea16a290dcd841365007a9a6 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Reapply my if-conversion cleanup from svn r106939 with fixes.
There are 2 changes relative to the previous version of the patch:

1) For the "simple" if-conversion case, there's no need to worry about
RemoveExtraEdges not handling an unanalyzable branch. Predicated terminators
are ignored in this context, so RemoveExtraEdges does the right thing.
This might break someday if we ever treat indirect branches (BRIND) as
predicable, but for now, I just removed this part of the patch, because
in the case where we do not add an unconditional branch, we rely on keeping
the fall-through edge to CvtBBI (which is empty after this transformation).

The change relative to the previous patch is:

@@ -1036,10 +1036,6 @@
IterIfcvt = false;
}

- // RemoveExtraEdges won't work if the block has an unanalyzable branch,
- // which is typically the case for IfConvertSimple, so explicitly remove
- // CvtBBI as a successor.
- BBI.BB->removeSuccessor(CvtBBI->BB);
RemoveExtraEdges(BBI);

// Update block info. BB can be iteratively if-converted.


2) My patch exposed a bug in the code for merging the tail of a "diamond",
which had previously never been exercised. The code was simply checking that
the tail had a single predecessor, but there was a case in
MultiSource/Benchmarks/VersaBench/dbms where that single predecessor was
neither edge of the diamond. I added the following change to check for
that:

@@ -1276,7 +1276,18 @@
// tail, add a unconditional branch to it.
if (TailBB) {
BBInfo TailBBI = BBAnalysis[TailBB->getNumber()];
- if (TailBB->pred_size() == 1 && !TailBBI.HasFallThrough) {
+ bool CanMergeTail = !TailBBI.HasFallThrough;
+ // There may still be a fall-through edge from BBI1 or BBI2 to TailBB;
+ // check if there are any other predecessors besides those.
+ unsigned NumPreds = TailBB->pred_size();
+ if (NumPreds > 1)
+ CanMergeTail = false;
+ else if (NumPreds == 1 && CanMergeTail) {
+ MachineBasicBlock::pred_iterator PI = TailBB->pred_begin();
+ if (*PI != BBI1->BB && *PI != BBI2->BB)
+ CanMergeTail = false;
+ }
+ if (CanMergeTail) {
MergeBlocks(BBI, TailBBI);
TailBBI.IsDone = true;
} else {

With these fixes, I was able to run all the SingleSource and MultiSource
tests successfully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107110 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
b52a0393a18e4e470b25c0ab40832e44aa404a48 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Unlike other targets, ARM now uses BUILD_VECTORs post-legalization so they
can't be changed arbitrarily by the DAGCombiner without checking if it is
running after legalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107097 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8674949513837dab7efa11c8d338db4f714a244b 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Unlike other targets, ARM now uses BUILD_VECTORs post-legalization so they
can't be changed arbitrarily by the DAGCombiner without checking if it is
running after legalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107097 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
efc6c9e1817bf7ffcea509d5ba3898182c8c850f 29-Jun-2010 Devang Patel <dpatel@apple.com> Use DW_FORM_addr for DW_AT_entry_pc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107085 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
9b93b6b49a406bbeec364408e115c671098f3944 29-Jun-2010 Devang Patel <dpatel@apple.com> Use DW_FORM_addr for DW_AT_entry_pc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107085 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
0d7310c2a722fa920a8830c986d11644a48f1b5c 29-Jun-2010 Dale Johannesen <dalej@apple.com> In asm's, output operands with matching input constraints
have to be registers, per gcc documentation. This affects
the logic for determining what "g" should lower to. PR 7393.
A couple of existing testcases are affected.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107079 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
a5989f8e222f6e2ad67704d7e8cc67c86c4d0697 29-Jun-2010 Dale Johannesen <dalej@apple.com> In asm's, output operands with matching input constraints
have to be registers, per gcc documentation. This affects
the logic for determining what "g" should lower to. PR 7393.
A couple of existing testcases are affected.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107079 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
50d17d2bedf58d6c31bffb924b3500f525222d50 28-Jun-2010 Devang Patel <dpatel@apple.com> Include inlined function in list of processed subprograms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107065 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0dd4558e7d0d2191c3d69e61e6a3e349dd605c80 28-Jun-2010 Devang Patel <dpatel@apple.com> Include inlined function in list of processed subprograms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107065 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8ea33f61299e277eb9c0a645e6b4a0d3cf2f4597 28-Jun-2010 Jim Grosbach <grosbach@apple.com> new, no longer brain-dead, r106907

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107060 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
d459f457b8c855030217d878988062918dc71e13 28-Jun-2010 Jim Grosbach <grosbach@apple.com> new, no longer brain-dead, r106907

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107060 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
2777f987eb5766714eac7417ffa55ba8c271f6ea 28-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> After physreg coalescing, physical registers might not have live ranges where
you would expect.

Don't assert on that case, just give up.

This fixes PR7513.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107046 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
610bebf777de07ca68f016a63b548fbe22c2fd3c 28-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> After physreg coalescing, physical registers might not have live ranges where
you would expect.

Don't assert on that case, just give up.

This fixes PR7513.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107046 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
acb50a5453fccd3ec03ca4e794d515ccbb04dddc 28-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add more special treatment for inline asm in RegAllocFast.

When an instruction has tied operands and physreg defines, we must take extra
care that the tied operands conflict with neither physreg defs nor uses.

The special treatment is given to inline asm and instructions with tied operands
/ early clobbers and physreg defines.

This fixes PR7509.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107043 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
d843b3925fdc275b262ddc2ff8fabc8c98f9a5a0 28-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add more special treatment for inline asm in RegAllocFast.

When an instruction has tied operands and physreg defines, we must take extra
care that the tied operands conflict with neither physreg defs nor uses.

The special treatment is given to inline asm and instructions with tied operands
/ early clobbers and physreg defines.

This fixes PR7509.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107043 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
8233507609c88f4b114846102d4c03122acdb41a 28-Jun-2010 Devang Patel <dpatel@apple.com> Preserve deleted function's local variables' debug info.
Radar 8122864.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107027 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
4a1cad673c5bf0812099c6c8f551fe6af967c2b3 28-Jun-2010 Devang Patel <dpatel@apple.com> Preserve deleted function's local variables' debug info.
Radar 8122864.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107027 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8d4fc8be39e2ba48ced10250e0f4409b47c01f3a 28-Jun-2010 Gabor Greif <ggreif@gmail.com> simplify: we have solid argument iterator range

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107014 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
32621ad9ff9ae7deafe72873ed83f39e7b28ae83 28-Jun-2010 Gabor Greif <ggreif@gmail.com> simplify: we have solid argument iterator range

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107014 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
9ba6d69ace3ee3348083365c0f619ea7e1acc694 28-Jun-2010 Daniel Dunbar <daniel@zuster.org> Revert r106907, "make sure to handle dbg_value instructions in the middle of the
block, not...", it caused a bunch of nightly test regressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107009 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
c4abe3aaaf45f69387b8cf55f1870ea416586290 28-Jun-2010 Daniel Dunbar <daniel@zuster.org> Revert r106907, "make sure to handle dbg_value instructions in the middle of the
block, not...", it caused a bunch of nightly test regressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107009 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
15642b3d55e7d2b4fbb0014abe2858301b8701b6 28-Jun-2010 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106990 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
f347b82d49394965d2a5937ea9bd68d90029655e 28-Jun-2010 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106990 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
2f45a279878f7bfc2f91e64bd7aa21c0b3910582 26-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> When splitting a VAARG, remember its alignment.
This produces terrible but correct code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/SelectionDAG.cpp
72d13ff755fe8484c89468252f945ba23fe98f71 26-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> When splitting a VAARG, remember its alignment.
This produces terrible but correct code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/SelectionDAG.cpp
edababcb0f91ad2f63ecf8b583094274316a588b 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Revert my if-conversion cleanup since it caused a bunch of nightly test
regressions.

--- Reverse-merging r106939 into '.':
U test/CodeGen/Thumb2/thumb2-ifcvt3.ll
U lib/CodeGen/IfConversion.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106951 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
de4fe231392165c7566081fb3f86aee4f6a4e0d6 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Revert my if-conversion cleanup since it caused a bunch of nightly test
regressions.

--- Reverse-merging r106939 into '.':
U test/CodeGen/Thumb2/thumb2-ifcvt3.ll
U lib/CodeGen/IfConversion.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106951 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
a84255142829697b442d9c7e46d44f7b8df22ab7 26-Jun-2010 Benjamin Kramer <benny.kra@googlemail.com> VNInfos don't need to be destructed anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106943 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
ce9a20b808ba48adf72e0c0615f903a65e9f9eb8 26-Jun-2010 Benjamin Kramer <benny.kra@googlemail.com> VNInfos don't need to be destructed anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106943 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
53c5d7bad5bc59b8bb102883dace0a9e7c8c685e 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Clean up some problems with extra CFG edges being introduced during
if-conversion. The RemoveExtraEdges function doesn't work for blocks that
end with unanalyzable branches, so in those cases, the "extra" edges must
be explicitly removed. The CopyAndPredicateBlock and MergeBlocks methods
can also avoid copying successor edges due to branches that have already
been removed. The latter case is especially helpful when MergeBlocks is
called for handling "diamond" if-conversions, where otherwise you can end
up with some weird intermediate states in the CFG. Unfortunately I've
been unable to find cases where this cleanup actually makes a significant
difference in the code. There is one test where we manage to remove an
empty block at the end of a function. Radar 6911268.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106939 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
ccd9bcca14e7046b7078cdf472a9185b86cdf07d 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Clean up some problems with extra CFG edges being introduced during
if-conversion. The RemoveExtraEdges function doesn't work for blocks that
end with unanalyzable branches, so in those cases, the "extra" edges must
be explicitly removed. The CopyAndPredicateBlock and MergeBlocks methods
can also avoid copying successor edges due to branches that have already
been removed. The latter case is especially helpful when MergeBlocks is
called for handling "diamond" if-conversions, where otherwise you can end
up with some weird intermediate states in the CFG. Unfortunately I've
been unable to find cases where this cleanup actually makes a significant
difference in the code. There is one test where we manage to remove an
empty block at the end of a function. Radar 6911268.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106939 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
1213ebceb342a5b41dd8efe99c460b042cf369eb 26-Jun-2010 Jim Grosbach <grosbach@apple.com> make sure to handle dbg_value instructions in the middle of the block, not
just at the head, when doing diamond if-conversion. rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106907 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
9f054f017c7bced071f5a4de606cec6751edd23f 26-Jun-2010 Jim Grosbach <grosbach@apple.com> make sure to handle dbg_value instructions in the middle of the block, not
just at the head, when doing diamond if-conversion. rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106907 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
5ccea1ae2270cf66621fc0dec8d2de091701c4f1 26-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't track kills in VNInfo. Use interval ends instead.

The VNInfo.kills vector was almost unused except for all the code keeping it
updated. The few places using it were easily rewritten to check for interval
ends instead.

The two new methods LiveInterval::killedAt and killedInRange are replacements.

This brings us down to 3 independent data structures tracking kills.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106905 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
piller.cpp
trongPHIElimination.cpp
15a571436da812c7cecbc3f3423ead2edff50358 26-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't track kills in VNInfo. Use interval ends instead.

The VNInfo.kills vector was almost unused except for all the code keeping it
updated. The few places using it were easily rewritten to check for interval
ends instead.

The two new methods LiveInterval::killedAt and killedInRange are replacements.

This brings us down to 3 independent data structures tracking kills.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106905 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
piller.cpp
trongPHIElimination.cpp
09f725277d18268655bf3e5e261061a54bfa1d14 26-Jun-2010 Evan Cheng <evan.cheng@apple.com> Change if-conversion block size limit checks to add some flexibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106901 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
electionDAG/TargetLowering.cpp
13151432edace19ee867a93b5c14573df4f75d24 26-Jun-2010 Evan Cheng <evan.cheng@apple.com> Change if-conversion block size limit checks to add some flexibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106901 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
electionDAG/TargetLowering.cpp
55202eaf6299c8be2aaa97697c6dfccbbbfcc81c 26-Jun-2010 Devang Patel <dpatel@apple.com> Collect debug info for optimized variables of inlined functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106895 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
78e127d81b58de8663f8328dc1cdbd1f31a759fd 26-Jun-2010 Devang Patel <dpatel@apple.com> Collect debug info for optimized variables of inlined functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106895 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
f44b1718327f90a935b618d42e1d6deb44660b0f 26-Jun-2010 Jim Grosbach <grosbach@apple.com> 80 column and typo fix

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106894 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
135ec50ce26b4bb9aee305f5e861d2348969aa31 26-Jun-2010 Jim Grosbach <grosbach@apple.com> 80 column and typo fix

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106894 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
a7ba9cda87adafd4fcb30902120010c21888e8f4 25-Jun-2010 Dale Johannesen <dalej@apple.com> The hasMemory argument is irrelevant to how the argument
for an "i" constraint should get lowered; PR 6309. While
this argument was passed around a lot, this is the only
place it was used, so it goes away from a lot of other
places.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106893 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
1784d160e4efa75782884d451d0788b9457e67dc 25-Jun-2010 Dale Johannesen <dalej@apple.com> The hasMemory argument is irrelevant to how the argument
for an "i" constraint should get lowered; PR 6309. While
this argument was passed around a lot, this is the only
place it was used, so it goes away from a lot of other
places.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106893 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
4a244bb79c3ba23075cd38dc44609bcac48b3989 25-Jun-2010 Bill Wendling <isanbard@gmail.com> - Reapply r106066 now that the bzip2 build regression has been fixed.
- 2010-06-25-CoalescerSubRegDefDead.ll is the testcase for r106878.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106880 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
730c07e50d03be3d64fd4d808c590e6890d32178 25-Jun-2010 Bill Wendling <isanbard@gmail.com> - Reapply r106066 now that the bzip2 build regression has been fixed.
- 2010-06-25-CoalescerSubRegDefDead.ll is the testcase for r106878.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106880 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
176e4013d93709dd8ad66d5ba69a8a45c1480752 25-Jun-2010 Bill Wendling <isanbard@gmail.com> We should remove the live range from the destination register only if *all* defs
are dead, not just the def of this register. I.e., a register could be dead, but
it's subreg isn't.

Testcase to follow with a subsequent patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106878 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
39d258aa49717218628c158504996482bbbb0a5a 25-Jun-2010 Bill Wendling <isanbard@gmail.com> We should remove the live range from the destination register only if *all* defs
are dead, not just the def of this register. I.e., a register could be dead, but
it's subreg isn't.

Testcase to follow with a subsequent patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106878 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d08d8e20c6c7d8067bf03677688bcd70b896f58c 25-Jun-2010 Dale Johannesen <dalej@apple.com> Cosmetic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106865 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
493315922b190b74a7de8ac3cd1dfb914d81d6a6 25-Jun-2010 Dale Johannesen <dalej@apple.com> Cosmetic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106865 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
102b00fc58d0800bf8821316133b3c908d51f904 25-Jun-2010 Duncan Sands <baldrick@free.fr> Remove variables which are assigned to but for which the value
is not used. Spotted by gcc-4.6.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106854 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
b447c4e65b5f6d39db16cb8fc338133965291972 25-Jun-2010 Duncan Sands <baldrick@free.fr> Remove variables which are assigned to but for which the value
is not used. Spotted by gcc-4.6.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106854 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
663ba35dfec121ff9154a5941d6c2b592af5843d 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand accessors
and CallInst for getting hold
of the intrinsic's arguments

simplify along the way (at least for me this is much more legible now)
Bill, Baldrick or Anton, please review\!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106838 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
2bf4b3be5ca34d822ae7a79e9f2df655da8e0aa8 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand accessors
and CallInst for getting hold
of the intrinsic's arguments

simplify along the way (at least for me this is much more legible now)
Bill, Baldrick or Anton, please review\!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106838 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
b6b7c1db28bfbd1440d704e81c4aa1e845950514 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API (the simple part)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106837 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
c13055db267909518e758fd4f93f4dec1c23df29 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API (the simple part)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106837 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
525e20ed81a3314402b99f0dfd6c5307e809c93c 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106836 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
0635f35114732cdb055ee38bad5f743e49729efa 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106836 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
fbe9808466411123e05c64d5951fdf07285f1303 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106835 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
45c097fe43d565905041d2a9fc77567d2deca709 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106835 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
581c8c1ce744d7d27c65fffa10971dc2184cd587 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API and CallSite to access arguments of CallInst

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106833 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
9e38531d9561630520732146c32977443c73c243 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API and CallSite to access arguments of CallInst

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106833 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
539da8b1371f7273e4ece0d9fd211c25a475ee01 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API and CallSite to access arguments of CallInst

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106829 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
hadowStackGC.cpp
89c4cead3c1448902f5fc6c266de5f20222c6b03 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API and CallSite to access arguments of CallInst

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106829 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
hadowStackGC.cpp
010139fa9acf693e4c288ab7e3a8e35e76413329 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106828 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
1518444f0c0f7675a30f34bcf58e8cef21d37c80 25-Jun-2010 Gabor Greif <ggreif@gmail.com> use ArgOperand API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106828 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
ba060ceda3b40bf3ae99041d86f05d66cdb22ed9 25-Jun-2010 Gabor Greif <ggreif@gmail.com> prune an include

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106827 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
d3f526c04a404aeac3a09db37d92b1f795a405ac 25-Jun-2010 Gabor Greif <ggreif@gmail.com> prune an include

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106827 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
db121e0e74fdddc3da2cfa236a90ea2ce1b78f01 25-Jun-2010 Dale Johannesen <dalej@apple.com> Fix a case where an earlyclobber operand of an asm
is reused as an input. PR 4118. Testcase is too big,
as usual with bugs in this area, but there's one in
the PR.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106816 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
969b9fe379c333bd5065d387da7b43ed90e001de 25-Jun-2010 Dale Johannesen <dalej@apple.com> Fix a case where an earlyclobber operand of an asm
is reused as an input. PR 4118. Testcase is too big,
as usual with bugs in this area, but there's one in
the PR.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106816 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
535617ab120d25498f849fff8e7f22fa630e9a28 25-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make sure all eliminated kills are removed from VNInfo lists.

This fixes PR7479 and PR7485. The test cases from those PRs are big, so not
included. However, PR7485 comes from self hosting on FreeBSD, so we will surely
hear about any regression.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106811 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
fa1e73c447b61ba180cc85b78b53d78a6b63bbf6 25-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make sure all eliminated kills are removed from VNInfo lists.

This fixes PR7479 and PR7485. The test cases from those PRs are big, so not
included. However, PR7485 comes from self hosting on FreeBSD, so we will surely
hear about any regression.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106811 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
cd5e961837f7c23e7e149b1707aff47b550d712a 25-Jun-2010 Dan Gohman <gohman@apple.com> Add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106809 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
0879e2279025522a070d57a7c4e0122daef94e2f 25-Jun-2010 Dan Gohman <gohman@apple.com> Add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106809 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
94431e415ad4d68eed6e8d91f3904230a24a10c0 25-Jun-2010 Dan Gohman <gohman@apple.com> Teach EmitLiveInCopies to omit copies for unused virtual registers,
and to clean up unused incoming physregs from the live-in list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106805 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
fe5e4dabbf05f3b7b8c6d652adb6b500e5dec8cd 25-Jun-2010 Dan Gohman <gohman@apple.com> Teach EmitLiveInCopies to omit copies for unused virtual registers,
and to clean up unused incoming physregs from the live-in list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106805 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
1bd8afcfb510c8b0826bc152ae72b67b4dbbcf1b 25-Jun-2010 Bill Wendling <isanbard@gmail.com> It's possible that a flag is added to the SDNode that points back to the
original SDNode. This is badness. Also, this function allows one SDNode to point
multiple flags to another SDNode. Badness as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106793 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
10707f3b442aa5a6cc55b899d630871f06b8ebbc 25-Jun-2010 Bill Wendling <isanbard@gmail.com> It's possible that a flag is added to the SDNode that points back to the
original SDNode. This is badness. Also, this function allows one SDNode to point
multiple flags to another SDNode. Badness as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106793 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
3d5b9833b5e2cfc178a3d778f59c49b007e061c6 24-Jun-2010 Devang Patel <dpatel@apple.com> DBG_VALUE machine instruction pointing to undefined register for a variable justify a separate scope if the variable is inlined function's argument.
Radar 8122864.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106792 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
486ca764216fea073d3bcc0716b181ca861b74f7 24-Jun-2010 Devang Patel <dpatel@apple.com> DBG_VALUE machine instruction pointing to undefined register for a variable justify a separate scope if the variable is inlined function's argument.
Radar 8122864.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106792 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
68c0866a658bae2998837d2acdb4254020cd31db 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't return a std::vector in the Spiller interface, but take a reference to a
vector instead. This avoids needless copying and allocation.

Add documentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106788 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
piller.cpp
piller.h
67674e2685af8ab16292550becac15f7b17ea831 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't return a std::vector in the Spiller interface, but take a reference to a
vector instead. This avoids needless copying and allocation.

Add documentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106788 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
piller.cpp
piller.h
2f10baebbbd8a6bc19fa8467f54bb51f2fa3abd9 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the now unused LiveIntervals::getVNInfoSourceReg().

This method was always a bit too simplistic for the real world. It didn't really
deal with subregisters and such.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106781 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3c7b3fecacee40df7b9a99d290638398b5a62173 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the now unused LiveIntervals::getVNInfoSourceReg().

This method was always a bit too simplistic for the real world. It didn't really
deal with subregisters and such.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106781 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e22d58640ef9311428ab299c2ab8ec1c924ab3d8 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach AdjustCopiesBackFrom to also use CoalescerPair to identify compatible copies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106780 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
c0490ac91502c3f9e791124c6f3a8ad17aab6a72 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach AdjustCopiesBackFrom to also use CoalescerPair to identify compatible copies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106780 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
69b940a61d3020164011fe09465476ff0e1ce5cb 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the -fast-spill option.

This code path has never really been used, and we are going to be handling
spilling through the Spiller interface in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106777 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
54edf4f7da971cbb0c1546039db488a259480398 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the -fast-spill option.

This code path has never really been used, and we are going to be handling
spilling through the Spiller interface in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106777 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e1893d8c6f3ef230e7ac239bb2d39d60a402573b 24-Jun-2010 Bill Wendling <isanbard@gmail.com> Loosen up the requirements in the Horrible Hack(tm) to include all selectors
which don't have a catch-all associated with them not just clean-ups. This fixes
the SingleSource/Benchmarks/Shootout-C++/except.cpp testcase that broke because
of my change r105902.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106772 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
efbf30610739d73d1f2dba9a8c29aa30c8c3daa4 24-Jun-2010 Bill Wendling <isanbard@gmail.com> Loosen up the requirements in the Horrible Hack(tm) to include all selectors
which don't have a catch-all associated with them not just clean-ups. This fixes
the SingleSource/Benchmarks/Shootout-C++/except.cpp testcase that broke because
of my change r105902.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106772 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
fee9bfb7501c08ba9f298255db6d7e1ae601c82c 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace a big gob of old coalescer logic with the new CoalescerPair class.

CoalescerPair can determine if a copy can be coalesced, and which register gets
merged away. The old logic in SimpleRegisterCoalescing had evolved into
something a bit too convoluted.

This second attempt fixes some crashes that only occurred Linux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106769 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
a24986d8bfd941252f7d080943e02bbe6a0c2944 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace a big gob of old coalescer logic with the new CoalescerPair class.

CoalescerPair can determine if a copy can be coalesced, and which register gets
merged away. The old logic in SimpleRegisterCoalescing had evolved into
something a bit too convoluted.

This second attempt fixes some crashes that only occurred Linux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106769 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
14053931593973f354f228bd8b2759d1876ba86a 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print the LSBs of a SlotIndex symbolically using letters referring to the
[L]oad, [u]se, [d]ef, or [S]tore slots.

This makes it easier to see if two indices refer to the same instruction,
avoiding mental mod 4 calculations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106766 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
eec418d26f08e9cf32b8eab03da59d6cd5dd7faa 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print the LSBs of a SlotIndex symbolically using letters referring to the
[L]oad, [u]se, [d]ef, or [S]tore slots.

This makes it easier to see if two indices refer to the same instruction,
avoiding mental mod 4 calculations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106766 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
0f6c671f57ee4d8802cf957f32615fbb4c36c4d1 24-Jun-2010 Dan Gohman <gohman@apple.com> Simplify this code; switch lowering shouldn't produce cases
which trivially fold away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106765 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
deca052d9d1d1303854a1c9617c383aa6c58ba0b 24-Jun-2010 Dan Gohman <gohman@apple.com> Simplify this code; switch lowering shouldn't produce cases
which trivially fold away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106765 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
91866ff351de74af0456153f2af783a2df6b28b3 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more strict about subreg-to-subreg copies in CoalescerPair.

Also keep track of the original DstREg before subregister adjustments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106753 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
8df08017d81ef3749acdc3234e3f33c15a6d0def 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more strict about subreg-to-subreg copies in CoalescerPair.

Also keep track of the original DstREg before subregister adjustments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106753 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
598299d6f58174b27eff3a13424767166e53842d 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that VNI kills are pointing to existing instructions.

In this case it is essential that the kill is real because the spiller will
decide to omit a spill if it thinks there is a later kill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106751 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
af5c60b40d50af635e1d02c0c3db508cfb9f2d1f 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that VNI kills are pointing to existing instructions.

In this case it is essential that the kill is real because the spiller will
decide to omit a spill if it thinks there is a later kill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106751 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cb26983c363c82f2568f7ee27030429d9b011445 24-Jun-2010 Dan Gohman <gohman@apple.com> Eliminate the other half of the BRCOND optimization, and update
as many tests as possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ee1c8707789ac540ca2d0037d397f39fa91e7571 24-Jun-2010 Dan Gohman <gohman@apple.com> Eliminate the other half of the BRCOND optimization, and update
as many tests as possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a74a6cc09492bbf519b12d61597e60cd5daf6834 24-Jun-2010 Dan Gohman <gohman@apple.com> Eliminate the first have of the optimization which eliminates BRCOND
when the condition is constant. This optimization shouldn't be
necessary, because codegen shouldn't be able to find dead control
paths that the IR-level optimizer can't find. And it's undesirable,
because it encourages bugpoint to leave "br i1 false" branches
in its output. And it wasn't updating the CFG.

I updated all the tests I could, but some tests are too reduced
and I wasn't able to meaningfully preserve them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106748 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
102f3851bbde16fdd826d072240731365fe6da5d 24-Jun-2010 Dan Gohman <gohman@apple.com> Eliminate the first have of the optimization which eliminates BRCOND
when the condition is constant. This optimization shouldn't be
necessary, because codegen shouldn't be able to find dead control
paths that the IR-level optimizer can't find. And it's undesirable,
because it encourages bugpoint to leave "br i1 false" branches
in its output. And it wasn't updating the CFG.

I updated all the tests I could, but some tests are too reduced
and I wasn't able to meaningfully preserve them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106748 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
50fbd4f02314b827bc855a82b8556755ba292edd 24-Jun-2010 Dan Gohman <gohman@apple.com> Reapply r106634, now that the bug it exposed is fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106746 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
4e39e9da0f3a435445261d0f796bb0913f3c2bf0 24-Jun-2010 Dan Gohman <gohman@apple.com> Reapply r106634, now that the bug it exposed is fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106746 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
a2375554a0236fc056f8cdb659890bcf81f24a6b 24-Jun-2010 Dan Gohman <gohman@apple.com> Optimize the "bit test" code path for switch lowering in the
case where the bit mask has exactly one bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106716 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8e0163ac1e8fcf0f8d2340d65439edef8230b01c 24-Jun-2010 Dan Gohman <gohman@apple.com> Optimize the "bit test" code path for switch lowering in the
case where the bit mask has exactly one bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106716 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
4c27741adcd10a796a2d4e5e3c9892a760900838 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Replace a big gob of old coalescer logic with the new CoalescerPair class."

Whiny buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106710 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
b8ac3b035ba14663ebe57fde17f6a9f25134e005 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Replace a big gob of old coalescer logic with the new CoalescerPair class."

Whiny buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106710 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
d7e0a5977a7f6b8f5240811ae992f1e41305da55 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace a big gob of old coalescer logic with the new CoalescerPair class.

CoalescerPair can determine if a copy can be coalesced, and which register gets
merged away. The old logic in SimpleRegisterCoalescing had evolved into
something a bit too convoluted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106701 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
e9c59711d3d1e8b133763393bea92af6e36b0031 24-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace a big gob of old coalescer logic with the new CoalescerPair class.

CoalescerPair can determine if a copy can be coalesced, and which register gets
merged away. The old logic in SimpleRegisterCoalescing had evolved into
something a bit too convoluted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106701 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
053ba0aaa534280f122b7f2e56efbf6dc831b662 23-Jun-2010 Bill Wendling <isanbard@gmail.com> MorphNodeTo doesn't preserve the memory operands. Because we're morphing a node
into the same node, but with different non-memory operands, we need to replace
the memory operands after it's finished morphing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106643 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
151d26d15dc6fe89329d7cccb0638c324c58f485 23-Jun-2010 Bill Wendling <isanbard@gmail.com> MorphNodeTo doesn't preserve the memory operands. Because we're morphing a node
into the same node, but with different non-memory operands, we need to replace
the memory operands after it's finished morphing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106643 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
2c14c912df3540b365db73cbc8a69a0cbf5ca116 23-Jun-2010 Daniel Dunbar <daniel@zuster.org> Revert r106263, "Fold the ShrinkDemandedOps pass into the regular DAGCombiner pass,"... it was causing both 'file' (with clang) and 176.gcc (with llvm-gcc) to be miscompiled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
cbe762b5d165c565feb98b745e93b71d208a1e36 23-Jun-2010 Daniel Dunbar <daniel@zuster.org> Revert r106263, "Fold the ShrinkDemandedOps pass into the regular DAGCombiner pass,"... it was causing both 'file' (with clang) and 176.gcc (with llvm-gcc) to be miscompiled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
c0e1bf49809893f4289118ef063f38958fd73ee9 23-Jun-2010 Jim Grosbach <grosbach@apple.com> Some targets don't require the fencing MEMBARRIER instructions surrounding
atomic intrinsics, either because the use locking instructions for the
atomics, or because they perform the locking directly. Add support in the
DAG combiner to fold away the fences.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
9a526495e0c06c4014d7500788cad1929fd244d3 23-Jun-2010 Jim Grosbach <grosbach@apple.com> Some targets don't require the fencing MEMBARRIER instructions surrounding
atomic intrinsics, either because the use locking instructions for the
atomics, or because they perform the locking directly. Add support in the
DAG combiner to fold away the fences.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
529c7135ea1d5159b061771a31ac105a83d7cd2f 23-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a few VNInfo data structure checks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106627 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
014b8631c0df0c5a91ccee2485bcd408844ed377 23-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a few VNInfo data structure checks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106627 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
1bc9adcdd394599fea13a4fa6819d015ed4c92b2 23-Jun-2010 Daniel Dunbar <daniel@zuster.org> Revert r106066, "Create a more targeted fix for not sinking instructions into a range where it"... it causes bzip2 to be miscompiled by Clang.

Conflicts:

lib/CodeGen/MachineSink.cpp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106614 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
d24c9d5f91442f893bebc2ea8d5ee845bc8b77a9 23-Jun-2010 Daniel Dunbar <daniel@zuster.org> Revert r106066, "Create a more targeted fix for not sinking instructions into a range where it"... it causes bzip2 to be miscompiled by Clang.

Conflicts:

lib/CodeGen/MachineSink.cpp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106614 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
a5b260b977cdcf9850156e2d2e81333b9a56e491 23-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Also convert SUBREG_TO_REG to a KILL when relevant, like the other subreg
instructions.

This does not affect codegen much because SUBREG_TO_REG is only used by X86 and
X86 does not use the register scavenger, but it prevents verifier errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106583 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
f175c5c82891f0f68807d8b88020cd2a3a9cdbf6 23-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Also convert SUBREG_TO_REG to a KILL when relevant, like the other subreg
instructions.

This does not affect codegen much because SUBREG_TO_REG is only used by X86 and
X86 does not use the register scavenger, but it prevents verifier errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106583 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
cd9f79d845c9ed3fb621a62ebdf4beaf090a43f4 22-Jun-2010 Dan Gohman <gohman@apple.com> Move PHIElimination's SplitCriticalEdge for MachineBasicBlocks out
into a utility routine, teach it how to update MachineLoopInfo, and
make use of it in MachineLICM to split critical edges on demand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106555 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineLICM.cpp
HIElimination.cpp
853d3fb8d24fab2258e9cd5dce3ec8ff4189eeda 22-Jun-2010 Dan Gohman <gohman@apple.com> Move PHIElimination's SplitCriticalEdge for MachineBasicBlocks out
into a utility routine, teach it how to update MachineLoopInfo, and
make use of it in MachineLICM to split critical edges on demand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106555 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineLICM.cpp
HIElimination.cpp
c91943aafbbfbe1e857c7f77c6312f5181a45c11 22-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the SimpleJoin optimization from SimpleRegisterCoalescing.

Measurements show that it does not speed up coalescing, so there is no reason
the keep the added complexity around.

Also clean out some unused methods and static functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106548 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
6ff1c3f36c53d37097d1e66b58cd8d129d690127 22-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the SimpleJoin optimization from SimpleRegisterCoalescing.

Measurements show that it does not speed up coalescing, so there is no reason
the keep the added complexity around.

Also clean out some unused methods and static functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106548 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
559d513348a11936bc90b64aad75e2540b26c6a4 22-Jun-2010 Dan Gohman <gohman@apple.com> Use pre-increment instead of post-increment when the result is not used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106542 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
reAllocSplitting.cpp
fe60104ac97f3a8736dcfbfdf9547c7b7cc7b951 22-Jun-2010 Dan Gohman <gohman@apple.com> Use pre-increment instead of post-increment when the result is not used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106542 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
reAllocSplitting.cpp
05dd6677dfb1aa786a45736ea01d5cd70e2165b6 22-Jun-2010 Dan Gohman <gohman@apple.com> When unfolding a load, avoid assuming which instruction that
kill and dead flags will end up on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106520 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
cc1ca987f35581357f88d6071330e89fc8de2aa1 22-Jun-2010 Dan Gohman <gohman@apple.com> When unfolding a load, avoid assuming which instruction that
kill and dead flags will end up on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106520 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
8fa7adcbc5b4d12c6bebec5371379666fda75ef2 22-Jun-2010 Devang Patel <dpatel@apple.com> Use single interface, using twine, to get named metadata.
getNamedMetadata().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106518 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a762b093107ac3aa438815627006425d0b13a236 22-Jun-2010 Devang Patel <dpatel@apple.com> Use single interface, using twine, to get named metadata.
getNamedMetadata().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106518 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8bed85099fd6ea5f408e5dbaa7c1e60dade7e159 22-Jun-2010 Evan Cheng <evan.cheng@apple.com> Tail merging pass shall not break up IT blocks. rdar://8115404


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106517 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
argetInstrInfoImpl.cpp
4d54e5b2dd4a3d3bed38ff9c7aa57fc66adb5855 22-Jun-2010 Evan Cheng <evan.cheng@apple.com> Tail merging pass shall not break up IT blocks. rdar://8115404


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106517 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
argetInstrInfoImpl.cpp
84c7566688cfbcb75436e5277b699988e949b255 22-Jun-2010 Devang Patel <dpatel@apple.com> Discard special LLVM prefix from linkage name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106516 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7e1d742e1a868871d7c35d3880d8aa5d6d5d21e2 22-Jun-2010 Devang Patel <dpatel@apple.com> Discard special LLVM prefix from linkage name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106516 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b7edda0a45949d975f9ab7416ed61d1c96daaf56 22-Jun-2010 Devang Patel <dpatel@apple.com> Do not rely on Twine temporaries to survive.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106515 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d1bbc6b70e2288033fcb8c5b8273e8afb0fe9718 22-Jun-2010 Devang Patel <dpatel@apple.com> Do not rely on Twine temporaries to survive.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106515 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0a36fc6946e4825448d29dd2d61e3ec192a1f3b3 22-Jun-2010 Dan Gohman <gohman@apple.com> Fix the new load-unfolding code to update LiveVariable's dead flags,
in addition to the kill flags.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106512 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
7aa7bc735dfca40a20e74ad63a2c27f744699e01 22-Jun-2010 Dan Gohman <gohman@apple.com> Fix the new load-unfolding code to update LiveVariable's dead flags,
in addition to the kill flags.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106512 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
c21558b46d27f29c8861ee9695995e5a31ce7381 22-Jun-2010 Dan Gohman <gohman@apple.com> Teach two-address lowering how to unfold a load to open up commuting
opportunities. For example, this lets it emit this:

movq (%rax), %rcx
addq %rdx, %rcx

instead of this:

movq %rdx, %rcx
addq (%rax), %rcx

in the case where %rdx has subsequent uses. It's the same number
of instructions, and usually the same encoding size on x86, but
it appears faster, and in general, it may allow better scheduling
for the load.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106493 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
584fedf188e863604f7b946a931c0f40cf9c944e 22-Jun-2010 Dan Gohman <gohman@apple.com> Teach two-address lowering how to unfold a load to open up commuting
opportunities. For example, this lets it emit this:

movq (%rax), %rcx
addq %rdx, %rcx

instead of this:

movq %rdx, %rcx
addq (%rax), %rcx

in the case where %rdx has subsequent uses. It's the same number
of instructions, and usually the same encoding size on x86, but
it appears faster, and in general, it may allow better scheduling
for the load.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106493 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b93b42ae0b0dfe7a60d8e6cd703cda7d29ec18e8 21-Jun-2010 Dan Gohman <gohman@apple.com> Use A.append(...) instead of A.insert(A.end(), ...) when A is a
SmallVector, and other SmallVector simplifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106452 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
403a8cdda5e76ea689693de16474650b4b0df818 21-Jun-2010 Dan Gohman <gohman@apple.com> Use A.append(...) instead of A.insert(A.end(), ...) when A is a
SmallVector, and other SmallVector simplifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106452 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
3185f47524babd9241b0c4a32450cafd0395b1c4 21-Jun-2010 Dan Gohman <gohman@apple.com> Revert r106422, which is breaking the non-fast-isel path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106423 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
c7bd7b7f12f3df9f03f84eff45e8266446c54936 21-Jun-2010 Dan Gohman <gohman@apple.com> Revert r106422, which is breaking the non-fast-isel path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106423 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
277695c78cd0b56fdfbbffa142e2c49b5a6ca098 21-Jun-2010 Dan Gohman <gohman@apple.com> More changes for non-top-down fast-isel.

Split the code for materializing a value out of
SelectionDAGBuilder::getValue into a helper function, so that it can
be used in other ways. Add a new getNonRegisterValue function which
uses it, for use in code which doesn't want a CopyFromReg even
when FuncMap.ValueMap already has an entry for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106422 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
faeb0e744838553e6c46dab0ff3f9d8fc41fc766 21-Jun-2010 Dan Gohman <gohman@apple.com> More changes for non-top-down fast-isel.

Split the code for materializing a value out of
SelectionDAGBuilder::getValue into a helper function, so that it can
be used in other ways. Add a new getNonRegisterValue function which
uses it, for use in code which doesn't want a CopyFromReg even
when FuncMap.ValueMap already has an entry for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106422 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
3eb49aec27e9f475d7d32afba0f796e4516ecc90 21-Jun-2010 Dan Gohman <gohman@apple.com> Do one lookup instead of two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3193a689db3de8640d412ccd9482301647359a4e 21-Jun-2010 Dan Gohman <gohman@apple.com> Do one lookup instead of two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
fb8fc280c2ca288e1aeceedbff0b91ec44c00791 21-Jun-2010 Dan Gohman <gohman@apple.com> Generalize this to look in the regular ValueMap in addition to
the LocalValueMap, to make it more flexible when fast-isel isn't
proceding straight top-down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106414 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
37db6cdaea47d0637bdbe624f7b10ff8f82928ad 21-Jun-2010 Dan Gohman <gohman@apple.com> Generalize this to look in the regular ValueMap in addition to
the LocalValueMap, to make it more flexible when fast-isel isn't
proceding straight top-down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106414 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8d7f162c51100a24ac72c89d94b48bd892a7433e 19-Jun-2010 Bob Wilson <bob.wilson@apple.com> Tidy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106383 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
54eee524f192a0e7395d057481e8d4240729d7b4 19-Jun-2010 Bob Wilson <bob.wilson@apple.com> Tidy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106383 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
fdeb393caefd0e169d3195892e8c220a1688372a 19-Jun-2010 Dan Gohman <gohman@apple.com> Teach regular and fast isel to set dead flags on unused implicit defs
on calls and similar instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106353 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
db4971259ce94cea26e555e9ade82672a3581f5c 19-Jun-2010 Dan Gohman <gohman@apple.com> Teach regular and fast isel to set dead flags on unused implicit defs
on calls and similar instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106353 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
b1a0ebd2137a270821d02550b00ecbc67e85492c 19-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Only run CoalesceExtSubRegs when we can expect LiveIntervalAnalysis to clean up
the inserted INSERT_SUBREGs after us.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106345 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
fe181f4848a8c774155b8d853c2f53f7e7679872 19-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Only run CoalesceExtSubRegs when we can expect LiveIntervalAnalysis to clean up
the inserted INSERT_SUBREGs after us.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106345 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
24ff056654cd4eae6c6403b81dfceaa46605f395 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Allow ARM if-converter to be run after post allocation scheduling.
- This fixed a number of bugs in if-converter, tail merging, and post-allocation
scheduler. If-converter now runs branch folding / tail merging first to
maximize if-conversion opportunities.
- Also changed the t2IT instruction slightly. It now defines the ITSTATE
register which is read by instructions in the IT block.
- Added Thumb2 specific hazard recognizer to ensure the scheduler doesn't
change the instruction ordering in the IT block (since IT mask has been
finalized). It also ensures no other instructions can be scheduled between
instructions in the IT block.

This is not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106344 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
achineVerifier.cpp
ostRASchedulerList.cpp
argetInstrInfoImpl.cpp
86050dc8cc0aaea8c9dfeb89de02cafbd7f48d92 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Allow ARM if-converter to be run after post allocation scheduling.
- This fixed a number of bugs in if-converter, tail merging, and post-allocation
scheduler. If-converter now runs branch folding / tail merging first to
maximize if-conversion opportunities.
- Also changed the t2IT instruction slightly. It now defines the ITSTATE
register which is read by instructions in the IT block.
- Added Thumb2 specific hazard recognizer to ensure the scheduler doesn't
change the instruction ordering in the IT block (since IT mask has been
finalized). It also ensures no other instructions can be scheduled between
instructions in the IT block.

This is not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106344 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
achineVerifier.cpp
ostRASchedulerList.cpp
argetInstrInfoImpl.cpp
dd67159ea024c078f6c9f3c41bc400b1f3f2f6e1 19-Jun-2010 Jim Grosbach <grosbach@apple.com> back-end libcall handling for ATOMIC_SWAP (__sync_lock_test_and_set)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106342 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
ef6eb9c7ab7967790566c5e2d47977d89fc060ee 19-Jun-2010 Jim Grosbach <grosbach@apple.com> back-end libcall handling for ATOMIC_SWAP (__sync_lock_test_and_set)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106342 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
46f67f5cb3178309558a258409fcf9fa99c45e80 19-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> TwoAddressInstructionPass::CoalesceExtSubRegs can insert INSERT_SUBREG
instructions, but it doesn't really understand live ranges, so the first
INSERT_SUBREG uses an implicitly defined register.

Fix it in LiveVariableAnalysis by adding the <undef> flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106333 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
0465bcffbbffb5ff5f420787b4350cb8abb196f7 19-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> TwoAddressInstructionPass::CoalesceExtSubRegs can insert INSERT_SUBREG
instructions, but it doesn't really understand live ranges, so the first
INSERT_SUBREG uses an implicitly defined register.

Fix it in LiveVariableAnalysis by adding the <undef> flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106333 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d50455b0277fa2ee50a8d3498954fe90fb650221 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Fix an inverted condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106330 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
6a5e2832d0a30719602f9befe61f35ab19299de7 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Fix an inverted condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106330 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
0575fadf6350cdfeec42797a029617dced4ac3f4 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Fix cross initialization compilation error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106324 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a845706dc1cebfe75913832e07ef114519a879d6 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Fix cross initialization compilation error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106324 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a03a63ce7fb2438b664a7a2ae56f1bdae44ea0ea 18-Jun-2010 Evan Cheng <evan.cheng@apple.com> Teach iff-converter to properly count # of dups. It was not skipping over dbg_value's which resulted in non-duplicated instructions being deleted. rdar://8104384.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106323 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
a9934dc20a5e137a35be6f640c79fda9261f985b 18-Jun-2010 Evan Cheng <evan.cheng@apple.com> Teach iff-converter to properly count # of dups. It was not skipping over dbg_value's which resulted in non-duplicated instructions being deleted. rdar://8104384.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106323 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
9157197823bde76c883b180dd5b76e6893c24b00 18-Jun-2010 Jim Grosbach <grosbach@apple.com> Add Expand-to-libcall support for additional atomics. This covers the usual
entries used by llvm-gcc. *_[U]MIN and such can be added later if needed.

This enables the front ends to simplify handling of the atomic intrinsics by
removing the target-specific decision about which targets can handle the
intrinsics.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106321 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
e03262fcfc09356a0e3ec589041bc2e0248944e9 18-Jun-2010 Jim Grosbach <grosbach@apple.com> Add Expand-to-libcall support for additional atomics. This covers the usual
entries used by llvm-gcc. *_[U]MIN and such can be added later if needed.

This enables the front ends to simplify handling of the atomic intrinsics by
removing the target-specific decision about which targets can handle the
intrinsics.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106321 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
3f57a6025111ce8f71b0116a2efd01afa971fa5b 18-Jun-2010 Dan Gohman <gohman@apple.com> Don't leak RegClass2VRegMap, which is now a new[] array instead of a
std::vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106298 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
71f095b20a2b1710d35b81fced4ae8b2ca1a6f61 18-Jun-2010 Dan Gohman <gohman@apple.com> Don't leak RegClass2VRegMap, which is now a new[] array instead of a
std::vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106298 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
05bf7d1642fe2553cc94fd2c27da62357560ab8d 18-Jun-2010 Dan Gohman <gohman@apple.com> Start TargetRegisterClass indices at 0 instead of 1, so that
MachineRegisterInfo doesn't have to confusingly allocate an extra
entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106296 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
a606d955de3b0f777131d74162eb6f11b5f95d75 18-Jun-2010 Dan Gohman <gohman@apple.com> Start TargetRegisterClass indices at 0 instead of 1, so that
MachineRegisterInfo doesn't have to confusingly allocate an extra
entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106296 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
d00487b4c1a7a20dc10f75be89a3b8158cbd1eaa 18-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix PR7372: Conditional branches (at least on ARM) are treated as predicated,
so when IfConverter::CopyAndPredicateBlock checks to see if it should ignore
an instruction because it is a branch, it should not check if the branch is
predicated.

This case (when IgnoreBr is true) is only relevant from IfConvertTriangle,
where new branches are inserted after the block has been copied and predicated.
If the original branch is not removed, we end up with multiple conditional
branches (possibly conflicting) at the end of the block. Aside from any
immediate errors resulting from that, this confuses the AnalyzeBranch functions
so that the branches are not analyzable. That in turn causes the IfConverter to
think that the "Simple" pattern can be applied, and things go downhill fast
because the "Simple" pattern does _not_ apply if the block can fall through.

This is pretty fragile. If there are other degenerate cases where AnalyzeBranch
fails, but where the block may still fall through, the IfConverter should not
perform its "Simple" if-conversion. But, I don't know how to do that with the
current AnalyzeBranch interface, so for now, the best thing seems to be to
avoid creating branches that AnalyzeBranch cannot handle.

Evan, please review!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106291 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
f50e952b0d3df2045b48c8e1ce86639affa6d02c 18-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix PR7372: Conditional branches (at least on ARM) are treated as predicated,
so when IfConverter::CopyAndPredicateBlock checks to see if it should ignore
an instruction because it is a branch, it should not check if the branch is
predicated.

This case (when IgnoreBr is true) is only relevant from IfConvertTriangle,
where new branches are inserted after the block has been copied and predicated.
If the original branch is not removed, we end up with multiple conditional
branches (possibly conflicting) at the end of the block. Aside from any
immediate errors resulting from that, this confuses the AnalyzeBranch functions
so that the branches are not analyzable. That in turn causes the IfConverter to
think that the "Simple" pattern can be applied, and things go downhill fast
because the "Simple" pattern does _not_ apply if the block can fall through.

This is pretty fragile. If there are other degenerate cases where AnalyzeBranch
fails, but where the block may still fall through, the IfConverter should not
perform its "Simple" if-conversion. But, I don't know how to do that with the
current AnalyzeBranch interface, so for now, the best thing seems to be to
avoid creating branches that AnalyzeBranch cannot handle.

Evan, please review!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106291 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
e25284cbbb6f846f148f3f71db650279ff927d47 18-Jun-2010 Dan Gohman <gohman@apple.com> Don't bother calling releaseMemory before destroying the DominatorTreeBase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106287 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
45934330150aecbc98c2d60fe7f17fa69e62ba71 18-Jun-2010 Dan Gohman <gohman@apple.com> Don't bother calling releaseMemory before destroying the DominatorTreeBase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106287 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
5f946e25b216f2f9705c23eb5a3a03af5c39792d 18-Jun-2010 Dan Gohman <gohman@apple.com> Minor code simplifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106286 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
927f866105fa29feb32c050ee823d60c2509ec76 18-Jun-2010 Dan Gohman <gohman@apple.com> Minor code simplifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106286 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e2a9508b0f0ac87d802ef01aa8038846c2ef7976 18-Jun-2010 Dan Gohman <gohman@apple.com> Give NamedRegionTimer an Enabled flag, allowing all its clients to
switch from this:

if (TimePassesIsEnabled) {
NamedRegionTimer T(Name, GroupName);
do_something();
} else {
do_something(); // duplicate the code, this time without a timer!
}

to this:

{
NamedRegionTimer T(Name, GroupName, TimePassesIsEnabled);
do_something();
}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106285 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
electionDAG/SelectionDAGISel.cpp
03c3dc7b6828d48a9f3be50896b3390a696caa64 18-Jun-2010 Dan Gohman <gohman@apple.com> Give NamedRegionTimer an Enabled flag, allowing all its clients to
switch from this:

if (TimePassesIsEnabled) {
NamedRegionTimer T(Name, GroupName);
do_something();
} else {
do_something(); // duplicate the code, this time without a timer!
}

to this:

{
NamedRegionTimer T(Name, GroupName, TimePassesIsEnabled);
do_something();
}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106285 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
electionDAG/SelectionDAGISel.cpp
84ba6fadbac7620809a99ab7c637de49d16ee63e 18-Jun-2010 Dan Gohman <gohman@apple.com> Don't replace the old Ordering object with a new one; just clear()
the old one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106284 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
27445f0375ae01652c08569c7843bddc95cedd61 18-Jun-2010 Dan Gohman <gohman@apple.com> Don't replace the old Ordering object with a new one; just clear()
the old one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106284 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
23cb629501cb8a9881c02bd7adc3bb03a0984fa3 18-Jun-2010 Dan Gohman <gohman@apple.com> Don't call clear() on DbgInfo when it's going to be deleted anyway.

Don't replace the old DbgInfo with a new one when clear() on the
old one is sufficient.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106283 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c97df860dd8172077c9b3b086c192f1b05365699 18-Jun-2010 Dan Gohman <gohman@apple.com> Don't call clear() on DbgInfo when it's going to be deleted anyway.

Don't replace the old DbgInfo with a new one when clear() on the
old one is sufficient.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106283 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4e3d982962b5816515cbe36e73a9f41ed5af6673 18-Jun-2010 Dan Gohman <gohman@apple.com> Change UpdateNodeOperands' operand and return value from SDValue to
SDNode *, since it doesn't care about the ResNo value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106282 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
027657db7cf60bcbf40403496d7e4a170f9ce1ec 18-Jun-2010 Dan Gohman <gohman@apple.com> Change UpdateNodeOperands' operand and return value from SDValue to
SDNode *, since it doesn't care about the ResNo value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106282 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
bcc946d7409ba0d8918f4d0256090ff1a8b90392 18-Jun-2010 Dan Gohman <gohman@apple.com> Eliminate unnecessary uses of getZExtValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106279 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
e368b460a206fafa0d31d5d059b1779b94f7df8c 18-Jun-2010 Dan Gohman <gohman@apple.com> Eliminate unnecessary uses of getZExtValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106279 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
1c3b8d6192c8d27aecfbfed5eb46e2863c595aa4 18-Jun-2010 Dan Gohman <gohman@apple.com> isValueValidForType can be a static member function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106278 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7720cb3823d5b5868f9b88b0127277820edcb562 18-Jun-2010 Dan Gohman <gohman@apple.com> isValueValidForType can be a static member function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106278 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ee544cf62d01d9b70170f92b5650dcd763e6013f 18-Jun-2010 Dan Gohman <gohman@apple.com> Fold the ShrinkDemandedOps pass into the regular DAGCombiner pass,
which is faster, simpler, and less surprising.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
8a7f7426eeb18fef58c3471db23fc829b67bc350 18-Jun-2010 Dan Gohman <gohman@apple.com> Fold the ShrinkDemandedOps pass into the regular DAGCombiner pass,
which is faster, simpler, and less surprising.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
c0348bf891cf25a857b53fbc7eea116cef00d3da 18-Jun-2010 Dan Gohman <gohman@apple.com> Handle ext(ext(x)) -> ext(x) immediately, since it's simple.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106256 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9e86a735682f3f62ff79291b4673e00cf5f2385b 18-Jun-2010 Dan Gohman <gohman@apple.com> Handle ext(ext(x)) -> ext(x) immediately, since it's simple.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106256 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9fa5e3347d0fcd2a4626807dc2d8f7ceedf48ffd 18-Jun-2010 Stuart Hastings <stuart@apple.com> Add a DebugLoc parameter to TargetInstrInfo::InsertBranch(). This
addresses a longstanding deficiency noted in many FIXMEs scattered
across all the targets.

This effectively moves the problem up one level, replacing eleven
FIXMEs in the targets with eight FIXMEs in CodeGen, plus one path
through FastISel where we actually supply a DebugLoc, fixing Radar
7421831.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106243 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
achineBasicBlock.cpp
HIElimination.cpp
electionDAG/FastISel.cpp
3bf912593301152b65accb9d9c37a95172f1df5a 18-Jun-2010 Stuart Hastings <stuart@apple.com> Add a DebugLoc parameter to TargetInstrInfo::InsertBranch(). This
addresses a longstanding deficiency noted in many FIXMEs scattered
across all the targets.

This effectively moves the problem up one level, replacing eleven
FIXMEs in the targets with eight FIXMEs in CodeGen, plus one path
through FastISel where we actually supply a DebugLoc, fixing Radar
7421831.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106243 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
achineBasicBlock.cpp
HIElimination.cpp
electionDAG/FastISel.cpp
ca99c62bc866adc18ff78d20e867c7f4c35f6885 17-Jun-2010 Jim Grosbach <grosbach@apple.com> add missing break. inconsequential as the code shouldn't be reached, but
for correctness' sake, it should be there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106229 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
59c38f31acf87901208bbf790508196b1c0ad1fd 17-Jun-2010 Jim Grosbach <grosbach@apple.com> add missing break. inconsequential as the code shouldn't be reached, but
for correctness' sake, it should be there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106229 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7f31562a65a7245f4ada75d6e30c9ecb74ebcd5d 17-Jun-2010 Jim Grosbach <grosbach@apple.com> Add entries for Expanding atomic intrinsics to libcalls. Just a placeholder
for the moment. The implementation of the libcall will follow.

Currently, the llvm-gcc knows when the intrinsics can be correctly handled by
the back end and only generates them in those cases, issuing libcalls directly
otherwise. That's too much coupling. The intrinsics should always be
generated and the back end decide how to handle them, be it with a libcall,
inline code, or whatever. This patch is a step in that direction.

rdar://8097623



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106227 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b56ce8171ec52f44015d95127faaa7dd4ed92763 17-Jun-2010 Jim Grosbach <grosbach@apple.com> Add entries for Expanding atomic intrinsics to libcalls. Just a placeholder
for the moment. The implementation of the libcall will follow.

Currently, the llvm-gcc knows when the intrinsics can be correctly handled by
the back end and only generates them in those cases, issuing libcalls directly
otherwise. That's too much coupling. The intrinsics should always be
generated and the back end decide how to handle them, be it with a libcall,
inline code, or whatever. This patch is a step in that direction.

rdar://8097623



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106227 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8122b0391df729cb15600c0df73331070c912ba9 17-Jun-2010 Jim Grosbach <grosbach@apple.com> ISD::MEMBARRIER should lower to a libcall (__sync_synchronize) if the target
sets the legalize action to Expand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bbfc0d22a9a8e197a5ea428f14d37366a1fadd5f 17-Jun-2010 Jim Grosbach <grosbach@apple.com> ISD::MEMBARRIER should lower to a libcall (__sync_synchronize) if the target
sets the legalize action to Expand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4e06d2e90727a807d5164a034f237c78da56cc38 16-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow a register to be redefined multiple times in a basic block.

LiveVariableAnalysis was a bit picky about a register only being redefined once,
but that really isn't necessary.

Here is an example of chained INSERT_SUBREGs that we can handle now:

68 %reg1040<def> = INSERT_SUBREG %reg1040, %reg1028<kill>, 14
register: %reg1040 +[70,134:0)
76 %reg1040<def> = INSERT_SUBREG %reg1040, %reg1029<kill>, 13
register: %reg1040 replace range with [70,78:1) RESULT: %reg1040,0.000000e+00 = [70,78:1)[78,134:0) 0@78-(134) 1@70-(78)
84 %reg1040<def> = INSERT_SUBREG %reg1040, %reg1030<kill>, 12
register: %reg1040 replace range with [78,86:2) RESULT: %reg1040,0.000000e+00 = [70,78:1)[78,86:2)[86,134:0) 0@86-(134) 1@70-(78) 2@78-(86)
92 %reg1040<def> = INSERT_SUBREG %reg1040, %reg1031<kill>, 11
register: %reg1040 replace range with [86,94:3) RESULT: %reg1040,0.000000e+00 = [70,78:1)[78,86:2)[86,94:3)[94,134:0) 0@94-(134) 1@70-(78) 2@78-(86) 3@86-(94)

rdar://problem/8096390

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106152 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c66d0f2a9386cc7cb3237b8e3cace2b62a9c7dc8 16-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow a register to be redefined multiple times in a basic block.

LiveVariableAnalysis was a bit picky about a register only being redefined once,
but that really isn't necessary.

Here is an example of chained INSERT_SUBREGs that we can handle now:

68 %reg1040<def> = INSERT_SUBREG %reg1040, %reg1028<kill>, 14
register: %reg1040 +[70,134:0)
76 %reg1040<def> = INSERT_SUBREG %reg1040, %reg1029<kill>, 13
register: %reg1040 replace range with [70,78:1) RESULT: %reg1040,0.000000e+00 = [70,78:1)[78,134:0) 0@78-(134) 1@70-(78)
84 %reg1040<def> = INSERT_SUBREG %reg1040, %reg1030<kill>, 12
register: %reg1040 replace range with [78,86:2) RESULT: %reg1040,0.000000e+00 = [70,78:1)[78,86:2)[86,134:0) 0@86-(134) 1@70-(78) 2@78-(86)
92 %reg1040<def> = INSERT_SUBREG %reg1040, %reg1031<kill>, 11
register: %reg1040 replace range with [86,94:3) RESULT: %reg1040,0.000000e+00 = [70,78:1)[78,86:2)[86,94:3)[94,134:0) 0@94-(134) 1@70-(78) 2@78-(86) 3@86-(94)

rdar://problem/8096390

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106152 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ee4995fbcb91de2c96d353f4f6d0d0c8875604e4 16-Jun-2010 Jim Grosbach <grosbach@apple.com> add FIXME

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106126 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
956352eb4682ba7000486d8712a4435a843a48d4 16-Jun-2010 Jim Grosbach <grosbach@apple.com> add FIXME

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106126 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
5b6de7032dccbde9105d1037f315b1d08bfaf339 16-Jun-2010 Bill Wendling <isanbard@gmail.com> Improve comment to include that the use of a preg is also verboten in this situation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106119 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
504c0cda91a6c6c8828c5a55f1516881b6f99e8c 16-Jun-2010 Bill Wendling <isanbard@gmail.com> Improve comment to include that the use of a preg is also verboten in this situation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106119 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
160f30cd4ff881f768384f38f1b9d7694faa0b40 16-Jun-2010 Evan Cheng <evan.cheng@apple.com> Make post-ra scheduling, anti-dep breaking, and register scavenger (conservatively) aware of predicated instructions. This enables ARM to move if-conversion before post-ra scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106091 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
fConversion.cpp
ostRAHazardRecognizer.cpp
egisterScavenging.cpp
46df4eb46e784036cf895db271fe29e1cf2a975a 16-Jun-2010 Evan Cheng <evan.cheng@apple.com> Make post-ra scheduling, anti-dep breaking, and register scavenger (conservatively) aware of predicated instructions. This enables ARM to move if-conversion before post-ra scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106091 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
fConversion.cpp
ostRAHazardRecognizer.cpp
egisterScavenging.cpp
afc051bfd042cc6aa897a26d93eeb88f9f4802ca 16-Jun-2010 Devang Patel <dpatel@apple.com> Use separate named MDNode to hold each function's local variable info.
This speeds up local variable handling in DwarfDebug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106075 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2f7d5291de87bfa195884e84dc0efe9705c2215c 16-Jun-2010 Devang Patel <dpatel@apple.com> Use separate named MDNode to hold each function's local variable info.
This speeds up local variable handling in DwarfDebug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106075 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
00147c7a6791447a7ffb601e304b5b2642a7ca57 16-Jun-2010 Eric Christopher <echristo@apple.com> Don't emit the linkage for initializer label for mach-o tls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106073 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7500e06e3886a13e3017d7af77c35d309e875182 16-Jun-2010 Eric Christopher <echristo@apple.com> Don't emit the linkage for initializer label for mach-o tls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106073 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e3010a3eb7a6f76947a8243c1a785ecb8f3d3e5f 16-Jun-2010 Bill Wendling <isanbard@gmail.com> Create a more targeted fix for not sinking instructions into a range where it
will conflict with another live range. The place which creates this scenerio is
the code in X86 that lowers a select instruction by splitting the MBBs. This
eliminates the need to check from the bottom up in an MBB for live pregs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106066 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
d361a77f14997d4674f41545103acad3a4a902f1 16-Jun-2010 Bill Wendling <isanbard@gmail.com> Create a more targeted fix for not sinking instructions into a range where it
will conflict with another live range. The place which creates this scenerio is
the code in X86 that lowers a select instruction by splitting the MBBs. This
eliminates the need to check from the bottom up in an MBB for live pregs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106066 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
9182e2711677e7eceaed04136fadca5e83455f4f 16-Jun-2010 Stuart Hastings <stuart@apple.com> Added a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106063 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
cad22ad0bf1f1d5a40f1bc8ebe02d4edc25e2553 16-Jun-2010 Stuart Hastings <stuart@apple.com> Added a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106063 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2f5b10d1af73d991aed66a932a4282ab23e4af13 16-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix 80col violations, remove trailing whitespace, and clarify a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106057 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
92fffe04057d4528d1336b6a552a07f06858d3cb 16-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix 80col violations, remove trailing whitespace, and clarify a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106057 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
ee86aec03d3f894e9afee3d8140bce2e73644fe5 15-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the local register allocator.
Please use the fast allocator instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106051 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
egAllocLocal.cpp
8a3eab9b20acb7193285bc31c9a3e23c7c7d7173 15-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the local register allocator.
Please use the fast allocator instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106051 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
egAllocLocal.cpp
fac0ffebe509898a3b97b01d483a02a68417cc62 15-Jun-2010 Mon P Wang <wangmp@apple.com> Fixed vector widening of binary instructions that can trap. Patch by Visa Putkinen!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106038 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
9c4a84b4f38790a74d2e4c95870e27e71a79e326 15-Jun-2010 Mon P Wang <wangmp@apple.com> Fixed vector widening of binary instructions that can trap. Patch by Visa Putkinen!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106038 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
89b9c321592b13b84c4da082a66399caf7c46697 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> IfConversion's AnalyzeBlocks method always returns false; clean it up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106027 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
6fb124bee95d07f5d5aed42c92182a813fd31cbd 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> IfConversion's AnalyzeBlocks method always returns false; clean it up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106027 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
aea9847a6ae97b9d964fce7f1e5e59619a5ad65a 15-Jun-2010 Jim Grosbach <grosbach@apple.com> fix naming

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106024 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
288694f430bc227d12b74f84f7e26e64d3b7f56b 15-Jun-2010 Jim Grosbach <grosbach@apple.com> fix naming

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106024 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
642767a8f648c45c9dabaea089bdf48783ad4806 15-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix an exotic bug that only showed up in an internal test case.

SimpleRegisterCoalescing::JoinIntervals() uses CoalescerPair to determine if a
copy is coalescable, and in very rare cases it can return true where LHS is not
live - the coalescable copy can come from an alias of the physreg in LHS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106021 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
1b2f94c621250889cb328816714e24671057f705 15-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix an exotic bug that only showed up in an internal test case.

SimpleRegisterCoalescing::JoinIntervals() uses CoalescerPair to determine if a
copy is coalescable, and in very rare cases it can return true where LHS is not
live - the coalescable copy can come from an alias of the physreg in LHS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106021 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
01320da35e8a0a327ede52cc1d4598b0a317f00b 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106015 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
669db04130911252a38d4470a7c136ffc26ec577 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106015 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
1405972013c7dfb9b02437a5f1a45bfa3a3ee7df 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add some missing checks for the case where the extract_subregs are
combined to an insert_subreg, i.e., where the destination register is larger
than the source. We need to check that the subregs can be composed for that
case in a symmetrical way to the case when the destination is smaller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106004 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4ffd22d8103aa374dc9573012993139948165577 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add some missing checks for the case where the extract_subregs are
combined to an insert_subreg, i.e., where the destination register is larger
than the source. We need to check that the subregs can be composed for that
case in a symmetrical way to the case when the destination is smaller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106004 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
0aaa52e36a8f2c71ed0661a2d13d93d7bf069a35 15-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid processing early clobbers twice in RegAllocFast.

Early clobbers defining a virtual register were first alocated to a physreg and
then processed as a physreg EC, spilling the virtreg.

This fixes PR7382.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105998 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
75ac4d9c2dfb22f84da25dec03df7a07f3dad1fa 15-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid processing early clobbers twice in RegAllocFast.

Early clobbers defining a virtual register were first alocated to a physreg and
then processed as a physreg EC, spilling the virtreg.

This fixes PR7382.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105998 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
7f1a4e2fde272e28ccf372a5aa79dc3a19916180 15-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add CoalescerPair helper class.

Given a copy instruction, CoalescerPair can determine which registers to
coalesce in order to eliminate the copy. It deals with all the subreg fun to
determine a tuple (DstReg, SrcReg, SubIdx) such that:

- SrcReg is a virtual register that will disappear after coalescing.
- DstReg is a virtual or physical register whose live range will be extended.
- SubIdx is 0 when DstReg is a physical register.
- SrcReg can be joined with DstReg:SubIdx.

CoalescerPair::isCoalescable() determines if another copy instruction is
compatible with the same tuple. This fixes some NEON miscompilations where
shuffles are getting coalesced as if they were copies.

The CoalescerPair class will replace a lot of the spaghetti logic in JoinCopy
later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105997 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
40d07bbebbe73914af28be1bdab169ce8333adca 15-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add CoalescerPair helper class.

Given a copy instruction, CoalescerPair can determine which registers to
coalesce in order to eliminate the copy. It deals with all the subreg fun to
determine a tuple (DstReg, SrcReg, SubIdx) such that:

- SrcReg is a virtual register that will disappear after coalescing.
- DstReg is a virtual or physical register whose live range will be extended.
- SubIdx is 0 when DstReg is a physical register.
- SrcReg can be joined with DstReg:SubIdx.

CoalescerPair::isCoalescable() determines if another copy instruction is
compatible with the same tuple. This fixes some NEON miscompilations where
shuffles are getting coalesced as if they were copies.

The CoalescerPair class will replace a lot of the spaghetti logic in JoinCopy
later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105997 91177308-0d34-0410-b5e6-96231b3b80d8
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
34878d753622fd752584a83384a226c58b98e36b 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> Generalize the pre-coalescing of extract_subregs feeding reg_sequences,
replacing the overly conservative checks that I had introduced recently to
deal with correctness issues. This makes a pretty noticable difference
in our testcases where reg_sequences are used. I've updated one test to
check that we no longer emit the unnecessary subreg moves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105991 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
852a7e362e3c539f1fe23307e946eae9ca18ae14 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> Generalize the pre-coalescing of extract_subregs feeding reg_sequences,
replacing the overly conservative checks that I had introduced recently to
deal with correctness issues. This makes a pretty noticable difference
in our testcases where reg_sequences are used. I've updated one test to
check that we no longer emit the unnecessary subreg moves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105991 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b2dd2153080f2db2f5cdd9ba31308dc0e29f602f 15-Jun-2010 Ted Kremenek <kremenek@apple.com> Update CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105987 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
76863b16c63673c81ade357cec87b7c00b4267d7 15-Jun-2010 Ted Kremenek <kremenek@apple.com> Update CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105987 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
f864806003a377d7c9a78e6a9ddadaae48d56beb 14-Jun-2010 Jim Grosbach <grosbach@apple.com> More dbg_value cleanup so the presence of debug info doesn't affect code-gen.
Make sure to skip the dbg_value instructions when moving dups out of the
diamond. rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105965 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
c834f413ae9bfd6d41545aed8d6b91c8ccb8ea16 14-Jun-2010 Jim Grosbach <grosbach@apple.com> More dbg_value cleanup so the presence of debug info doesn't affect code-gen.
Make sure to skip the dbg_value instructions when moving dups out of the
diamond. rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105965 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
bc9ff676e202bdcb252a79b41eedc644e98380d9 14-Jun-2010 Evan Cheng <evan.cheng@apple.com> - Do away with SimpleHazardRecognizer.h. It's not used and offers little value.
- Rename ExactHazardRecognizer to PostRAHazardRecognizer and move its header to include to allow targets to extend it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105959 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
xactHazardRecognizer.h
ostRAHazardRecognizer.cpp
ostRASchedulerList.cpp
impleHazardRecognizer.h
argetInstrInfoImpl.cpp
774bc882fdb3bbb0558075360c6e5bc510a0bdad 14-Jun-2010 Evan Cheng <evan.cheng@apple.com> - Do away with SimpleHazardRecognizer.h. It's not used and offers little value.
- Rename ExactHazardRecognizer to PostRAHazardRecognizer and move its header to include to allow targets to extend it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105959 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
xactHazardRecognizer.h
ostRAHazardRecognizer.cpp
ostRASchedulerList.cpp
impleHazardRecognizer.h
argetInstrInfoImpl.cpp
0b5007ad4a5374ca356440b453b39c7036af7745 14-Jun-2010 Evan Cheng <evan.cheng@apple.com> Avoid uncessary array copying.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105955 91177308-0d34-0410-b5e6-96231b3b80d8
impleHazardRecognizer.h
538ccb0d997ce310cd177b562e7b4baa0dad583c 14-Jun-2010 Evan Cheng <evan.cheng@apple.com> Avoid uncessary array copying.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105955 91177308-0d34-0410-b5e6-96231b3b80d8
impleHazardRecognizer.h
1b6f579571a05f65629239ba72725b0876937d91 14-Jun-2010 Chris Lattner <sabre@nondot.org> fix a -Wbool-conversions warning from clang.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105942 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
98cdfc779df1d8d9a0071103af13f43ba65504c2 14-Jun-2010 Chris Lattner <sabre@nondot.org> fix a -Wbool-conversions warning from clang.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105942 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
f761979641f10e87b328ffece9b148ce091cea3a 12-Jun-2010 Bill Wendling <isanbard@gmail.com> When performing the Horrible Hack(tm-Duncan) on the EH code to convert a
clean-up to a catch-all after inlining, take into account that there could be
filter IDs as well. The presence of filters don't mean that the selector catches
anything. It's just metadata information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105872 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
94366111d37d5ce37790e3c5f407d714b7f0751d 12-Jun-2010 Bill Wendling <isanbard@gmail.com> When performing the Horrible Hack(tm-Duncan) on the EH code to convert a
clean-up to a catch-all after inlining, take into account that there could be
filter IDs as well. The presence of filters don't mean that the selector catches
anything. It's just metadata information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105872 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
f4fba53483a529e8f3adc304a811dd7bd3937854 12-Jun-2010 Evan Cheng <evan.cheng@apple.com> Allow target to provide its own hazard recognizer to post-ra scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105862 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
729aab3dd3a6ea5ca23430936270154090fcc10b 12-Jun-2010 Evan Cheng <evan.cheng@apple.com> Allow target to provide its own hazard recognizer to post-ra scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105862 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
4156fe354873ab09b67131de27bb054a53e28217 12-Jun-2010 Evan Cheng <evan.cheng@apple.com> Code formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105861 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
44acc24117b1a9eafb7b9b993731ca0115569ea2 12-Jun-2010 Evan Cheng <evan.cheng@apple.com> Code formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105861 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
aa685d67d6746a64b517beb1b5c485e8285840d2 11-Jun-2010 Stuart Hastings <stuart@apple.com> Support for nested functions/classes in debug output. (Again.) Radar 7424645.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105828 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
215aa15a0d0df75af8d9cef6ef49026dcc3258a8 11-Jun-2010 Stuart Hastings <stuart@apple.com> Support for nested functions/classes in debug output. (Again.) Radar 7424645.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105828 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6bc6e42f47edc5a46345db00719186806367d035 10-Jun-2010 Evan Cheng <evan.cheng@apple.com> Code refactoring, no functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105775 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
302ef834e0a2fd03e4b435079a9fa6c1e1cdc23b 10-Jun-2010 Evan Cheng <evan.cheng@apple.com> Code refactoring, no functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105775 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
582cfd2c7045bedf00235368b74bf6351391cc7d 09-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Mark physregs defined by inline asm as implicit.

This is a bit of a hack to make inline asm look more like call instructions.
It would be better to produce correct dead flags during isel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
3013a2068421335304dce861dd5977e8cf43cbca 09-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Mark physregs defined by inline asm as implicit.

This is a bit of a hack to make inline asm look more like call instructions.
It would be better to produce correct dead flags during isel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
88287d63dcf967e22d0e235765743e4f09e3ce5d 09-Jun-2010 Evan Cheng <evan.cheng@apple.com> Allow target to place 2-address pass inserted copies in better spots. Thumb2 will use this to try to avoid breaking up IT blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105745 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
68fc2daf8fa446be04d2ed2b3cbb1b00c382458f 09-Jun-2010 Evan Cheng <evan.cheng@apple.com> Allow target to place 2-address pass inserted copies in better spots. Thumb2 will use this to try to avoid breaking up IT blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105745 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
e9a62547cf624ee5bc2090c326fc90d52d997f3d 09-Jun-2010 Bill Wendling <isanbard@gmail.com> It's an error to translate this:

%reg1025 = <sext> %reg1024
...
%reg1026 = SUBREG_TO_REG 0, %reg1024, 4

into this:

%reg1025 = <sext> %reg1024
...
%reg1027 = EXTRACT_SUBREG %reg1025, 4
%reg1026 = SUBREG_TO_REG 0, %reg1027, 4

The problem here is that SUBREG_TO_REG is there to assert that an implicit zext
occurs. It doesn't insert a zext instruction. If we allow the EXTRACT_SUBREG
here, it will give us the value after the <sext>, not the original value of
%reg1024 before <sext>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105741 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeExts.cpp
d64ba3ee62cc854218d9b76b9420493d82313d06 09-Jun-2010 Bill Wendling <isanbard@gmail.com> It's an error to translate this:

%reg1025 = <sext> %reg1024
...
%reg1026 = SUBREG_TO_REG 0, %reg1024, 4

into this:

%reg1025 = <sext> %reg1024
...
%reg1027 = EXTRACT_SUBREG %reg1025, 4
%reg1026 = SUBREG_TO_REG 0, %reg1027, 4

The problem here is that SUBREG_TO_REG is there to assert that an implicit zext
occurs. It doesn't insert a zext instruction. If we allow the EXTRACT_SUBREG
here, it will give us the value after the <sext>, not the original value of
%reg1024 before <sext>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105741 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeExts.cpp
818eeea70b328917317b5eca6a352f830565587d 09-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add argument name comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105665 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
c3c2517fed43457fed8c2e891556866dba5b83cf 09-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add argument name comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105665 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
28188e1c4986d9e4985f0f4a8ce268743eb94631 08-Jun-2010 Shih-wei Liao <sliao@google.com> Git hiccup. Retry....

Change-Id: I5a329137a43f36bab32ea62386ade11da550c0b0
ndroid.mk
smPrinter/Android.mk
electionDAG/Android.mk
c156bc696311928af01132d159b9e307436779bb 08-Jun-2010 Shih-wei Liao <sliao@google.com> Fix llvm.mk and the other 49 mk files

Change-Id: I5aa02363c1083297d163a575f5a35c495f950230
ndroid.mk
smPrinter/Android.mk
electionDAG/Android.mk
e2ce99f7360ce809150de9eb86d248675078445d 08-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix a mistake in my previous change r105437: don't access operand 2 and assume
that it is an immediate before checking that the instruction is an
EXTRACT_SUBREG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105585 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
66dc4e2acdc96990e73cfc1b8d0c2d5fa9619ae5 08-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix a mistake in my previous change r105437: don't access operand 2 and assume
that it is an immediate before checking that the instruction is an
EXTRACT_SUBREG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105585 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
0244cecc53f44bef92a685feb005e6843c44491b 08-Jun-2010 Dan Gohman <gohman@apple.com> Add some basic debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105561 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
ba1fe142450f46b44deccb21c8b422bc02b32d8b 08-Jun-2010 Dan Gohman <gohman@apple.com> Add some basic debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105561 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
8b5e7c9a4de3a0057b1e298647543f2bca3496b1 07-Jun-2010 Jim Grosbach <grosbach@apple.com> Cleanup. Process the dbg_values separately

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105554 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
66f360e990fd54ba1ea02e1ad66e2551cdb519af 07-Jun-2010 Jim Grosbach <grosbach@apple.com> Cleanup. Process the dbg_values separately

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105554 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
13d9723c06f4fc61c6ba5c31230cc69b9458dc09 07-Jun-2010 Jim Grosbach <grosbach@apple.com> Move exit check where it really belongs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105541 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
41a628237ce7892e081f126826db6b2391b100aa 07-Jun-2010 Jim Grosbach <grosbach@apple.com> Move exit check where it really belongs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105541 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
6284bf453a19da6b21c5bac5a7783b42ae694589 05-Jun-2010 Stuart Hastings <stuart@apple.com> Revert 105492 & 105493 due to a testcase regression. Radar 7424645.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105511 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6d56b9fabcfb1fc874a6122cf41d876c4673e9d4 05-Jun-2010 Stuart Hastings <stuart@apple.com> Revert 105492 & 105493 due to a testcase regression. Radar 7424645.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105511 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fd642741f04a7ecd810718e310667d34d7e8b309 05-Jun-2010 Dale Johannesen <dalej@apple.com> Fix some liveout handling related to tail calls, see comments.
I don't think this ever resulted in problems on x86, but it
would on ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105509 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
88004c25c795dae031d22e5560cc4a0f98594e7c 05-Jun-2010 Dale Johannesen <dalej@apple.com> Fix some liveout handling related to tail calls, see comments.
I don't think this ever resulted in problems on x86, but it
would on ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105509 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
614eadeaf0a05ef96843af280b49bfc2f2358ff7 05-Jun-2010 Evan Cheng <evan.cheng@apple.com> Re-apply 105308 with fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105502 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
2b4e727c6f55a4045a397250648227e2ded6c7d9 05-Jun-2010 Evan Cheng <evan.cheng@apple.com> Re-apply 105308 with fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105502 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
3c47a2c563d3630572257e8673c3188665ccaf6a 05-Jun-2010 Jim Grosbach <grosbach@apple.com> Make if-conversion ignore dbg_value instructions in its analysis. rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105498 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
870c80540d90e748df95b2e9180fa1961d739229 05-Jun-2010 Jim Grosbach <grosbach@apple.com> Make if-conversion ignore dbg_value instructions in its analysis. rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105498 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
868b080e81e10ff07964a96130abeb5caacbb925 05-Jun-2010 Stuart Hastings <stuart@apple.com> Support for nested functions/classes in debug output. Radar 7424645.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105492 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0f1b8135673f512b3373f3e1f16607f70537be72 05-Jun-2010 Stuart Hastings <stuart@apple.com> Support for nested functions/classes in debug output. Radar 7424645.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105492 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
92330c000cdc7c328110d6f9de5e4017fefac545 04-Jun-2010 Jim Grosbach <grosbach@apple.com> Skip dbg_value instructions when scanning instructions in register scavenging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105481 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
1c8ab781d5b24bc473b4baa8f3fb6e9b55597aa3 04-Jun-2010 Jim Grosbach <grosbach@apple.com> Skip dbg_value instructions when scanning instructions in register scavenging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105481 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
4b9d16ad3bbd5453808b9560f021ccc560e945c4 04-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep track of the call instructions whose clobber lists were skipped during fast
register allocation.

Process all of the clobber lists at the end of the function, marking the
registers as used in MachineRegisterInfo.

This is necessary in case the calls clobber callee-saved registers (sic).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105473 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
6de07178e1e6445080bf4f7704e274c5f219ff70 04-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep track of the call instructions whose clobber lists were skipped during fast
register allocation.

Process all of the clobber lists at the end of the function, marking the
registers as used in MachineRegisterInfo.

This is necessary in case the calls clobber callee-saved registers (sic).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105473 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
58929fc959f84e379f40ae9c6e8c436dadc7b0cd 04-Jun-2010 Mon P Wang <wangmp@apple.com> Fixed a bug during widening where we would avoid legalizing a node. When we
replace an OpA with a widened OpB, it is possible to get new uses of OpA due to CSE
when recursively updating nodes. Since OpA has been processed, the new uses are
not examined again. The patch checks if this occurred and it it did, updates the
new uses of OpA to use OpB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105453 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
f62546ab046d4bc2f055921f25f127fbb942b806 04-Jun-2010 Mon P Wang <wangmp@apple.com> Fixed a bug during widening where we would avoid legalizing a node. When we
replace an OpA with a widened OpB, it is possible to get new uses of OpA due to CSE
when recursively updating nodes. Since OpA has been processed, the new uses are
not examined again. The patch checks if this occurred and it it did, updates the
new uses of OpA to use OpB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105453 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
aebde74bd1043e0ba04cd6efcd48905979395a9b 04-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add some missing checks in TwoAddressInstructionPass::CoalesceExtSubRegs.
Check that all the instructions are in the same basic block, that the
EXTRACT_SUBREGs write to the same subregs that are being extracted, and that
the source and destination registers are in the same regclass. Some of
these constraints can be relaxed with a bit more work. Jakob suggested
that the loop that checks for subregs when NewSubIdx != 0 should use the
"nodbg" iterator, so I made that change here, too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105437 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
26bf8f9a1b6b7f9ce198c319dc650ad3073b05f8 04-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add some missing checks in TwoAddressInstructionPass::CoalesceExtSubRegs.
Check that all the instructions are in the same basic block, that the
EXTRACT_SUBREGs write to the same subregs that are being extracted, and that
the source and destination registers are in the same regclass. Some of
these constraints can be relaxed with a bit more work. Jakob suggested
that the loop that checks for subregs when NewSubIdx != 0 should use the
"nodbg" iterator, so I made that change here, too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105437 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
abe1fa816602c5e4ab74e28fbb6af73899fee339 04-Jun-2010 Jim Grosbach <grosbach@apple.com> Cleanup 80-column and trim trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105435 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
6ee358b4eb92298357687cb460dde8e26678aca2 04-Jun-2010 Jim Grosbach <grosbach@apple.com> Cleanup 80-column and trim trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105435 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
8101682108a26049367567a8fbc0ecaf7307481b 03-Jun-2010 Dan Gohman <gohman@apple.com> Fix SimplifyDemandedBits' AssertZext logic to demand all the bits. It
needs to demand the high bits because it's asserting that they're zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105406 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
400f75cb5ed39ab4f071f78f6a26beefbc8a46f0 03-Jun-2010 Dan Gohman <gohman@apple.com> Fix SimplifyDemandedBits' AssertZext logic to demand all the bits. It
needs to demand the high bits because it's asserting that they're zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105406 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d6967f3865749675ab22ed1d1897e1164c03c3bf 03-Jun-2010 Bob Wilson <bob.wilson@apple.com> Revert 105308.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105399 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
3844173f6e5c2d3e309d71d8980e25cca1b9305d 03-Jun-2010 Bob Wilson <bob.wilson@apple.com> Revert 105308.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105399 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
1a4c2e3aabbed57e325b457355c13d7b7c09f73b 03-Jun-2010 Bill Wendling <isanbard@gmail.com> Machine sink could potentially sink instructions into a block where the physical
registers it defines then interfere with an existing preg live range.

For instance, if we had something like these machine instructions:

BB#0
... = imul ... EFLAGS<imp-def,dead>
test ..., EFLAGS<imp-def>
jcc BB#2 EFLAGS<imp-use>

BB#1
... ; fallthrough to BB#2

BB#2
... ; No code that defines EFLAGS
jcc ... EFLAGS<imp-use>

Machine sink will come along, see that imul implicitly defines EFLAGS, but
because it's "dead", it assumes that it can move imul into BB#2. But when it
does, imul's "dead" imp-def of EFLAGS is raised from the dead (a zombie) and
messes up the condition code for the jump (and pretty much anything else which
relies upon it being correct).

The solution is to know which pregs are live going into a basic block. However,
that information isn't calculated at this point. Nor does the LiveVariables pass
take into account non-allocatable physical registers. In lieu of this, we do a
*very* conservative pass through the basic block to determine if a preg is live
coming out of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105387 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
869d60d39d579b2051a8e34f460de72f071c2172 03-Jun-2010 Bill Wendling <isanbard@gmail.com> Machine sink could potentially sink instructions into a block where the physical
registers it defines then interfere with an existing preg live range.

For instance, if we had something like these machine instructions:

BB#0
... = imul ... EFLAGS<imp-def,dead>
test ..., EFLAGS<imp-def>
jcc BB#2 EFLAGS<imp-use>

BB#1
... ; fallthrough to BB#2

BB#2
... ; No code that defines EFLAGS
jcc ... EFLAGS<imp-use>

Machine sink will come along, see that imul implicitly defines EFLAGS, but
because it's "dead", it assumes that it can move imul into BB#2. But when it
does, imul's "dead" imp-def of EFLAGS is raised from the dead (a zombie) and
messes up the condition code for the jump (and pretty much anything else which
relies upon it being correct).

The solution is to know which pregs are live going into a basic block. However,
that information isn't calculated at this point. Nor does the LiveVariables pass
take into account non-allocatable physical registers. In lieu of this, we do a
*very* conservative pass through the basic block to determine if a preg is live
coming out of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105387 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
dbf4b2d0533807a789d38f850f5e6cb00d1d3d1f 03-Jun-2010 Eric Christopher <echristo@apple.com> One underscore, not two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105379 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7310064f4d14b62029805ab16a11ff443ea309d5 03-Jun-2010 Eric Christopher <echristo@apple.com> One underscore, not two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105379 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
64d4b7c572c6b6a711dfdcd62a7919ba3c4665b9 03-Jun-2010 Eli Friedman <eli.friedman@gmail.com> Implement expansion in type legalization for add/sub with overflow. The
expansion is the same as that used by LegalizeDAG.

The resulting code sucks in terms of performance/codesize on x86-32 for a
64-bit operation; I haven't looked into whether different expansions might be
better in general.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
268637ed0f34e10e4125e94c44ff3e2975a19166 03-Jun-2010 Eli Friedman <eli.friedman@gmail.com> Implement expansion in type legalization for add/sub with overflow. The
expansion is the same as that used by LegalizeDAG.

The resulting code sucks in terms of performance/codesize on x86-32 for a
64-bit operation; I haven't looked into whether different expansions might be
better in general.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
09142076c8b5b2ee4371ee938f11d70aad241d58 03-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the fast register allocator by default for -O0 builds.

This affects both llvm-gcc and clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105372 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
8b89c64b5ca469366b8cde5a242ac41c040bb1aa 03-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the fast register allocator by default for -O0 builds.

This affects both llvm-gcc and clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105372 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
20e4cc9761f93188b3466fe87c2ff832eb05087e 03-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use readsWritesVirtualRegister instead of counting uses and defs when inserting
spills and reloads.

This means that a partial define of a register causes a reload so the other
parts of the register are preserved.

The reload can be prevented by adding an <imp-def> operand for the full
register. This is already done by the coalescer and live interval analysis where
relevant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105369 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ead06be02fe6b9a2bf6fbe04237c1276ed0cdb5c 03-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use readsWritesVirtualRegister instead of counting uses and defs when inserting
spills and reloads.

This means that a partial define of a register causes a reload so the other
parts of the register are preserved.

The reload can be prevented by adding an <imp-def> operand for the full
register. This is already done by the coalescer and live interval analysis where
relevant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105369 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c3e90d71d0f3a6eacd5e8ff69f6821e3ea666648 03-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add full register <imp-def> operands when the coalescer is creating partial
register updates.

These operands tell the spiller that the other parts of the partially defined
register are don't-care, and a reload is not necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105361 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
02571a3a1f2b446cbef29761ebe50bde400621fc 03-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add full register <imp-def> operands when the coalescer is creating partial
register updates.

These operands tell the spiller that the other parts of the partially defined
register are don't-care, and a reload is not necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105361 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
529a9497d20172f52db11116aae0cd2c5e030c31 03-Jun-2010 Bill Wendling <isanbard@gmail.com> Compulsive reformating. No functionalitical changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105359 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
05c68374c1c73599a0b7044ad09fb4827d128ec5 03-Jun-2010 Bill Wendling <isanbard@gmail.com> Compulsive reformating. No functionalitical changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105359 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
d2776e0f42e69a90cd99e134481505520973584b 03-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Slightly change the meaning of the reMaterialize target hook when the original
instruction defines subregisters.

Any existing subreg indices on the original instruction are preserved or
composed with the new subreg index.

Also substitute multiple operands mentioning the original register by using the
new MachineInstr::substituteRegister() function. This is necessary because there
will soon be <imp-def> operands added to non read-modify-write partial
definitions. This instruction:

%reg1234:foo = FLAP %reg1234<imp-def>

will reMaterialize(%reg3333, bar) like this:

%reg3333:bar-foo = FLAP %reg333:bar<imp-def>

Finally, replace the TargetRegisterInfo pointer argument with a reference to
indicate that it cannot be NULL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105358 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
9edf7deb37f0f97664f279040fa15d89f32e23d9 03-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Slightly change the meaning of the reMaterialize target hook when the original
instruction defines subregisters.

Any existing subreg indices on the original instruction are preserved or
composed with the new subreg index.

Also substitute multiple operands mentioning the original register by using the
new MachineInstr::substituteRegister() function. This is necessary because there
will soon be <imp-def> operands added to non read-modify-write partial
definitions. This instruction:

%reg1234:foo = FLAP %reg1234<imp-def>

will reMaterialize(%reg3333, bar) like this:

%reg3333:bar-foo = FLAP %reg333:bar<imp-def>

Finally, replace the TargetRegisterInfo pointer argument with a reference to
indicate that it cannot be NULL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105358 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
9699a4f87d05daf8809924950a4301a2f93058ad 02-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Remove the TargetRegisterClass member from CalleeSavedInfo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105344 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
42d075c4fb21995265961501cec9ff6e3fb497ce 02-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Remove the TargetRegisterClass member from CalleeSavedInfo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105344 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
a17d0b8d02df6535afb7593244d410a3dc4ff60a 02-Jun-2010 Devang Patel <dpatel@apple.com> Skip identical instruction while calculating DBG_VALUE range.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105340 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
354eb7ea968f35a9e8628b8036a69f48a66e1ff9 02-Jun-2010 Devang Patel <dpatel@apple.com> Skip identical instruction while calculating DBG_VALUE range.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105340 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
89e6290f4307712cdf70249b099f9a9df0b407f5 02-Jun-2010 Bob Wilson <bob.wilson@apple.com> Rename canCombinedSubRegIndex method to something more grammatically correct
and tidy up the comment describing it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105339 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
91a74da036d3a9442953ae1de3e797a50da4ccf0 02-Jun-2010 Bob Wilson <bob.wilson@apple.com> Rename canCombinedSubRegIndex method to something more grammatically correct
and tidy up the comment describing it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105339 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
a1b75ab2cf9d5564d13145165350c4596a45bd5f 02-Jun-2010 Devang Patel <dpatel@apple.com> Use local small vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105332 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
b9abe9f2ad213a1510c23525721d317ec44ee97f 02-Jun-2010 Devang Patel <dpatel@apple.com> Use local small vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105332 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c8d6fe97e38e04e8765ab8fd0fe5a1c3d8bc5234 02-Jun-2010 Jim Grosbach <grosbach@apple.com> Not all entries in the range will have an SUnit. Check for that when looking
for debug information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105324 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
riticalAntiDepBreaker.cpp
086723d244952aee690a8aa39485a0fa0d3a7700 02-Jun-2010 Jim Grosbach <grosbach@apple.com> Not all entries in the range will have an SUnit. Check for that when looking
for debug information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105324 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
riticalAntiDepBreaker.cpp
579a22a7c5b2254698bde8c386a92ed8724b85cf 02-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Remove uses of getCalleeSavedRegClasses from outside the
backends and removes the virtual declaration. With that out of the way
I should be able to cleanup one backend at a time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105321 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
ce48c1de828688b34cf5c2038fde23368a0a45f4 02-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Remove uses of getCalleeSavedRegClasses from outside the
backends and removes the virtual declaration. With that out of the way
I should be able to cleanup one backend at a time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105321 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
2100c364b8bd9f851e6024ad77930e6b5a844163 02-Jun-2010 Evan Cheng <evan.cheng@apple.com> Enable machine cse of instructions which define physical registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105308 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
9d709a8edb696e89b33cd3c2886c8db735b02318 02-Jun-2010 Evan Cheng <evan.cheng@apple.com> Enable machine cse of instructions which define physical registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105308 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
e0ee785fabe21bbba1264dc3ba37c4a5620a2a75 02-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix an obvious mistake: don't change the operands until all of them have been
checked and it is safe to proceed with the changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105304 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b2c2a972b075542ab5a02c554ec4a5cc0bcb95a0 02-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix an obvious mistake: don't change the operands until all of them have been
checked and it is safe to proceed with the changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105304 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
20caa1c63307ea36d44818e0d0cc6cd4307c294b 02-Jun-2010 Jim Grosbach <grosbach@apple.com> Update debug information when breaking anti-dependencies. rdar://7759363

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105300 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
riticalAntiDepBreaker.cpp
533934e06e99a86e8c93f8ec9b9d3b2c527b747e 02-Jun-2010 Jim Grosbach <grosbach@apple.com> Update debug information when breaking anti-dependencies. rdar://7759363

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105300 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
riticalAntiDepBreaker.cpp
badcdfda8809d29968ee2e8c0725b79d4f85b9bb 02-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly compose subregister indices when coalescing.
The comment about ordering of subreg indices is no longer true.
This exposed a bug in the new substVirtReg method that is also fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105294 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
impleRegisterCoalescing.cpp
a5135f60dd95275dcbc1123f866889151ced933d 02-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly compose subregister indices when coalescing.
The comment about ordering of subreg indices is no longer true.
This exposed a bug in the new substVirtReg method that is also fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105294 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
impleRegisterCoalescing.cpp
954ada4da87cba06470d953205c25f6f11ae26ec 01-Jun-2010 Devang Patel <dpatel@apple.com> Ignore line number of debug value in undefined register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105292 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f2e77676242bb5a3940da7b41c42704135e6bd92 01-Jun-2010 Devang Patel <dpatel@apple.com> Ignore line number of debug value in undefined register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105292 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
90b1ad99c727ad747cd53df6b711bb0085e0431b 01-Jun-2010 Devang Patel <dpatel@apple.com> Keep track of incoming debug value of unused argument.
Radar 7927666.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105285 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
9126c0d42a5176e5865171713fae4a62e3c69912 01-Jun-2010 Devang Patel <dpatel@apple.com> Keep track of incoming debug value of unused argument.
Radar 7927666.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105285 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
47fa62aff11934bcf792a38f629e430449bac7e3 01-Jun-2010 Dan Gohman <gohman@apple.com> Fill in missing support for ISD::FEXP, ISD::FPOWI, and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105283 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
956b3490349019163d1d12bb42b82f7e1fcc20ee 01-Jun-2010 Dan Gohman <gohman@apple.com> Fill in missing support for ISD::FEXP, ISD::FPOWI, and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105283 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
03d478c3834bcfc03a2527c6c9c7879b80119b8a 01-Jun-2010 Jim Grosbach <grosbach@apple.com> Add a FIXME

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105282 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
2f3257ef04a40adfeb6440d1b02f7bbfee0dd4fc 01-Jun-2010 Jim Grosbach <grosbach@apple.com> Add a FIXME

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105282 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
0792de9269ffb9b87d457d5e78e8c02a57b7318a 01-Jun-2010 Jim Grosbach <grosbach@apple.com> When processing function arguments when splitting live ranges across invokes,
handle structs passed by value via an extract/insert pair, as a bitcast
won't work on a struct. rdar://7742824

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105280 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
dc58b25ebc4d6b79f36db09a0b718ca957a610eb 01-Jun-2010 Jim Grosbach <grosbach@apple.com> When processing function arguments when splitting live ranges across invokes,
handle structs passed by value via an extract/insert pair, as a bitcast
won't work on a struct. rdar://7742824

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105280 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
86ac7a2df2f4a98d1ccf3460e9a0d6e13acdc868 31-May-2010 Chris Lattner <sabre@nondot.org> fix PR6623: when optimizing for size, don't inline memcpy/memsets
that are too large. This causes the freebsd bootloader to be too
large apparently.

It's unclear if this should be an -Os or -Oz thing. Thoughts welcome.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6c41ad8c9a93668c481436fc4a5e47e6f14776e7 31-May-2010 Chris Lattner <sabre@nondot.org> fix PR6623: when optimizing for size, don't inline memcpy/memsets
that are too large. This causes the freebsd bootloader to be too
large apparently.

It's unclear if this should be an -Os or -Oz thing. Thoughts welcome.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
be18530bad23c05d0ef862de176751393662e6ac 31-May-2010 Chris Lattner <sabre@nondot.org> the 'limit' argument to FindOptimalMemOpLowering is unsigned, not uint64_t.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105226 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6b378618273bab1ee64c5034f4fd8e8338b7110f 31-May-2010 Chris Lattner <sabre@nondot.org> the 'limit' argument to FindOptimalMemOpLowering is unsigned, not uint64_t.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105226 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7d2325fdbbbfe925bbaebfbcca6faae7619f3d02 30-May-2010 Oscar Fuentes <ofv@wanadoo.es> Use `llvm::next' instead of `next' to make VC++ 2010 happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105168 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
electionDAG/ScheduleDAGRRList.cpp
10e02a017a877b750d4cdf0ebf11b90dee5e0d61 30-May-2010 Oscar Fuentes <ofv@wanadoo.es> Use `llvm::next' instead of `next' to make VC++ 2010 happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105168 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
electionDAG/ScheduleDAGRRList.cpp
65320320ae39d7b5d8f7f8257cc2875572832c78 29-May-2010 Dan Gohman <gohman@apple.com> Reorder some code in SelectionDAGBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105105 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
462f6b57b6276502e1279d0e508c0b9fc24feb50 29-May-2010 Dan Gohman <gohman@apple.com> Reorder some code in SelectionDAGBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105105 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f716cbbdbfbcb9cdf736cbaa22a08d7fa3023b23 29-May-2010 Dan Gohman <gohman@apple.com> SelectionDAG shouldn't have a FunctionLoweringInfo member. RegsForValue
shouldn't have a TargetLoweringInfo member. And FunctionLoweringInfo::set
doesn't needs its EnableFastISel argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105101 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
7451d3e09d26115195280ba36f686a0a90815089 29-May-2010 Dan Gohman <gohman@apple.com> SelectionDAG shouldn't have a FunctionLoweringInfo member. RegsForValue
shouldn't have a TargetLoweringInfo member. And FunctionLoweringInfo::set
doesn't needs its EnableFastISel argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105101 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
29d2dee8ce02be48848c1d0e427b8b7596527e6f 29-May-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove unused function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105100 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
0f9c658558f70ba0017575019adbbd0b0b6b13e5 29-May-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove unused function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105100 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
6ff19ceeabd0392ef4f1a9c45789b5f0edd2c4ba 29-May-2010 Evan Cheng <evan.cheng@apple.com> Remove schedule-livein-copies. It's not being used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105095 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
701d4d309f892d34428e3078f350d3d28d7d2a94 29-May-2010 Evan Cheng <evan.cheng@apple.com> Remove schedule-livein-copies. It's not being used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105095 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
ac6195401811e4178adf4b31453a68c9ef7dfb37 29-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle composed subreg indices when processing REQ_SEQUENCE instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105066 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
5a0d4fcb8d0e624cf9452659f83e20f7e9e3444d 29-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle composed subreg indices when processing REQ_SEQUENCE instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105066 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
fc04e791ba0837c80d7965008fea07528ea2b7e6 29-May-2010 Evan Cheng <evan.cheng@apple.com> Doh. Machine LICM is re-initializing the CSE map over and over. Patch by Anna Zaks. rdar://8037934.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105065 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
82e0a1a1a81ad54452823a8eb1e8d743cf38f098 29-May-2010 Evan Cheng <evan.cheng@apple.com> Doh. Machine LICM is re-initializing the CSE map over and over. Patch by Anna Zaks. rdar://8037934.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105065 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
c5c2c5f54202791a3a853cd8ae5c2dbfd9d3f930 29-May-2010 Evan Cheng <evan.cheng@apple.com> Fix some latency computation bugs: if the use is not a machine opcode do not just return zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105061 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
046fa3f90a31ebfa10df89ae348f478d492709a9 29-May-2010 Evan Cheng <evan.cheng@apple.com> Fix some latency computation bugs: if the use is not a machine opcode do not just return zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105061 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
aef97088b2009870ac72ccc82fc7df4c735dc17a 28-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a TargetRegisterInfo::composeSubRegIndices hook with a default
implementation that is correct for most targets. Tablegen will override where
needed.

Add MachineOperand::subst{Virt,Phys}Reg methods that correctly handle existing
subreg indices when sustituting registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104985 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
2da53370241fdd1b5c291483311b34e609f06c73 28-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a TargetRegisterInfo::composeSubRegIndices hook with a default
implementation that is correct for most targets. Tablegen will override where
needed.

Add MachineOperand::subst{Virt,Phys}Reg methods that correctly handle existing
subreg indices when sustituting registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104985 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
8a965e54f03119fff0e778e3726b6cf0ba56143d 28-May-2010 Stuart Hastings <stuart@apple.com> Revert 104841, 104842, 104876 due to buildbot failures. Radar 7424645.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104953 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8ffc42f8eaf74dc85a90ca15326508a3a00b44ad 28-May-2010 Stuart Hastings <stuart@apple.com> Revert 104841, 104842, 104876 due to buildbot failures. Radar 7424645.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104953 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3eb67d59fcf724e8345fb783b1b891e31dcfc151 28-May-2010 Dan Gohman <gohman@apple.com> Eliminate the restriction that the array size in an alloca must be i32.
This will help reduce the amount of casting required on 64-bit targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104911 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f75a7d3fbf7fbb3071f45e248d3fb93312ec4fbd 28-May-2010 Dan Gohman <gohman@apple.com> Eliminate the restriction that the array size in an alloca must be i32.
This will help reduce the amount of casting required on 64-bit targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104911 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
120ec5506c7ad2df875648127316b9ea938dc409 28-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a -regalloc=default option that chooses a register allocator based on the -O
optimization level.

This only really affects llc for now because both the llvm-gcc and clang front
ends override the default register allocator. I intend to remove that code later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104904 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
asses.cpp
700bfada6375546f82000bdd1b4cdbe87beebea5 28-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a -regalloc=default option that chooses a register allocator based on the -O
optimization level.

This only really affects llc for now because both the llvm-gcc and clang front
ends override the default register allocator. I intend to remove that code later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104904 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
asses.cpp
1f2914c7abfcd183e1a4bd74d5378c0b4a92b0e6 28-May-2010 Jim Grosbach <grosbach@apple.com> Update the saved stack pointer in the sjlj function context following either
an alloca() or an llvm.stackrestore(). rdar://8031573



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
jLjEHPrepare.cpp
0798eddd07b8dc827a4e6e9028c4c3a8d9444286 28-May-2010 Jim Grosbach <grosbach@apple.com> Update the saved stack pointer in the sjlj function context following either
an alloca() or an llvm.stackrestore(). rdar://8031573



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
jLjEHPrepare.cpp
ae810412a11fc5c29b2e0c452bccf28d41263528 28-May-2010 Jim Grosbach <grosbach@apple.com> back out 104862/104869. Can reuse stacksave after all. Very cool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104897 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a65850230af7f13d9111450f645886b968dea2a2 28-May-2010 Jim Grosbach <grosbach@apple.com> back out 104862/104869. Can reuse stacksave after all. Very cool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104897 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8269974e9c1c53bad0f1b43c6d9c18dbec07aec4 27-May-2010 Devang Patel <dpatel@apple.com> Do not drop location info for inlined function args.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104884 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d8720f4ba3546df76d75c94a8893a385de273cc6 27-May-2010 Devang Patel <dpatel@apple.com> Do not drop location info for inlined function args.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104884 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
92eafd90273fe162d82b1927d2c237f6b5e0ce64 27-May-2010 Jim Grosbach <grosbach@apple.com> hook ISD::STACKADDR to an intrinsic

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104869 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
084fb0ea3246300aa81dd2561ce4d84401b74792 27-May-2010 Jim Grosbach <grosbach@apple.com> hook ISD::STACKADDR to an intrinsic

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104869 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
ff71bf8b828facd2dbd7c74b56cc73af6f1f035e 27-May-2010 Devang Patel <dpatel@apple.com> inlined function's arguments need a label to mark the start point because they are not directly attached to current function.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104848 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
55e9717e59165d15161991be56c75c3e80220ee8 27-May-2010 Devang Patel <dpatel@apple.com> inlined function's arguments need a label to mark the start point because they are not directly attached to current function.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104848 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
adfbf7d02607b2b783d159933dccba8a58530645 27-May-2010 Stuart Hastings <stuart@apple.com> Support for nested functions/classes in debug output. Radar 7424645.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104841 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
aa66d2f48ad0c2d2b3f8929dea432bb17a5442a5 27-May-2010 Stuart Hastings <stuart@apple.com> Support for nested functions/classes in debug output. Radar 7424645.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104841 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d09fbfaf7096c492a0ce0c4b8658500b3b175c23 27-May-2010 Devang Patel <dpatel@apple.com> Simplify. Eliminate unneeded debug_loc entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104785 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
80250686d5df7f3b603eeaa08fb94f2765829e0a 27-May-2010 Devang Patel <dpatel@apple.com> Simplify. Eliminate unneeded debug_loc entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104785 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6c198f7fc668ee28ee378728a94bfc66ec312299 26-May-2010 Bill Wendling <isanbard@gmail.com> Add FIXME comment to remove this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
804a231dd5b064006a252f67fe27abced0827ac8 26-May-2010 Bill Wendling <isanbard@gmail.com> Add FIXME comment to remove this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
55587774f8da604ccc3a04c3b24f3370ba2811ee 26-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Add TargetMachine support for setting the value of MCRelaxAll with
-filetype=obj.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104747 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
cb8326dc09d900688b2d15bd9c977d1c3b722427 26-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Add TargetMachine support for setting the value of MCRelaxAll with
-filetype=obj.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104747 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
8d91da999f5fc691e292df1516bd4cd22c8e0572 26-May-2010 Devang Patel <dpatel@apple.com> There is no need to force an line number entry (using previous location) for a temp label at unknown location.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104740 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
77051f58e9417670c66d7b7f420a98ef46dbcdc6 26-May-2010 Devang Patel <dpatel@apple.com> There is no need to force an line number entry (using previous location) for a temp label at unknown location.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104740 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
983da3c173bb3d1cf51d93f5d6b821dbfd838425 26-May-2010 Bill Wendling <isanbard@gmail.com> Add "setjmp_syscall", "savectx", "qsetjmp", "vfork", "getcontext" to the list of
usual suspects that could "return twice".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104737 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8d717c7d999231c8c54601720b08cd3eecf6d518 26-May-2010 Bill Wendling <isanbard@gmail.com> Add "setjmp_syscall", "savectx", "qsetjmp", "vfork", "getcontext" to the list of
usual suspects that could "return twice".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104737 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cc38a49327e841070b34fe1a92c1191a791887bb 26-May-2010 Jim Grosbach <grosbach@apple.com> Adjust eh.sjlj.setjmp to properly have a chain and to have an opcode entry in
ISD::. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104734 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
23ff7cff52702a8bff904d8ab4c9ca67cc19d6ca 26-May-2010 Jim Grosbach <grosbach@apple.com> Adjust eh.sjlj.setjmp to properly have a chain and to have an opcode entry in
ISD::. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104734 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
4d92eb87021611d02189876ca49c39effa250423 26-May-2010 Devang Patel <dpatel@apple.com> Update debug info when live-in reg is copied into a vreg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104732 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
394427b014a7126e56f3ee411993f08677d93c83 26-May-2010 Devang Patel <dpatel@apple.com> Update debug info when live-in reg is copied into a vreg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104732 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0b1ce962a2a8684fc22012e7e31c899c00bbc6e9 26-May-2010 Bill Wendling <isanbard@gmail.com> Move the check for "calls setjmp" to SelectionDAGISel so that it can be used by
more than just the stack slot coloring algorithm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104722 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
tackSlotColoring.cpp
9af7e9a1b5fb04ba677059ada9290cd3864523b2 26-May-2010 Bill Wendling <isanbard@gmail.com> Move the check for "calls setjmp" to SelectionDAGISel so that it can be used by
more than just the stack slot coloring algorithm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104722 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
tackSlotColoring.cpp
d28f15b0bfee38cc5b6f06a30dec2ab7bdb6b72b 26-May-2010 Devang Patel <dpatel@apple.com> Identify instructions, that needs a label to mark debug info entity, in advance. This simplifies beginScope().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104720 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
b2b31a6f93f5329c86e41c04ec8c33799d012f9e 26-May-2010 Devang Patel <dpatel@apple.com> Identify instructions, that needs a label to mark debug info entity, in advance. This simplifies beginScope().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104720 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
79a689415e4c8f0482a0b4281065f3e8d15a6f30 26-May-2010 Dan Gohman <gohman@apple.com> Eliminate the use of PriorityQueue and just use a std::vector,
implementing pop with a linear search for a "best" element. The priority
queue was a neat idea, but in practice the comparison functions depend
on dynamic information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104718 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
electionDAG/ScheduleDAGRRList.cpp
93d343357944beb701d425fc7ef00dd7b0a32bd7 26-May-2010 Dan Gohman <gohman@apple.com> Eliminate the use of PriorityQueue and just use a std::vector,
implementing pop with a linear search for a "best" element. The priority
queue was a neat idea, but in practice the comparison functions depend
on dynamic information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104718 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
electionDAG/ScheduleDAGRRList.cpp
cfa89e2af22dab62b8e4fc8cd459a8d8a075b659 26-May-2010 Dan Gohman <gohman@apple.com> Delete an unused function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104716 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d89c2580510b8f79394039987f0ad84dee903e59 26-May-2010 Dan Gohman <gohman@apple.com> Delete an unused function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104716 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
531898eda4b0c22303e5a0db9430f30686e6bf02 26-May-2010 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104706 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
b21a758bc232fcecdaca4fbc05334bb5b79cdad1 26-May-2010 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104706 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
23720f49524206b4f17037e9c2c51673b59ceb83 26-May-2010 Devang Patel <dpatel@apple.com> Do not construct location list backword!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104705 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e2df84254d628db835eb3e6456187cc3c0085a07 26-May-2010 Devang Patel <dpatel@apple.com> Do not construct location list backword!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104705 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c157e6c2e69bb0e0fdda6f5e51742e003b7c882f 26-May-2010 Eric Christopher <echristo@apple.com> Temporarily revert r104655 as it's breaking the bots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104664 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
tackSlotColoring.cpp
174e597d466547d34cf8fcd2a95976e0cf5ebbac 26-May-2010 Eric Christopher <echristo@apple.com> Temporarily revert r104655 as it's breaking the bots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104664 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
tackSlotColoring.cpp
fb562b309c80b8f531ac88325f0774eac3456a89 26-May-2010 Dan Gohman <gohman@apple.com> Change push_all to a non-virtual function and implement it in the
base class, since all the implementations are the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104659 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
electionDAG/ScheduleDAGRRList.cpp
a4e4ffd389497eb28f5fe91521fb71da4340e5d6 26-May-2010 Dan Gohman <gohman@apple.com> Change push_all to a non-virtual function and implement it in the
base class, since all the implementations are the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104659 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
electionDAG/ScheduleDAGRRList.cpp
5cb0f94be447245a2106b50e5432df353c89ee01 26-May-2010 Dan Gohman <gohman@apple.com> Trim #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104657 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
5eabaa2d7c001d801a36d76affc1aa257ca2975c 26-May-2010 Dan Gohman <gohman@apple.com> Trim #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104657 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
ae3b4c328e882f4a9db6f10af73b106cb14a3290 26-May-2010 Bill Wendling <isanbard@gmail.com> Dale and Evan suggested putting the "check for setjmp" much earlier in the
machine code generation. That's a good idea, so I made it so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104655 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
tackSlotColoring.cpp
be22683202731127a5128db8be404edcee91defd 26-May-2010 Bill Wendling <isanbard@gmail.com> Dale and Evan suggested putting the "check for setjmp" much earlier in the
machine code generation. That's a good idea, so I made it so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104655 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
tackSlotColoring.cpp
12188d5bab61d27a61e0a1ad41c28f929d6837a7 26-May-2010 Devang Patel <dpatel@apple.com> First cut at supporting .debug_loc section.
This is used to track variable information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104649 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c3f5f783a2923e7842802d5cd1a932ee56c3bb45 26-May-2010 Devang Patel <dpatel@apple.com> First cut at supporting .debug_loc section.
This is used to track variable information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104649 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
755681747a9e64b034d9e3a1c9174388cf6f06b6 26-May-2010 Bill Wendling <isanbard@gmail.com> Constify function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104646 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
f10bc81b4e84003f8842e8ee7eee9d626de77e5f 26-May-2010 Bill Wendling <isanbard@gmail.com> Constify function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104646 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
b52ad0ebb4e4dcb826bd7076bf05fec738be3603 25-May-2010 Dan Gohman <gohman@apple.com> Do one map lookup instead of two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104645 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
eddc114a66b4520369e0f86ab1d3132dac2449b2 25-May-2010 Dan Gohman <gohman@apple.com> Do one map lookup instead of two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104645 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3fe79fd1451918e661b45268de5610b9657ae72c 25-May-2010 Eric Christopher <echristo@apple.com> Move the verbose asm output up a bit so it can be used in the special cases
as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104642 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
04386ca726d726c214be15a0c3e9dbdc82b1e691 25-May-2010 Eric Christopher <echristo@apple.com> Move the verbose asm output up a bit so it can be used in the special cases
as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104642 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
bdfd6ab89d0bcefa2ca91a87da5fa2a03bcde305 25-May-2010 Bill Wendling <isanbard@gmail.com> Okay, bear with me here...

If you have a setjmp/longjmp situation, it's possible for stack slot coloring to
reuse a stack slot before it's really dead. For instance, if we have something
like this:

1: y = g;
x = sigsetjmp(env, 0);
switch (x) {
case 1:
/* ... */
goto run;
case 0:
run:
do_run(); /* marked as "no return" */
break;
case 3:
if (...) {
/* ... */
goto run;
}
/* ... */
break;
}

2: g = y;

"y" may be put onto the stack, so the expression "g = y" is relying upon the
fact that the stack slot containing "y" isn't modified between (1) and (2). But
it can be, because of the "no return" calls in there. A longjmp might come back
with 3, modify the stack slot, and then go to case 0. And it's perfectly
acceptable to reuse the stack slot there because there's no CFG flow from case 3
to (2).

The fix is to disable certain optimizations in these situations. Ideally, we'd
disable them for all "returns twice" functions. But we don't support that
attribute. Check for "setjmp" and "sigsetjmp" instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104640 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
5edfbdc9635405fe601d6d4645443d3a38c5e7b7 25-May-2010 Bill Wendling <isanbard@gmail.com> Okay, bear with me here...

If you have a setjmp/longjmp situation, it's possible for stack slot coloring to
reuse a stack slot before it's really dead. For instance, if we have something
like this:

1: y = g;
x = sigsetjmp(env, 0);
switch (x) {
case 1:
/* ... */
goto run;
case 0:
run:
do_run(); /* marked as "no return" */
break;
case 3:
if (...) {
/* ... */
goto run;
}
/* ... */
break;
}

2: g = y;

"y" may be put onto the stack, so the expression "g = y" is relying upon the
fact that the stack slot containing "y" isn't modified between (1) and (2). But
it can be, because of the "no return" calls in there. A longjmp might come back
with 3, modify the stack slot, and then go to case 0. And it's perfectly
acceptable to reuse the stack slot there because there's no CFG flow from case 3
to (2).

The fix is to disable certain optimizations in these situations. Ideally, we'd
disable them for all "returns twice" functions. But we don't support that
attribute. Check for "setjmp" and "sigsetjmp" instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104640 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
fdc794a7f748a2b83c8a2e32378111785ad53146 25-May-2010 Eric Christopher <echristo@apple.com> Add support for initialized global data for darwin tls. Update comments
and testcases accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104635 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
argetLoweringObjectFileImpl.cpp
02b46bc9426925b90137d264216a54aa413335fd 25-May-2010 Eric Christopher <echristo@apple.com> Add support for initialized global data for darwin tls. Update comments
and testcases accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104635 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
argetLoweringObjectFileImpl.cpp
8b480cba0f1a48393bf59c644c01209cb3f6a49d 25-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print symbolic SubRegIndex names on machine operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104628 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1fc8e759a767077726f9be35b93767e68bdf101f 25-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print symbolic SubRegIndex names on machine operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104628 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a31ed7f5ec684073b38e1b0ee9d7c45d3137e59e 25-May-2010 Dale Johannesen <dalej@apple.com> Fix another variant of PR 7191. Also add a testcase
Mon Ping provided; unfortunately bugpoint failed to
reduce it, but I think it's important to have a test for
this in the suite. 8023512.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104624 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
86234c30a7dea821e970323df4f168b9632d0bb7 25-May-2010 Dale Johannesen <dalej@apple.com> Fix another variant of PR 7191. Also add a testcase
Mon Ping provided; unfortunately bugpoint failed to
reduce it, but I think it's important to have a test for
this in the suite. 8023512.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104624 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d6ec44a21184fd239fe86118b2d10bf64ece97a4 25-May-2010 Dale Johannesen <dalej@apple.com> Fix PR 7191. I have been unable to create a .ll file that fails, sorry.
(oye, a word which should be better known to people writing tree
traversals, means grandchild.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104619 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
61734eb117063b4cd2a10c2403213cedd1347a06 25-May-2010 Dale Johannesen <dalej@apple.com> Fix PR 7191. I have been unable to create a .ll file that fails, sorry.
(oye, a word which should be better known to people writing tree
traversals, means grandchild.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104619 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a334be36d4073c634b23311638c6c7fc5299f023 25-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Disable invalid coalescer assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104574 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b7a31709171ba42d83d2fb575818e7ccd900fb03 25-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Disable invalid coalescer assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104574 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
6656daaf1ea65f19b7efe11e7d403d55882507e7 25-May-2010 Bill Wendling <isanbard@gmail.com> Print out the name of the function during SSC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104572 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
ef473bfc4470bd018b6fb5485d4eab1aa793336e 25-May-2010 Bill Wendling <isanbard@gmail.com> Print out the name of the function during SSC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104572 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
31c3c535a9f5b7769e3c55f5782492cecfc524eb 24-May-2010 Evan Cheng <evan.cheng@apple.com> Avoid adding duplicate function live-in's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104560 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineRegisterInfo.cpp
3946043a80a043b3cf43b34bf068feaadc46485b 24-May-2010 Evan Cheng <evan.cheng@apple.com> Avoid adding duplicate function live-in's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104560 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineRegisterInfo.cpp
5173233ef4f496bfc5b0363bc5a61c75a53f4a89 24-May-2010 Devang Patel <dpatel@apple.com> Do not emit line number entries for unknown debug values.
This fixes recent regression in store.exp from gdb testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104524 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
295cdf8b8293f31953bad9a4a9c0586e934181c6 24-May-2010 Devang Patel <dpatel@apple.com> Do not emit line number entries for unknown debug values.
This fixes recent regression in store.exp from gdb testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104524 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fcaf5017e209a16cafbf7821b2e6c0c306b67398 24-May-2010 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Encode the Caml frametable by following what the comment says: the number of descriptors
is first emitted, and StackOffsets are emitted in 16 bits.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104488 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
3816c25fdc03fb2945ecfe4df41e1834ea386245 24-May-2010 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Encode the Caml frametable by following what the comment says: the number of descriptors
is first emitted, and StackOffsets are emitted in 16 bits.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104488 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
d6347f1b665be97f30a471eebe151e67a62bf7d7 23-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Add an MCLoggingStreamer, for use in debugging integrated-as mismatches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104463 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
fdb5a8617996a20370756962e34c2e80176d6e87 23-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Add an MCLoggingStreamer, for use in debugging integrated-as mismatches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104463 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
32d1bb9fe7eadcd5088e8048cfd952fc6178604e 22-May-2010 Evan Cheng <evan.cheng@apple.com> Implement @llvm.returnaddress. rdar://8015977.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104421 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
2457f2c66184e978d4ed8fa9e2128effff26cb0b 22-May-2010 Evan Cheng <evan.cheng@apple.com> Implement @llvm.returnaddress. rdar://8015977.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104421 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
237b7dd26af11c4e0e8d1acc829cf12bfb50cd1a 22-May-2010 Jim Grosbach <grosbach@apple.com> Implement eh.sjlj.longjmp for ARM. Clean up the intrinsic a bit.
Followups: docs patch for the builtin and eh.sjlj.setjmp cleanup to match
longjmp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
5eb195153950bc7ebfc30649494a78b2096b5ef8 22-May-2010 Jim Grosbach <grosbach@apple.com> Implement eh.sjlj.longjmp for ARM. Clean up the intrinsic a bit.
Followups: docs patch for the builtin and eh.sjlj.setjmp cleanup to match
longjmp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
0f986f6715496c159b8dc0b2b09f531b6416d3ee 22-May-2010 Eric Christopher <echristo@apple.com> Add full bss data support for darwin tls variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104414 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
argetLoweringObjectFileImpl.cpp
8116ca5134b355b897450f9a537c9c77e1f08723 22-May-2010 Eric Christopher <echristo@apple.com> Add full bss data support for darwin tls variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104414 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
argetLoweringObjectFileImpl.cpp
fc01d2a751127ebc5a4cd2da214df4e5dbaa1223 22-May-2010 Devang Patel <dpatel@apple.com> Collect variable information during endFunction() instead of beginFunction().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104412 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
65eb482e8fcd6084d83793aeb767ef0bddefc92a 22-May-2010 Devang Patel <dpatel@apple.com> Collect variable information during endFunction() instead of beginFunction().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104412 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ed0a884c3cbc7d62e3f0bc702a9111c541e72ac7 22-May-2010 Bob Wilson <bob.wilson@apple.com> Clean up extra whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104410 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
70fe6643d6d16b9a1bb9560d75e60539ba93ba6b 22-May-2010 Bob Wilson <bob.wilson@apple.com> Clean up extra whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104410 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b648fc2706a9460a0925f72b4cf8c1d1de4754f2 22-May-2010 Eric Christopher <echristo@apple.com> Make this LookAheadLimit, not the uninitialized LookAheadLeft.

Evan please verify!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104408 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
e81d0105894a7d0cdd9ffb788a10715ed073ac67 22-May-2010 Eric Christopher <echristo@apple.com> Make this LookAheadLimit, not the uninitialized LookAheadLeft.

Evan please verify!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104408 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
84a9e8cbb98bd7cc7ca6655ccf6226b3df217eeb 21-May-2010 Evan Cheng <evan.cheng@apple.com> Allow machine cse to cse instructions which define physical registers. Controlled by option -machine-cse-phys-defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104385 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
835810bbf8cd8b5ed92df66127c5aed16d022c74 21-May-2010 Evan Cheng <evan.cheng@apple.com> Allow machine cse to cse instructions which define physical registers. Controlled by option -machine-cse-phys-defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104385 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
9c38d5ce139e13148f4db86582463a313f53cdc0 21-May-2010 Bob Wilson <bob.wilson@apple.com> Change CodeGen/ARM/2009-11-02-NegativeLane.ll to use 16-bit vector elements
so that it will continue to test what it was meant to test when I commit a
separate change for better support of BUILD_VECTOR and VECTOR_SHUFFLE for Neon.
Fix a DAG combiner crash exposed by this test change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
78f006acdfda52f7250929e1c2fea8afbb9a5b07 21-May-2010 Bob Wilson <bob.wilson@apple.com> Change CodeGen/ARM/2009-11-02-NegativeLane.ll to use 16-bit vector elements
so that it will continue to test what it was meant to test when I commit a
separate change for better support of BUILD_VECTOR and VECTOR_SHUFFLE for Neon.
Fix a DAG combiner crash exposed by this test change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4f6dae3022a364e3b152881ef065dbd3b1238fc0 21-May-2010 Evan Cheng <evan.cheng@apple.com> - Change MachineInstr::findRegisterDefOperandIdx so it can also look for defs
that are aliases of the specified register.
- Rename modifiesRegister to definesRegister since it's looking a def of the
specific register or one of its super-registers. It's not looking for def of a
sub-register or alias that could change the specified register.
- Added modifiesRegister to look for defs of aliases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104377 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
ostRASchedulerList.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
1015ba7018c87f48cc7bb45a564eb4a27241e76a 21-May-2010 Evan Cheng <evan.cheng@apple.com> - Change MachineInstr::findRegisterDefOperandIdx so it can also look for defs
that are aliases of the specified register.
- Rename modifiesRegister to definesRegister since it's looking a def of the
specific register or one of its super-registers. It's not looking for def of a
sub-register or alias that could change the specified register.
- Added modifiesRegister to look for defs of aliases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104377 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
ostRASchedulerList.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
939210a030c5eecadb187d43d962bace862c9565 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineInstr::readsWritesVirtualRegister() to determine if an instruction
reads or writes a register.

This takes partial redefines and undef uses into account.

Don't actually use it yet. That caused miscompiles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104372 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
18b2c9d3bf5a6633535eaad8388f0353b14cbfb8 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineInstr::readsWritesVirtualRegister() to determine if an instruction
reads or writes a register.

This takes partial redefines and undef uses into account.

Don't actually use it yet. That caused miscompiles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104372 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
519d9bf22f1a9d2c2c6506e59498bfecc388d700 21-May-2010 Devang Patel <dpatel@apple.com> Simplify


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104338 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
379fe83dda937658b6b08d3c531f0db6c25b7dd7 21-May-2010 Devang Patel <dpatel@apple.com> Simplify


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104338 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
803cf590545edb48068c49927507e09ad150470e 21-May-2010 Chris Lattner <sabre@nondot.org> constify accessor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104325 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
65569b8ddff9d4b8647377291f8f0f2cb647bfb9 21-May-2010 Chris Lattner <sabre@nondot.org> constify accessor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104325 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
7601de6e9b8f88939bef505184b9ff6bdc7d8430 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Use MachineInstr::readsWritesVirtualRegister to determine if a register is read."

This reverts r104322. I think it was causing miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104323 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
19f5f71bba08e690611fa213647ac6bae814756b 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Use MachineInstr::readsWritesVirtualRegister to determine if a register is read."

This reverts r104322. I think it was causing miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104323 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
9d53a41099f8da0845f23177cf375ba6556fa6b6 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use MachineInstr::readsWritesVirtualRegister to determine if a register is read.
This correctly handles partial redefines and undef uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104322 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
00c53caa339f954cb3590a05e8653b864b4355cf 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use MachineInstr::readsWritesVirtualRegister to determine if a register is read.
This correctly handles partial redefines and undef uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104322 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
7c1a14eb8d491e8de0cad7d94d59c76d65d48b5c 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach VirtRegRewriter to handle spilling in instructions that have multiple
definitions of the virtual register.

This happens when spilling the registers produced by REG_SEQUENCE:

%reg1047:5<def>, %reg1047:6<def>, %reg1047:7<def> = VLD3d8 %reg1033, 0, pred:14, pred:%reg0

The rewriter would spill the register multiple times, dead store elimination
tried to keep up, but ended up cutting the branch it was sitting on.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104321 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
2afb7505c5e9ffd08a96fdd4c43f962a50160053 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach VirtRegRewriter to handle spilling in instructions that have multiple
definitions of the virtual register.

This happens when spilling the registers produced by REG_SEQUENCE:

%reg1047:5<def>, %reg1047:6<def>, %reg1047:7<def> = VLD3d8 %reg1033, 0, pred:14, pred:%reg0

The rewriter would spill the register multiple times, dead store elimination
tried to keep up, but ended up cutting the branch it was sitting on.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104321 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
1734eb0cfb23984c5cb611cd697a094f8c53adcd 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> If the first definition of a virtual register is a partial redef, add an
<imp-def> operand for the full register. This ensures that the full physical
register is marked live after register allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104320 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
63e6a488cb6c29983415221719d05fbf99e00193 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> If the first definition of a virtual register is a partial redef, add an
<imp-def> operand for the full register. This ensures that the full physical
register is marked live after register allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104320 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
7d556e02bb8cf12313bd377fa4d7e11131031a68 21-May-2010 Evan Cheng <evan.cheng@apple.com> Rename -pre-RA-sched=hybrid to -pre-RA-sched=list-hybrid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104306 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
b11ac950d69c7a238de0a22fd23fbfcd994f57ee 21-May-2010 Evan Cheng <evan.cheng@apple.com> Rename -pre-RA-sched=hybrid to -pre-RA-sched=list-hybrid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104306 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
c4f998d0437057426bc3d408d3a33fc13d6d3116 21-May-2010 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104302 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c0c5a26deadb11b607ffd54b7b8978a56bf3545f 21-May-2010 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104302 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5373b294648bf0285621a82281f136578ba70082 21-May-2010 Evan Cheng <evan.cheng@apple.com> Allow targets more controls on what nodes are scheduled by reg pressure, what for latency in hybrid mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104293 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
1cc3984148be113c6e5e470f23c9ddbd37679c5f 21-May-2010 Evan Cheng <evan.cheng@apple.com> Allow targets more controls on what nodes are scheduled by reg pressure, what for latency in hybrid mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104293 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
6da145f2b10f2362c7bf0bb9cc947d81f535b63d 20-May-2010 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104265 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
ee43286ca9b6ae68d3419e23e51925cd1a6808aa 20-May-2010 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104265 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
88f506ece3ebef96c431871ddeff117e5837eb5d 20-May-2010 Jim Grosbach <grosbach@apple.com> Remove dbg_value workaround and associated command line option

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104254 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
76526f88632325fab1c33d9c1a8248087eb5e548 20-May-2010 Jim Grosbach <grosbach@apple.com> Remove dbg_value workaround and associated command line option

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104254 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
f0e703313005cc56fd7acf0b3e6e1604a37bad4f 20-May-2010 Devang Patel <dpatel@apple.com> Split DbgVariable. Eventually, variable info will be communicated through frame index, or DBG_VALUE instruction, or collection of DBG_VALUE instructions. Plus each DbgVariable may not need a label.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104233 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
26c1e56f13b08ce3233b8f2e1c3e208af7b1ad1f 20-May-2010 Devang Patel <dpatel@apple.com> Split DbgVariable. Eventually, variable info will be communicated through frame index, or DBG_VALUE instruction, or collection of DBG_VALUE instructions. Plus each DbgVariable may not need a label.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104233 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
41294b1283bac771807eb4266ff112ae45f5dc47 20-May-2010 Evan Cheng <evan.cheng@apple.com> Add a hybrid bottom up scheduler that reduce register usage while avoiding
pipeline stall. It's useful for targets like ARM cortex-a8. NEON has a lot
of long latency instructions so a strict register pressure reduction
scheduler does not work well.
Early experiments show this speeds up some NEON loops by over 30%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104216 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAGISel.cpp
15a16def6e70c8f7df1023da80ceb89887203b40 20-May-2010 Evan Cheng <evan.cheng@apple.com> Add a hybrid bottom up scheduler that reduce register usage while avoiding
pipeline stall. It's useful for targets like ARM cortex-a8. NEON has a lot
of long latency instructions so a strict register pressure reduction
scheduler does not work well.
Early experiments show this speeds up some NEON loops by over 30%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104216 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAGISel.cpp
6ffa1e38380bb76d491a690f831a897627193dee 20-May-2010 Nick Lewycky <nicholas@mxc.ca> Fix typo in comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104209 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
761fd4c1d97977c16de9f0cf921056a37b906304 20-May-2010 Nick Lewycky <nicholas@mxc.ca> Fix typo in comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104209 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
2d4ea3e6925c65e2a182ea83c3e7d1aab11cc0da 20-May-2010 Eric Christopher <echristo@apple.com> Partial code for emitting thread local bss data.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104197 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c1a887d76d95100e7e05aa76e077710bc4e0b1cf 20-May-2010 Eric Christopher <echristo@apple.com> Partial code for emitting thread local bss data.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104197 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c80cb51c8a4cfe1f0fade8b6d102c1cdd06ef6ee 20-May-2010 Bob Wilson <bob.wilson@apple.com> Optimize away insertelement of an undef value. This shows up in
test/Codegen/ARM/reg_sequence.ll but it doesn't affect the generated code
because the coalescer cleans it up. Radar 7998853.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104185 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
492fd454ca3aa3d45e76c4f42b602e934cf519b1 20-May-2010 Bob Wilson <bob.wilson@apple.com> Optimize away insertelement of an undef value. This shows up in
test/Codegen/ARM/reg_sequence.ll but it doesn't affect the generated code
because the coalescer cleans it up. Radar 7998853.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104185 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6f29a754162b29886fc19f7a8a9a3d001eb16af9 20-May-2010 Jim Grosbach <grosbach@apple.com> Enable preserving debug information through post-RA scheduling

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104175 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
de70b1f9be3a483064e4696fac5a7d41ebe19140 20-May-2010 Jim Grosbach <grosbach@apple.com> Enable preserving debug information through post-RA scheduling

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104175 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
d1f63b751c3b5e73366efa359f211d899587e571 20-May-2010 Jim Grosbach <grosbach@apple.com> Fix the post-RA instruction scheduler to handle instructions referenced by
more than one dbg_value instruction. rdar://7759363


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104174 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
309d20c89c5fde5a6ebe3b40a3fd0fbc3e5ffe40 20-May-2010 Jim Grosbach <grosbach@apple.com> Fix the post-RA instruction scheduler to handle instructions referenced by
more than one dbg_value instruction. rdar://7759363


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104174 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
816cb0b9f360cbf46a6952671566e89e40c2361d 20-May-2010 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104173 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
e163168aab987dc3df0845b9e92310f764d8b158 20-May-2010 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104173 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
f25c583e3901f27cc48cd10497931b73a1941103 19-May-2010 Devang Patel <dpatel@apple.com> Revert r104165.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104172 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
461a646a035a8c5cf717fcd006db0d637e342e70 19-May-2010 Devang Patel <dpatel@apple.com> Revert r104165.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104172 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
46a9fd6231d2753aedb3248402b9db36d7bc515f 19-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add support for partial redefs to the fast register allocator.

A partial redef now triggers a reload if required. Also don't add
<imp-def,dead> operands for physical superregisters.

Kill flags are still treated as full register kills, and <imp-use,kill> operands
are added for physical superregisters as before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104167 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
d32e735ae6e3fbebcae9a23d7cda091770bb3a14 19-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add support for partial redefs to the fast register allocator.

A partial redef now triggers a reload if required. Also don't add
<imp-def,dead> operands for physical superregisters.

Kill flags are still treated as full register kills, and <imp-use,kill> operands
are added for physical superregisters as before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104167 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
a5db75c20bb3cb31b8fdb4c710159297c2d3c65f 19-May-2010 Devang Patel <dpatel@apple.com> There is no need to maintain InsnsBeginScopeSet separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104165 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
f4ccaeaef93c56af7017b7e503888e8a0f6d8851 19-May-2010 Devang Patel <dpatel@apple.com> There is no need to maintain InsnsBeginScopeSet separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104165 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c019e2207bf16ff3ff3a3d3aa62b02447404fff2 19-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineInstr::readsVirtualRegister() in preparation for proper handling of
partial redefines.

We are going to treat a partial redefine of a virtual register as a
read-modify-write:

%reg1024:6 = OP

Unless the register is fully clobbered:

%reg1024:6 = OP, %reg1024<imp-def>

MachineInstr::readsVirtualRegister() knows the difference. The first case is a
read, the second isn't.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104149 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
7ebc4d63db05ac214d36bc01b4d60adadaf923e5 19-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineInstr::readsVirtualRegister() in preparation for proper handling of
partial redefines.

We are going to treat a partial redefine of a virtual register as a
read-modify-write:

%reg1024:6 = OP

Unless the register is fully clobbered:

%reg1024:6 = OP, %reg1024<imp-def>

MachineInstr::readsVirtualRegister() knows the difference. The first case is a
read, the second isn't.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104149 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a9d350eb0820423726b445a8b31dfe8b9830f6f3 19-May-2010 Evan Cheng <evan.cheng@apple.com> Code refactoring: pull SchedPreference enum from TargetLowering.h to TargetMachine.h and put it in its own namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104147 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
211ffa13519cadfb7f9baf4c8447fa055bf38fe8 19-May-2010 Evan Cheng <evan.cheng@apple.com> Code refactoring: pull SchedPreference enum from TargetLowering.h to TargetMachine.h and put it in its own namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104147 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
5caaacb937a7e392ee106eddfbea1595b1474d6c 19-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> TwoAddressInstructionPass doesn't really know how to merge live intervals when
lowering REG_SEQUENCE instructions.

Insert copies for REG_SEQUENCE sources not killed to avoid breaking later passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104146 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
343735288798bbd1cd2ed2750fa6cd323f12c26c 19-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> TwoAddressInstructionPass doesn't really know how to merge live intervals when
lowering REG_SEQUENCE instructions.

Insert copies for REG_SEQUENCE sources not killed to avoid breaking later passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104146 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
8b6ad17be11b0c0cbebe20b5a7f755b902318604 19-May-2010 Bob Wilson <bob.wilson@apple.com> When expanding a vector_shuffle, the element type may not be legal and may
need to be promoted. The BUILD_VECTOR and EXTRACT_VECTOR_ELT nodes generated
here already allow the promoted type to be used without further changes, so
just do the promotion. This fixes part of pr7167.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104141 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
14b2141497a913a2d5b508a0174ba09cac61e0bf 19-May-2010 Bob Wilson <bob.wilson@apple.com> When expanding a vector_shuffle, the element type may not be legal and may
need to be promoted. The BUILD_VECTOR and EXTRACT_VECTOR_ELT nodes generated
here already allow the promoted type to be used without further changes, so
just do the promotion. This fixes part of pr7167.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104141 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
67360f8736c2d627d2eadf4f5a8c799f10df1a27 19-May-2010 Evan Cheng <evan.cheng@apple.com> Intrinsics which do a vector compare (results are all zero or all ones) are modeled as icmp / fcmp + sext. This is turned into a vsetcc by dag combine (yes, not a good long term solution). The targets can then isel the vsetcc to the appropriate instruction.

The trouble arises when the result of a vector cmp + sext is then and'ed with all ones. Instcombine will turn it into a vector cmp + zext, dag combiner will miss turning it into a vsetcc and hell breaks loose after that.

Teach dag combine to turn a vector cpm + zest into a vsetcc + and 1. This fixes rdar://7923010.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104094 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0a942dbb1e0f303191639498c35e742309f08a64 19-May-2010 Evan Cheng <evan.cheng@apple.com> Intrinsics which do a vector compare (results are all zero or all ones) are modeled as icmp / fcmp + sext. This is turned into a vsetcc by dag combine (yes, not a good long term solution). The targets can then isel the vsetcc to the appropriate instruction.

The trouble arises when the result of a vector cmp + sext is then and'ed with all ones. Instcombine will turn it into a vector cmp + zext, dag combiner will miss turning it into a vsetcc and hell breaks loose after that.

Teach dag combine to turn a vector cpm + zest into a vsetcc + and 1. This fixes rdar://7923010.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104094 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
baf26cfa90bdece7dc75b73f705cab5ce6347f39 19-May-2010 Bob Wilson <bob.wilson@apple.com> Fix a crash when debugging the coalescer. DebugValue instructions are not
in the coalescer's instruction map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104086 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
417d1705bb2b9abde78385023b999e25e40efc36 19-May-2010 Bob Wilson <bob.wilson@apple.com> Fix a crash when debugging the coalescer. DebugValue instructions are not
in the coalescer's instruction map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104086 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
e4d58782c23f1a525a100864d2c284dd2b1c9fc9 19-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to update VirtRegLastUse when spilling without killing before a call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104074 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
dcf7708ad9ed9e320ab814e7fa8512e4854cc637 19-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to update VirtRegLastUse when spilling without killing before a call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104074 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
e0dbb624960f848bac8e74be2e78cacaaaff5357 18-May-2010 Evan Cheng <evan.cheng@apple.com> Sink dag combine's post index load / store code that swap base ptr and index into the target hook. Only the target knows whether the swap is safe. In Thumb2 mode, the offset must be an immediate. rdar://7998649


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104060 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
28dad2a5caccf579f7430acd3af8fa6e6f8b575e 18-May-2010 Evan Cheng <evan.cheng@apple.com> Sink dag combine's post index load / store code that swap base ptr and index into the target hook. Only the target knows whether the swap is safe. In Thumb2 mode, the offset must be an immediate. rdar://7998649


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104060 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
64f3a9433186f879b5ab6db10ab1c630cf210be6 18-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly handle multiple definitions of a virtual register in the same
instruction.

This can happen on ARM:

>> %reg1035:5<def>, %reg1035:6<def> = VLD1q16 %reg1028, 0, pred:14, pred:%reg0
Regs: Q0=%reg1032* R0=%reg1028* R1=%reg1029* R2 R3=%reg1031*
Killing last use: %reg1028
Allocating %reg1035 from QPR
Assigning %reg1035 to Q1
<< %D2<def>, %D3<def> = VLD1q16 %R0<kill>, 0, pred:14, pred:%reg0, %Q1<imp-def>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104056 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
0eeb05c969c6c314ca7991a10627451762787e2d 18-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly handle multiple definitions of a virtual register in the same
instruction.

This can happen on ARM:

>> %reg1035:5<def>, %reg1035:6<def> = VLD1q16 %reg1028, 0, pred:14, pred:%reg0
Regs: Q0=%reg1032* R0=%reg1028* R1=%reg1029* R2 R3=%reg1031*
Killing last use: %reg1028
Allocating %reg1035 from QPR
Assigning %reg1035 to Q1
<< %D2<def>, %D3<def> = VLD1q16 %R0<kill>, 0, pred:14, pred:%reg0, %Q1<imp-def>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104056 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
dbb64e300629710c534b03122f81105666029798 18-May-2010 Evan Cheng <evan.cheng@apple.com> Continuously refine the register class of REG_SEQUENCE def with all the source registers and sub-register indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104051 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
5012f9b82525121c28709ad7a2cc27818a38c213 18-May-2010 Evan Cheng <evan.cheng@apple.com> Continuously refine the register class of REG_SEQUENCE def with all the source registers and sub-register indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104051 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
e25ef5aed6f1dc0bb97e36b7b877004bdf3e83f8 18-May-2010 Evan Cheng <evan.cheng@apple.com> Fix PR7162: Use source register classes and sub-indices to determine the correct register class of the definitions of REG_SEQUENCE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
27e4840e03a6fea9f7a36a83b09a8ab7fed1a620 18-May-2010 Evan Cheng <evan.cheng@apple.com> Fix PR7162: Use source register classes and sub-indices to determine the correct register class of the definitions of REG_SEQUENCE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
62679fb6f8f1555afc9617e05301e5feb0b8dd7e 18-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach the machine code verifier to use getSubRegisterRegClass().

The old approach was wrong. It had an off-by-one error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104034 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
6a8d2c6119aeb32ac914c3dd9b1263ebd0baa51f 18-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach the machine code verifier to use getSubRegisterRegClass().

The old approach was wrong. It had an off-by-one error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104034 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
ef9233c63693eb43a364fefd7e5d5af10b95a98b 18-May-2010 Daniel Dunbar <daniel@zuster.org> llc (et al): Add support for --show-encoding and --show-inst.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104029 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
3538c808f8fd1d4124f0cda4c962467ec8ae5b70 18-May-2010 Daniel Dunbar <daniel@zuster.org> llc (et al): Add support for --show-encoding and --show-inst.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104029 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ef2f4a72b268ceb774bebddbbb4360f7dbc36b8f 18-May-2010 Evan Cheng <evan.cheng@apple.com> FIX PR7158. SimplifyVBinOp was asserting when it fails to constant fold (op (build_vector), (build_vector)).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104004 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a083988c8a7d57f37bfdd9d595fc3d55c60ea8ae 18-May-2010 Evan Cheng <evan.cheng@apple.com> FIX PR7158. SimplifyVBinOp was asserting when it fails to constant fold (op (build_vector), (build_vector)).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104004 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0e4cfb317a0b0a088c97e03176353f14b75a6686 18-May-2010 Evan Cheng <evan.cheng@apple.com> Fix PR7175. Insert copies of a REG_SEQUENCE source if it is used by other REG_SEQUENCE instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103994 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
c6dcce3ba5bd22325ecf1dbdfddf8136b50d4838 18-May-2010 Evan Cheng <evan.cheng@apple.com> Fix PR7175. Insert copies of a REG_SEQUENCE source if it is used by other REG_SEQUENCE instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103994 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
9282b976fbaa60c27c50d9cb490d471346833920 18-May-2010 Bill Wendling <isanbard@gmail.com> - Set the "HasCalls" flag after instruction selection is finished.

- Change the logic DisableFramePointerElim() to check for the
-disable-non-leaf-fp-elim before -disable-fp-elim.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
53f7602b61157ed56ccbf91379c188c55235f619 18-May-2010 Bill Wendling <isanbard@gmail.com> - Set the "HasCalls" flag after instruction selection is finished.

- Change the logic DisableFramePointerElim() to check for the
-disable-non-leaf-fp-elim before -disable-fp-elim.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ba2a5e8587e7c9f72ddef756ed0873abe758acb5 18-May-2010 Eric Christopher <echristo@apple.com> More data/parsing support for tls directives. Add a few more testcases
and cleanup comments as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103985 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
c6177a4531a5d7e2207a3184cc8a4f1792073a7d 18-May-2010 Eric Christopher <echristo@apple.com> More data/parsing support for tls directives. Add a few more testcases
and cleanup comments as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103985 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
e17aa701d44f2696638086730c6c7a713f055bef 18-May-2010 Evan Cheng <evan.cheng@apple.com> Fix PR7156. If the sources of a REG_SEQUENCE are all IMPLICIT_DEF's. Replace it with an IMPLICIT_DEF rather than deleting it or else it would be left without a def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103984 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
44bfdd3d78d32bb8fcd5ad123199246e554306d8 18-May-2010 Evan Cheng <evan.cheng@apple.com> Fix PR7156. If the sources of a REG_SEQUENCE are all IMPLICIT_DEF's. Replace it with an IMPLICIT_DEF rather than deleting it or else it would be left without a def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103984 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b11aae23f9cb597ae394108ed33770c12beaa2d7 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Pull the UsedInInstr.test() calls into calcSpillCost() and remember aliases.
This fixes the miscompilations of MultiSource/Applications/JM/l{en,de}cod.
Clang now successfully self hosts in a debug build with the fast register allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103975 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
b8acb7be804c8c537f2475f3a24303a0b37ab107 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Pull the UsedInInstr.test() calls into calcSpillCost() and remember aliases.
This fixes the miscompilations of MultiSource/Applications/JM/l{en,de}cod.
Clang now successfully self hosts in a debug build with the fast register allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103975 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
d372b185ac15ab79a8c9d92b93df89a09b1cf386 17-May-2010 Eric Christopher <echristo@apple.com> Add some section and constant support for darwin TLS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103974 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
423c9e3e589a79be757842d421600590c68d5b43 17-May-2010 Eric Christopher <echristo@apple.com> Add some section and constant support for darwin TLS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103974 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
6dbffd4b44cbd1b38d1a4dc0b290c958e3e1bbe5 17-May-2010 Evan Cheng <evan.cheng@apple.com> Careful with reg_sequence coalescing to not to overwrite sub-register indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103971 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
53c779bb3a5712b67cf6bae785cb83a90841d17e 17-May-2010 Evan Cheng <evan.cheng@apple.com> Careful with reg_sequence coalescing to not to overwrite sub-register indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103971 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
a87eacc96be799ab26d7b9529960517375d670ec 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove debug option. Add comment on spill order determinism.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103961 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
2997985b4cafc2a1e562819a2f3e0c6abe5fb223 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove debug option. Add comment on spill order determinism.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103961 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
9ef9cf930da64449cabc476e90b846db461e5764 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid allocating the same physreg to multiple virtregs in one instruction.

While that approach works wonders for register pressure, it tends to break
everything.

This should unbreak the arm-linux builder and fix a number of miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103946 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
aa4b0159dacf12e48a60d66229dfd2b19406da87 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid allocating the same physreg to multiple virtregs in one instruction.

While that approach works wonders for register pressure, it tends to break
everything.

This should unbreak the arm-linux builder and fix a number of miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103946 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
915fa2f0335d13ec3c2e9e048b5545259bad3fab 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Minor optimizations. DenseMap::begin() is surprisingly slow on an empty map.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103940 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
f3ea06b108d45c53dade87d6f1f48ac0a0e20562 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Minor optimizations. DenseMap::begin() is surprisingly slow on an empty map.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103940 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
a796979e89e849c6e5d1e33987613e7464d52073 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract spill cost calculation to a new method, and use definePhysReg() to clear
out aliases when allocating. Clean up allocVirtReg().

Use calcSpillCost() to allow more aggressive hinting. Now the hint is always
taken unless blocked by a reserved register. This leads to more coalescing,
lower register pressure, and less spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103939 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
548643c573d53950e28e9e810cd0454ba9a21af0 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract spill cost calculation to a new method, and use definePhysReg() to clear
out aliases when allocating. Clean up allocVirtReg().

Use calcSpillCost() to allow more aggressive hinting. Now the hint is always
taken unless blocked by a reserved register. This leads to more coalescing,
lower register pressure, and less spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103939 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
22d1bc617b77161c9a665eccd1382234fc86f0fd 17-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused member variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103936 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
bae5210321e0c3ea28723334841555135a61e915 17-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused member variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103936 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
b6cc453b7f1f370f19b9a6d3f6a645d7c1ca62e7 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Only use clairvoyance when defining a register, and then only if it has one use.
This makes allocation independent on the ordering of use-def chains.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103935 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
0c9e4f5f3ff139733d74462a0ad5b94014e764a8 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Only use clairvoyance when defining a register, and then only if it has one use.
This makes allocation independent on the ordering of use-def chains.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103935 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
11533ee7857e843eeae4dbc91e87c635577072c8 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate a hash table probe when killing virtual registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103934 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
646dd7c899ea213301e193a25536a4bceebf7937 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate a hash table probe when killing virtual registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103934 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
15624383d48378f026f4d64fa238decd3e8e74b7 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Execute virtreg kills immediately instead of after processing all uses.

This is safe to do because the physreg has been marked UsedInInstr and the kill flag will be set on the last operand using the virtreg if there are more then one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103933 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
ac3e529831877cea609ed668f95b1dc06e34698c 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Execute virtreg kills immediately instead of after processing all uses.

This is safe to do because the physreg has been marked UsedInInstr and the kill flag will be set on the last operand using the virtreg if there are more then one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103933 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
15694bec65a490599e846fc0073bf50291e59a59 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Sprinkle superregister <imp-def> and <imp-kill> operands when dealing with subregister indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103931 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
41e1401de5cb8752fb9d06e65e62bfe97cc1304e 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Sprinkle superregister <imp-def> and <imp-kill> operands when dealing with subregister indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103931 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
3e7e1c0109c9f65bc01cf6d219fc71113c9dd427 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Now that we don't keep live registers across calls, there is not reason to go
through the very long list of call-clobbered registers. We just assume all
registers are clobbered.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103930 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
4b6bbe885d851b1cfba2be9b5efc6365a2b7828a 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Now that we don't keep live registers across calls, there is not reason to go
through the very long list of call-clobbered registers. We just assume all
registers are clobbered.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103930 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
a6f27c91ca4929e2b2fbe5d645d813ba21bb3531 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Boldly attempt consistent capitalization. Functional changes unintended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103929 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
844db9cc6f1a9458b60b8debeef3132f555dcd8f 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Boldly attempt consistent capitalization. Functional changes unintended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103929 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
3cd6f7d3b8f6217521c1f4f909bcd9cbd00aa331 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Spill and kill all virtual registers across a call.

Debug code doesn't use callee saved registers anyway, and the code is simpler this way. Now spillVirtReg always kills, and the isKill parameter is not needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103927 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
e6aba837974f7d2539efad9a09fe06b4d1566e5d 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Spill and kill all virtual registers across a call.

Debug code doesn't use callee saved registers anyway, and the code is simpler this way. Now spillVirtReg always kills, and the isKill parameter is not needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103927 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
a248bcef4531a49a1baf6e4e3ed57df37952b5fe 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Reduce hashtable probes by using DenseMap::insert() for lookup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103926 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
01dcbf850732790fe7d5b5ed23426d535b07f316 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Reduce hashtable probes by using DenseMap::insert() for lookup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103926 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
1691e382417def5a49c4dbb0cdb44c1ee451b8c5 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make MBB a class member instead of passing it around everywhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103925 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
6fb69d85e9576445e98c4114ee7064deb4476712 17-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make MBB a class member instead of passing it around everywhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103925 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
2a70a224af450c22fd123822870c9d887787f488 17-May-2010 Evan Cheng <evan.cheng@apple.com> Yes, if the redef is a copy, update the old val# with the copy. But make sure to clear the copy field if the redef is not a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103922 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ad6c5a20ba87e7aba91ef7e8b270715a25379770 17-May-2010 Evan Cheng <evan.cheng@apple.com> Yes, if the redef is a copy, update the old val# with the copy. But make sure to clear the copy field if the redef is not a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103922 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
58d8a7077b0bf5ba425b29950da3ef52021d3252 15-May-2010 Dale Johannesen <dalej@apple.com> Fix uint64->{float, double} conversion to do rounding correctly in 32-bit.

The implementation in LegalizeIntegerTypes to handle this as
sint64->float + appropriate power of 2 is subject to double rounding,
considered incorrect by numerics people. Use this implementation only
when it is safe. This leads to using library calls in some cases
that produced inline code before, but it's correct now.
(EVTToAPFloatSemantics belongs somewhere else, any suggestions?)

Add a correctly rounding (though not particularly fast) conversion
that uses X87 80-bit computations for x86-32.

7885399, 5901940. This shows up in gcc.c-torture/execute/ieee/rbug.c
in the gcc testsuite on some platforms.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103883 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
8d908ebd1926d00ff47d8284e52657705efb7f9b 15-May-2010 Dale Johannesen <dalej@apple.com> Fix uint64->{float, double} conversion to do rounding correctly in 32-bit.

The implementation in LegalizeIntegerTypes to handle this as
sint64->float + appropriate power of 2 is subject to double rounding,
considered incorrect by numerics people. Use this implementation only
when it is safe. This leads to using library calls in some cases
that produced inline code before, but it's correct now.
(EVTToAPFloatSemantics belongs somewhere else, any suggestions?)

Add a correctly rounding (though not particularly fast) conversion
that uses X87 80-bit computations for x86-32.

7885399, 5901940. This shows up in gcc.c-torture/execute/ieee/rbug.c
in the gcc testsuite on some platforms.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103883 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
1e6035e0cc0a22270dd8641971a09067c8ba965d 15-May-2010 Dale Johannesen <dalej@apple.com> Improve assertion messages.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103882 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
789955127e06774b629e9db1cfa983184ceeda76 15-May-2010 Dale Johannesen <dalej@apple.com> Improve assertion messages.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103882 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
90131ba41b81e394bcea8f19229c4cfcfdec25a6 15-May-2010 Chris Lattner <sabre@nondot.org> improve portability to systems that don't have powf/modf (e.g. solaris 9)
patch by Evzen Muller!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103876 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
87565c1d779a1903d10ddd11d886c0f79ee430b5 15-May-2010 Chris Lattner <sabre@nondot.org> improve portability to systems that don't have powf/modf (e.g. solaris 9)
patch by Evzen Muller!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103876 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
daa8e0efc9b646d89ca9deb9acd3b8f2eb349a1d 15-May-2010 Chandler Carruth <chandlerc@gmail.com> Fix an GCC warning that seems to have actually caught a bug (!!!) in
a condition's grouping. Every other use of Allocatable.test(Hint) groups it the
same way as it is indented, so move the parentheses to agree with that
grouping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103869 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
2c13ab2bb840295ffba5f28bb1df7aa0b8d9736e 15-May-2010 Chandler Carruth <chandlerc@gmail.com> Fix an GCC warning that seems to have actually caught a bug (!!!) in
a condition's grouping. Every other use of Allocatable.test(Hint) groups it the
same way as it is indented, so move the parentheses to agree with that
grouping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103869 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
43de6f9c8a6549f7f9b63fbefd0fc7e3d2b2fcab 15-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Calculate liveness on the fly for local registers.

When working top-down in a basic block, substituting physregs for virtregs, the use-def chains are kept up to date. That means we can recognize a virtreg kill by the use-def chain becoming empty.

This makes the fast allocator independent of incoming kill flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103866 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
1e03ff42433afe3a9ffad2765b537f10db3aa921 15-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Calculate liveness on the fly for local registers.

When working top-down in a basic block, substituting physregs for virtregs, the use-def chains are kept up to date. That means we can recognize a virtreg kill by the use-def chain becoming empty.

This makes the fast allocator independent of incoming kill flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103866 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
c26921338838a91d8fb4ae4db9e7ac39ff032c5d 15-May-2010 Evan Cheng <evan.cheng@apple.com> A partial re-def instruction may be a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103850 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
61d531066d540a1a05fa44048ebef4bb1614acea 15-May-2010 Evan Cheng <evan.cheng@apple.com> A partial re-def instruction may be a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103850 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
37f5064fd0e6e9524efc05736649b20d5ba0ec66 15-May-2010 Evan Cheng <evan.cheng@apple.com> Teach two-address pass to do some coalescing while eliminating REG_SEQUENCE
instructions.

e.g.
%reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0
%reg1027<def> = EXTRACT_SUBREG %reg1026, 6
%reg1028<def> = EXTRACT_SUBREG %reg1026<kill>, 5
...
%reg1029<def> = REG_SEQUENCE %reg1028<kill>, 5, %reg1027<kill>, 6, %reg1028, 7, %reg1027, 8, %reg1028, 9, %reg1027, 10, %reg1030<kill>, 11, %reg1032<kill>, 12

After REG_SEQUENCE is eliminated, we are left with:

%reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0
%reg1029:6<def> = EXTRACT_SUBREG %reg1026, 6
%reg1029:5<def> = EXTRACT_SUBREG %reg1026<kill>, 5

The regular coalescer will not be able to coalesce reg1026 and reg1029 because it doesn't
know how to combine sub-register indices 5 and 6. Now 2-address pass will consult the
target whether sub-registers 5 and 6 of reg1026 can be combined to into a larger
sub-register (or combined to be reg1026 itself as is the case here). If it is possible,
it will be able to replace references of reg1026 with reg1029 + the larger sub-register
index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103835 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b990a2f249196ad3e0cc451d40a45fc2f9278eaf 15-May-2010 Evan Cheng <evan.cheng@apple.com> Teach two-address pass to do some coalescing while eliminating REG_SEQUENCE
instructions.

e.g.
%reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0
%reg1027<def> = EXTRACT_SUBREG %reg1026, 6
%reg1028<def> = EXTRACT_SUBREG %reg1026<kill>, 5
...
%reg1029<def> = REG_SEQUENCE %reg1028<kill>, 5, %reg1027<kill>, 6, %reg1028, 7, %reg1027, 8, %reg1028, 9, %reg1027, 10, %reg1030<kill>, 11, %reg1032<kill>, 12

After REG_SEQUENCE is eliminated, we are left with:

%reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0
%reg1029:6<def> = EXTRACT_SUBREG %reg1026, 6
%reg1029:5<def> = EXTRACT_SUBREG %reg1026<kill>, 5

The regular coalescer will not be able to coalesce reg1026 and reg1029 because it doesn't
know how to combine sub-register indices 5 and 6. Now 2-address pass will consult the
target whether sub-registers 5 and 6 of reg1026 can be combined to into a larger
sub-register (or combined to be reg1026 itself as is the case here). If it is possible,
it will be able to replace references of reg1026 with reg1029 + the larger sub-register
index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103835 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
170e16745833e36e689b40a1892eeca6f2e3b4aa 15-May-2010 Dan Gohman <gohman@apple.com> Fast ISel trivially coalesces away no-op casts, so check for this when
setting kill flags.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103832 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
7f0d69555caab5f5468ddf74b5840f59c4c6fd83 15-May-2010 Dan Gohman <gohman@apple.com> Fast ISel trivially coalesces away no-op casts, so check for this when
setting kill flags.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103832 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
2bc9006bd8d16c429530fb6f7f8b983807f635a2 15-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't bother spilling before a return

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103831 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
6a6328ba3d007b2e5a71131793179ef96d4bee7d 15-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't bother spilling before a return

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103831 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
3475dfb8268e224ee029235642c56943e6fd3e01 15-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> RegAllocLocal can count copies too

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103830 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
ab2d00863f105b671b5f0da60152e14f13e0a4b3 15-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> RegAllocLocal can count copies too

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103830 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
203ea2e343da87cac7ec9bd9cdc5a3213fe6bd8d 15-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Track allocatable instead of reserved regs, and never take an unallocatable hint.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103828 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
efa155fd6e3820495205a09f8b9f20390d126153 15-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Track allocatable instead of reserved regs, and never take an unallocatable hint.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103828 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
b992d3c1061218bea64e3b91099c8b170608b670 15-May-2010 Dan Gohman <gohman@apple.com> Don't set kill flags for instructions which the scheduler has cloned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103827 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
8b3a8f5773d799762b61adf976b9771117f0f261 15-May-2010 Dan Gohman <gohman@apple.com> Don't set kill flags for instructions which the scheduler has cloned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103827 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
758561f3a5d9f511409bdd975e1ad423292f2abe 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid scanning the long tail of physreg operands on calls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103823 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
e97dda4fc58ee401ebb4aa9153d10f8ce8ba9a70 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid scanning the long tail of physreg operands on calls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103823 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
c28e12a7f03668a467038318026dd21727ac9014 14-May-2010 Devang Patel <dpatel@apple.com> Do not forget to mark prcessed arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103822 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
26c699565424e93e9d0d0495d7e914d89071d6e0 14-May-2010 Devang Patel <dpatel@apple.com> Do not forget to mark prcessed arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103822 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2e10016f9a5f6a39a7d997e791430aa2abf64b47 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Count coalesced copies

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103821 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
8a65c510a4fa1245d101da6318618d025702028c 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Count coalesced copies

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103821 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
f2128e52130f87340a2faf1e1d884314c639fab0 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow virtreg redefines when verifying for RegAllocFast

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103820 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
a0e618de5d9b40e5b5189c299086487e5ad767f2 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow virtreg redefines when verifying for RegAllocFast

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103820 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
9f47ab73fbffe6710d9909ad84bc1913acbfb2b1 14-May-2010 Jim Grosbach <grosbach@apple.com> Remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103807 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
01384ef159caa7eebff0e1d703638f2e2c862092 14-May-2010 Jim Grosbach <grosbach@apple.com> Remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103807 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
ed0972f996d416cab0595d968855836d509158e5 14-May-2010 Jim Grosbach <grosbach@apple.com> 80 column and trailing whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103806 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
9001303a3fc3e901c1e5e8b5daea56e55989c114 14-May-2010 Jim Grosbach <grosbach@apple.com> 80 column and trailing whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103806 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
48176992051d565bc8805c3beae6a19b0fc2fc2c 14-May-2010 Jim Grosbach <grosbach@apple.com> add cmd line option to leave dbgvalues in during post-RA sceduling. Useful
while debugging what's mishandled about them in the post-RA pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103805 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
5468e0928bcbfc18890d32c7525d281c14e6c303 14-May-2010 Jim Grosbach <grosbach@apple.com> add cmd line option to leave dbgvalues in during post-RA sceduling. Useful
while debugging what's mishandled about them in the post-RA pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103805 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
b6d3f2514f08b9451a7b7fb8599c87aba6f0cb7f 14-May-2010 Bill Wendling <isanbard@gmail.com> Rename "HasCalls" in MachineFrameInfo to "AdjustsStack" to better describe what
the variable actually tracks.

N.B., several back-ends are using "HasCalls" as being synonymous for something
that adjusts the stack. This isn't 100% correct and should be looked into.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103802 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
rologEpilogInserter.cpp
electionDAG/SelectionDAGISel.cpp
b92187a4103dca24c3767c380f63593d1f6161a7 14-May-2010 Bill Wendling <isanbard@gmail.com> Rename "HasCalls" in MachineFrameInfo to "AdjustsStack" to better describe what
the variable actually tracks.

N.B., several back-ends are using "HasCalls" as being synonymous for something
that adjusts the stack. This isn't 100% correct and should be looked into.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103802 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
rologEpilogInserter.cpp
electionDAG/SelectionDAGISel.cpp
fad0168253264a619250511d333e81b42af3f07b 14-May-2010 Devang Patel <dpatel@apple.com> Add support to preserve type info for the variables that are removed by the optimizer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103798 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
98e1cac52c0eb35fdf6608befd58a8d09d3459d6 14-May-2010 Devang Patel <dpatel@apple.com> Add support to preserve type info for the variables that are removed by the optimizer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103798 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c9589e520bfbe60dcc05b040e4a3c02f4b8e428f 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When verifying two-address instructions, check the following:

- Kill is implicit when use and def registers are identical.
- Only virtual registers can differ.

Add a -verify-fast-regalloc to run the verifier before the fast allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103797 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
egAllocFast.cpp
1b2c761a9cc9a57b417c676f4bd97d11b6ba1869 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When verifying two-address instructions, check the following:

- Kill is implicit when use and def registers are identical.
- Only virtual registers can differ.

Add a -verify-fast-regalloc to run the verifier before the fast allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103797 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
egAllocFast.cpp
56ce5e47b5bbe69ae14a90e0b94166a93aa31220 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify the handling of physreg defs and uses in RegAllocFast.

This adds extra security against using clobbered physregs, and it adds kill
markers to physreg uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103784 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
4ed10826833701b14064f55b6514289e0a7ff5ef 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify the handling of physreg defs and uses in RegAllocFast.

This adds extra security against using clobbered physregs, and it adds kill
markers to physreg uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103784 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
2d0791417af10ea180128589be39b5661d3f3496 14-May-2010 Daniel Dunbar <daniel@zuster.org> XFAIL the test I added with vg_leak, apparently it is the first and only llc
-filetype=obj test, and -filetype=obj leaks a few objects. Added a FIXME, we
need to sort out the ownership model for the various MC objects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103769 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
bd616b69f7ab072a623b55a244bf61541eac5f32 14-May-2010 Daniel Dunbar <daniel@zuster.org> XFAIL the test I added with vg_leak, apparently it is the first and only llc
-filetype=obj test, and -filetype=obj leaks a few objects. Added a FIXME, we
need to sort out the ownership model for the various MC objects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103769 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
f09bec35d06ca60cff9af63b36b54f84ef5d4d6f 14-May-2010 Daniel Dunbar <daniel@zuster.org> Inline Asm: Ensure buffer is newline terminated to match how the text is printed.
- This is a hack, but I can't decide the best place to handle this. Chris?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103765 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
d11d59e35a977e65387c3033dd7b0b7af5641f1e 14-May-2010 Daniel Dunbar <daniel@zuster.org> Inline Asm: Ensure buffer is newline terminated to match how the text is printed.
- This is a hack, but I can't decide the best place to handle this. Chris?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103765 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
83717f07d2f438e9c54e81aa93a7860975e03978 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable opportunistic coalescing

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103764 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
7ff82e1501c416552125f77a62edebe576e469b0 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable opportunistic coalescing

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103764 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
b5e3070df1690aabec017fb8d2fd18fa345009b4 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Trust kill flags from isel and later passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103748 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
57b6076d343e03237ea8b56ab291f488cc97300f 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Trust kill flags from isel and later passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103748 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
3629320719e3a8b8345a5722e15e7ddb9ecd654d 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix an embarrassing runtime regression for RegAllocFast.

This loop is quadratic in the capacity for a DenseMap:

while(!map.empty())
map.erase(map.begin());

Instead we now do a normal begin() - end() iteration followed by map.clear().
That also has the nice sideeffect of shrinking the map capacity on demand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103747 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
7d4f25904de543b039a28eddbea3034a5d80e7f8 14-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix an embarrassing runtime regression for RegAllocFast.

This loop is quadratic in the capacity for a DenseMap:

while(!map.empty())
map.erase(map.begin());

Instead we now do a normal begin() - end() iteration followed by map.clear().
That also has the nice sideeffect of shrinking the map capacity on demand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103747 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
19dc8c9bcd5007ca61d8b42d363602a24216f0a6 14-May-2010 Dale Johannesen <dalej@apple.com> Implement a correct ui64->f32 conversion. The old
one was subject to double rounding in extreme cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103744 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a5afa1cb214146fd270c86f606b634c8ed6682f2 14-May-2010 Dale Johannesen <dalej@apple.com> Implement a correct ui64->f32 conversion. The old
one was subject to double rounding in extreme cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103744 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ea137978e7febdae05ec3e47578f8c514c0c1b7b 13-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up RegAllocFast debug output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103739 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
c9c4dacd03a4b80d61ed6b9c6ffeb1b1f76b8d1c 13-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up RegAllocFast debug output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103739 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
a858f3e98f4ebe01e1e9fb3f1733dbcd4799d452 13-May-2010 Dan Gohman <gohman@apple.com> Teach MachineLICM and MachineSink how to clear kill flags conservatively
when they move instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103737 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineLICM.cpp
achineSink.cpp
e6cd757e6800b9b94a6459ec148c0624c4f2e3c1 13-May-2010 Dan Gohman <gohman@apple.com> Teach MachineLICM and MachineSink how to clear kill flags conservatively
when they move instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103737 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineLICM.cpp
achineSink.cpp
2914807ff0557213406f9be8c35dfa593196b4d0 13-May-2010 Dan Gohman <gohman@apple.com> Add a utility function for conservatively clearing kill flags, and make
use of it in MachineCSE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103726 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
achineRegisterInfo.cpp
49b4589978ca181537c8ae694ac4c8d58d27a09a 13-May-2010 Dan Gohman <gohman@apple.com> Add a utility function for conservatively clearing kill flags, and make
use of it in MachineCSE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103726 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
achineRegisterInfo.cpp
1ffc159c03023848aefac15da5fc351c0d0eff84 13-May-2010 Dan Gohman <gohman@apple.com> An Instruction has a trivial kill only if its use is in the same
basic block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103725 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
e1308d86ed2402483aa9d056af531fd773e1121f 13-May-2010 Dan Gohman <gohman@apple.com> An Instruction has a trivial kill only if its use is in the same
basic block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103725 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
ac97579ccf8f2dc1588dbff9af8727d990c41dc1 13-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Take allocation hints from copy instructions to/from physregs.
This causes way more identity copies to be generated, ripe for coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103686 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
4bf4bafcced902ee6d58a90486768f08a3795d02 13-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Take allocation hints from copy instructions to/from physregs.
This causes way more identity copies to be generated, ripe for coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103686 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
b047a55c7163093d1db81501ce224b4f73d792a6 13-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> More asserts around physreg uses

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103685 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
63e34f690c511a146b936435f84ee76fda154f7c 13-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> More asserts around physreg uses

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103685 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
5247047ea2bc867def200835f4ab1bbd8d93d4d5 13-May-2010 Evan Cheng <evan.cheng@apple.com> If REG_SEQUENCE source is livein, copy it first. Also, update livevariables information when a copy is introduced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103680 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
054dbb8e8230ae1a7f1f386b6bf307a36af7dd20 13-May-2010 Evan Cheng <evan.cheng@apple.com> If REG_SEQUENCE source is livein, copy it first. Also, update livevariables information when a copy is introduced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103680 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
73aac95b5bb57fac7a6ac3452b39d7dee5687385 13-May-2010 Evan Cheng <evan.cheng@apple.com> Do not attempt copy coalescing if the source and dest sub-register indices do not match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103679 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
de7dea2e44ea59674acb5680482cd516c6fce3bb 13-May-2010 Evan Cheng <evan.cheng@apple.com> Do not attempt copy coalescing if the source and dest sub-register indices do not match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103679 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
2a3bf5ca49917f8dc647cf69e77c04a6575ff46a 12-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make sure to add kill flags to the last use of a virtreg when it is redefined.
The X86 floating point stack pass and others depend on good kill flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103635 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
804291e31658d46fb1db5ecaf42b31950c02a6f2 12-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Make sure to add kill flags to the last use of a virtreg when it is redefined.
The X86 floating point stack pass and others depend on good kill flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103635 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
f01b62dabc0372b5cf4525272fba263e6589f066 12-May-2010 Duncan Sands <baldrick@free.fr> Remove unused variable. Tweak a comment while there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103586 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5b1b3b73f2e4fc66eb8a9273673d128b139caf03 12-May-2010 Duncan Sands <baldrick@free.fr> Remove unused variable. Tweak a comment while there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103586 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
45ad6ff8701825cf79c5d3ce42e2b5a88dc85f65 12-May-2010 Nathan Jeffords <blunted2night@gmail.com> updated support for the COFF .linkonce

Now, the .linkonce directive is emitted as part of MCSectionCOFF::PrintSwitchToSection instead of AsmPrinter::EmitLinkage since it is an attribute of the section the symbol was placed into not the symbol itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103568 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
871bb94c4343dcc7391af7833ebb4313a782440b 12-May-2010 Nathan Jeffords <blunted2night@gmail.com> updated support for the COFF .linkonce

Now, the .linkonce directive is emitted as part of MCSectionCOFF::PrintSwitchToSection instead of AsmPrinter::EmitLinkage since it is an attribute of the section the symbol was placed into not the symbol itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103568 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
82e2b2f2aecb3d540ec72e279b80216013d68545 12-May-2010 Evan Cheng <evan.cheng@apple.com> Teach local regalloc about virtual registers with sub-indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103539 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
736f89b1c15410f1b77db820ad8353fb4b0dda19 12-May-2010 Evan Cheng <evan.cheng@apple.com> Teach local regalloc about virtual registers with sub-indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103539 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
e04036b24a60b8fe05ad7efb59efa6e607392379 12-May-2010 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103538 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
3ae56bcd8ab0b9cba006f772a623b81d4c7bfd7f 12-May-2010 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103538 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
335d4e49a5accdfde53efe66dd15113239bed8ba 12-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid scoping issues, fix buildbots

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103530 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
1a1ad578a3f925dfda58874156fd154fa1d941ea 12-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid scoping issues, fix buildbots

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103530 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
5d4cee00f4f8a3ae9fabcc0200d4be6ed2530be0 12-May-2010 Dan Gohman <gohman@apple.com> Add initial kill flag support to FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103529 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a6cb641f48df20f6f79018569b519e5a32e897a2 12-May-2010 Dan Gohman <gohman@apple.com> Add initial kill flag support to FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103529 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
0521a440058c735eb1b39b7033ea2508d56bbffd 12-May-2010 Daniel Dunbar <daniel@zuster.org> Make Clang happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103528 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
0efd768aeac9576e9a8ebb8a693f4a00bc6ecbbc 12-May-2010 Daniel Dunbar <daniel@zuster.org> Make Clang happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103528 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
667bbd457c7fb1c713ac342bc3bc0b72cbe68637 12-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Store the Dirty bit in the LiveReg structure instead of a bit vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103522 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
210e2afcc74e8ce5102d13939b23040fafa71c09 12-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Store the Dirty bit in the LiveReg structure instead of a bit vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103522 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
b61a807660942000e86b5637b22c5f99b97e78a2 12-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep track of the last place a live virtreg was used.
This allows us to add accurate kill markers, something the scavenger likes.
Add some more tests from ARM that needed this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103521 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
76b4d5a0210f161c08543f00f355955c94d3f2ec 12-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep track of the last place a live virtreg was used.
This allows us to add accurate kill markers, something the scavenger likes.
Add some more tests from ARM that needed this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103521 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
687956a7f61e50f67d231de0826c547fa77c01a9 11-May-2010 Dan Gohman <gohman@apple.com> Don't set kill flags on uses of CopyFromReg nodes. InstrEmitter doesn't
create separate virtual registers for CopyFromReg values, so uses of
them don't necessarily kill the value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103519 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
9d7019f586719a03f3519142ca2166166962e433 11-May-2010 Dan Gohman <gohman@apple.com> Don't set kill flags on uses of CopyFromReg nodes. InstrEmitter doesn't
create separate virtual registers for CopyFromReg values, so uses of
them don't necessarily kill the value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103519 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
516679eae7954b6e1d8388c21cc9bc29d64bc1fe 11-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Silence warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103508 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
8e8b3cb9371e60b22d1f401ec63a774c6115e98d 11-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Silence warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103508 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
287e0145ea89b5c660b09a428d56b05f057b8251 11-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify the tracking of used physregs to a bulk bitor followed by a transitive
closure after allocating all blocks.

Add a few more test cases for -regalloc=fast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103500 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
egAllocFast.cpp
82b07dc4995d48065bd95affff4d8513a5cad4f2 11-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify the tracking of used physregs to a bulk bitor followed by a transitive
closure after allocating all blocks.

Add a few more test cases for -regalloc=fast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103500 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
egAllocFast.cpp
87177829e96ec9552c8a426fffd40a3090e515e5 11-May-2010 Duncan Sands <baldrick@free.fr> I got tired of VISIBILITY_HIDDEN colliding with the gcc enum. Rename it
to LLVM_LIBRARY_VISIBILITY and introduce LLVM_GLOBAL_VISIBILITY, which is
the opposite, for future use by dragonegg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103495 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAGBuilder.cpp
16d8f8bd919b72866e687d99f3aa94a140137c59 11-May-2010 Duncan Sands <baldrick@free.fr> I got tired of VISIBILITY_HIDDEN colliding with the gcc enum. Rename it
to LLVM_LIBRARY_VISIBILITY and introduce LLVM_GLOBAL_VISIBILITY, which is
the opposite, for future use by dragonegg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103495 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAGBuilder.cpp
62f1433c25004a1c53c4a0f1b2f5b3c101343ef4 11-May-2010 Dan Gohman <gohman@apple.com> Trim #includes and forward declarations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
038df88e28b88dfea7e95d6331ffcdc03e71d8e4 11-May-2010 Dan Gohman <gohman@apple.com> Trim #includes and forward declarations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
ed72e218d07aff19d39b9923fc213d76037c927c 11-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Mostly rewrite RegAllocFast.

Sorry for the big change. The path leading up to this patch had some TableGen
changes that I didn't want to commit before I knew they were useful. They
weren't, and this version does not need them.

The fast register allocator now does no liveness calculations. Instead it relies
on kill flags provided by isel. (Currently those kill flags are also ignored due
to isel bugs). The allocation algorithm is supposed to work with any subset of
valid kill flags. More kill flags simply means fewer spills inserted.

Registers are allocated from a working set that contains no aliases. That means
most allocations can be done directly without expensive alias checks. When the
working set runs out of registers we do the full alias check to find new free
registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103488 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
bbf33b38aaaa6cdbdd2c6a595aa081734308ce83 11-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Mostly rewrite RegAllocFast.

Sorry for the big change. The path leading up to this patch had some TableGen
changes that I didn't want to commit before I knew they were useful. They
weren't, and this version does not need them.

The fast register allocator now does no liveness calculations. Instead it relies
on kill flags provided by isel. (Currently those kill flags are also ignored due
to isel bugs). The allocation algorithm is supposed to work with any subset of
valid kill flags. More kill flags simply means fewer spills inserted.

Registers are allocated from a working set that contains no aliases. That means
most allocations can be done directly without expensive alias checks. When the
working set runs out of registers we do the full alias check to find new free
registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103488 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
cfbb32346a7eca19d4dc00fd2c1a0248537b3497 11-May-2010 Dan Gohman <gohman@apple.com> Implement a bunch more TargetSelectionDAGInfo infrastructure.

Move EmitTargetCodeForMemcpy, EmitTargetCodeForMemset, and
EmitTargetCodeForMemmove out of TargetLowering and into
SelectionDAGInfo to exercise this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103481 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetSelectionDAGInfo.cpp
ff7a562751604a9fe13efc75bd59622244b54d35 11-May-2010 Dan Gohman <gohman@apple.com> Implement a bunch more TargetSelectionDAGInfo infrastructure.

Move EmitTargetCodeForMemcpy, EmitTargetCodeForMemset, and
EmitTargetCodeForMemmove out of TargetLowering and into
SelectionDAGInfo to exercise this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103481 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetSelectionDAGInfo.cpp
491363c2ba41b17b9e3698918beaea8f5bf9d024 11-May-2010 Douglas Gregor <doug.gregor@gmail.com> Fixes for Microsoft Visual Studio 2010, from Steven Watanabe!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103457 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
piller.cpp
7d9663c70b3300070298d716dba6e6f6ce2d1e3e 11-May-2010 Douglas Gregor <dgregor@apple.com> Fixes for Microsoft Visual Studio 2010, from Steven Watanabe!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103457 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
piller.cpp
962eb08b75df3e36a4237ec9415944809a403b86 11-May-2010 Evan Cheng <evan.cheng@apple.com> It's not safe eliminate copies where src and dst have different sub-register indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103450 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
egAllocFast.cpp
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
31b9c44cc13bb686010cf6bfbeef8745c39939b9 11-May-2010 Evan Cheng <evan.cheng@apple.com> It's not safe eliminate copies where src and dst have different sub-register indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103450 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
egAllocFast.cpp
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
210f7c158bced38cb5e60a7085650125ccc25145 11-May-2010 Evan Cheng <evan.cheng@apple.com> Ensure REG_SEQUENCE source operands are unique.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103449 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
0bcccac50481921ab86dfdbaadec79f1db35c662 11-May-2010 Evan Cheng <evan.cheng@apple.com> Ensure REG_SEQUENCE source operands are unique.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103449 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
3be2ceb2bec76f6d38f0d51f1045ad6700c6f453 11-May-2010 Evan Cheng <evan.cheng@apple.com> Indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103441 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
60ffa9467b0c7df2f76e2b2de7af17b776805e28 11-May-2010 Evan Cheng <evan.cheng@apple.com> Indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103441 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
7e5a86e0c9d0445f638f6423d72e7069e4ef7a89 11-May-2010 Devang Patel <dpatel@apple.com> Enable multiple Compile Units in one module.
This means now 'llvm-ld a.bc b.bc' will preserve debug info appropriately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103439 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
163a9f7c5f545414506364a94689e22d59533fe6 11-May-2010 Devang Patel <dpatel@apple.com> Enable multiple Compile Units in one module.
This means now 'llvm-ld a.bc b.bc' will preserve debug info appropriately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103439 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c4041fa017cd060a3603952a14ca02c6223bf3a9 10-May-2010 Evan Cheng <evan.cheng@apple.com> It's not safe to propagate implicit_def that defines part of a register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103436 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
9cc9bfaf86510790c36198b033f241635614a8d0 10-May-2010 Evan Cheng <evan.cheng@apple.com> It's not safe to propagate implicit_def that defines part of a register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103436 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
635c7780796be3419d6112faa857f7077ab89f01 10-May-2010 Evan Cheng <evan.cheng@apple.com> Clear RegSequences vector after eliminating REG_SEQUENCE instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103435 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
fc6e6a9b3b2b2de7bee47d9dcbdfdc72ca7f5238 10-May-2010 Evan Cheng <evan.cheng@apple.com> Clear RegSequences vector after eliminating REG_SEQUENCE instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103435 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
f6c387a40e55d90ef26b06df3bfe0ec8c0556f89 10-May-2010 Evan Cheng <evan.cheng@apple.com> Be careful with operand promotion. For a binary operation, the source operands may be the same. PR7018. rdar://7939869.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
aad753bbbd98c952f7e65246af2faf5c7d5a850b 10-May-2010 Evan Cheng <evan.cheng@apple.com> Be careful with operand promotion. For a binary operation, the source operands may be the same. PR7018. rdar://7939869.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2b72505bf40454601b9cfce6e3e59f7838dba944 10-May-2010 Evan Cheng <evan.cheng@apple.com> Re-defined valno is always valno even for partial re-def's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103410 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
623d3c10e12a4227926e5b69947f7f0fa7e1908a 10-May-2010 Evan Cheng <evan.cheng@apple.com> Re-defined valno is always valno even for partial re-def's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103410 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
0f4fd7667762ae4cc2a4679b5b68ce67e23401c2 10-May-2010 Bob Wilson <bob.wilson@apple.com> Fix PR7096. When a block containing multiple defs is tail duplicated, the
SSAUpdater for the value from the first def may see uses of undefined values,
because the later defs will not have been updated yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103407 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
fde18e5eff86b5055d7ed541fa87cde5aa1ab31c 10-May-2010 Bob Wilson <bob.wilson@apple.com> Fix PR7096. When a block containing multiple defs is tail duplicated, the
SSAUpdater for the value from the first def may see uses of undefined values,
because the later defs will not have been updated yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103407 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
a415e0ebca988dfbb3377b7369c02f80fec7b46e 10-May-2010 Duncan Sands <baldrick@free.fr> Add an assertion to catch attempts to access off the end of the array.
Based on a patch by Javier Martinez.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103391 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ad017dcb3a41bb053a6a5fa873d07222763dae75 10-May-2010 Duncan Sands <baldrick@free.fr> Add an assertion to catch attempts to access off the end of the array.
Based on a patch by Javier Martinez.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103391 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
532a9a81c9c75f5a509737710899cf1184e888e2 08-May-2010 Devang Patel <dpatel@apple.com> Instead of just verifying compile unit, verify entire type, variable, namespace etc..


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103327 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c665a5146d37cbc793f2e4413fd39a40ec230e12 08-May-2010 Devang Patel <dpatel@apple.com> Instead of just verifying compile unit, verify entire type, variable, namespace etc..


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103327 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4942c4b48d0756df697bf4e488b95dc498170d6e 08-May-2010 Devang Patel <dpatel@apple.com> Remove DIGlobal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103325 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
a49d8772902c2a72c298952f633ab4224cf33add 08-May-2010 Devang Patel <dpatel@apple.com> Remove DIGlobal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103325 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c690002d5a85ab55cd9a4d163ec28f35344f2154 08-May-2010 Dan Gohman <gohman@apple.com> SDDbgValues are apparently not being legalized. Fix a symptom of the problem,
and not the real problem itself, by dropping debug info for i128 values.
rdar://7958162.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
4ce86f459c92258f887fd8fd884fa55066b3a0cd 08-May-2010 Dan Gohman <gohman@apple.com> SDDbgValues are apparently not being legalized. Fix a symptom of the problem,
and not the real problem itself, by dropping debug info for i128 values.
rdar://7958162.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
5117aa643b38c256ef031f08a17ac25ce52d51b3 08-May-2010 Devang Patel <dpatel@apple.com> Verify variable directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
02f0dbd97a9bc01528aa12c2f260d928683ab411 08-May-2010 Devang Patel <dpatel@apple.com> Verify variable directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
f0675bac94cc87caeb09e14d371b6c7a4fca0811 07-May-2010 Chris Lattner <sabre@nondot.org> add COFF support for COMDAT sections, patch by Nathan Jeffords!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103304 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
6e5ce287b0e53c264af0ba37169ad964e19b5bb7 07-May-2010 Chris Lattner <sabre@nondot.org> add COFF support for COMDAT sections, patch by Nathan Jeffords!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103304 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
9738af915ba0f9ac00beefc4189c1acf962bcaf8 07-May-2010 Devang Patel <dpatel@apple.com> Verify entire type descriptor not just tag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103303 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9c00487dc33b21061a5daf3ef9c2455715683f3f 07-May-2010 Devang Patel <dpatel@apple.com> Verify entire type descriptor not just tag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103303 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6a11bccbdc8ea01d75400341046cc1b8b2f482b1 07-May-2010 Dale Johannesen <dalej@apple.com> Fix PR 7087, and probably other things, by extending
getConstantFP to accept the two supported long double
target types. This was not the original intent, but
there are other places that assume this works and it's
easy enough to do.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103299 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0a406ae0d940d92c51ee145b48ff7a483a366849 07-May-2010 Dale Johannesen <dalej@apple.com> Fix PR 7087, and probably other things, by extending
getConstantFP to accept the two supported long double
target types. This was not the original intent, but
there are other places that assume this works and it's
easy enough to do.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103299 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9c371c62fee60d6fcd700c6f6099d8990c5441dc 07-May-2010 Devang Patel <dpatel@apple.com> Wrap const MDNode * inside DIDescriptor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103295 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
e9f8f5e6004fd49f2aff4dd23db8e9b0e4454fc6 07-May-2010 Devang Patel <dpatel@apple.com> Wrap const MDNode * inside DIDescriptor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103295 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
19302aa91af26253b5a9d5e39ec5745b0e0cdf66 07-May-2010 Devang Patel <dpatel@apple.com> Avoid DIDescriptor::getNode(). Use overloaded operators instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103272 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
2db49d797b86b7f3615bae17b2b016727778a6c4 07-May-2010 Devang Patel <dpatel@apple.com> Avoid DIDescriptor::getNode(). Use overloaded operators instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103272 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
82868058499ce8d37685c5fc02137d88609a8b34 07-May-2010 Chris Lattner <sabre@nondot.org> switch MCSectionCOFF from a syntactic to semantic representation,
patch by Peter Housel!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103267 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
eb40a0fd98c44ecc6360e7fab33cf9e9911bed4f 07-May-2010 Chris Lattner <sabre@nondot.org> switch MCSectionCOFF from a syntactic to semantic representation,
patch by Peter Housel!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103267 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
9eb9de5c77aaafc88c3aba563e5e27043747a8b9 07-May-2010 Nick Lewycky <nicholas@mxc.ca> Revert r103133 and add testcase from PR7066.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103233 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
403d312c0ffefdd0f54eed5e5ddcf163533f9103 07-May-2010 Nick Lewycky <nicholas@mxc.ca> Revert r103133 and add testcase from PR7066.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103233 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
ebdca48b2c83e021d050f2f42c5c50942cf76f36 07-May-2010 Dan Gohman <gohman@apple.com> Transfer debug location information from PHI nodes to resulting
lowered copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
fb95f89e8ebd0b71408472e2544e2b8d6d4738e5 07-May-2010 Dan Gohman <gohman@apple.com> Transfer debug location information from PHI nodes to resulting
lowered copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
abaa71f04b1208b9290cd346768be89f1fe806db 07-May-2010 Dan Gohman <gohman@apple.com> Print debug information for SDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103227 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
cc751bb99ca868467bb9676af351bbdc29873fff 07-May-2010 Dan Gohman <gohman@apple.com> Print debug information for SDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103227 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
77c565e27c142ea036195463767a90d80f7c4d9b 07-May-2010 Dan Gohman <gohman@apple.com> Disable the new unknown-location code for now. It causes a major
increase in the debug line info section, and it's causing
regressions in a gdb testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103226 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
281d65d004df3ecf84aeb8be68cd0ce0215d5f19 07-May-2010 Dan Gohman <gohman@apple.com> Disable the new unknown-location code for now. It causes a major
increase in the debug line info section, and it's causing
regressions in a gdb testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103226 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
75a44ec07c056f9bcf17368b6643810ecfbe1264 06-May-2010 Dan Gohman <gohman@apple.com> Add a DebugLoc argument to TargetInstrInfo::copyRegToReg, so that it
doesn't have to guess.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103194 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
achineRegisterInfo.cpp
HIElimination.cpp
cheduleDAGEmit.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
piller.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
34dcc6fadca0a1117cdbd0e9b35c991a55b6e556 06-May-2010 Dan Gohman <gohman@apple.com> Add a DebugLoc argument to TargetInstrInfo::copyRegToReg, so that it
doesn't have to guess.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103194 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
achineRegisterInfo.cpp
HIElimination.cpp
cheduleDAGEmit.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
piller.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
1f8534d080a425fa232552decf8012a4d6a95419 06-May-2010 Evan Cheng <evan.cheng@apple.com> Add argument TargetRegisterInfo to loadRegFromStackSlot and storeRegToStackSlot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103193 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
rologEpilogInserter.cpp
egAllocFast.cpp
egAllocLocal.cpp
egisterScavenging.cpp
piller.cpp
irtRegRewriter.cpp
746ad69e088176819981b4b2c5ac8dcd49f5e60e 06-May-2010 Evan Cheng <evan.cheng@apple.com> Add argument TargetRegisterInfo to loadRegFromStackSlot and storeRegToStackSlot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103193 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
rologEpilogInserter.cpp
egAllocFast.cpp
egAllocLocal.cpp
egisterScavenging.cpp
piller.cpp
irtRegRewriter.cpp
88d379aef900646a062c0e0716faf4057bc86b9b 06-May-2010 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103185 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
e9b3ac27dda22a6939246323935111070cf24280 06-May-2010 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103185 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
3343fba25cd891c05016ac4cb58277ba365952e5 06-May-2010 Evan Cheng <evan.cheng@apple.com> Fixes a coalescer bug that caused llc to crash on 2009-11-30-LiveVariablesBug.ll
with the fix in 103157.

%reg1039:1<def> = VMOVS %S1<kill>, pred:14, pred:%reg0
is not coalescable since none of the super-registers of S1 are in reg1039's
register class: DPR_VFP2. But it is still a legal copy instruction so it should
not assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103170 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
62bb2f63f92fa00e0a89e4dabef030a5b441905c 06-May-2010 Evan Cheng <evan.cheng@apple.com> Fixes a coalescer bug that caused llc to crash on 2009-11-30-LiveVariablesBug.ll
with the fix in 103157.

%reg1039:1<def> = VMOVS %S1<kill>, pred:14, pred:%reg0
is not coalescable since none of the super-registers of S1 are in reg1039's
register class: DPR_VFP2. But it is still a legal copy instruction so it should
not assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103170 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f79f0f79cfe8d4f689fbd3c91cf3dd25d8f84c8c 06-May-2010 Dan Gohman <gohman@apple.com> Update LabelsBeforeInsn also, when creating unknown-position labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103145 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
75395847817b88798f9d8cdfb7bc99388167d291 06-May-2010 Dan Gohman <gohman@apple.com> Update LabelsBeforeInsn also, when creating unknown-position labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103145 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d095d3410fd7b5f586abcf00b4d990735edef4b7 06-May-2010 Chris Lattner <sabre@nondot.org> Fix PR7054 - Assertion `Symbol->isUndefined() && "Cannot define a symbol twice!"' failed.

Users can write broken code that emits the same label twice with asm renaming,
detect this and emit a fatal backend error instead of aborting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103140 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b4202dbb36e9799c96890fc3aa0040c1aedb33c8 06-May-2010 Chris Lattner <sabre@nondot.org> Fix PR7054 - Assertion `Symbol->isUndefined() && "Cannot define a symbol twice!"' failed.

Users can write broken code that emits the same label twice with asm renaming,
detect this and emit a fatal backend error instead of aborting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103140 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
42b46125a8fc0feeac2177f0886cdad2247b45b6 06-May-2010 Dan Gohman <gohman@apple.com> In bottom-up mode, defer the materialization of local constant values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103139 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
97c94b8fc630b55e17a37481910810639e28d086 06-May-2010 Dan Gohman <gohman@apple.com> In bottom-up mode, defer the materialization of local constant values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103139 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
33dcdb7421cfa95ab8b8c19636d4c6d9cb96d5e6 06-May-2010 Dan Gohman <gohman@apple.com> Add an "IsBottomUp" member function to FastISel, which will be used to
support a new bottom-up mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103138 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a7a0ed79012ea36f838239cf1d04959711aec2a9 06-May-2010 Dan Gohman <gohman@apple.com> Add an "IsBottomUp" member function to FastISel, which will be used to
support a new bottom-up mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103138 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5d0dda591ca511756f2fbe2b9987f786d230863e 06-May-2010 Dan Gohman <gohman@apple.com> Emit debug info for MachineInstrs with unknown debug locations, instead
of just letting them inherit the debug locations of adjacent instructions.

Debug info should aim to be either accurate or absent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103135 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1cc0d628552a43568ec7c143698025ab18f2e072 06-May-2010 Dan Gohman <gohman@apple.com> Emit debug info for MachineInstrs with unknown debug locations, instead
of just letting them inherit the debug locations of adjacent instructions.

Debug info should aim to be either accurate or absent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103135 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9c90aa7f66008eba300cdec4cb2cf631b5de8f57 06-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR6520. An earlyclobber physreg must not be allocated to anything else.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103133 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
51bfd452d5d748abc5e65b71b8f7213a13e10569 06-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR6520. An earlyclobber physreg must not be allocated to anything else.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103133 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
f094cf7243b30e010d6867228499a93c1286be9c 06-May-2010 Devang Patel <dpatel@apple.com> Use getValue() for PHINodes when direct NodeMap access does not work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103126 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
d47f3c803f4e1e7f84e8fdcd3c9a5120ae5d37ad 06-May-2010 Devang Patel <dpatel@apple.com> Use getValue() for PHINodes when direct NodeMap access does not work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103126 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7317f5c2b561c43fe805433835a6bda575cfed0f 05-May-2010 Evan Cheng <evan.cheng@apple.com> Move REG_SEQUENCE removal to 2addr pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103109 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
woAddressInstructionPass.cpp
3d720fbc6ad40bc9287a420f824d244965d24631 05-May-2010 Evan Cheng <evan.cheng@apple.com> Move REG_SEQUENCE removal to 2addr pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103109 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
woAddressInstructionPass.cpp
449c026d222070919b95fc424d37e03eebeb2ac1 05-May-2010 Evan Cheng <evan.cheng@apple.com> Teach liveintervalanalysis about virtual registers which are defined by reg_sequence instructions that are formed by registers defined by distinct instructions. e.g.
80 %reg1041:6<def> = VSHRNv4i16 %reg1034<kill>, 12, pred:14, pred:%reg0
. . .
120 %reg1041:5<def> = VSHRNv4i16 %reg1039<kill>, 12, pred:14, pred:%reg0


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103102 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3749943648772743c9c0e852553e50e6700a0c1b 05-May-2010 Evan Cheng <evan.cheng@apple.com> Teach liveintervalanalysis about virtual registers which are defined by reg_sequence instructions that are formed by registers defined by distinct instructions. e.g.
80 %reg1041:6<def> = VSHRNv4i16 %reg1034<kill>, 12, pred:14, pred:%reg0
. . .
120 %reg1041:5<def> = VSHRNv4i16 %reg1039<kill>, 12, pred:14, pred:%reg0


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103102 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cae2b64b64944f9e64c8ec0ef7d7fc15d1bdb47e 05-May-2010 Bob Wilson <bob.wilson@apple.com> Combine the implementations of the core part of the SSAUpdater and
MachineSSAUpdater to avoid duplicating all the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103060 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
4aad88d1fd88413029dd05255306b07cb19396ee 05-May-2010 Bob Wilson <bob.wilson@apple.com> Combine the implementations of the core part of the SSAUpdater and
MachineSSAUpdater to avoid duplicating all the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103060 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
63a335136a7aeeb9fed9d2577b115bb13b751adc 04-May-2010 Evan Cheng <evan.cheng@apple.com> Teach PHI elimination to remove REG_SEQUENCE instructions and update references of the source operands with references of the destination with subreg indices. e.g.
%reg1029<def>, %reg1030<def> = VLD1q16 %reg1024<kill>, ...
%reg1031<def> = REG_SEQUENCE %reg1029<kill>, 5, %reg1030<kill>, 6
=>
%reg1031:5<def>, %reg1031:6<def> = VLD1q16 %reg1024<kill>, ...

PHI elimination now does more than phi elimination. It is really a de-SSA pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103039 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
HIElimination.cpp
HIElimination.h
afff40a62da19be15295c0f8ed5d4d450ccb45a5 04-May-2010 Evan Cheng <evan.cheng@apple.com> Teach PHI elimination to remove REG_SEQUENCE instructions and update references of the source operands with references of the destination with subreg indices. e.g.
%reg1029<def>, %reg1030<def> = VLD1q16 %reg1024<kill>, ...
%reg1031<def> = REG_SEQUENCE %reg1029<kill>, 5, %reg1030<kill>, 6
=>
%reg1031:5<def>, %reg1031:6<def> = VLD1q16 %reg1024<kill>, ...

PHI elimination now does more than phi elimination. It is really a de-SSA pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103039 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
HIElimination.cpp
HIElimination.h
ee17651a02e38910e5dc7fbe1b615f923dbaae43 04-May-2010 Evan Cheng <evan.cheng@apple.com> Rename variables for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103013 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
28428cd6f31c1ea3cf4cea03e64189a4c32b84a3 04-May-2010 Evan Cheng <evan.cheng@apple.com> Rename variables for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103013 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
ab4b3ce2fbaa457d86d1d7f5d95d2fb3d4152ad5 04-May-2010 Devang Patel <dpatel@apple.com> Set DW_AT_APPLE_omit_frame_ptr in endFunction() where MachineFunction is available all the time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103001 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9c488376efc195e3ee3061d0c3e25e56ff25c7bf 04-May-2010 Devang Patel <dpatel@apple.com> Set DW_AT_APPLE_omit_frame_ptr in endFunction() where MachineFunction is available all the time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103001 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
927ac56aa25df500c7dfed7f5f5527d621db7928 04-May-2010 Evan Cheng <evan.cheng@apple.com> Instruction selection optimizations may have moved the def of a function argument out of the entry block. rdar://7937489


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102993 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f1ced259b5617e9c15fcafd47e090c22e2702062 04-May-2010 Evan Cheng <evan.cheng@apple.com> Instruction selection optimizations may have moved the def of a function argument out of the entry block. rdar://7937489


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102993 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ab5a32f5c8568bb0ee2841fbe381315fbe0c6d9e 04-May-2010 Evan Cheng <evan.cheng@apple.com> Teach scheduler about REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102984 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
ba609c88a5a0eb717772c89bda89157c85fdf95e 04-May-2010 Evan Cheng <evan.cheng@apple.com> Teach scheduler about REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102984 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
44f221f6395fef3d62e8eee66e592bb0077c5467 04-May-2010 Dan Gohman <gohman@apple.com> Re-enable isel kill flags, now that the local allocator is ignoring them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102981 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
2131e2a75fc562e4dbaeb6954eac35147c71104f 04-May-2010 Dan Gohman <gohman@apple.com> Re-enable isel kill flags, now that the local allocator is ignoring them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102981 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
9551919e6c3146ff0bce6843ff2c382558d7ea01 04-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove preexisting kill flags in RegAllocLocal, just like LiveVariables does.

This should make it possible to start producing kill flags in isel without
breaking stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102976 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
a50fba933c25593dc6374bad9298e8b688c9c934 04-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove preexisting kill flags in RegAllocLocal, just like LiveVariables does.

This should make it possible to start producing kill flags in isel without
breaking stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102976 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
080b7d4073d554d405f9fd81d5a5bee529f755e6 04-May-2010 Dan Gohman <gohman@apple.com> Factor out FastISel's code for materializing constants and other values
in registers into a separate function to de-couple it from the
top-down-specific logic in getRegForValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102975 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
1fdc614bee2a324fcc210d1e46d9b6fca3ca324b 04-May-2010 Dan Gohman <gohman@apple.com> Factor out FastISel's code for materializing constants and other values
in registers into a separate function to de-couple it from the
top-down-specific logic in getRegForValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102975 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
ffe8498449f1d062772ce7290e3069a9f3d7e675 04-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Check that subregisters don't have independent values in RemoveCopyByCommutingDef().

This fixes PR6941.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102970 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b98c549d135c8f38b2fc1b086cc46f0b243ce862 04-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Check that subregisters don't have independent values in RemoveCopyByCommutingDef().

This fixes PR6941.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102970 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c2f3b2883bebe9024a26255df4760fcb8f7a846b 04-May-2010 Eric Christopher <echristo@apple.com> Reword a comment slightly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102966 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
b4c14aaa50b58ac723d0ed179695e1cd7296572a 04-May-2010 Eric Christopher <echristo@apple.com> Reword a comment slightly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102966 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
50b82b963d266c0701b7329d9558aba883aae008 03-May-2010 Bob Wilson <bob.wilson@apple.com> Print basic block numbers in live interval debug output. Since the rest of the
debug output is showing machine instructions, the IR-level basic block names
aren't very meaningful, and because multiple machine basic blocks may be
derived from one IR-level BB, they're also not unique.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102960 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ad98f795d0dba3db721139a8a74a98acdce0ff60 03-May-2010 Bob Wilson <bob.wilson@apple.com> Print basic block numbers in live interval debug output. Since the rest of the
debug output is showing machine instructions, the IR-level basic block names
aren't very meaningful, and because multiple machine basic blocks may be
derived from one IR-level BB, they're also not unique.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102960 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
bc24148368b0a27cd164357b9867fbff6058fae0 03-May-2010 Dan Gohman <gohman@apple.com> Fix a bug which prevented tail merging of return instructions in
beneficial cases. See the changes in test/CodeGen/X86/tail-opts.ll and
test/CodeGen/ARM/ifcvt2.ll for details.

The fix is to change HashEndOfMBB to hash at most one instruction,
instead of trying to apply heuristics about when it will be profitable to
consider more than one instruction. The regular tail-merging heuristics
are already prepared to handle the same cases, and they're more precise.

Also, make test/CodeGen/ARM/ifcvt5.ll and
test/CodeGen/Thumb2/thumb2-branch.ll slightly more complex so that they
continue to test what they're intended to test.

And, this eliminates the problem in
test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll, the testcase from
PR5204. Update it accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102907 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
30fc5bbfd1047c666bfd653fefb74ffdc6e966f5 03-May-2010 Dan Gohman <gohman@apple.com> Fix a bug which prevented tail merging of return instructions in
beneficial cases. See the changes in test/CodeGen/X86/tail-opts.ll and
test/CodeGen/ARM/ifcvt2.ll for details.

The fix is to change HashEndOfMBB to hash at most one instruction,
instead of trying to apply heuristics about when it will be profitable to
consider more than one instruction. The regular tail-merging heuristics
are already prepared to handle the same cases, and they're more precise.

Also, make test/CodeGen/ARM/ifcvt5.ll and
test/CodeGen/Thumb2/thumb2-branch.ll slightly more complex so that they
continue to test what they're intended to test.

And, this eliminates the problem in
test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll, the testcase from
PR5204. Update it accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102907 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
1ffdb1f5cb10080ecbcdbeb414ef27a62e53b0f8 01-May-2010 Dale Johannesen <dalej@apple.com> Don't count debug info as instructions. This was
preventing the emission of the NOP on Darwin for a
function with no actual code. From timberwolfmc
with TEST=optllcdbg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102843 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d014761c9337f270f497aa960d51ee424bb166d5 01-May-2010 Dale Johannesen <dalej@apple.com> Don't count debug info as instructions. This was
preventing the emission of the NOP on Darwin for a
function with no actual code. From timberwolfmc
with TEST=optllcdbg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102843 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c9c3d9938b7533786ed9a1736a86453d9241ce68 01-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Insert ANY_EXTEND node instead of invalid truncate during DAG Combining (X & 1),
when needed. This fixes PR7001

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102838 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
17458a786e4d3eeff9c66fc0ec284b763df53642 01-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Insert ANY_EXTEND node instead of invalid truncate during DAG Combining (X & 1),
when needed. This fixes PR7001

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102838 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
62343d11e8e829a1907b3f0179176f46c5d0249e 01-May-2010 Dan Gohman <gohman@apple.com> Remove the code for special-casing byval for fast-isel. SelectionDAG
handles argument lowering anyway, so there's no need for special
casing here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102828 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGISel.cpp
d725f04ff81db0e61baa153bf21ca2dd08838244 01-May-2010 Dan Gohman <gohman@apple.com> Remove the code for special-casing byval for fast-isel. SelectionDAG
handles argument lowering anyway, so there's no need for special
casing here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102828 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGISel.cpp
e7fc4ec5183e0c471c65359502f8755692a7a31c 01-May-2010 Dan Gohman <gohman@apple.com> Re-disable kill flags, as there is more trouble.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102826 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
0b7afeb4408dc20476b125f66af1829d6741795e 01-May-2010 Dan Gohman <gohman@apple.com> Re-disable kill flags, as there is more trouble.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102826 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
a6ef48a1ddd2dc4c1440eaab619df2539892ddcc 01-May-2010 Dan Gohman <gohman@apple.com> Re-enable kill flags from SelectionDAGISel, with a fix: don't
try to put a kill flag on a DBG_INFO instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102820 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
3a401bcd04e3a04eea9e91649e1a820ff7cc60c1 01-May-2010 Dan Gohman <gohman@apple.com> Re-enable kill flags from SelectionDAGISel, with a fix: don't
try to put a kill flag on a DBG_INFO instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102820 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
d65a0859aac6ec84155cdd63ef883e21762430f6 01-May-2010 Dale Johannesen <dalej@apple.com> Fix a bug where debug info affected stack slot coloring.
Seen in SingleSrc/Benchmarks/Misc/flops with TEST=optllcdbg.
7929951.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102819 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
e576f51e664821c69985d5db7e0fb109dd1cd137 01-May-2010 Dale Johannesen <dalej@apple.com> Fix a bug where debug info affected stack slot coloring.
Seen in SingleSrc/Benchmarks/Misc/flops with TEST=optllcdbg.
7929951.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102819 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
1cee581edc39c1c21f28ef723046e7ee53cd9549 01-May-2010 Dan Gohman <gohman@apple.com> Fix whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102817 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1b79a2ff547a5ead0eef933bb02f51b3a2f4cc1c 01-May-2010 Dan Gohman <gohman@apple.com> Fix whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102817 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
764bd4bf9503227ad36c3f423965fd5c7476cc38 01-May-2010 Dan Gohman <gohman@apple.com> Don't pass SDValues by non-const reference unless they may be
modified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102816 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
5d11ea39f7f78169efdc4a62fd924e8f0661ca55 01-May-2010 Dan Gohman <gohman@apple.com> Don't pass SDValues by non-const reference unless they may be
modified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102816 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
f09400f3bb920cf6f79dc030f42e8d103e14b5c6 01-May-2010 Dan Gohman <gohman@apple.com> Reorgnaize more switch code lowering to clean up some tricky
code, and to eliminate the need for the SelectionDAGBuilder
state to be live during CodeGenAndEmitDAG calls.

Call SDB->clear() before CodeGenAndEmitDAG calls instead of
before it, and move the CurDAG->clear() out of SelectionDAGBuilder,
which doesn't own the DAG, and into CodeGenAndEmitDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102814 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
95140a4cc168bb75a54a434e3e53f9060742dc41 01-May-2010 Dan Gohman <gohman@apple.com> Reorgnaize more switch code lowering to clean up some tricky
code, and to eliminate the need for the SelectionDAGBuilder
state to be live during CodeGenAndEmitDAG calls.

Call SDB->clear() before CodeGenAndEmitDAG calls instead of
before it, and move the CurDAG->clear() out of SelectionDAGBuilder,
which doesn't own the DAG, and into CodeGenAndEmitDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102814 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
f66cc81ee47a15d453cd5deba4620cbba1b87608 01-May-2010 Dan Gohman <gohman@apple.com> Delete the EdgeMapping variable itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102810 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
1b40319eba671399539c53b91b36d667f86662d3 01-May-2010 Dan Gohman <gohman@apple.com> Delete the EdgeMapping variable itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102810 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
e9198cc2d055953ec847dbcaf55f92dd32b434cc 01-May-2010 Dan Gohman <gohman@apple.com> Get rid of the EdgeMapping map. Instead, just check for BasicBlock
changes before doing phi lowering for switches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102809 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAGISel.cpp
af1d8ca44a18f304f207e209b3bdb94b590f86ff 01-May-2010 Dan Gohman <gohman@apple.com> Get rid of the EdgeMapping map. Instead, just check for BasicBlock
changes before doing phi lowering for switches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102809 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAGISel.cpp
80b03f1f6ae6743a15190ef38f34be0bd1e59656 01-May-2010 Bill Wendling <isanbard@gmail.com> EXTRACT_VECTOR_ELT of an INSERT_VECTOR_ELT may have the same index, but the
indexes could be of a different value type. Or not even using the same SDNode
for the constant (weird, I know). Compare the actual values instead of the
pointers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102791 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d71bb562758c417e91ab05424cea93264b35c67a 01-May-2010 Bill Wendling <isanbard@gmail.com> EXTRACT_VECTOR_ELT of an INSERT_VECTOR_ELT may have the same index, but the
indexes could be of a different value type. Or not even using the same SDNode
for the constant (weird, I know). Compare the actual values instead of the
pointers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102791 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9909dc57f84619aff2e1813b2b85a9b75d03a796 30-Apr-2010 Dan Gohman <gohman@apple.com> Remove this debug output. The MachineFunction will be printed once all of
instruction selection is done; it's confusing to see parts of it printed,
while other parts are omitted, along the way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102771 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e7fd7c688689a0f51caf350af47c87fb6a915b92 30-Apr-2010 Dan Gohman <gohman@apple.com> Remove this debug output. The MachineFunction will be printed once all of
instruction selection is done; it's confusing to see parts of it printed,
while other parts are omitted, along the way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102771 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2d6824fb98bd262ef04a8db7a254b9d6052b3eef 30-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> The local register allocator has to spill dirty callee saved registers before a
call that might throw. The landing pad assumes that all registers are in stack
slots.

We used to spill those dirty CSRs after the call, and the stack slots would be
wrong when arriving at the landing pad.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102770 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
8387d7db193c2ab1961593487d77cefb550a82c7 30-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> The local register allocator has to spill dirty callee saved registers before a
call that might throw. The landing pad assumes that all registers are in stack
slots.

We used to spill those dirty CSRs after the call, and the stack slots would be
wrong when arriving at the landing pad.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102770 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
9e3b7aef13b3933667e956d041d5f38ec2db69c0 30-Apr-2010 Devang Patel <dpatel@apple.com> Attach AT_APPLE_optimized attribute to optimized function's debug info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102743 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ccff812777470d294b7d7407783ccb6111ca0d10 30-Apr-2010 Devang Patel <dpatel@apple.com> Attach AT_APPLE_optimized attribute to optimized function's debug info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102743 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6d5decf16e5536e693dd2cce564491e94750112c 30-Apr-2010 Dan Gohman <gohman@apple.com> EmitDbgValue doesn't need its EdgeMapping argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/ScheduleDAGSDNodes.cpp
891ff8fbd61a06ef8ea57461fa377ebbb663ed09 30-Apr-2010 Dan Gohman <gohman@apple.com> EmitDbgValue doesn't need its EdgeMapping argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/ScheduleDAGSDNodes.cpp
3864974bf35e15ae8f248ebe134fd2d2727c9a62 30-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't use floating point in SimpleRegisterCoalescing.

Rounding differences causes tests to fail on Linux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102729 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
132dace4aa34fb108cdd294ae4f8db36a35e01c4 30-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't use floating point in SimpleRegisterCoalescing.

Rounding differences causes tests to fail on Linux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102729 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c76659ee1f2f8a09c597af8067726792d6b09f0c 30-Apr-2010 Dan Gohman <gohman@apple.com> Apply a patch from Jan Sjodin to fix a compiler abort on vector
comparisons sign-extended to a different bitwidth than the
comparison operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102721 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3ce89f47de03e056e7cb52b0fff24834ef409a57 30-Apr-2010 Dan Gohman <gohman@apple.com> Apply a patch from Jan Sjodin to fix a compiler abort on vector
comparisons sign-extended to a different bitwidth than the
comparison operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102721 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9dcf5529eb20919cd6179f227dcc7a3ef77f75df 30-Apr-2010 Dan Gohman <gohman@apple.com> Temporarily disable SelectionDAG kill flags, which are causing trouble.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102680 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
71cee76d26bdbb50d86a206717fe5b4265b396e7 30-Apr-2010 Dan Gohman <gohman@apple.com> Temporarily disable SelectionDAG kill flags, which are causing trouble.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102680 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
df29c910ec09b2a5f34f0c1c1685772aa3e62a7a 30-Apr-2010 Dan Gohman <gohman@apple.com> Set register kill flags on the SelectionDAG path, at least in the
easy cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102678 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
47bd03b2779bc500fb0472518d0e278f080ee79a 30-Apr-2010 Dan Gohman <gohman@apple.com> Set register kill flags on the SelectionDAG path, at least in the
easy cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102678 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
5c78d8186925a0d79083ccad45fac7d95e28d039 30-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Reject really weird coalescer case when trying to merge identical subregisters
of different register classes. e.g.

%reg1048:3<def> = EXTRACT_SUBREG %RAX<kill>, 3

Where %reg1048 is a GR32 register. This is not impossible to handle, but it is
pretty hard and very rare.

This should unbreak the dragonegg builder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102672 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f07fc974d330fa355ba60f23828657f54f97e5aa 30-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Reject really weird coalescer case when trying to merge identical subregisters
of different register classes. e.g.

%reg1048:3<def> = EXTRACT_SUBREG %RAX<kill>, 3

Where %reg1048 is a GR32 register. This is not impossible to handle, but it is
pretty hard and very rare.

This should unbreak the dragonegg builder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102672 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f0a214e1ac4dfd9f5dfda963eaa7e62b64af1f90 30-Apr-2010 Dan Gohman <gohman@apple.com> Fix typos in assertion strings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102666 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
a555ac9d157a999eaa0c8eed58e13849abfa3a53 30-Apr-2010 Dan Gohman <gohman@apple.com> Fix typos in assertion strings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102666 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b3f0c5280304144411ffe536b8006fc9896f5da6 30-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Slightly verboser debug spew from coalescer

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102663 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
02104df05f97fd7f4d477376bdfa2f1b7a327a15 30-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Slightly verboser debug spew from coalescer

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102663 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
5e9ee00e44758b4f587d8d48f0983161761d8924 29-Apr-2010 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102661 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
719f6a9d9cf29d7daa33cfe43a9e7fe671b24df1 29-Apr-2010 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102661 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6914a05c88c501c6f3c1548fcc13c22f0d3cfa22 29-Apr-2010 Dale Johannesen <dalej@apple.com> Make naked functions work on PPC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102657 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
8c5358c93675b009ba2d57c3a5980f6bc58ba536 29-Apr-2010 Dale Johannesen <dalej@apple.com> Make naked functions work on PPC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102657 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
77defb51f91553f5180feef4ae25da44e8d34491 29-Apr-2010 Devang Patel <dpatel@apple.com> Print variable scope name in DEBUG_VALUE comment. Useful in some cases. e.g.
##DEBUG_VALUE: runOnMachineFunction:this <- RDI+0
##DEBUG_VALUE: runOnMachineFunction:fn <- RSI+0
##DEBUG_VALUE: DeadDefs <- undef ## SimpleRegisterCoalescing.cpp:2706
##DEBUG_VALUE: getRegInfo:this <- [%rsp+$56]+$0
##DEBUG_VALUE: getTarget:this <- [%rsp+$56]+$0



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102655 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
67a444ca362b6f2dc64016494eb1165d46aef0bf 29-Apr-2010 Devang Patel <dpatel@apple.com> Print variable scope name in DEBUG_VALUE comment. Useful in some cases. e.g.
##DEBUG_VALUE: runOnMachineFunction:this <- RDI+0
##DEBUG_VALUE: runOnMachineFunction:fn <- RSI+0
##DEBUG_VALUE: DeadDefs <- undef ## SimpleRegisterCoalescing.cpp:2706
##DEBUG_VALUE: getRegInfo:this <- [%rsp+$56]+$0
##DEBUG_VALUE: getTarget:this <- [%rsp+$56]+$0



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102655 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c59b9cac46b3d42f3a6c32553a3dc24411d5d3ad 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Remove DBG_VALUE which reference dead stack slots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102654 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
bd6cb4ba1f743f840da844b44aa0ec92e56777ee 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Remove DBG_VALUE which reference dead stack slots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102654 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
49175c18166113a88864caa333920cf068b2d2fa 29-Apr-2010 Devang Patel <dpatel@apple.com> DO not push DBG_VALUE machine instructions for inlined fuction arguments in entry block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102653 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a83ce98d5f5860809ce339968656a383098221f6 29-Apr-2010 Devang Patel <dpatel@apple.com> DO not push DBG_VALUE machine instructions for inlined fuction arguments in entry block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102653 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a59a85f8dd03d52907019f1a4caaf7653b01b7d3 29-Apr-2010 Shih-wei Liao <sliao@google.com> For disassembler

Change-Id: I14e64ec4640cbeb57ac87473775e8ba8a7320b3f
smPrinter/Android.mk
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
0e82acdb5538286d0e48c7e6b92e0db7325045a9 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102606 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.h
8fed76115e8052a8835f0ad217ad68482f83a7c9 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102606 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.h
5722df6ab13f7a3ed55218996115975ceb0666aa 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Re-enable 102565 with fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102602 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
a36acad67ddade353a79a6b1a7b43bfaa01e86e1 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Re-enable 102565 with fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102602 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
7cd90ba5960619304d4d1df199d2415ba079dd9d 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Temporarily disable my changes to unbreak the build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102590 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
16e4ace95196c2b34246746b7481a8de3d715c19 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Temporarily disable my changes to unbreak the build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102590 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
dc3bde49acd47f1111c72cda8e977b12b020e0af 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Do not generate duplicate dbg_value instructions for function arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102585 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
9e8a2b93465bc8abd9b318faebb256b1c168baa9 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Do not generate duplicate dbg_value instructions for function arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102585 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
e351086c0b0694ee262c158678d9247a7294bfe6 29-Apr-2010 Dan Gohman <gohman@apple.com> Fix missing #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.h
c924556dd5fd3a3912d5e9ce201ee571bdefdd1a 29-Apr-2010 Dan Gohman <gohman@apple.com> Fix missing #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.h
e9b5ce10f07770d06aac415704e284bcbfdf70c3 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Avoid emitting a dbg_value machineinstr that's not going to be inserted into entry block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102581 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
ee1d91a8301f91318e1aeed55c35ba5f6ca0b913 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Avoid emitting a dbg_value machineinstr that's not going to be inserted into entry block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102581 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
4fc6bce87e792f4b90a25157a9852405b657a350 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Check Reg against zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102573 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
1deef27b0ad538e5017675cf1e085002973bbbb2 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Check Reg against zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102573 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
5a18c02adf710ec282a3b8d4eebc30ac85df53ca 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> - Really preserve dbg_value instructions when the register is spilled.
- Also, update dbg_value is the value is being re-matted from a frame slot, e.g. fixed slots for arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102565 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6691a8935c9f2e049ff5eed45ba2894f60108909 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> - Really preserve dbg_value instructions when the register is spilled.
- Also, update dbg_value is the value is being re-matted from a frame slot, e.g. fixed slots for arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102565 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
69f539f9f277e192b8799d64e7458911cf0198c8 29-Apr-2010 Devang Patel <dpatel@apple.com> tidy up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f38c6c89f1137f54adb76bb375b15ff0ec3a925a 29-Apr-2010 Devang Patel <dpatel@apple.com> tidy up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
5c8110883afbf3b4ec5031dc5bfe0f5627f2ca0e 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Replace r102368 with code that's less fragile. This creates DBG_VALUE instructions for function arguments early and insert them after instruction selection is done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102554 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
2ad0fcf794924f618a7240741cc14a39be99d0f2 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Replace r102368 with code that's less fragile. This creates DBG_VALUE instructions for function arguments early and insert them after instruction selection is done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102554 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
6a6ebc272604460d6f290fd727627a7b3cb6825f 28-Apr-2010 Evan Cheng <evan.cheng@apple.com> Pretty print DBG_VALUE machine instructions.
Before:
DBG_VALUE %RSI, 0, !-1; dbg:SimpleRegisterCoalescing.cpp:2707
Now:
DBG_VALUE %RSI, 0, !"this"; dbg:SimpleRegisterCoalescing.cpp:2707


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102518 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
59b3655564bb6717b296ca9e71f13bf7db45b590 28-Apr-2010 Evan Cheng <evan.cheng@apple.com> Pretty print DBG_VALUE machine instructions.
Before:
DBG_VALUE %RSI, 0, !-1; dbg:SimpleRegisterCoalescing.cpp:2707
Now:
DBG_VALUE %RSI, 0, !"this"; dbg:SimpleRegisterCoalescing.cpp:2707


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102518 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
7516e9ec8193626b3bc987ea7eec3ec2e89e0f9e 28-Apr-2010 Chris Lattner <sabre@nondot.org> Rework global alignment computation again. Now we do round up
alignment of globals to the preferred alignment, but only when
there is no section specified on the global (by far the common
case).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102515 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e87f7bb50e1d08a09e29252806f6502dcff0539d 28-Apr-2010 Chris Lattner <sabre@nondot.org> Rework global alignment computation again. Now we do round up
alignment of globals to the preferred alignment, but only when
there is no section specified on the global (by far the common
case).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102515 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
01f2b921d6a01d992b863516ed7c8976665f3707 28-Apr-2010 Devang Patel <dpatel@apple.com> While lowering dbg_declare, emit DBG_VALUE machine instruction if alloca matching llvm.dbg.declare intrinsic is missing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102513 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
54fc4d6a48b32772b1a114a43e20de521257899b 28-Apr-2010 Devang Patel <dpatel@apple.com> While lowering dbg_declare, emit DBG_VALUE machine instruction if alloca matching llvm.dbg.declare intrinsic is missing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102513 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
caaeddd7eee9c73ec3abe9bb03f097e98a8b78b3 28-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Recompute kill flags from live intervals after coalescing instead of trying to
update them. Computing kill flags is notoriously difficult, and the coalescer
would get it wrong sometimes, and it would completely skip physical registers.

Now we simply remove kill flags based on the live intervals after coalescing.
This is a few percent slower, but now we get correct kill flags for physical
registers after coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102510 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
0fd109963aa86021d5b78ccddd62d80ccafdb010 28-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Recompute kill flags from live intervals after coalescing instead of trying to
update them. Computing kill flags is notoriously difficult, and the coalescer
would get it wrong sometimes, and it would completely skip physical registers.

Now we simply remove kill flags based on the live intervals after coalescing.
This is a few percent slower, but now we get correct kill flags for physical
registers after coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102510 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
7abe37e4aee38cc79d91dd069a37d7e91d5bef53 28-Apr-2010 Shih-wei Liao <sliao@google.com> Sync upstream to r102410.
Re-turn on sdk.

Change-Id: I91a890863989a67243b4d2dfd1ae09b843ebaeaf
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
nalysis.cpp
ndroid.mk
ntiDepBreaker.h
smPrinter/Android.mk
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterDwarf.cpp
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/CMakeLists.txt
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfLabel.cpp
smPrinter/DwarfLabel.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/DwarfWriter.cpp
smPrinter/OcamlGCPrinter.cpp
ranchFolding.cpp
MakeLists.txt
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
warfEHPrepare.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
xactHazardRecognizer.cpp
xactHazardRecognizer.h
CMetadata.cpp
CMetadataPrinter.cpp
CStrategy.cpp
ntrinsicLowering.cpp
LVMTargetMachine.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineCSE.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
achineFunctionPass.cpp
achineFunctionPrinterPass.cpp
achineInstr.cpp
achineLICM.cpp
achineModuleInfo.cpp
achineModuleInfoImpls.cpp
achineRegisterInfo.cpp
achineSSAUpdater.cpp
achineSink.cpp
achineVerifier.cpp
ptimizeExts.cpp
HIElimination.cpp
ostRASchedulerList.cpp
reAllocSplitting.cpp
rologEpilogInserter.cpp
rologEpilogInserter.h
egAllocFast.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egisterScavenging.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/CMakeLists.txt
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SDDbgValue.h
electionDAG/SDNodeDbgValue.h
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
electionDAG/TargetSelectionDAGInfo.cpp
hadowStackGC.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
piller.cpp
ailDuplication.cpp
argetInstrInfoImpl.cpp
argetLoweringObjectFileImpl.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegRewriter.cpp
irtRegRewriter.h
7d1357abe48d8ec4c34dc887c106b9169287cdb3 28-Apr-2010 Evan Cheng <evan.cheng@apple.com> Try operation promotion only if regular dag combine and target-specific ones failed to do anything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102492 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b3a3d5e858d6613d24a23056bf8b4ce80dcaec41 28-Apr-2010 Evan Cheng <evan.cheng@apple.com> Try operation promotion only if regular dag combine and target-specific ones failed to do anything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102492 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7c3efb1a081fdfffdadb7905416577b3a183a6d0 28-Apr-2010 Devang Patel <dpatel@apple.com> Emit debug info for byval parameters.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102486 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
28ff35d030e2f49ff4e4b1544c015ebe011a530b 28-Apr-2010 Devang Patel <dpatel@apple.com> Emit debug info for byval parameters.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102486 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
027b93645e161c2c511ea19f2c3c417870eeade5 28-Apr-2010 Chris Lattner <sabre@nondot.org> further simplify EmitAlignment by eliminating the
ForcedAlignBits argument, tweaking the single client of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102484 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a7b611c10d0e5fef5870d854518e639ce3d3c6be 28-Apr-2010 Chris Lattner <sabre@nondot.org> further simplify EmitAlignment by eliminating the
ForcedAlignBits argument, tweaking the single client of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102484 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9e7e33eb013fcec81386063f12a329c1724df680 28-Apr-2010 Chris Lattner <sabre@nondot.org> remove a dead argument to EmitAlignment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102483 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
755824756ccdc8f7b1c6f85efffdffb526461cc4 28-Apr-2010 Chris Lattner <sabre@nondot.org> remove a dead argument to EmitAlignment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102483 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7101e23fe14d55b7b9059fbe3a9e9f9525492c87 28-Apr-2010 Chris Lattner <sabre@nondot.org> remove some default arguments to EmitAlignment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102482 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
059ea138a6e4180de0d70390f7147dac66614517 28-Apr-2010 Chris Lattner <sabre@nondot.org> remove some default arguments to EmitAlignment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102482 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
7e62539fafefac54ad61e8fbf4eef36ed97f8de3 28-Apr-2010 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102481 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
a43098d388131dd0757aa72fd0e7db3587293906 28-Apr-2010 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102481 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
becba8133e604550965ecff83231f526bdbce87e 28-Apr-2010 Devang Patel <dpatel@apple.com> Use isReg(), isImm() and isFPImm().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102470 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
97303ee27d3985363987ccdd04a8147713462308 28-Apr-2010 Devang Patel <dpatel@apple.com> Use isReg(), isImm() and isFPImm().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102470 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
480c5d74958e87a8d343a121a623bd40a4650df1 27-Apr-2010 Devang Patel <dpatel@apple.com> Check operand type first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102468 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
dcde3db38eaf6f32f96e5f5373b8b29013d272b3 27-Apr-2010 Devang Patel <dpatel@apple.com> Check operand type first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102468 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7f78e21c44fcdfbe2f95fd3882f9b5a9b938b137 27-Apr-2010 Devang Patel <dpatel@apple.com> Ignore DBG_VALUE instructions that points to undef values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102463 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/SelectionDAGBuilder.cpp
0f9d95254291418a548d1341db540b5d5c11e8f4 27-Apr-2010 Devang Patel <dpatel@apple.com> Ignore DBG_VALUE instructions that points to undef values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102463 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/SelectionDAGBuilder.cpp
3a2a7d379409ccf8f5cefeb23c5c4feaf59652fd 27-Apr-2010 Evan Cheng <evan.cheng@apple.com> - When legal, promote a load to zextload rather than ext load.
- Catch more further dag combine opportunities as result of operand promotion, e.g. (i32 anyext (i16 trunc (i32 x))) -> (i32 x)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102455 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ac7eae5b89d82603c4cf315458380c6a401a8fb2 27-Apr-2010 Evan Cheng <evan.cheng@apple.com> - When legal, promote a load to zextload rather than ext load.
- Catch more further dag combine opportunities as result of operand promotion, e.g. (i32 anyext (i16 trunc (i32 x))) -> (i32 x)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102455 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ce7bf01bc7777be166bc3cac7f7c5015410f83ee 27-Apr-2010 Devang Patel <dpatel@apple.com> Identify when a lexical scope is split in to multiple instruction ranges. Emit such ranges using DW_AT_ranges.
This patch fixes bug (PR6894) introduced by previous version of this patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102454 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
eac9c07fde0620a3b19cc923c0e80397530b26b0 27-Apr-2010 Devang Patel <dpatel@apple.com> Identify when a lexical scope is split in to multiple instruction ranges. Emit such ranges using DW_AT_ranges.
This patch fixes bug (PR6894) introduced by previous version of this patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102454 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
53a0cbf8e9c52c144b25de5a0d81b5b237c4abbc 27-Apr-2010 Evan Cheng <evan.cheng@apple.com> Do not count kill, implicit_def instructions as printed instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102453 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ed33b13a10258fe1589bf6a76d6d65ec33823076 27-Apr-2010 Evan Cheng <evan.cheng@apple.com> Do not count kill, implicit_def instructions as printed instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102453 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0631a92272bef91243ddfe9cc5fa0ca41360c98f 27-Apr-2010 Chris Lattner <sabre@nondot.org> round zero-byte .zerofill directives up to 1 byte. This
should fix some "g++.dg-struct-layout-1" failures,
rdar://7886017


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102421 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4c4d0c0cc582a61d9e7f58594c71540aaa56b280 27-Apr-2010 Chris Lattner <sabre@nondot.org> round zero-byte .zerofill directives up to 1 byte. This
should fix some "g++.dg-struct-layout-1" failures,
rdar://7886017


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102421 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
13a9c28ea720bba420231537abbd3e4574d8fb2b 27-Apr-2010 Dale Johannesen <dalej@apple.com> Revert a small part of 102372; this fixes at least one
of the dbg testsuite regressions. I don't think this is
really the right fix; this change exposed an existing problem
upstream somewhere.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102410 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
fc0b860bcc886844cf80d31ef717e665dbbae0bd 27-Apr-2010 Dale Johannesen <dalej@apple.com> Revert a small part of 102372; this fixes at least one
of the dbg testsuite regressions. I don't think this is
really the right fix; this change exposed an existing problem
upstream somewhere.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102410 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
451ff1faa2ad731b04aea2b988f364eb1fad4dcf 27-Apr-2010 Chris Lattner <sabre@nondot.org> add a comment in verbose-asm mode indicating why a noop is being generated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102401 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d61647d306bc297603c607411b2777b217cd65b6 27-Apr-2010 Chris Lattner <sabre@nondot.org> add a comment in verbose-asm mode indicating why a noop is being generated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102401 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a408333857f9fc404c69a4954590c348caef9e0d 27-Apr-2010 Chris Lattner <sabre@nondot.org> on darwin empty functions need to codegen into something of non-zero length,
otherwise labels get incorrectly merged. We handled this by emitting a
".byte 0", but this isn't correct on thumb/arm targets where the text segment
needs to be a multiple of 2/4 bytes. Handle this by emitting a noop. This
is more gross than it should be because arm/ppc are not fully mc'ized yet.

This fixes rdar://7908505



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102400 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ee9eb411fffddbb8fe70418c05946a131889b487 27-Apr-2010 Chris Lattner <sabre@nondot.org> on darwin empty functions need to codegen into something of non-zero length,
otherwise labels get incorrectly merged. We handled this by emitting a
".byte 0", but this isn't correct on thumb/arm targets where the text segment
needs to be a multiple of 2/4 bytes. Handle this by emitting a noop. This
is more gross than it should be because arm/ppc are not fully mc'ized yet.

This fixes rdar://7908505



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102400 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1f5a127b1d0c26ed15d6d6301a5a6c3cc1d3c333 27-Apr-2010 Bob Wilson <bob.wilson@apple.com> Avoid adding a null MD node operand, which crashes with "-debug" when trying
to print the operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102395 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
cc7354e9936595fd2654e1690310fcdc5ef10971 27-Apr-2010 Bob Wilson <bob.wilson@apple.com> Avoid adding a null MD node operand, which crashes with "-debug" when trying
to print the operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102395 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
325691a9830284f14c9832e888e4d1979e05dd7f 27-Apr-2010 Devang Patel <dpatel@apple.com> Use DW_AT_entry_pc instead of DW_AT_low_pc/DW_AT_high_pc pair. This simplifies debug range entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102394 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5098da0a7e3fb841f71bf5be9211b36fa95f140f 27-Apr-2010 Devang Patel <dpatel@apple.com> Use DW_AT_entry_pc instead of DW_AT_low_pc/DW_AT_high_pc pair. This simplifies debug range entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102394 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
30af6cb62139f95ec241fcea89523fe504b0d312 26-Apr-2010 Dale Johannesen <dalej@apple.com> Remove crufty comments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
925965e6ba8013fcc25be2df0117d63319b4bce7 26-Apr-2010 Dale Johannesen <dalej@apple.com> Remove crufty comments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f600a3dc179e28b00a08506e27f860bd8e824a32 26-Apr-2010 Dale Johannesen <dalej@apple.com> Add DBG_VALUE handling for byval parameters; this
produces a comment on targets that support it, but
the Dwarf writer is not hooked up yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
fdb42fa5fe794cc2c89e2ed7f57a89ed24d9952a 26-Apr-2010 Dale Johannesen <dalej@apple.com> Add DBG_VALUE handling for byval parameters; this
produces a comment on targets that support it, but
the Dwarf writer is not hooked up yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
f734f3770ccecf3696a51bef51941cee318e8986 26-Apr-2010 Evan Cheng <evan.cheng@apple.com> Insert dbg_value instructions for function entry block liveins (i.e. function arguments).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102368 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
f48023b3cf80f3a360cfef94b1e0d0084fd5d760 26-Apr-2010 Evan Cheng <evan.cheng@apple.com> Insert dbg_value instructions for function entry block liveins (i.e. function arguments).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102368 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
5e94a08f3ca2123d63bd7c72561702f1f188b5de 26-Apr-2010 Chris Lattner <sabre@nondot.org> fix PR6921 a different way. Intead of increasing the
alignment of globals with a specified alignment, we fix
common variables to obey their alignment. Add a comment
explaining why this behavior is important.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102365 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
567dd1f5d0ae454e7c51ef070bbb8d31a43ed4bc 26-Apr-2010 Chris Lattner <sabre@nondot.org> fix PR6921 a different way. Intead of increasing the
alignment of globals with a specified alignment, we fix
common variables to obey their alignment. Add a comment
explaining why this behavior is important.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102365 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1073cd074bb3e2c9871f6c255a52282f9445f642 26-Apr-2010 Evan Cheng <evan.cheng@apple.com> Re-enable 102323 with fix: do not update dbg_value's with incorrect frame indices when the live interval are being re-materialized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102361 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6fa7636e614cbf0a19d374e169791a774281e8d3 26-Apr-2010 Evan Cheng <evan.cheng@apple.com> Re-enable 102323 with fix: do not update dbg_value's with incorrect frame indices when the live interval are being re-materialized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102361 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3d6eda151c0ae80c195ef6e89f53579be748d4a7 26-Apr-2010 Chris Lattner <sabre@nondot.org> Revert r102300/102301, which serious broke objc apps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102359 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f74e25f60c8c63b819ff603cb4c3c18424dc87a7 26-Apr-2010 Chris Lattner <sabre@nondot.org> Revert r102300/102301, which serious broke objc apps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102359 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7ec1b701399922fe00266e9f375e64fdb101b1a9 26-Apr-2010 Bob Wilson <bob.wilson@apple.com> Update MachineSSAUpdater with the same changes I made for the IR-level
SSAUpdater. I'm going to try to refactor this to share most of the code
between them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102353 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
211678a0d761942578970fc78a72c56d69ed36db 26-Apr-2010 Bob Wilson <bob.wilson@apple.com> Update MachineSSAUpdater with the same changes I made for the IR-level
SSAUpdater. I'm going to try to refactor this to share most of the code
between them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102353 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
bb8107aa09b1f7b43ea073afead7f10e9ac88934 26-Apr-2010 Evan Cheng <evan.cheng@apple.com> Temporary disable spiller modifying dbg_value. It's breaking build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102327 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6cd4b342617f9729101c987739507e8e2527bf0f 26-Apr-2010 Evan Cheng <evan.cheng@apple.com> Temporary disable spiller modifying dbg_value. It's breaking build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102327 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
17b0c672b8e2eec92c19b81fa192a5d74ebfdfe0 26-Apr-2010 Evan Cheng <evan.cheng@apple.com> - Move TargetLowering::EmitTargetCodeForFrameDebugValue to TargetInstrInfo and rename it to emitFrameIndexDebugValue.
- Teach spiller to modify DBG_VALUE instructions to reference spill slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102323 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/ScheduleDAGSDNodes.cpp
962021bc7f6721c20c7dfe8ca809e2d98b1c554a 26-Apr-2010 Evan Cheng <evan.cheng@apple.com> - Move TargetLowering::EmitTargetCodeForFrameDebugValue to TargetInstrInfo and rename it to emitFrameIndexDebugValue.
- Teach spiller to modify DBG_VALUE instructions to reference spill slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102323 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/ScheduleDAGSDNodes.cpp
96310c0dd995c16e6fd45e7451c6ec8f88a99a74 25-Apr-2010 Dale Johannesen <dalej@apple.com> Stop abusing EmitInstrWithCustomInserter for target-dependent
form of DEBUG_VALUE, as it doesn't have reasonable default
behavior for unsupported targets. Add a new hook instead.
No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
f822e733aff93b34e6cd85b2f92d86e71fe67f87 25-Apr-2010 Dale Johannesen <dalej@apple.com> Stop abusing EmitInstrWithCustomInserter for target-dependent
form of DEBUG_VALUE, as it doesn't have reasonable default
behavior for unsupported targets. Add a new hook instead.
No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
f9265f21edaba93f944a49f3100907ef8c46ad9e 25-Apr-2010 Dale Johannesen <dalej@apple.com> Add comment re byval args. Doesn't actually work this way yet.
xs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102316 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
7dc7840850eb4a61da80c846be85308734a47bf5 25-Apr-2010 Dale Johannesen <dalej@apple.com> Add comment re byval args. Doesn't actually work this way yet.
xs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102316 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
43af388111189a0d7bc44272988fb4d08d295f65 25-Apr-2010 Chris Lattner <sabre@nondot.org> Fix PR6921: globals were not getting correctly rounded up to their
preferred alignment unless they were common or some other special
case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102300 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
044698b39a5360f6132cdbecf484f78ae76cb6e1 25-Apr-2010 Chris Lattner <sabre@nondot.org> Fix PR6921: globals were not getting correctly rounded up to their
preferred alignment unless they were common or some other special
case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102300 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
97fc8fdf4daba72cf80d38efe2bb2a345e51b9cd 24-Apr-2010 Evan Cheng <evan.cheng@apple.com> When a load operand is promoted to an extload, replace other uses with uses of extload result truncated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102236 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
95c57ea1825fedc10dc2a311b0d97105f6e61148 24-Apr-2010 Evan Cheng <evan.cheng@apple.com> When a load operand is promoted to an extload, replace other uses with uses of extload result truncated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102236 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0b116fb6460ad77f8e9b5719605af6876147ab09 24-Apr-2010 Dan Gohman <gohman@apple.com> Apply a fix for a vector setcc dagcombine from Jan Sjodin. No
testcase yet, as the testcase now fails downstream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a7bcef1bce8c5b97b748e5cc7d6eca19cbbc2bef 24-Apr-2010 Dan Gohman <gohman@apple.com> Apply a fix for a vector setcc dagcombine from Jan Sjodin. No
testcase yet, as the testcase now fails downstream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1cf9cb5058d8c2846f51fb4eed2ec4550ee51bc4 23-Apr-2010 Evan Cheng <evan.cheng@apple.com> Code refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102202 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
caf7740f96cdcd47b7ba7fc660b82e1f664363be 23-Apr-2010 Evan Cheng <evan.cheng@apple.com> Code refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102202 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
26c78408c25a33a232c062aa9cebc4463b6a5245 23-Apr-2010 Dan Gohman <gohman@apple.com> Move FastISel's HandlePHINodesInSuccessorBlocks call down into FastISel
itself too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102176 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
e8c92dd439581bec7e3516cbdbea74e2e60fe7f0 23-Apr-2010 Dan Gohman <gohman@apple.com> Move FastISel's HandlePHINodesInSuccessorBlocks call down into FastISel
itself too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102176 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
30573dd9c9a10e5587f0c17b775e2be1ccdd871a 23-Apr-2010 Dan Gohman <gohman@apple.com> Revert 102135, 102129, 102127, 102106, 102104, 102102, 102012, 102004,
because 102004 causes codegen to emit invalid assembly on at least
x86_64-unknown-gnu-linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102155 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
314bf7cbbf7e27b47faa4e78d321ea16057ae6a0 23-Apr-2010 Dan Gohman <gohman@apple.com> Revert 102135, 102129, 102127, 102106, 102104, 102102, 102012, 102004,
because 102004 causes codegen to emit invalid assembly on at least
x86_64-unknown-gnu-linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102155 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
a53b98584db262b91e0bc44ae2ba51113c68554a 22-Apr-2010 Devang Patel <dpatel@apple.com> Add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102129 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
c04d54527e1d7e8b50cefcde7563bcbc7425e978 22-Apr-2010 Devang Patel <dpatel@apple.com> Add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102129 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
a81e33672bff2d2a45c9b65ac5f6f854aa96b463 22-Apr-2010 Dan Gohman <gohman@apple.com> Sink SelectionDAGBuilder's HandlePHINodesInSuccessorBlocks down
into SelectionDAGBuilder itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102128 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
c105a2b5b7d8969e78bd4b203e980dced8a1c689 22-Apr-2010 Dan Gohman <gohman@apple.com> Sink SelectionDAGBuilder's HandlePHINodesInSuccessorBlocks down
into SelectionDAGBuilder itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102128 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
bbf90b91a1424e74b007b78316ebc3f5d8a2838b 22-Apr-2010 Devang Patel <dpatel@apple.com> Adjust debug range offsets for isWeakForLinker() functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102127 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
18ee3bb0b784d29fdff40301d5691e7e855de547 22-Apr-2010 Devang Patel <dpatel@apple.com> Adjust debug range offsets for isWeakForLinker() functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102127 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c603a5e90a8b769326863a33a7dc1081a2a13a31 22-Apr-2010 Dan Gohman <gohman@apple.com> Move HandlePHINodesInSuccessorBlocks functions out of SelectionDAGISel
and into SelectionDAGBuilder and FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102123 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
f81eca0ab908fdcf98ae0efaa75acccc8ba40dc2 22-Apr-2010 Dan Gohman <gohman@apple.com> Move HandlePHINodesInSuccessorBlocks functions out of SelectionDAGISel
and into SelectionDAGBuilder and FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102123 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
895cf79d141249ede2d7a7fcb42e788fa303fae7 22-Apr-2010 Evan Cheng <evan.cheng@apple.com> - It's not safe to promote rotates (at least not trivially).
- Some code refactoring.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102111 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
07c4e1085d04fa773708d0bd91794d80c426eae6 22-Apr-2010 Evan Cheng <evan.cheng@apple.com> - It's not safe to promote rotates (at least not trivially).
- Some code refactoring.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102111 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b9f9295340d41f66173577be33359b9976636b5a 22-Apr-2010 Dan Gohman <gohman@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102110 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3b172f1c018a093d0dae3105324d782103fcda6d 22-Apr-2010 Dan Gohman <gohman@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102110 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
174620f9f6fdf56a8319ccf801d617304bef08e1 22-Apr-2010 Dan Gohman <gohman@apple.com> Move PHINodesToUpdate out of SelectionDAGBuilder and into
FunctionLoweringInfo, as it isn't SelectionDAG-specific. This isn't
completely natural, as PHI node state is not per-function but rather
per-basic-block, however there's currently no other convenient
per-basic-block state to group it with.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102109 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
620427d5a165d98d33ad6a5be2d01c3e8525c2f6 22-Apr-2010 Dan Gohman <gohman@apple.com> Move PHINodesToUpdate out of SelectionDAGBuilder and into
FunctionLoweringInfo, as it isn't SelectionDAG-specific. This isn't
completely natural, as PHI node state is not per-function but rather
per-basic-block, however there's currently no other convenient
per-basic-block state to group it with.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102109 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
292d04453755e1f57c4d591070d8d6b063becc51 22-Apr-2010 Devang Patel <dpatel@apple.com> Rename InsnAfterLabelMap and InsnBeforeLabelMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102106 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
f1dabde404d2b2d6b4ca136f418f61f3b470039a 22-Apr-2010 Devang Patel <dpatel@apple.com> Rename InsnAfterLabelMap and InsnBeforeLabelMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102106 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1005c8e1ce2cde1625a753fc841e7e866adb66d4 22-Apr-2010 Devang Patel <dpatel@apple.com> Keep track of MCSymbol used to mark beginning of a function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102104 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
3547a88b504a4f322cf3f20e05906e8276ebe6bb 22-Apr-2010 Devang Patel <dpatel@apple.com> Keep track of MCSymbol used to mark beginning of a function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102104 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
297c4312fa33e0474bbe2399f6c27dfda7d2330f 22-Apr-2010 Devang Patel <dpatel@apple.com> At this point Start and End are not null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102102 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
bc655eaee05689860dd2e8d539e721d678a8e6ab 22-Apr-2010 Devang Patel <dpatel@apple.com> At this point Start and End are not null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102102 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
586839019f44df0b0a153d34ecd4f069e53a162e 22-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Run LiveVariables instead of computing liveness locally in -regalloc=fast.

This actually makes everything slower, but the plan is to have isel add <kill>
flags the way it is already adding <dead> flags. Then LiveVariables can be
removed again.

When ignoring the time spent in LiveVariables, -regalloc=fast is now twice as
fast as -regalloc=local.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102034 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
a063e19593800142afaef5389f35605da901b805 22-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Run LiveVariables instead of computing liveness locally in -regalloc=fast.

This actually makes everything slower, but the plan is to have isel add <kill>
flags the way it is already adding <dead> flags. Then LiveVariables can be
removed again.

When ignoring the time spent in LiveVariables, -regalloc=fast is now twice as
fast as -regalloc=local.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102034 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocFast.cpp
ef6da7e4aec7f920a7ed987932929434676e1a02 21-Apr-2010 Evan Cheng <evan.cheng@apple.com> Do not try to optimize a copy that has already been marked for deletion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102027 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
e3dd8550c6c65d02b067ec96ac12a560dabd4452 21-Apr-2010 Evan Cheng <evan.cheng@apple.com> Do not try to optimize a copy that has already been marked for deletion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102027 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
58e58f65efd7058a0863b0ee98db135a615c2371 21-Apr-2010 Devang Patel <dpatel@apple.com> Add command line option to disable debug info printing in .s file. This option does not impact debug info generation and preservation through earlier compile starges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102012 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
708e474c2ff2922786a9ea6562772d2f271dec28 21-Apr-2010 Devang Patel <dpatel@apple.com> Add command line option to disable debug info printing in .s file. This option does not impact debug info generation and preservation through earlier compile starges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102012 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ff2bb6b56699e2f5317064b7dce737e3c866d961 21-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add fast register allocator, enabled with -regalloc=fast.

So far this is just a clone of -regalloc=local that has been lobotomized to run
25% faster. It drops the least-recently-used calculations, and is just plain
stupid when it runs out of registers.

The plan is to make this go even faster for -O0 by taking advantage of the short
live intervals in unoptimized code. It should not be necessary to calculate
liveness when most virtual registers are killed 2-3 instructions after they are
born.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102006 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
egAllocFast.cpp
00207237ddfffe93b275914d086a0c7da1bbf63b 21-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add fast register allocator, enabled with -regalloc=fast.

So far this is just a clone of -regalloc=local that has been lobotomized to run
25% faster. It drops the least-recently-used calculations, and is just plain
stupid when it runs out of registers.

The plan is to make this go even faster for -O0 by taking advantage of the short
live intervals in unoptimized code. It should not be necessary to calculate
liveness when most virtual registers are killed 2-3 instructions after they are
born.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102006 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
egAllocFast.cpp
ec3b2a4950a9a8d2cba9b48e0fb256968797085f 21-Apr-2010 Devang Patel <dpatel@apple.com> Identify when a lexical scope is split in to multiple instruction ranges. Emit such ranges using DW_AT_ranges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102004 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9cdb4109d5fbbff3b881d3288a6ec518abc7712e 21-Apr-2010 Devang Patel <dpatel@apple.com> Identify when a lexical scope is split in to multiple instruction ranges. Emit such ranges using DW_AT_ranges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102004 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8898906b56e8cd9ef4cbe04e36f8e9467bd59692 21-Apr-2010 Evan Cheng <evan.cheng@apple.com> Implement -disable-non-leaf-fp-elim which disable frame pointer elimination
optimization for non-leaf functions. This will be hooked up to gcc's
-momit-leaf-frame-pointer option. rdar://7886181


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101984 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e566763b1915c7a4821ce95937b763724d271fec 21-Apr-2010 Evan Cheng <evan.cheng@apple.com> Implement -disable-non-leaf-fp-elim which disable frame pointer elimination
optimization for non-leaf functions. This will be hooked up to gcc's
-momit-leaf-frame-pointer option. rdar://7886181


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101984 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b9305c0abac4003f96cbc46c2548211f294fd2ff 21-Apr-2010 Dan Gohman <gohman@apple.com> Add more const qualifiers on TargetMachine and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101977 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
f0757b0edc1ef3d1998485d3f74cadaa3f7180a0 21-Apr-2010 Dan Gohman <gohman@apple.com> Add more const qualifiers on TargetMachine and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101977 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
371e43f8f295d5154c67e2ec1a8e3b5b40d10891 21-Apr-2010 Dan Gohman <gohman@apple.com> Update CMakeLists.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101976 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
af5097537c4599096d3f4b98a9fcff07c622d7f2 21-Apr-2010 Dan Gohman <gohman@apple.com> Update CMakeLists.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101976 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
db189c22c8bf5193452582d2a1913b18531ed831 21-Apr-2010 Dan Gohman <gohman@apple.com> Move several SelectionDAG-independent utility functions out of the
SelectionDAG directory and into a new Analysis.cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101975 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
5eb6d65a27fd77a0bf10bd49f5cccb9f1796d98b 21-Apr-2010 Dan Gohman <gohman@apple.com> Move several SelectionDAG-independent utility functions out of the
SelectionDAG directory and into a new Analysis.cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101975 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
f0e104f3e09697030c1ef37b077aa286afe73ef6 21-Apr-2010 Evan Cheng <evan.cheng@apple.com> - Clean up some crappy code which deals with coalescing of copies which look at
extract_subreg / insert_subreg, etc.
- Add support for more aggressive insert_subreg coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101971 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
30fdb5c2ac35b8af818ee62bfd184357f20eca34 21-Apr-2010 Evan Cheng <evan.cheng@apple.com> - Clean up some crappy code which deals with coalescing of copies which look at
extract_subreg / insert_subreg, etc.
- Add support for more aggressive insert_subreg coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101971 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
b1bfff9b2abc4be11ac499f29e79a78e27e9ba25 21-Apr-2010 Evan Cheng <evan.cheng@apple.com> Rewrite machine cse to avoid recursion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101964 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
311569861162c12b78b6c445793d4074aa4e4512 21-Apr-2010 Evan Cheng <evan.cheng@apple.com> Rewrite machine cse to avoid recursion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101964 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
a51d382b60efe52265502a72967ea32d5d1c7492 21-Apr-2010 Dan Gohman <gohman@apple.com> Add another variant of this test which found a place where
CodeGen's ComputeMaskedBits was being over-conservative when computing
bits for an ADD.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bc7588eb6882466fe3cd2e36bfb3d01e4ce23faa 21-Apr-2010 Dan Gohman <gohman@apple.com> Add another variant of this test which found a place where
CodeGen's ComputeMaskedBits was being over-conservative when computing
bits for an ADD.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9413edc0257abc50efe873d949163718a0a3832c 21-Apr-2010 Dale Johannesen <dalej@apple.com> Because of the EMMS problem, right now we have to support
user-defined operations that use MMX register types, but
the compiler shouldn't generate them on its own. This adds
a Synthesizable abstraction to represent this, and changes
the vector widening computation so it won't produce MMX types.
(The motivation is to remove noise from the ABI compatibility
part of the gcc test suite, which has some breakage right now.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101951 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7609017dc3112337c3098e7d04dcd437549f8b14 21-Apr-2010 Dale Johannesen <dalej@apple.com> Because of the EMMS problem, right now we have to support
user-defined operations that use MMX register types, but
the compiler shouldn't generate them on its own. This adds
a Synthesizable abstraction to represent this, and changes
the vector widening computation so it won't produce MMX types.
(The motivation is to remove noise from the ABI compatibility
part of the gcc test suite, which has some breakage right now.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101951 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
354909d99898c56df5f930b1f3352979d66cfea3 20-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When MachineLICM is hoisting a physical register after regalloc, make sure the
register is not killed in the loop.

This fixes 188.ammp on ARM where the post-ra scheduler would grab a register
that looked available but wasn't.

A testcase would be huge and fragile, sorry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101930 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
9196ab640559ca473931b1ad74b90bbed516272f 20-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When MachineLICM is hoisting a physical register after regalloc, make sure the
register is not killed in the loop.

This fixes 188.ammp on ARM where the post-ra scheduler would grab a register
that looked available but wasn't.

A testcase would be huge and fragile, sorry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101930 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
d133dfff23ca39e3ea76cb38ff0675a61b9d7ac0 20-Apr-2010 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101914 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
d6060a4ce94424e0fd7b926d7cb41799b6debe4a 20-Apr-2010 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101914 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
648a9b2b40f51f9064a92db47a6c92f6412fceb5 20-Apr-2010 Dan Gohman <gohman@apple.com> Sink the CopyToExportRegsIfNeeded calls out of SelectionDAGISel
into SelectionDAGBuilder. This avoids a separate pass over the
instructions, and has the side effect of providing debug location
information to the copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101906 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
92884f7ee54186b136a1ade7fa0194097f225c81 20-Apr-2010 Dan Gohman <gohman@apple.com> Sink the CopyToExportRegsIfNeeded calls out of SelectionDAGISel
into SelectionDAGBuilder. This avoids a separate pass over the
instructions, and has the side effect of providing debug location
information to the copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101906 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
a334412b0dbab13c2f8148293a4b9ddcb40044d4 20-Apr-2010 Dan Gohman <gohman@apple.com> Don't send PHI nodes down to SelectionDAGBuilder of FastISel, since
they end up doing nothing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101904 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
ba5be5c07bb19dcf484e3aa40cd139dd07c10407 20-Apr-2010 Dan Gohman <gohman@apple.com> Don't send PHI nodes down to SelectionDAGBuilder of FastISel, since
they end up doing nothing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101904 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
8911d2138ed1bcf9878293606c2f566e1e33f0ee 20-Apr-2010 Dan Gohman <gohman@apple.com> Sink this use_empty() check into isUsedOutsideOfDefiningBlock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101902 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
d84e806dd4b03fa711ae2665ac1acef646f16c5c 20-Apr-2010 Dan Gohman <gohman@apple.com> Sink this use_empty() check into isUsedOutsideOfDefiningBlock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101902 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
dea0ab09fecb6b7c8a105ba528b489d6d7979732 20-Apr-2010 Dan Gohman <gohman@apple.com> If a PHI node somehow has debug info, propogate it to the MachineInstr PHI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101901 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
c025c853522feef9e8350c52b9013e5bf178dec3 20-Apr-2010 Dan Gohman <gohman@apple.com> If a PHI node somehow has debug info, propogate it to the MachineInstr PHI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101901 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
2fad02dcd29f9da8769c945da3cec7abcfa7a17a 20-Apr-2010 Dan Gohman <gohman@apple.com> Don't iterate through the whole block just to find the PHI nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
3f1403f14e45a862ff97c14d80a1daf28518722a 20-Apr-2010 Dan Gohman <gohman@apple.com> Don't iterate through the whole block just to find the PHI nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
bf96362ab8192e400753e35b7e687e3fb70fc1be 20-Apr-2010 Gabor Greif <ggreif@gmail.com> use abstract accessors to CallInst

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101899 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
a9b2313c13a1bc8cbae751da03a9049ecaf0f918 20-Apr-2010 Gabor Greif <ggreif@gmail.com> use abstract accessors to CallInst

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101899 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
e36440acd3987b39076da145b268aac592ca5ccb 20-Apr-2010 Chris Lattner <sabre@nondot.org> Bill's change in r95336 broke empty aggregates embedded
in other types. fix this by only bumping zero-byte globals
up to a single byte if the *entire global* is zero size,
fixing PR6340.

This also fixes empty arrays etc to be handled correctly,
and only does this on subsection-via-symbols targets (aka
darwin) which is the only place where this matters.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101879 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
44e05080f828e80e262fc00cc1fa48a8a37b7f3e 20-Apr-2010 Chris Lattner <sabre@nondot.org> Bill's change in r95336 broke empty aggregates embedded
in other types. fix this by only bumping zero-byte globals
up to a single byte if the *entire global* is zero size,
fixing PR6340.

This also fixes empty arrays etc to be handled correctly,
and only does this on subsection-via-symbols targets (aka
darwin) which is the only place where this matters.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101879 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3799fdc10724d4bcbd88b186e49dcb695ace4adf 20-Apr-2010 Dan Gohman <gohman@apple.com> Delete a redundant return statement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101860 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
8b1dbebc1e783fde62d01608d5f3a436c5a1a737 20-Apr-2010 Dan Gohman <gohman@apple.com> Delete a redundant return statement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101860 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
dfbd6e1d86989c35dccac586c556fbb0404b8963 20-Apr-2010 Bill Wendling <isanbard@gmail.com> The visitXOR method can return the same SDNode. If so, we don't want to delete
it as it's not dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101855 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
86c5abb4c0edfffdd24729e142a62b9b949f025d 20-Apr-2010 Bill Wendling <isanbard@gmail.com> The visitXOR method can return the same SDNode. If so, we don't want to delete
it as it's not dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101855 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
752cd58fa3bd2180cbc5d741ec8a95367bfe43be 20-Apr-2010 Dan Gohman <gohman@apple.com> Remove this debug output; it isn't that useful, and it's incomplete
in the case where a basic block is split.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101850 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a9056dbec17fe2d83d61b934ccb3f8088eca5d08 20-Apr-2010 Dan Gohman <gohman@apple.com> Remove this debug output; it isn't that useful, and it's incomplete
in the case where a basic block is split.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101850 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
550184afe7e057c65a8d498c81b629cca7def656 20-Apr-2010 Dan Gohman <gohman@apple.com> Sink DebugLoc handling out of SelectionDAGISel into FastISel and
SelectionDAGBuilder, where it doesn't have to be as complicated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101848 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
8ba3aa7f9c5048c31172788f98ad2b90ffad565a 20-Apr-2010 Dan Gohman <gohman@apple.com> Sink DebugLoc handling out of SelectionDAGISel into FastISel and
SelectionDAGBuilder, where it doesn't have to be as complicated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101848 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
d0e9b6728ee42919652fd1fe450f2c73ebe0ea79 20-Apr-2010 Dan Gohman <gohman@apple.com> Remove MachineFunction's DefaultDebugLoc member, and make DwarfDebug.cpp
responsible for figuring out what that's supposed to be on its own.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101844 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/SelectionDAGISel.cpp
084751cd16c3b8017b5a237bd2575b65a6543f79 20-Apr-2010 Dan Gohman <gohman@apple.com> Remove MachineFunction's DefaultDebugLoc member, and make DwarfDebug.cpp
responsible for figuring out what that's supposed to be on its own.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101844 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/SelectionDAGISel.cpp
0f8f498760c8743fcc0a7a6165558a0a8b11b698 20-Apr-2010 Dan Gohman <gohman@apple.com> Reapply the removal of SelectionDAGISel's BB, with a fix for the case
where multiple blocks are emitted; functions which do this need to return
the new BB so that their callers can stay current.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a9a3321938aac13477bdc53af0018bce88b45d78 20-Apr-2010 Dan Gohman <gohman@apple.com> Reapply the removal of SelectionDAGISel's BB, with a fix for the case
where multiple blocks are emitted; functions which do this need to return
the new BB so that their callers can stay current.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4991063c792ad7bfa20d3660ff76678da4fdde20 20-Apr-2010 Dan Gohman <gohman@apple.com> Revert 101825, which is causing trouble.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101832 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
68b7960c1a09b047dbac8eab185d2ca0dd7a2134 20-Apr-2010 Dan Gohman <gohman@apple.com> Revert 101825, which is causing trouble.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101832 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fa0ccf5802433e433f39167caf3d1e1732d388c3 20-Apr-2010 Dan Gohman <gohman@apple.com> Make BreakAntiDependencies' SUnits argument const, and make the Begin
and End arguments by-value rather than by-reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101830 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
66db3a0f10e96ae190c8a46a1a8d5242928d068c 20-Apr-2010 Dan Gohman <gohman@apple.com> Make BreakAntiDependencies' SUnits argument const, and make the Begin
and End arguments by-value rather than by-reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101830 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
4d7bf110597da67d71ae81903d7a262dddda0faf 20-Apr-2010 Dan Gohman <gohman@apple.com> Eliminate SelectionDAGISel's "current block" member. Just pass it as
an argument to things that need it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101825 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
35bb85b7ee108a265a20686e97d1b011f4ab5ce9 20-Apr-2010 Dan Gohman <gohman@apple.com> Eliminate SelectionDAGISel's "current block" member. Just pass it as
an argument to things that need it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101825 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
49e2c678a41530c1a2af5d78b9c3bf2d8e436b8f 20-Apr-2010 Dan Gohman <gohman@apple.com> Eliminate the CurMBB member from SelectionDAGBuilder. For places that
need it, just pass around the parent block of the current instruction
explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101822 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
99be8ae3898d87373ef0c8f1159b287e28a8d81b 20-Apr-2010 Dan Gohman <gohman@apple.com> Eliminate the CurMBB member from SelectionDAGBuilder. For places that
need it, just pass around the parent block of the current instruction
explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101822 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
1f79d43e4bf4e29624c784835968099ecd439296 19-Apr-2010 Evan Cheng <evan.cheng@apple.com> More progress on promoting i16 operations to i32 for x86. Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101808 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4c26e93e895bfd72a66076de22a216316115f531 19-Apr-2010 Evan Cheng <evan.cheng@apple.com> More progress on promoting i16 operations to i32 for x86. Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101808 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
96e471458768f250d37913a720ebb74f4177f218 19-Apr-2010 Dan Gohman <gohman@apple.com> Give SelectionDAG a TargetMachine too, rather than having it
fetch one from the MachineFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
50d2b1ac029d63500ea9b9347561b1454fa6ed6a 19-Apr-2010 Dan Gohman <gohman@apple.com> Give SelectionDAG a TargetMachine too, rather than having it
fetch one from the MachineFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
71c7dc15e8a5dc493183770aa87a4e385ba68408 19-Apr-2010 Evan Cheng <evan.cheng@apple.com> More 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101806 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
285fb1cc4a7ea924b4d94e9c2cb890125d56a7e0 19-Apr-2010 Evan Cheng <evan.cheng@apple.com> More 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101806 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
9147417b152d607a6c4cef89f239044f46e33610 19-Apr-2010 Devang Patel <dpatel@apple.com> Add DW_AT_APPLE_omit_frame_ptr to encode -fomit-frame-pointer flag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101805 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2a4a3b7c6180202d24aff5b1992067907aefcab6 19-Apr-2010 Devang Patel <dpatel@apple.com> Add DW_AT_APPLE_omit_frame_ptr to encode -fomit-frame-pointer flag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101805 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
60257f555b0a59ac0f04198236878cb24f113fdc 19-Apr-2010 Dan Gohman <gohman@apple.com> Code that needs a TargetMachine should have access to one directly, rather
than just getting one through a TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101802 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
LVMTargetMachine.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
55e59c186303ff02c0be7429da3b1b36c347f164 19-Apr-2010 Dan Gohman <gohman@apple.com> Code that needs a TargetMachine should have access to one directly, rather
than just getting one through a TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101802 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
LVMTargetMachine.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
46086310d44e564e5a025bd9a80cdec4eb053d1e 19-Apr-2010 Dan Gohman <gohman@apple.com> Move isInTailCallPosition out of SelectionDAGBuilder, as it isn't
SelectionDAG-specific.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101801 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
46007b3712290c09d895f4bd245ac852f412556c 19-Apr-2010 Dan Gohman <gohman@apple.com> Move isInTailCallPosition out of SelectionDAGBuilder, as it isn't
SelectionDAG-specific.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101801 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
2491664d4979d33da2b90fc471cab2287c863e59 17-Apr-2010 Dan Gohman <gohman@apple.com> Fix -Wcast-qual warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101655 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
3fb150a9024a38872ec4abbc3300e08a8bfc1812 17-Apr-2010 Dan Gohman <gohman@apple.com> Fix -Wcast-qual warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101655 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
443093da0797ffc3b48ef30121243d1a700e63df 17-Apr-2010 Dan Gohman <gohman@apple.com> Add const qualifiers to TargetLoweringObjectFile usage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101640 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0d805c33d134d88169e3dc4a3272cff9a5713ce7 17-Apr-2010 Dan Gohman <gohman@apple.com> Add const qualifiers to TargetLoweringObjectFile usage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101640 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8db6249bf8e3ee5dcea276ec29a24835125e8538 17-Apr-2010 Dan Gohman <gohman@apple.com> Use const_cast instead of a C-style cast to cast away const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101639 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
82d5eaf23e9588e47c18ce63acb6a5d35d67490a 17-Apr-2010 Dan Gohman <gohman@apple.com> Use const_cast instead of a C-style cast to cast away const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101639 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f03f02354f27ab9ec96cb6c4bba753e1edcf768b 17-Apr-2010 Dan Gohman <gohman@apple.com> Start function numbering at 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101638 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionAnalysis.cpp
9f23dee08c7052af2c4baae3e2b06518896742eb 17-Apr-2010 Dan Gohman <gohman@apple.com> Start function numbering at 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101638 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionAnalysis.cpp
32ce037e2a83aa4761ebf33ce5b40548f98032ec 17-Apr-2010 Dan Gohman <gohman@apple.com> Delete now-unnecessary const_casts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101637 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
383b5f6b91914454a9a8a6d829b4eeb714c75113 17-Apr-2010 Dan Gohman <gohman@apple.com> Delete now-unnecessary const_casts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101637 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
dbb121b1f19bf77e0bef8725d5ee42c1b8761caf 17-Apr-2010 Dan Gohman <gohman@apple.com> Use const qualifiers with TargetLowering. This eliminates several
const_casts, and it reinforces the design of the Target classes being
immutable.

SelectionDAGISel::IsLegalToFold is now a static member function, because
PIC16 uses it in an unconventional way. There is more room for API
cleanup here.

And PIC16's AsmPrinter no longer uses TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorOps.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
d858e90f039f5fcdc2fa93035e911a5a9505cc50 17-Apr-2010 Dan Gohman <gohman@apple.com> Use const qualifiers with TargetLowering. This eliminates several
const_casts, and it reinforces the design of the Target classes being
immutable.

SelectionDAGISel::IsLegalToFold is now a static member function, because
PIC16 uses it in an unconventional way. There is more room for API
cleanup here.

And PIC16's AsmPrinter no longer uses TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorOps.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
7e116d468e600c91a625df282bb9ad162915abbc 17-Apr-2010 Evan Cheng <evan.cheng@apple.com> Postra machine licm must add registers defined by loop invariants to *all* of
the live-in sets of BBs in the loop. Otherwise later pass may end up using the
registers and override the invariant. rdar://7852937
No reasonablly sized test case possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101626 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
94d1d9c2190b93feeb01934dbf1f2b828ceb82dc 17-Apr-2010 Evan Cheng <evan.cheng@apple.com> Postra machine licm must add registers defined by loop invariants to *all* of
the live-in sets of BBs in the loop. Otherwise later pass may end up using the
registers and override the invariant. rdar://7852937
No reasonablly sized test case possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101626 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
0173c089ff006c5938c0a3d0a9b1902d2950c092 17-Apr-2010 Evan Cheng <evan.cheng@apple.com> Fix codegen passes. -disable-ssc shouldn't disable postra machine licm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101622 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
f2b910922d80b254a06a62e350b1b6ae15f390b5 17-Apr-2010 Evan Cheng <evan.cheng@apple.com> Fix codegen passes. -disable-ssc shouldn't disable postra machine licm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101622 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
3cbcbbb034222376591cff2913ba8d4d67f3d48e 17-Apr-2010 Evan Cheng <evan.cheng@apple.com> More work to allow dag combiner to promote 16-bit ops to 32-bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101621 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
e5b51ac7708402473f0a558f4aac74fab63d4f7e 17-Apr-2010 Evan Cheng <evan.cheng@apple.com> More work to allow dag combiner to promote 16-bit ops to 32-bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101621 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
3cbdec6dedc906ff84cedfa4fe96e11b9a786c0b 17-Apr-2010 Evan Cheng <evan.cheng@apple.com> Another 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
4ff28527bb8e5ed4ae4b65f0fa6967eb79a05d4c 17-Apr-2010 Evan Cheng <evan.cheng@apple.com> Another 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
f4a83a31319b6f4b1849f33668ae09407a469dc5 17-Apr-2010 Bob Wilson <bob.wilson@apple.com> As a temporary workaround for post-RA not handling DebugValue instructions,
just remove them all. Radar 7873207 (working around the root problem of
Radar 7759363).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101604 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
8295d4c96c8530acb7ae0098d813b53dc4fe0a89 17-Apr-2010 Bob Wilson <bob.wilson@apple.com> As a temporary workaround for post-RA not handling DebugValue instructions,
just remove them all. Radar 7873207 (working around the root problem of
Radar 7759363).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101604 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
451f8eccb47a6ecc5a5fa188b9d0e937e245b5e1 17-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Use a simpler data structure to calculate the least recently used register in RegAllocLocal."

This reverts commit 101392. It broke a buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101595 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
23eaf26fa3510526b11230c76ea39221277dd2ea 17-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Use a simpler data structure to calculate the least recently used register in RegAllocLocal."

This reverts commit 101392. It broke a buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101595 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
fbf918ba42cda25ba57d28eecd0aee89a83a1ecc 17-Apr-2010 Eric Christopher <echristo@apple.com> Revert 101465, it broke internal OpenGL testing.

Probably the best way to know that all getOperand() calls have been handled
is to replace that API instead of updating.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101579 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
CStrategy.cpp
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
551754c4958086cc6910da7c950f2875e212f5cf 17-Apr-2010 Eric Christopher <echristo@apple.com> Revert 101465, it broke internal OpenGL testing.

Probably the best way to know that all getOperand() calls have been handled
is to replace that API instead of updating.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101579 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
CStrategy.cpp
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
146c6f7e026d4c91ed4fb030660f5af245ee03c6 17-Apr-2010 Devang Patel <dpatel@apple.com> Add support to emit dwarf ranges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101575 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
f2548caaa8b290aa598bf49c27dff72f7751ba5c 17-Apr-2010 Devang Patel <dpatel@apple.com> Add support to emit dwarf ranges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101575 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
2de80f5ba1a0c9fbee00823791430ee80c46a13a 17-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a simpler data structure to calculate the least recently used register in RegAllocLocal.

This makes the local register allocator about 20% faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101574 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
cf7fbd41be73c2738ee07fded656d23f798976df 17-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a simpler data structure to calculate the least recently used register in RegAllocLocal.

This makes the local register allocator about 20% faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101574 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
a475cffeb463990d6e0c7eca6460da78428c233c 17-Apr-2010 Evan Cheng <evan.cheng@apple.com> (i32 sext_in_reg (i32 aext (i16 x)), i16) -> (i32 sext x). No known test case until -promote-16bit is enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101551 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
003d7c4b5d639fcb0231604fe21339dd7071f418 17-Apr-2010 Evan Cheng <evan.cheng@apple.com> (i32 sext_in_reg (i32 aext (i16 x)), i16) -> (i32 sext x). No known test case until -promote-16bit is enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101551 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fe8017b12f996ebfdc9ef29dd936e607bd4812db 16-Apr-2010 Dan Gohman <gohman@apple.com> Create a new TargetSelectionDAGInfo class. This will eventually acquire
SelectionDAG-specific parts of TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101537 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
electionDAG/TargetSelectionDAGInfo.cpp
8c0e89925d6b76b7671fe904a97c618d155dea42 16-Apr-2010 Dan Gohman <gohman@apple.com> Create a new TargetSelectionDAGInfo class. This will eventually acquire
SelectionDAG-specific parts of TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101537 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
electionDAG/TargetSelectionDAGInfo.cpp
5002ea3266303651474a1a3034f55e71e79dc869 16-Apr-2010 Dan Gohman <gohman@apple.com> Commit this, which should have accompanied 101531.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101532 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4bcf0a9233e334532d86111829375f73776984ad 16-Apr-2010 Dan Gohman <gohman@apple.com> Commit this, which should have accompanied 101531.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101532 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4b380387d14ecc0ef71c64555d0ab3e7e3bff6b3 16-Apr-2010 Evan Cheng <evan.cheng@apple.com> 80 col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101501 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
53f6ed9560aa4586ba217fbf94acbfada52f561f 16-Apr-2010 Evan Cheng <evan.cheng@apple.com> 80 col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101501 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
8028064fa56a65bd94ba104ee4a173c1256e9800 16-Apr-2010 Evan Cheng <evan.cheng@apple.com> 80 col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101500 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
182465c589f95ff165331d06035ec53ff05bf1f5 16-Apr-2010 Evan Cheng <evan.cheng@apple.com> 80 col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101500 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
0d3e7be65f6ad6ec6c49fb8f99f88d0c0dd82b66 16-Apr-2010 Dan Gohman <gohman@apple.com> Avoid creating virtual registers for unused values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101480 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
33b7a291aa1bd477bc09e3ef5fccb76249502a5e 16-Apr-2010 Dan Gohman <gohman@apple.com> Avoid creating virtual registers for unused values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101480 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
2008c183b287fe50d9252eba6d3eb179d3aa77b3 16-Apr-2010 Dan Gohman <gohman@apple.com> Fix an assertion string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101478 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
ac7d05c4bfbd988a08e9cd8ac817be7b22cd9953 16-Apr-2010 Dan Gohman <gohman@apple.com> Fix an assertion string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101478 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
25a14aa84b7d02b310abf7eb5e34b5bcf079f0b2 16-Apr-2010 Dan Gohman <gohman@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101477 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a44e522b7df67e4a895850b6813e980c3321fb78 16-Apr-2010 Dan Gohman <gohman@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101477 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b86413602e2d1d0d510016044092949168ac4d3f 16-Apr-2010 Gabor Greif <ggreif@gmail.com> reapply r101434
with a fix for self-hosting

rotate CallInst operands, i.e. move callee to the back
of the operand array

the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101465 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
CStrategy.cpp
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
4ec2258ffb495d7ce00177e447740ef1123a27db 16-Apr-2010 Gabor Greif <ggreif@gmail.com> reapply r101434
with a fix for self-hosting

rotate CallInst operands, i.e. move callee to the back
of the operand array

the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101465 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
CStrategy.cpp
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
d3bb92c70ca1917ac73529da0f7091fddde71d8f 16-Apr-2010 Bill Wendling <isanbard@gmail.com> The JIT calls TidyLandingPads to tidy up the landing pads. However, because the
JIT doesn't use the MC back-end asm printer to emit labels that it uses, the
section for the MCSymbol is never set. And thus the MCSymbol for the EH label
isn't marked as "defined". Because of that, TidyLandingPads removes the needed
landing pads from the JIT output. This breaks EH for every JIT program.

This is a work-around for this limitation. We pass in the label locations
map. If the label has a non-zero value, then it was "emitted" by the JIT and
TidyLandingPads shouldn't remove that label.

A nicer solution would be to mark the MCSymbol as "used" by the JIT and not rely
upon the section being set to determine if it's defined or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101453 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
47639fc5be0b8f4873d076a9ed24b9a3c0682b15 16-Apr-2010 Bill Wendling <isanbard@gmail.com> The JIT calls TidyLandingPads to tidy up the landing pads. However, because the
JIT doesn't use the MC back-end asm printer to emit labels that it uses, the
section for the MCSymbol is never set. And thus the MCSymbol for the EH label
isn't marked as "defined". Because of that, TidyLandingPads removes the needed
landing pads from the JIT output. This breaks EH for every JIT program.

This is a work-around for this limitation. We pass in the label locations
map. If the label has a non-zero value, then it was "emitted" by the JIT and
TidyLandingPads shouldn't remove that label.

A nicer solution would be to mark the MCSymbol as "used" by the JIT and not rely
upon the section being set to determine if it's defined or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101453 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
c4f94dae2a4060c4c9d86f0f10a95df9eff3979d 16-Apr-2010 Evan Cheng <evan.cheng@apple.com> Adding support for dag combiner to promote operations for profit. This requires target specific queries. For example, x86 should promote i16 to i32 when it does not impact load folding.
x86 support is off by default. It can be enabled with -promote-16bit.

Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101448 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
64b7bf71e84094193b40ab81aa7dacad921ecbea 16-Apr-2010 Evan Cheng <evan.cheng@apple.com> Adding support for dag combiner to promote operations for profit. This requires target specific queries. For example, x86 should promote i16 to i32 when it does not impact load folding.
x86 support is off by default. It can be enabled with -promote-16bit.

Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101448 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
28efe60cc84a70c449e296b4f47a19bb0a748a51 16-Apr-2010 Dan Gohman <gohman@apple.com> Refine further the scope where the global DebugLoc value is active.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f89d1dc9b77ee006324653f70496d29ac3d3bc6c 16-Apr-2010 Dan Gohman <gohman@apple.com> Refine further the scope where the global DebugLoc value is active.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ab05d8fcf61f7b926cf3e08f111794c69ca60690 16-Apr-2010 Gabor Greif <ggreif@gmail.com> back out r101423 and r101397, they break llvm-gcc self-host on darwin10

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101434 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
CStrategy.cpp
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
607a7ab3da72a2eb53553a520507cbb8068dd1d8 16-Apr-2010 Gabor Greif <ggreif@gmail.com> back out r101423 and r101397, they break llvm-gcc self-host on darwin10

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101434 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
CStrategy.cpp
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
700380b1058c3a8aa8d9d3374c2ba574fb4d3b31 16-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid sinking machine instructions into a loop.

MachineLoopInfo is already available when MachineSinking runs, so the check is
free.

There is no test case because it would require a critical edge into a loop, and
CodeGenPrepare splits those. This check is just to be extra careful.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101420 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
626f3d7a57f4f2a46880331fdacce259195213ef 16-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid sinking machine instructions into a loop.

MachineLoopInfo is already available when MachineSinking runs, so the check is
free.

There is no test case because it would require a critical edge into a loop, and
CodeGenPrepare splits those. This check is just to be extra careful.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101420 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
763153ef8466ad11db0c5bb55647483cc5d69a2a 15-Apr-2010 Gabor Greif <ggreif@gmail.com> reapply r101364, which has been backed out in r101368
with a fix

rotate CallInst operands, i.e. move callee to the back
of the operand array

the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101397 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
CStrategy.cpp
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
2ff961f66816daab8bbc58a19025161d969821c2 15-Apr-2010 Gabor Greif <ggreif@gmail.com> reapply r101364, which has been backed out in r101368
with a fix

rotate CallInst operands, i.e. move callee to the back
of the operand array

the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101397 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
CStrategy.cpp
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
0557b4be5f010f72d5320c702b076bd346a62adc 15-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR6847. RegScavenger should ignore DebugValues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101392 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
5ef9d76f6f1afe5a07a9cffe7ce5780d07a25d9c 15-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR6847. RegScavenger should ignore DebugValues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101392 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
e6a7015ae97dd479c112bb8d55192975a02e3224 15-Apr-2010 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Make sure the initialization of a GC root is after its definition.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101388 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
8538f0496a2dea177f9face5e04294f11927f51b 15-Apr-2010 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Make sure the initialization of a GC root is after its definition.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101388 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
d7ab3f3ef255b54e638fff22ef6c6e448604f369 15-Apr-2010 Gabor Greif <ggreif@gmail.com> prune includes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101385 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
8cf16167a057f817c8947da8c82e904186613200 15-Apr-2010 Gabor Greif <ggreif@gmail.com> prune includes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101385 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
738422fa501a08e58d1d55ebebdf0ca499059d72 15-Apr-2010 Dan Gohman <gohman@apple.com> Fix a bunch of namespace polution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101376 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
achineVerifier.cpp
electionDAG/SelectionDAGISel.cpp
b35798347ea87b8b6d36155b211016a7769f01ab 15-Apr-2010 Dan Gohman <gohman@apple.com> Fix a bunch of namespace polution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101376 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
achineVerifier.cpp
electionDAG/SelectionDAGISel.cpp
49e2f0a6af50aaffef3bfff2386436cda211a55b 15-Apr-2010 Gabor Greif <ggreif@gmail.com> typos

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101371 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
3181c505348bbfb28623b5fbb8bbb166814545e7 15-Apr-2010 Gabor Greif <ggreif@gmail.com> typos

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101371 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
52f155ee5d607b3773c2bc19fa688758f8887e35 15-Apr-2010 Gabor Greif <ggreif@gmail.com> back out r101364, as it trips the linux nightlybot on some clang C++ tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101368 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
CStrategy.cpp
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
9ee17208115482441953127615231c59a2f4d052 15-Apr-2010 Gabor Greif <ggreif@gmail.com> back out r101364, as it trips the linux nightlybot on some clang C++ tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101368 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
CStrategy.cpp
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
d46fdb45387f46beeadc04472b3a66ad1da3aca1 15-Apr-2010 Gabor Greif <ggreif@gmail.com> rotate CallInst operands, i.e. move callee to the back
of the operand array

the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101364 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
CStrategy.cpp
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
165dac08d1bb8428b32a5f39cdd3dbee2888987f 15-Apr-2010 Gabor Greif <ggreif@gmail.com> rotate CallInst operands, i.e. move callee to the back
of the operand array

the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101364 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
CStrategy.cpp
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
f22ee1aa7f6fb51f3123055f81fdc0c21630b5eb 15-Apr-2010 Chris Lattner <sabre@nondot.org> enhance the load/store narrowing optimization to handle a
tokenfactor in between the load/store. This allows us to
optimize test7 into:

_test7: ## @test7
## BB#0: ## %entry
movl (%rdx), %eax
## kill: SIL<def> ESI<kill>
movb %sil, 5(%rdi)
ret

instead of:

_test7: ## @test7
## BB#0: ## %entry
movl 4(%esp), %ecx
movl $-65281, %eax ## imm = 0xFFFFFFFFFFFF00FF
andl 4(%ecx), %eax
movzbl 8(%esp), %edx
shll $8, %edx
addl %eax, %edx
movl 12(%esp), %eax
movl (%eax), %eax
movl %edx, 4(%ecx)
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e6987587d62bb4de0f57e103f677f6bfb43a09f3 15-Apr-2010 Chris Lattner <sabre@nondot.org> enhance the load/store narrowing optimization to handle a
tokenfactor in between the load/store. This allows us to
optimize test7 into:

_test7: ## @test7
## BB#0: ## %entry
movl (%rdx), %eax
## kill: SIL<def> ESI<kill>
movb %sil, 5(%rdi)
ret

instead of:

_test7: ## @test7
## BB#0: ## %entry
movl 4(%esp), %ecx
movl $-65281, %eax ## imm = 0xFFFFFFFFFFFF00FF
andl 4(%ecx), %eax
movzbl 8(%esp), %edx
shll $8, %edx
addl %eax, %edx
movl 12(%esp), %eax
movl (%eax), %eax
movl %edx, 4(%ecx)
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
01f604a270eb7519eae006f3c6491bef6f9f8a8f 15-Apr-2010 Chris Lattner <sabre@nondot.org> teach codegen to turn trunc(zextload) into load when possible.
This doesn't occur much at all, it only seems to formed in the case
when the trunc optimization kicks in due to phase ordering. In that
case it is saves a few bytes on x86-32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6dc868581b20380802e6a011de8dd9766790cf7a 15-Apr-2010 Chris Lattner <sabre@nondot.org> teach codegen to turn trunc(zextload) into load when possible.
This doesn't occur much at all, it only seems to formed in the case
when the trunc optimization kicks in due to phase ordering. In that
case it is saves a few bytes on x86-32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
828c441a908fce30c16921936fcab5a9c063ea69 15-Apr-2010 Chris Lattner <sabre@nondot.org> add a simple dag combine to replace trivial shl+lshr with
and. This happens with the store->load narrowing stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
efcddc33256512a08d7182783e2262da27f27cdd 15-Apr-2010 Chris Lattner <sabre@nondot.org> add a simple dag combine to replace trivial shl+lshr with
and. This happens with the store->load narrowing stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b7920f1c4e1cb2aeb06740780c1f7a23fdb8f505 15-Apr-2010 Chris Lattner <sabre@nondot.org> Implement rdar://7860110 (also in target/readme.txt) narrowing
a load/or/and/store sequence into a narrower store when it is
safe. Daniel tells me that clang will start producing this sort
of thing with bitfields, and this does trigger a few dozen times
on 176.gcc produced by llvm-gcc even now.

This compiles code like CodeGen/X86/2009-05-28-DAGCombineCrash.ll
into:

movl %eax, 36(%rdi)

instead of:

movl $4294967295, %eax ## imm = 0xFFFFFFFF
andq 32(%rdi), %rax
shlq $32, %rcx
addq %rax, %rcx
movq %rcx, 32(%rdi)

and each of the testcases into a single store. Each of them used
to compile into craziness like this:

_test4:
movl $65535, %eax ## imm = 0xFFFF
andl (%rdi), %eax
shll $16, %esi
addl %eax, %esi
movl %esi, (%rdi)
ret




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101343 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2392ae7d7344674dc3d946e324342515f4771b90 15-Apr-2010 Chris Lattner <sabre@nondot.org> Implement rdar://7860110 (also in target/readme.txt) narrowing
a load/or/and/store sequence into a narrower store when it is
safe. Daniel tells me that clang will start producing this sort
of thing with bitfields, and this does trigger a few dozen times
on 176.gcc produced by llvm-gcc even now.

This compiles code like CodeGen/X86/2009-05-28-DAGCombineCrash.ll
into:

movl %eax, 36(%rdi)

instead of:

movl $4294967295, %eax ## imm = 0xFFFFFFFF
andq 32(%rdi), %rax
shlq $32, %rcx
addq %rax, %rcx
movq %rcx, 32(%rdi)

and each of the testcases into a single store. Each of them used
to compile into craziness like this:

_test4:
movl $65535, %eax ## imm = 0xFFFF
andl (%rdi), %eax
shll $16, %esi
addl %eax, %esi
movl %esi, (%rdi)
ret




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101343 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1eb7a9cc529c07b6dba2a2c205ef3a9b055e1b15 15-Apr-2010 Dan Gohman <gohman@apple.com> Add more const qualifiers for LLVM IR pointers in CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101342 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LFWriter.h
achineFunction.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
ae541aad5c36cb3e4256514447d1f81e253079c7 15-Apr-2010 Dan Gohman <gohman@apple.com> Add more const qualifiers for LLVM IR pointers in CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101342 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LFWriter.h
achineFunction.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
36c56d0353f1a9c4e878f509aff85a62e5087dd4 15-Apr-2010 Dan Gohman <gohman@apple.com> Add const qualifiers to CodeGen's use of LLVM IR constructs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101334 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
ntrinsicLowering.cpp
achineFunction.cpp
achineModuleInfo.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SDNodeDbgValue.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
46510a73e977273ec67747eb34cbdb43f815e451 15-Apr-2010 Dan Gohman <gohman@apple.com> Add const qualifiers to CodeGen's use of LLVM IR constructs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101334 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
ntrinsicLowering.cpp
achineFunction.cpp
achineModuleInfo.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SDNodeDbgValue.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
a0d172caced780efbecdb003f5cbb6607078b72b 15-Apr-2010 Evan Cheng <evan.cheng@apple.com> More 80 violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
adf979900c84d00e1fe0872a68d2819c654b6f29 15-Apr-2010 Evan Cheng <evan.cheng@apple.com> More 80 violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
9a9a23034d8b32b9b210222243bf6f17a5eaeea5 15-Apr-2010 Evan Cheng <evan.cheng@apple.com> 80 col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101325 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
22d286b218f3267d57c507678b1af0fccc3a5df0 15-Apr-2010 Evan Cheng <evan.cheng@apple.com> 80 col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101325 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
d4524b516e318111677341299007bd48bd8ac44c 15-Apr-2010 Devang Patel <dpatel@apple.com> Add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101317 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
f8a2e01fc7b1c08f14c08a0562e501f5043ac699 15-Apr-2010 Devang Patel <dpatel@apple.com> Add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101317 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
aed7b39ecc2701ccebff0bf01ee158064d7b6323 15-Apr-2010 Devang Patel <dpatel@apple.com> There is no need to track compile unit offsets if there is only one compile unit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101315 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d33402629e7d2758bf0b04d9c2bde74d5fc57363 15-Apr-2010 Devang Patel <dpatel@apple.com> There is no need to track compile unit offsets if there is only one compile unit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101315 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c446f6e2191a8cf0d494fb875538ac93c22d06db 15-Apr-2010 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101314 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
7a996b2b05c82e7a503bed5e5210f3b43f19325f 15-Apr-2010 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101314 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
c5a13c6844bf9a0e20e019e6b2a3c3ecd669c45a 14-Apr-2010 Dan Gohman <gohman@apple.com> Delete unneeeded arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101276 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6465265ae1b9d2d9ffb6cfcebf4b46ad97914aa7 14-Apr-2010 Dan Gohman <gohman@apple.com> Delete unneeeded arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101276 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
cec4f389ab60e95e328bec6bafab03f2752db9e7 14-Apr-2010 Dan Gohman <gohman@apple.com> Delete unused arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101275 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6a732b5a669c85505a5785ee7ccb72eb9d1a4e6d 14-Apr-2010 Dan Gohman <gohman@apple.com> Delete unused arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101275 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
68cd2d98006541f382b71db28dcf15c2a49c903d 14-Apr-2010 Dan Gohman <gohman@apple.com> Factor out EH landing pad code into a separate function, and constify
a bunch of stuff to support it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGISel.cpp
2520864773dcb73d76d297605f4bc41c0cf3fa39 14-Apr-2010 Dan Gohman <gohman@apple.com> Factor out EH landing pad code into a separate function, and constify
a bunch of stuff to support it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGISel.cpp
d822b79314cdb86991d08a6616ad272a8fb2d156 14-Apr-2010 Dan Gohman <gohman@apple.com> Reset the debug location even if the instruction was a terminator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101272 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7f6b8b8891adedce162ce23f5b540f98af202b22 14-Apr-2010 Dan Gohman <gohman@apple.com> Reset the debug location even if the instruction was a terminator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101272 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
118e5b6b2f70ed0ec6787435bf2afba56cabbbc3 14-Apr-2010 Dan Gohman <gohman@apple.com> Refine #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101269 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.h
11609451a5e9921d02dea5f1b6c6cd362a3cd676 14-Apr-2010 Dan Gohman <gohman@apple.com> Refine #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101269 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.h
dd90d696ea50a7192861ddeb7efc7f46691bd503 14-Apr-2010 Dan Gohman <gohman@apple.com> Pull utility routines with no SelectionDAG dependence out of
SelectionDAGBuilder. FunctionLoweringInfo isn't an ideal place for
them to live, but it's better than SelectionDAGBuilder for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101267 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
fe85e764736f4d87104f3d1508c173f566c8c461 14-Apr-2010 Dan Gohman <gohman@apple.com> Pull utility routines with no SelectionDAG dependence out of
SelectionDAGBuilder. FunctionLoweringInfo isn't an ideal place for
them to live, but it's better than SelectionDAGBuilder for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101267 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuilder.cpp
4e3b4439e2bf6843c945edb45559846c795fb230 14-Apr-2010 Dan Gohman <gohman@apple.com> Fix typos in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101266 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
b02b62a2719bf5cfe12cfc902ab4e85d675450a0 14-Apr-2010 Dan Gohman <gohman@apple.com> Fix typos in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101266 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
40ba3d21580f18bc87f9a784b84b88fc21964b10 14-Apr-2010 Dan Gohman <gohman@apple.com> Delete an obsolete comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101264 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.h
988099700a68eb7814841d036e03d3275fc2c001 14-Apr-2010 Dan Gohman <gohman@apple.com> Delete an obsolete comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101264 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.h
ad3f65b502541717f90991f3bcf10adb3e845c94 14-Apr-2010 Dan Gohman <gohman@apple.com> Delete an unused function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c21a2dc8dfc7edd7722a09b61a0afdd3eaaa8637 14-Apr-2010 Dan Gohman <gohman@apple.com> Delete an unused function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7291f03b52404219400f2972b9c37814dcb9f1ce 14-Apr-2010 Dan Gohman <gohman@apple.com> Clear the FunctionLoweringInfo object before doing other things that
don't need it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101262 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5dc44335b19dde981e4ad69ab7a650269460ed3c 14-Apr-2010 Dan Gohman <gohman@apple.com> Clear the FunctionLoweringInfo object before doing other things that
don't need it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101262 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1be5d1ea7a3eaf309cde36d8531078570a1075eb 14-Apr-2010 Dan Gohman <gohman@apple.com> Move this assert out of SelectionDAGISel into FunctionLoweringInfo, and
drop the redundant #ifndef NDEBUG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101261 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGISel.cpp
0e026729aef35523e4f8d6124a569dceb4286bbb 14-Apr-2010 Dan Gohman <gohman@apple.com> Move this assert out of SelectionDAGISel into FunctionLoweringInfo, and
drop the redundant #ifndef NDEBUG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101261 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGISel.cpp
c21e9ba3b53c716218bcfcceb95159bd7d368761 14-Apr-2010 Dan Gohman <gohman@apple.com> Add a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101260 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
046fe6b6ba9851d3b8fed164493a54db3ac107e6 14-Apr-2010 Dan Gohman <gohman@apple.com> Add a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101260 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
df317fed1e01f90c280562e38c1c7cc9401e9585 14-Apr-2010 Dan Gohman <gohman@apple.com> Move the code for initialing the entry block livein set out of
SelectionDAGISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101258 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
electionDAG/SelectionDAGISel.cpp
b13033f61c897224a0be2784faa721ff294c5254 14-Apr-2010 Dan Gohman <gohman@apple.com> Move the code for initialing the entry block livein set out of
SelectionDAGISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101258 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
electionDAG/SelectionDAGISel.cpp
8927a372950be8591f298fb9650b2059e0f0a6e8 14-Apr-2010 Dan Gohman <gohman@apple.com> Reorgnaize this code to be more tidy and readable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101256 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c0fb65da040668df543db514f05e4be571edf700 14-Apr-2010 Dan Gohman <gohman@apple.com> Reorgnaize this code to be more tidy and readable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101256 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2e3cbc9d2a1c43f42103f973f8965c909006d6d4 14-Apr-2010 Dan Gohman <gohman@apple.com> Trim #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
441516fb3def0125765532e4fe1b507cc89998e9 14-Apr-2010 Dan Gohman <gohman@apple.com> Trim #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2b95c891744fc912f93f1972b7e49b9085b64400 14-Apr-2010 Dan Gohman <gohman@apple.com> Move the code for emitting livein copies out of SelectionDAGISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101254 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
electionDAG/SelectionDAGISel.cpp
98708260f55cab997a5db77e930a2bd35f4172aa 14-Apr-2010 Dan Gohman <gohman@apple.com> Move the code for emitting livein copies out of SelectionDAGISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101254 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
electionDAG/SelectionDAGISel.cpp
ea01bf65af49643fd74b20beacf9bbaaec7afb0f 14-Apr-2010 Dan Gohman <gohman@apple.com> Sink landing-pad marking code out of
SelectionDAGISel::runOnMachineFunction into FunctionLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101252 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGISel.cpp
de4c0a7da7cfa1693ad9e6e09969003b610af08a 14-Apr-2010 Dan Gohman <gohman@apple.com> Sink landing-pad marking code out of
SelectionDAGISel::runOnMachineFunction into FunctionLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101252 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGISel.cpp
732b510ba3d3ca77cc6d958b3f17acee94aa2c62 14-Apr-2010 Dan Gohman <gohman@apple.com> It's not necessary to recompute EB here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101251 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
d0d8275cb264b17bed836ccd35c923476a236426 14-Apr-2010 Dan Gohman <gohman@apple.com> It's not necessary to recompute EB here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101251 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
91bdbdd927fe62cfacff7e2fc0fb08a8cd63e060 14-Apr-2010 Dan Gohman <gohman@apple.com> Generalize this code to handle Instructions in addition to ConstantExprs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101210 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
32acbc1e50defdb7e27a4e8274f78988cf302c14 14-Apr-2010 Dan Gohman <gohman@apple.com> Generalize this code to handle Instructions in addition to ConstantExprs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101210 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c6bbe1b544cf6f431bef31704c21273879b6f520 14-Apr-2010 Dan Gohman <gohman@apple.com> Reorder the methods of this class to be a little more organized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101206 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.h
b4be71e11215c8c02065097cb9b15ed7edbab7eb 14-Apr-2010 Dan Gohman <gohman@apple.com> Reorder the methods of this class to be a little more organized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101206 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.h
acbf666c65b5a60070bf24f9cd6a43771e90e4ee 14-Apr-2010 Devang Patel <dpatel@apple.com> Clear MachineInstr->MCSymbol maps at the end of a function.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101202 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1d526c38e2d903a6c27bb7b90c8636e7b6600136 14-Apr-2010 Devang Patel <dpatel@apple.com> Clear MachineInstr->MCSymbol maps at the end of a function.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101202 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
28076aa3ad2840b6c36dc8964b44e99dc8baf0fe 14-Apr-2010 Evan Cheng <evan.cheng@apple.com> Fast path implicit_def check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101183 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
6327537a377d2b77748270258e99b257bf1723df 14-Apr-2010 Evan Cheng <evan.cheng@apple.com> Fast path implicit_def check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101183 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
21171c2b4a5b83cecc90821609e6455df730cd65 13-Apr-2010 Devang Patel <dpatel@apple.com> Do not include types without any definition in pubtypes list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101171 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
50d80e394d9612e15d9f84b67ed45f88a7826ea6 13-Apr-2010 Devang Patel <dpatel@apple.com> Do not include types without any definition in pubtypes list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101171 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
51c27a31b7131ccd7a0533b29b16a6ecf3c251aa 13-Apr-2010 Evan Cheng <evan.cheng@apple.com> Avoid variable shadowing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101170 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
c15d9135a82525d1b1e52fe79c70e782c15e251e 13-Apr-2010 Evan Cheng <evan.cheng@apple.com> Avoid variable shadowing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101170 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
9642d0f8dac00c01024a72423d33057401878689 13-Apr-2010 Evan Cheng <evan.cheng@apple.com> Expand postra machine licm's capability a little more. If an instruction's register operands are all loop invariants, then it's safe to hoist it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101167 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
aeb2f4aa462949ce067125f2f56dc34df64b25db 13-Apr-2010 Evan Cheng <evan.cheng@apple.com> Expand postra machine licm's capability a little more. If an instruction's register operands are all loop invariants, then it's safe to hoist it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101167 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
0e87d418a10f6fe7950788f2bd76da2170bfb496 13-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach MachineSinking to handle easy critical edges.

Sometimes it is desirable to sink instructions along a critical edge:

x = ...
if (a && b) ...
else use(x);

The 'a && b' condition creates a critical edge to the else block, but we still
want to sink the computation of x into the block. The else block is dominated by
the parent block, so we are not pushing instructions into new code paths.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101165 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
8d17160e2cf9a1645b4b06b0cd575aef6195b108 13-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach MachineSinking to handle easy critical edges.

Sometimes it is desirable to sink instructions along a critical edge:

x = ...
if (a && b) ...
else use(x);

The 'a && b' condition creates a critical edge to the else block, but we still
want to sink the computation of x into the block. The else block is dominated by
the parent block, so we are not pushing instructions into new code paths.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101165 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
d828d23a479d462f46cbf3bb635b5670104ffd84 13-Apr-2010 Evan Cheng <evan.cheng@apple.com> Teach postra machine licm to hoist more obvious invariants, e.g. instructions with no source operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101154 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
5dc57ce53329143c2b533882410be80ea5d259a7 13-Apr-2010 Evan Cheng <evan.cheng@apple.com> Teach postra machine licm to hoist more obvious invariants, e.g. instructions with no source operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101154 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
37391a533739b3f8ec0ca56f9ff08a4b8f8485af 13-Apr-2010 Dan Gohman <gohman@apple.com> Add a few comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101148 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
4183e31978146ea529a87a2fc47b96aeb6cbe000 13-Apr-2010 Dan Gohman <gohman@apple.com> Add a few comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101148 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
1e60b69d6816cb2ab7aaa6524d1b92358200f640 13-Apr-2010 Dan Gohman <gohman@apple.com> Eliminate MachineBasicBlock::const_livein_iterator and make
MachineBasicBlock::livein_iterator a const_iterator, because
clients shouldn't ever be using the iterator interface to
mutate the livein set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101147 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineLICM.cpp
achineVerifier.cpp
egisterScavenging.cpp
81bf03eb5cd68243eabb52505105aa5f4a831bf3 13-Apr-2010 Dan Gohman <gohman@apple.com> Eliminate MachineBasicBlock::const_livein_iterator and make
MachineBasicBlock::livein_iterator a const_iterator, because
clients shouldn't ever be using the iterator interface to
mutate the livein set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101147 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineLICM.cpp
achineVerifier.cpp
egisterScavenging.cpp
0df1515be4f0f3c0b5e08cc72d3b343e054c078a 13-Apr-2010 Dan Gohman <gohman@apple.com> Rename MachineFrameInfo variables to MFI, for consistency with
the rest of CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101146 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
9e9aa44d1a33fb845268ba07b726a31f26195690 13-Apr-2010 Dan Gohman <gohman@apple.com> Rename MachineFrameInfo variables to MFI, for consistency with
the rest of CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101146 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c36e945a1d8665b737b30f3b4e83b159b35dcc76 13-Apr-2010 Dan Gohman <gohman@apple.com> Move MachineRegisterInfo's isLiveIn and isLiveOut out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101145 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
13e73f483ef2ba630962dad3125393292533b756 13-Apr-2010 Dan Gohman <gohman@apple.com> Move MachineRegisterInfo's isLiveIn and isLiveOut out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101145 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
47b0c8788e8787afeadeccdc630ed7f219f7f08c 13-Apr-2010 Dan Gohman <gohman@apple.com> Delete an unused member variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101143 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
5c982949bf87ffda129fb7fe372e414e255f4630 13-Apr-2010 Dan Gohman <gohman@apple.com> Delete an unused member variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101143 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
a2a88716eead76b79421200056a3f1b8efe6daef 13-Apr-2010 Chris Lattner <sabre@nondot.org> add llvm codegen support for -ffunction-sections and -fdata-sections,
patch by Sylvere Teissier!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101106 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
43ac721e3b35341e7cf59d5982ad702ca8d27433 13-Apr-2010 Chris Lattner <sabre@nondot.org> add llvm codegen support for -ffunction-sections and -fdata-sections,
patch by Sylvere Teissier!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101106 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
e7e0c70ff08d130edb3e3d58d0ba6b531bf463f1 12-Apr-2010 Dan Gohman <gohman@apple.com> Remove a #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101043 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
8b3d6682a45e80d08abf32aa1be0491db1977456 12-Apr-2010 Dan Gohman <gohman@apple.com> Remove a #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101043 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
9cd371f9e8528757a602912938c8c03dda1bcfa0 12-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Plug trivial leak.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101034 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
678d9b7ed030dd79ed5ac749b0b21b6cb0859cd0 12-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Plug trivial leak.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101034 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
16e77059ad4eecf63f114e4aa2c808fad3ffb40d 12-Apr-2010 Evan Cheng <evan.cheng@apple.com> Enable post regalloc machine licm by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101023 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
09010a30fdb58426fc06c5c97956db35dcd90979 12-Apr-2010 Evan Cheng <evan.cheng@apple.com> Enable post regalloc machine licm by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101023 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
e0c1c1805e6a7522bcf5ac444078b8b7ff560a2c 12-Apr-2010 Dan Gohman <gohman@apple.com> Remove unnecessary parens.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101010 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
58c2587ed8e2cd0928a959dbb213bdcc028b1213 12-Apr-2010 Dan Gohman <gohman@apple.com> Remove unnecessary parens.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101010 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
7a9a6a77d7d9cd7c257a5fa58898470c4b66a473 09-Apr-2010 Bob Wilson <bob.wilson@apple.com> Tidy whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100904 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
347fa3fa26592b9792d100f3bf79b0695cf746f0 09-Apr-2010 Bob Wilson <bob.wilson@apple.com> Tidy whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100904 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
fd0ebd5d0558aca960e1bbbcd93b8198ad8b0fd6 09-Apr-2010 Devang Patel <dpatel@apple.com> Clear InsnsBeginScopeSet and InsnsEndScopeSet at the end of function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100867 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5142471fcd9c8f4f86ad08e87cecdce1700562ba 09-Apr-2010 Devang Patel <dpatel@apple.com> Clear InsnsBeginScopeSet and InsnsEndScopeSet at the end of function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100867 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b192ee9607dbe6e60cf5b655428c23371153ea11 09-Apr-2010 Dan Gohman <gohman@apple.com> Delete this obsolete comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100858 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
7d597b4428dcc120b15fcd92b33515108d54e35e 09-Apr-2010 Dan Gohman <gohman@apple.com> Delete this obsolete comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100858 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
c7b9051c4c815c752d07a5c22612c599df26adeb 09-Apr-2010 Chandler Carruth <chandlerc@gmail.com> Add a missing dependency to this library when building with CMake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100852 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
7b0138ffabb3372e7e67177f26f04f847ac69efc 09-Apr-2010 Chandler Carruth <chandlerc@gmail.com> Add a missing dependency to this library when building with CMake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100852 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
00042cf7fc554376486336ec1334192683ed1fa4 09-Apr-2010 Bob Wilson <bob.wilson@apple.com> Use getNumImplicitDefs() and getNumImplicitUses().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100850 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1793ab9e70c48146a5f1592b84b2b93e38c67fa4 09-Apr-2010 Bob Wilson <bob.wilson@apple.com> Use getNumImplicitDefs() and getNumImplicitUses().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100850 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
40f908ea1963d86fe11ad57969fe46bcefccd764 09-Apr-2010 Bob Wilson <bob.wilson@apple.com> Fix up some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100849 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
0855cadb00c598d4e78c8f1842a9c1b9bf19c667 09-Apr-2010 Bob Wilson <bob.wilson@apple.com> Fix up some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100849 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
601b38c57717a77518a10464e32d427f028b0daa 09-Apr-2010 Dan Gohman <gohman@apple.com> Add variants of ult, ule, etc. which take a uint64_t RHS, for convenience.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e05678132345eb8a632362dbd320ee7d36226e67 09-Apr-2010 Dan Gohman <gohman@apple.com> Add variants of ult, ule, etc. which take a uint64_t RHS, for convenience.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
cfe06853d4488b6781a85f36ec2dfb1ecdbc056a 08-Apr-2010 Chris Lattner <sabre@nondot.org> delete a forwarding function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100815 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
287df1bc0309962770b6c176f2d143795dd3cc2f 08-Apr-2010 Chris Lattner <sabre@nondot.org> delete a forwarding function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100815 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
6ef20139861731c45fec88b644d7316e9468a26e 08-Apr-2010 Chris Lattner <sabre@nondot.org> move elf section uniquing to MCContext. Along the way
merge XCore's section into MCSectionELF


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100812 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
argetLoweringObjectFileImpl.cpp
74aae4726a66733c5872588287535a984f9a94c7 08-Apr-2010 Chris Lattner <sabre@nondot.org> move elf section uniquing to MCContext. Along the way
merge XCore's section into MCSectionELF


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100812 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
argetLoweringObjectFileImpl.cpp
088d71c31dd9c483998972e3a75fa279a06a6e38 08-Apr-2010 Chris Lattner <sabre@nondot.org> remove the TargetLoweringObjectFileMachO::getMachoSection
api and update clients to use MCContext instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100808 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
22772214de79aa1c5ca38c4fb1da137d8fb30a05 08-Apr-2010 Chris Lattner <sabre@nondot.org> remove the TargetLoweringObjectFileMachO::getMachoSection
api and update clients to use MCContext instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100808 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
99b2ea9ee739b5109395cabfd6d6a7882c789d5f 08-Apr-2010 Chris Lattner <sabre@nondot.org> move macho section uniquing from MCParser and TLOF to MCContext where
the compiler and asmparser now unique to the same sections. This fixes
rdar://7835021.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100807 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
f0559e4b242e85d4b9d1dd08758814c599bdce13 08-Apr-2010 Chris Lattner <sabre@nondot.org> move macho section uniquing from MCParser and TLOF to MCContext where
the compiler and asmparser now unique to the same sections. This fixes
rdar://7835021.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100807 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
ff89ca6d52e2769220d819ddc3d655d2e0cdcc0e 08-Apr-2010 Evan Cheng <evan.cheng@apple.com> Coalescer should not delete copy instructions whose defs are partially dead. e.g.
%RDI<def,dead> = MOV64rr %RAX<kill>, %EDI<imp-def>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100804 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
impleRegisterCoalescing.cpp
a57fabe815ccf016eead526eb3ef475f116ab155 08-Apr-2010 Evan Cheng <evan.cheng@apple.com> Coalescer should not delete copy instructions whose defs are partially dead. e.g.
%RDI<def,dead> = MOV64rr %RAX<kill>, %EDI<imp-def>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100804 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
impleRegisterCoalescing.cpp
fbdd3aeb585c4eedfac31235313886768ed81558 08-Apr-2010 Ted Kremenek <kremenek@apple.com> Fix -Wsign-compare warning (issued by clang++).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100799 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d0e88f3596fb214fd26bf91c481d87ffe499d992 08-Apr-2010 Ted Kremenek <kremenek@apple.com> Fix -Wsign-compare warning (issued by clang++).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100799 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f63b226c1187a5fa59d30eaf795c6be7f0a8234e 08-Apr-2010 Devang Patel <dpatel@apple.com> Rename a function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100797 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
e37b0c6c25262b6c9ef4f1595b18e77f299b5035 08-Apr-2010 Devang Patel <dpatel@apple.com> Rename a function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100797 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
fe5adeb63d07b93aa85df0fc1abd37cadd98be35 08-Apr-2010 Chris Lattner <sabre@nondot.org> implicit defs get added to the end of machine instrs sometimes. Scan the whole instruction for the metadata operand instead of assuming it will be at the end of the instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100792 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
d0024fec256659b45350387289e5d4520f15dc6d 08-Apr-2010 Chris Lattner <sabre@nondot.org> implicit defs get added to the end of machine instrs sometimes. Scan the whole instruction for the metadata operand instead of assuming it will be at the end of the instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100792 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
6f878385bdd065b547f9d4feaee948075764cc2f 08-Apr-2010 Devang Patel <dpatel@apple.com> One instruction may start (or end) multiple lexical scopes.
There is no need to remember labels identifying regions marked by such instructions in each scope.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100781 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1c246358a062bc3537c1286c6b9314d56854a257 08-Apr-2010 Devang Patel <dpatel@apple.com> One instruction may start (or end) multiple lexical scopes.
There is no need to remember labels identifying regions marked by such instructions in each scope.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100781 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
2206f66c03b18e56eda96cecd0e4291352e9cf47 08-Apr-2010 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100771 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6a5975f49fc632a2f288b9fb7004fd8ed26713ef 08-Apr-2010 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100771 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1c3046ba6b1666c685c9e9c14de41c8b4e6be351 08-Apr-2010 Devang Patel <dpatel@apple.com> Delete out of date comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100769 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6669b81203d3ce6cfa1d505019ee6d64ae9df02c 08-Apr-2010 Devang Patel <dpatel@apple.com> Delete out of date comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100769 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0d8f3b716b167352843a8b38045f9298b448e10d 08-Apr-2010 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100768 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6122a4d1c0c73c1d2d5754c50c68d1dc4ae6f70f 08-Apr-2010 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100768 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
b8f832d331b5206b235262e4395b969d68cf439c 08-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Use twines to simplify calls to report_fatal_error. For code size and readability.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100756 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/OcamlGCPrinter.cpp
LFWriter.cpp
electionDAG/SelectionDAGBuilder.cpp
1bd7335a17010bd4d8f86736cf73cac9f3fb80a5 08-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Use twines to simplify calls to report_fatal_error. For code size and readability.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100756 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/OcamlGCPrinter.cpp
LFWriter.cpp
electionDAG/SelectionDAGBuilder.cpp
6371648280456bf7052b8a6f4ee03cfdf2094fe6 08-Apr-2010 Evan Cheng <evan.cheng@apple.com> Avoid using f64 to lower memcpy from constant string. It's cheaper to use i32 store of immediates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100751 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c3b0c341e731b27b550ee9dcded9c17232b296b8 08-Apr-2010 Evan Cheng <evan.cheng@apple.com> Avoid using f64 to lower memcpy from constant string. It's cheaper to use i32 store of immediates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100751 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3a10bb0e4f485ff295665f37128a92fa8a5077f3 08-Apr-2010 Evan Cheng <evan.cheng@apple.com> Make post regalloc machine licm functional. It now passes all of MultiSource.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100742 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
4038f9c21b17378617c25f3092fe615326f8b874 08-Apr-2010 Evan Cheng <evan.cheng@apple.com> Make post regalloc machine licm functional. It now passes all of MultiSource.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100742 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
878bcb1edf2fd25ec5b30b71d66365248fe33e71 08-Apr-2010 Chris Lattner <sabre@nondot.org> convert a report_fatal_error that I was able to trigger into a nice error
so the user at least knows what inline asm is a problem. For example:

error: inline asm not supported yet: don't know how to handle tied indirect register inputs
pr8788-1.c:14:10: note: generated from here
asm ("\n" : "+r" (stack->regs)
^

Instead of:
fatal error: error in backend: Don't know how to handle tied indirect register inputs yet!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100731 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6129c376935db12dc79f6d515a1d96632adb480c 08-Apr-2010 Chris Lattner <sabre@nondot.org> convert a report_fatal_error that I was able to trigger into a nice error
so the user at least knows what inline asm is a problem. For example:

error: inline asm not supported yet: don't know how to handle tied indirect register inputs
pr8788-1.c:14:10: note: generated from here
asm ("\n" : "+r" (stack->regs)
^

Instead of:
fatal error: error in backend: Don't know how to handle tied indirect register inputs yet!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100731 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c09d2cffe8a20019079c372ad39ea9987b25f4da 08-Apr-2010 Chris Lattner <sabre@nondot.org> minor tidying.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100725 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
87d677c1856bfdcb91d9daeb69dc5f261c73851e 08-Apr-2010 Chris Lattner <sabre@nondot.org> minor tidying.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100725 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
f089358a6614476111863ca914f7f07a1a8c69b2 08-Apr-2010 Chris Lattner <sabre@nondot.org> use assertions instead of unreachable for logic errors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100724 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
35a389344d21178ee280c2410401b2060b5b879c 08-Apr-2010 Chris Lattner <sabre@nondot.org> use assertions instead of unreachable for logic errors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100724 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1178502ccf73f08434a82444def11c8e7d310d28 08-Apr-2010 Chris Lattner <sabre@nondot.org> introduce a new recoverable error handling API to LLVMContext
and use it in one place in inline asm handling stuff. Before
we'd generate this for an invalid modifier letter:

$ clang asm.c -c -o t.o
fatal error: error in backend: Invalid operand found in inline asm: 'abc incl ${0:Z}'
INLINEASM <es:abc incl ${0:Z}>, 10, %EAX<def>, 2147483657, %EAX, 14, %EFLAGS<earlyclobber,def,dead>, <!-1>


Now we generate this:

$ clang asm.c -c -o t.o
error: invalid operand in inline asm: 'incl ${0:Z}'
asm.c:3:12: note: generated from here
__asm__ ("incl %Z0" : "+r" (X));
^
1 error generated.

This is much better but still admittedly not great ("why" is the operand
invalid??), codegen should try harder with its diagnostics :)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100723 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
38686bdffdebc09aa6fe6b8b54b34ac32c753f59 08-Apr-2010 Chris Lattner <sabre@nondot.org> introduce a new recoverable error handling API to LLVMContext
and use it in one place in inline asm handling stuff. Before
we'd generate this for an invalid modifier letter:

$ clang asm.c -c -o t.o
fatal error: error in backend: Invalid operand found in inline asm: 'abc incl ${0:Z}'
INLINEASM <es:abc incl ${0:Z}>, 10, %EAX<def>, 2147483657, %EAX, 14, %EFLAGS<earlyclobber,def,dead>, <!-1>


Now we generate this:

$ clang asm.c -c -o t.o
error: invalid operand in inline asm: 'incl ${0:Z}'
asm.c:3:12: note: generated from here
__asm__ ("incl %Z0" : "+r" (X));
^
1 error generated.

This is much better but still admittedly not great ("why" is the operand
invalid??), codegen should try harder with its diagnostics :)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100723 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
8316f2d3810dd37bae0f847bc3efd495432b5893 08-Apr-2010 Chris Lattner <sabre@nondot.org> rename llvm::llvm_report_error -> llvm::report_fatal_error



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100709 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/OcamlGCPrinter.cpp
LFWriter.cpp
ntrinsicLowering.cpp
iveIntervalAnalysis.cpp
achineVerifier.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
argetInstrInfoImpl.cpp
argetLoweringObjectFileImpl.cpp
75361b69f3f327842b9dad69fa7f28ae3b688412 08-Apr-2010 Chris Lattner <sabre@nondot.org> rename llvm::llvm_report_error -> llvm::report_fatal_error



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100709 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/OcamlGCPrinter.cpp
LFWriter.cpp
ntrinsicLowering.cpp
iveIntervalAnalysis.cpp
achineVerifier.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
argetInstrInfoImpl.cpp
argetLoweringObjectFileImpl.cpp
f3fa0d3e4d278e3fc0a47547047bac080efa0e1d 08-Apr-2010 Chris Lattner <sabre@nondot.org> remove some unneeded errorhandling stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100703 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
1ca6531e2e8e1b3a4f6c48888568450ecf614004 08-Apr-2010 Chris Lattner <sabre@nondot.org> remove some unneeded errorhandling stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100703 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
4c884627e5a3aa1cf57c73535a86a05c2b2fbc6a 08-Apr-2010 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100700 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
00d139064e525221fdf0ff00d001ce8b584d69d6 08-Apr-2010 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100700 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e4454320b3cfffe926a487c33fbeb454366de2f8 07-Apr-2010 Shih-wei Liao <sliao@google.com> libbcc

Change-Id: Ieaa3ebd5a38f370752495549f8870b534eeedfc5
ndroid.mk
smPrinter/Android.mk
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/OcamlGCPrinter.cpp
ranchFolding.cpp
MakeLists.txt
alcSpillWeights.cpp
odePlacementOpt.cpp
riticalAntiDepBreaker.cpp
eadMachineInstructionElim.cpp
ntrinsicLowering.cpp
LVMTargetMachine.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineCSE.cpp
achineFunction.cpp
achineInstr.cpp
achineLICM.cpp
achineModuleInfoImpls.cpp
achineRegisterInfo.cpp
achineSink.cpp
ptimizePHIs.cpp
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
HIElimination.cpp
HIElimination.h
asses.cpp
ostRASchedulerList.cpp
rocessImplicitDefs.cpp
rologEpilogInserter.cpp
seudoSourceValue.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
cheduleDAGInstrs.cpp
electionDAG/Android.mk
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SDDbgValue.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
jLjEHPrepare.cpp
tackProtector.cpp
ailDuplication.cpp
argetInstrInfoImpl.cpp
argetLoweringObjectFileImpl.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
irtRegRewriter.cpp
a7a3476e84d08173b6bead2105e07675bc643cb2 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Remove late ARM codegen optimization pass committed by accident.
It is not ready for public yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100673 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
4b38debf597a22e2db02aafdaa40264d7770c1ad 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Remove late ARM codegen optimization pass committed by accident.
It is not ready for public yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100673 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
9cc241abf0f6d769c2b3c23424279bd6f53de181 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Initial support for different kinds of FU reservation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100645 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
xactHazardRecognizer.h
96085a36dbb9cf251c81bc150e41ea9c952c99c0 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Initial support for different kinds of FU reservation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100645 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
xactHazardRecognizer.h
60fb802a477298b4ed4a1b8a38bdd729b3bd1de8 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Factor out scoreboard into separate class. This way we might have several different score boards.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100644 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
xactHazardRecognizer.h
1298948c5c36e6e88cbde0abe73f7f37c3a038a6 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Factor out scoreboard into separate class. This way we might have several different score boards.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100644 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
xactHazardRecognizer.h
f4c97dfd87d6514e7976bafa07b55aee3e3a81b5 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add hook to insert late LLVM=>LLVM passes just before isel

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100640 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
977dfcefa1b139de56fd17e108b263e39e16504f 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add hook to insert late LLVM=>LLVM passes just before isel

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100640 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
67825e3b8bfb36b3e3b9a273b644a99dec1f227b 07-Apr-2010 Chris Lattner <sabre@nondot.org> fix 80 col violation, patch by Alastair Lynn


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100639 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7f893c0712a080470b8c0bb8e7e711c7650eb2bd 07-Apr-2010 Chris Lattner <sabre@nondot.org> fix 80 col violation, patch by Alastair Lynn


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100639 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
57e9bbdc49243250a494463ece6bce33d6bbc3fb 07-Apr-2010 Chris Lattner <sabre@nondot.org> add a comment line that got dropped


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100638 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c0561f29a8b95106c757ffa9ad186f997dabd836 07-Apr-2010 Chris Lattner <sabre@nondot.org> add a comment line that got dropped


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100638 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
eb237b4ed4354467ff221d31ab5c408896819fbf 07-Apr-2010 Chris Lattner <sabre@nondot.org> fix a latent bug my inline asm stuff exposed:
MachineOperand::isIdenticalTo wasn't handling metadata operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100636 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
24ad3ed71fe93059d1b46ffdbfe63259762bf547 07-Apr-2010 Chris Lattner <sabre@nondot.org> fix a latent bug my inline asm stuff exposed:
MachineOperand::isIdenticalTo wasn't handling metadata operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100636 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
62060a802b8ba875bf7ed22eee05f77c55581f56 07-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove unused method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100620 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
96fbb3eea6ebcd2a6b75973cf11998b4cb0e6a81 07-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove unused method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100620 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c669cb6ba3f71e51fd33cecb3467e5e59f5beb7c 07-Apr-2010 Edwin Török <edwintorok@gmail.com> Workaround the breakage in r100616 by guarding all timers with
TimePassesIsEnabled. This should allow make check to pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100618 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
9c4210794ee42542a20023cd0a800003797523e0 07-Apr-2010 Torok Edwin <edwintorok@gmail.com> Workaround the breakage in r100616 by guarding all timers with
TimePassesIsEnabled. This should allow make check to pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100618 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
ce3c6253d9783bd8ef899570110bfd4339570fb3 07-Apr-2010 Bill Wendling <isanbard@gmail.com> Use the "NamedGroupTimer" class to categorize DWARF emission better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100616 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
5f017e8086c4481da7f5ead2e1d66159e1cc9255 07-Apr-2010 Bill Wendling <isanbard@gmail.com> Use the "NamedGroupTimer" class to categorize DWARF emission better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100616 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
7f11c34dec4f2401eecf636ad102d86d29c5e0be 07-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Use raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100615 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a592e671ee00e660e31274561e216f5ade39cea4 07-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Use raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100615 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e4581cb680dc26bbd775265f2aba9b72b2327927 07-Apr-2010 Evan Cheng <evan.cheng@apple.com> Add comments for missed opportunities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100610 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
5b463905be11f8c89bf3a7a777eb5d0c7be7162d 07-Apr-2010 Evan Cheng <evan.cheng@apple.com> Add comments for missed opportunities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100610 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
374e5f125ca49e5d8d364d358d33451fcf67a3da 07-Apr-2010 Evan Cheng <evan.cheng@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100609 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
348856e56a247c9815986be51565551394f9e9c2 07-Apr-2010 Evan Cheng <evan.cheng@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100609 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
bafc8377097d73be2dbc1a4cf344a50ac9e69fe8 07-Apr-2010 Chris Lattner <sabre@nondot.org> Have the inst emitter add the !srcloc mdnode to the machine instr.
Have the asmprinter use the mdnode to scavenge a source location if
present. Document this nonsense in langref.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100607 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
electionDAG/InstrEmitter.cpp
cf9a415182aca6a432105a2a12168e1049de180a 07-Apr-2010 Chris Lattner <sabre@nondot.org> Have the inst emitter add the !srcloc mdnode to the machine instr.
Have the asmprinter use the mdnode to scavenge a source location if
present. Document this nonsense in langref.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100607 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
electionDAG/InstrEmitter.cpp
2ad3cb174a3ad3dbf7b921ea70bc2c2f51de4624 07-Apr-2010 Chris Lattner <sabre@nondot.org> remove another magic number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100606 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
fee455ea6a7e209a3cac5fc8e601f8e85cfb3792 07-Apr-2010 Chris Lattner <sabre@nondot.org> remove another magic number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100606 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
b9a3f3d2d395ff32a4f40fe6642d5f0e38a2c0be 07-Apr-2010 Chris Lattner <sabre@nondot.org> Three changes:
1. Introduce some enums and accessors in the InlineAsm class
that eliminate a ton of magic numbers when handling inline
asm SDNode.
2. Add a new MDNodeSDNode selection dag node type that holds
a MDNode (shocking!)
3. Add a new argument to ISD::INLINEASM nodes that hold !srcloc
metadata, propagating it to the instruction emitter, which
drops it.

No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
decc2671516e6c52ee2f29f7746f8d02753845ea 07-Apr-2010 Chris Lattner <sabre@nondot.org> Three changes:
1. Introduce some enums and accessors in the InlineAsm class
that eliminate a ton of magic numbers when handling inline
asm SDNode.
2. Add a new MDNodeSDNode selection dag node type that holds
a MDNode (shocking!)
3. Add a new argument to ISD::INLINEASM nodes that hold !srcloc
metadata, propagating it to the instruction emitter, which
drops it.

No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
fbd947e63c59e0d8012b8358102e6f344b482c04 07-Apr-2010 Dale Johannesen <dalej@apple.com> Move printing of target-indepedent DEBUG_VALUE comments
into AsmPrinter. Target-dependent form is still generated
by FastISel and still handled in X86 code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100596 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/FastISel.cpp
343b42e428079363ab09828734b2debfd7dbdc9e 07-Apr-2010 Dale Johannesen <dalej@apple.com> Move printing of target-indepedent DEBUG_VALUE comments
into AsmPrinter. Target-dependent form is still generated
by FastISel and still handled in X86 code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100596 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/FastISel.cpp
58ec50dd04ebbb9f8d7924f477b3b2444cfdcbc9 07-Apr-2010 Evan Cheng <evan.cheng@apple.com> Post regalloc LICM. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100592 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineLICM.cpp
d94671a25e65918557a2c03c0fc12a60a5d138bf 07-Apr-2010 Evan Cheng <evan.cheng@apple.com> Post regalloc LICM. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100592 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineLICM.cpp
75c1062d0f7039ce162b056f4773d446a04157c4 07-Apr-2010 Devang Patel <dpatel@apple.com> Do not emit specification DIE with DW_AT_specification attribute for member functions of a funcation local class. This trips gdb's partial scan of DIEs at load time. Fixes Radar 7833483.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100586 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5f0940002ac4f0601bf53ae9688c2f49045331e2 07-Apr-2010 Devang Patel <dpatel@apple.com> Do not emit specification DIE with DW_AT_specification attribute for member functions of a funcation local class. This trips gdb's partial scan of DIEs at load time. Fixes Radar 7833483.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100586 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6fbbcc87d1aa597f2fa2c77ee3c0ae1101e778a0 07-Apr-2010 John McCall <rjmccall@apple.com> Fix a number of clang -Wsign-compare warnings that didn't have an obvious
solution. The only reason these don't fire with gcc-4.2 is that gcc turns off
part of -Wsign-compare in C++ on accident.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100581 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
irtRegRewriter.cpp
795ee9dd1e43d9e3ba87c052f721b6f7a2161827 07-Apr-2010 John McCall <rjmccall@apple.com> Fix a number of clang -Wsign-compare warnings that didn't have an obvious
solution. The only reason these don't fire with gcc-4.2 is that gcc turns off
part of -Wsign-compare in C++ on accident.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100581 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
irtRegRewriter.cpp
d706c64ce2ac8c507f021d451e2f647512b0c4ec 07-Apr-2010 Dale Johannesen <dalej@apple.com> Revert 100573, it's causing some testsuite problems.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100578 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
49d915bb9a60b1dc9d1b5313dc8849427a034dfa 07-Apr-2010 Dale Johannesen <dalej@apple.com> Revert 100573, it's causing some testsuite problems.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100578 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2fb774fa3bd93106fceaa80e792c91409a4eb4bc 07-Apr-2010 Dale Johannesen <dalej@apple.com> Move printing of DEBUG_VALUE comments to target-independent place.
There is probably a more elegant way to do this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100573 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0a580d30e0538a561ca39b3970c8c92f8df850e3 07-Apr-2010 Dale Johannesen <dalej@apple.com> Move printing of DEBUG_VALUE comments to target-independent place.
There is probably a more elegant way to do this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100573 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
95b69e06d48f80e7e296fca634fa7c170958d02a 06-Apr-2010 Dale Johannesen <dalej@apple.com> Allow for the possibility that a debug-value points
to a SDNode that didn't have code generated for it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100566 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
c4d7b14a92a9b34449eccdccce1263c4b68ad474 06-Apr-2010 Dale Johannesen <dalej@apple.com> Allow for the possibility that a debug-value points
to a SDNode that didn't have code generated for it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100566 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
0f5779e649f77b5b6f623abf024e91cfeaac172c 06-Apr-2010 Stuart Hastings <stuart@apple.com> Reverting 100530 & 100531 due to regressions in the GDB test suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100563 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
639336e0bda1373566d4cb29469f78fb4c9e95a6 06-Apr-2010 Stuart Hastings <stuart@apple.com> Reverting 100530 & 100531 due to regressions in the GDB test suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100563 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d698457d922f61094daf06392336e3d068d43216 06-Apr-2010 Evan Cheng <evan.cheng@apple.com> Code clean up. Move includes from VirtRegRewriter.h to VirtRegRewriter.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100532 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
irtRegRewriter.h
98116f99b6bd766d98a650594d355dedc593d4d4 06-Apr-2010 Evan Cheng <evan.cheng@apple.com> Code clean up. Move includes from VirtRegRewriter.h to VirtRegRewriter.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100532 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
irtRegRewriter.h
009a8295d7eb3f1296c4e3fa5460ad6aae9b4006 06-Apr-2010 Stuart Hastings <stuart@apple.com> Revise debug info machinery to digest nested functions and classes.

A certain GDB testsuite case (local.cc) has a function nested inside a
class nested inside another function. GCC presents the innermost
function to llvm-convert first. Heretofore, the debug info mistakenly
placed the inner function at module scope. This patch walks the GCC
context links and instantiates the outer class and function so the
debug info is properly nested. Radar 7426545.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100530 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
983327b3516faac156d7a7ce26a80e24685221f4 06-Apr-2010 Stuart Hastings <stuart@apple.com> Revise debug info machinery to digest nested functions and classes.

A certain GDB testsuite case (local.cc) has a function nested inside a
class nested inside another function. GCC presents the innermost
function to llvm-convert first. Heretofore, the debug info mistakenly
placed the inner function at module scope. This patch walks the GCC
context links and instantiates the outer class and function so the
debug info is properly nested. Radar 7426545.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100530 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
b7ba5e6f47d281d3cab5bf448ca347bbea2247c1 06-Apr-2010 Mon P Wang <wangmp@apple.com> Remove assert to treat memmove and memset like memcpy


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100521 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
01f0e8561d8e95b1de94d3971b8ad0aa29c20951 06-Apr-2010 Mon P Wang <wangmp@apple.com> Remove assert to treat memmove and memset like memcpy


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100521 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4cd8b2a2086cf865b7592920999e6c1bca92b1e9 06-Apr-2010 Chris Lattner <sabre@nondot.org> propagate cookie management out one layer of function calls.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100510 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
885d94143d0fc02fd5c4ddf1d2a2ee74c7934bff 06-Apr-2010 Chris Lattner <sabre@nondot.org> propagate cookie management out one layer of function calls.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100510 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
890972db38ba77cc983c4ccdce8f068c45945925 06-Apr-2010 Chris Lattner <sabre@nondot.org> report errors through LLVMContext's inline asm handler if available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100509 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
6eb7806a5f5edf460e68f52bdd0fad25f7771873 06-Apr-2010 Chris Lattner <sabre@nondot.org> report errors through LLVMContext's inline asm handler if available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100509 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
262c21b60c0f6fbb2746b73fcb351ead873aefc1 06-Apr-2010 Chris Lattner <sabre@nondot.org> Give MachineModuleInfo an actual Module*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100508 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionAnalysis.cpp
achineModuleInfo.cpp
421ccd9892178e741e24c96cef4304262475255d 06-Apr-2010 Chris Lattner <sabre@nondot.org> Give MachineModuleInfo an actual Module*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100508 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionAnalysis.cpp
achineModuleInfo.cpp
59946385a5dbcf2d6dd76ce8176808a25812bf3f 06-Apr-2010 Devang Patel <dpatel@apple.com> Remove unnecessary include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100505 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f778b57fc58178aebeb5bd97f576c1e00f725db8 06-Apr-2010 Devang Patel <dpatel@apple.com> Remove unnecessary include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100505 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0cc7973e7339e7fdcac5b9228b1ecfc2c42f38e7 06-Apr-2010 Evan Cheng <evan.cheng@apple.com> Fix an obvious copy-n-paste bug. It's not known to cause any miscompilation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100494 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
18141eed26d90b225ed4451a6b6521fb01f8eb31 06-Apr-2010 Evan Cheng <evan.cheng@apple.com> Fix an obvious copy-n-paste bug. It's not known to cause any miscompilation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100494 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
76a8ffffa1f89e17ce3f5c207d7231a354b161e6 06-Apr-2010 Chris Lattner <sabre@nondot.org> Give AsmParser an option to control whether it finalizes
the stream. New demo:

$ clang asm.c -S -o - -emit-llvm | llc -filetype=obj -o t.o
$ otool -tv t.o
t.o:
(__TEXT,__text) section
_foo:
0000000000000000 subq $0x08,%rsp
0000000000000004 movl %edi,(%rsp)
0000000000000007 movl %edi,%eax
0000000000000009 incl %eax
000000000000000b movl %eax,(%rsp)
000000000000000e movl %eax,0x04(%rsp)
0000000000000012 addq $0x08,%rsp
0000000000000016 ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100492 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
79180e2ef5ff4aa3c8f64b13736e8648663f3965 06-Apr-2010 Chris Lattner <sabre@nondot.org> Give AsmParser an option to control whether it finalizes
the stream. New demo:

$ clang asm.c -S -o - -emit-llvm | llc -filetype=obj -o t.o
$ otool -tv t.o
t.o:
(__TEXT,__text) section
_foo:
0000000000000000 subq $0x08,%rsp
0000000000000004 movl %edi,(%rsp)
0000000000000007 movl %edi,%eax
0000000000000009 incl %eax
000000000000000b movl %eax,(%rsp)
000000000000000e movl %eax,0x04(%rsp)
0000000000000012 addq $0x08,%rsp
0000000000000016 ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100492 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
dd9d85d2fe017801e0090bf89bb3706b9ebacf2d 06-Apr-2010 Chris Lattner <sabre@nondot.org> add .o file writing for inline asm in llc. Here's a silly
demo:

$ clang asm.c -S -o - -emit-llvm | llc -filetype=obj -o t.o
<inline asm>:1:2: error: unrecognized instruction
abc incl %eax
^
LLVM ERROR: Error parsing inline asm

Only problem seems to be that the parser finalizes OutStreamer
at the end of the first inline asm, which isn't what we want.
For example:

$ cat asm.c
int foo(int X) {
__asm__ ("incl %0" : "+r" (X));
return X;
}
$ clang asm.c -S -o - -emit-llvm | llc
...
subq $8, %rsp
movl %edi, (%rsp)
movl %edi, %eax
## InlineAsm Start
incl %eax
## InlineAsm End
movl %eax, (%rsp)
movl %eax, 4(%rsp)
addq $8, %rsp
ret
$ clang asm.c -S -o - -emit-llvm | llc -filetype=obj -o t.o
$ otool -tv t.o
t.o:
(__TEXT,__text) section
_foo:
0000000000000000 subq $0x08,%rsp
0000000000000004 movl %edi,(%rsp)
0000000000000007 movl %edi,%eax
0000000000000009 incl %eax
$

don't stop at inc!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100491 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
af632c91a0090d8448dd10e48d8ce53f31be0a21 06-Apr-2010 Chris Lattner <sabre@nondot.org> add .o file writing for inline asm in llc. Here's a silly
demo:

$ clang asm.c -S -o - -emit-llvm | llc -filetype=obj -o t.o
<inline asm>:1:2: error: unrecognized instruction
abc incl %eax
^
LLVM ERROR: Error parsing inline asm

Only problem seems to be that the parser finalizes OutStreamer
at the end of the first inline asm, which isn't what we want.
For example:

$ cat asm.c
int foo(int X) {
__asm__ ("incl %0" : "+r" (X));
return X;
}
$ clang asm.c -S -o - -emit-llvm | llc
...
subq $8, %rsp
movl %edi, (%rsp)
movl %edi, %eax
## InlineAsm Start
incl %eax
## InlineAsm End
movl %eax, (%rsp)
movl %eax, 4(%rsp)
addq $8, %rsp
ret
$ clang asm.c -S -o - -emit-llvm | llc -filetype=obj -o t.o
$ otool -tv t.o
t.o:
(__TEXT,__text) section
_foo:
0000000000000000 subq $0x08,%rsp
0000000000000004 movl %edi,(%rsp)
0000000000000007 movl %edi,%eax
0000000000000009 incl %eax
$

don't stop at inc!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100491 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
989a27e04176fab71aa980768b87d86df77cd9bf 06-Apr-2010 Bill Wendling <isanbard@gmail.com> Output floating point representations in DWARF format. This is done by outputing
the FP encoding directly as a hex representation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100487 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
57fbba4dba5fe095e325103ff34b9c99bab382f9 06-Apr-2010 Bill Wendling <isanbard@gmail.com> Output floating point representations in DWARF format. This is done by outputing
the FP encoding directly as a hex representation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100487 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7fb59c6cad5a7e3ae621e0fedcbc67fea3ea13fe 06-Apr-2010 Chris Lattner <sabre@nondot.org> stringref-ize the MemoryBuffer::get apis. This requires
a co-committed clang patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100485 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
4c842dda3939c6b9f83ba7e8e19e43445cd9a832 06-Apr-2010 Chris Lattner <sabre@nondot.org> stringref-ize the MemoryBuffer::get apis. This requires
a co-committed clang patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100485 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
75d54582ea85dd864fb7331ad27a988277de4f5e 05-Apr-2010 Dan Gohman <gohman@apple.com> Add a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100459 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7b55d3665cc1f19859a77426f65218c8083b3142 05-Apr-2010 Dan Gohman <gohman@apple.com> Add a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100459 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b1074fff4cc946ff0fd10e7dccca3b73181f4e6a 05-Apr-2010 Chris Lattner <sabre@nondot.org> lowering a volatile llvm.memcpy to a libc memcpy is ok.
PR6779


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100457 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5c06a20814875d4b073204d5662491a4d00d7880 05-Apr-2010 Chris Lattner <sabre@nondot.org> lowering a volatile llvm.memcpy to a libc memcpy is ok.
PR6779


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100457 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
17ffe684ef54997788afed83c25b2de176342780 05-Apr-2010 Dan Gohman <gohman@apple.com> Don't do code sinking on unreachable blocks. It's unprofitable and hazardous.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100455 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
c4ae94dee8c9a07334de7ffd85c45893208cca77 05-Apr-2010 Dan Gohman <gohman@apple.com> Don't do code sinking on unreachable blocks. It's unprofitable and hazardous.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100455 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
511b66984f119cd5486d815fb238d3dae5e45c90 05-Apr-2010 Chris Lattner <sabre@nondot.org> remove the now-redundant MMI pointer in SelectionDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
512063dd0f91a76b9dd904dfff72a52b4d09e89f 05-Apr-2010 Chris Lattner <sabre@nondot.org> remove the now-redundant MMI pointer in SelectionDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
2771f486c69c022df6500558ed8c7b281e6216bd 05-Apr-2010 Chris Lattner <sabre@nondot.org> hopefully sate the clang self host build, which is apparently
instantiating some folding set stuff that GCC isn't, requiring
some types to not be incomplete.

I don't know if clang is right or wrong, but unbreaking the
bot is goodness. Here's the broken build:
http://google1.osuosl.org:8011/builders/clang-x86_64-darwin10-selfhost/builds/1813/steps/compile.llvm.stage2/logs/stdio


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100418 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
d2c4f19a9fd13790ee48ce182c1163476e2cd762 05-Apr-2010 Chris Lattner <sabre@nondot.org> hopefully sate the clang self host build, which is apparently
instantiating some folding set stuff that GCC isn't, requiring
some types to not be incomplete.

I don't know if clang is right or wrong, but unbreaking the
bot is goodness. Here's the broken build:
http://google1.osuosl.org:8011/builders/clang-x86_64-darwin10-selfhost/builds/1813/steps/compile.llvm.stage2/logs/stdio


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100418 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
d3d234dad3a3eddf2995606a050b699e4c676df8 05-Apr-2010 Chris Lattner <sabre@nondot.org> remove some redundant MMI arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
de6e783b2490447866b592cd39855e6f4d25efff 05-Apr-2010 Chris Lattner <sabre@nondot.org> remove some redundant MMI arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
bc49100fb2399436fe15bc8892d81f79e6947003 05-Apr-2010 Chris Lattner <sabre@nondot.org> unthread MMI from FastISel


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100416 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
ed3a8067a60ecf2c215e77327a57904c3ebc3355 05-Apr-2010 Chris Lattner <sabre@nondot.org> unthread MMI from FastISel


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100416 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
2c5055517b454c37d24fbd9e736d07a92310b61c 05-Apr-2010 Chris Lattner <sabre@nondot.org> remove the MMI pointer from MachineFrameInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100415 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
a267b0076e7887f5566e635ba35790f24d4524d9 05-Apr-2010 Chris Lattner <sabre@nondot.org> remove the MMI pointer from MachineFrameInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100415 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
1168d1d30803fd4449b36efba80b827d06b17fb3 05-Apr-2010 Chris Lattner <sabre@nondot.org> enhance MachineFunction to have a MMI pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100414 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineFunctionAnalysis.cpp
820e55e9ad3cb3b17780e84863648e431b571d25 05-Apr-2010 Chris Lattner <sabre@nondot.org> enhance MachineFunction to have a MMI pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100414 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineFunctionAnalysis.cpp
5889281434bcb1c97866ed5ecff54f664bf9aba8 05-Apr-2010 Chris Lattner <sabre@nondot.org> privatize more stuff, eliminate vtables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100410 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
2b1b3312e043858e89b0b1eddc2f839bef892c8d 05-Apr-2010 Chris Lattner <sabre@nondot.org> privatize more stuff, eliminate vtables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100410 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
2eb6c429c6f9344cefa506da783e0d373f64268c 05-Apr-2010 Chris Lattner <sabre@nondot.org> reprivatize now that DwarfWriter is gone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100409 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
105d69759312a9544ec55954b3fb59bdb7e224df 05-Apr-2010 Chris Lattner <sabre@nondot.org> reprivatize now that DwarfWriter is gone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100409 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
bf103a9c2d667a8b829b4411fc492ab9a96384f3 05-Apr-2010 Chris Lattner <sabre@nondot.org> prune #includes, MMI can never be null


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100408 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
6d7337896f1bcdfbdee90c9c33371c2a373f422a 05-Apr-2010 Chris Lattner <sabre@nondot.org> prune #includes, MMI can never be null


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100408 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
855b6bb1a2a91ede6cab7de928841c4227f84101 05-Apr-2010 Chris Lattner <sabre@nondot.org> prune #includes, realize the MMI can never be null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100407 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
74e41f982100b225936d75047dccbe5f1988b1d0 05-Apr-2010 Chris Lattner <sabre@nondot.org> prune #includes, realize the MMI can never be null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100407 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
a735c0991fd1c99d620af1b0093c51e406e83015 05-Apr-2010 Chris Lattner <sabre@nondot.org> finally blast DwarfWriter away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100406 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
smPrinter/DwarfWriter.cpp
493c9765e066896b381e8404e0c09125377bcc97 05-Apr-2010 Chris Lattner <sabre@nondot.org> finally blast DwarfWriter away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100406 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
smPrinter/DwarfWriter.cpp
ec9a1f48a349b292d579e56e2da011cb560069c8 05-Apr-2010 Chris Lattner <sabre@nondot.org> change AsmPrinter to use DwarfDebug/DwarfException directly
instead of going through DwarfWriter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100405 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
49cd6649e1246c05896fadefe2fcbc4bc1f5d221 05-Apr-2010 Chris Lattner <sabre@nondot.org> change AsmPrinter to use DwarfDebug/DwarfException directly
instead of going through DwarfWriter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100405 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
8b9430cbf64da05fcefd445f6a997260ba7fbc28 05-Apr-2010 Chris Lattner <sabre@nondot.org> trim some spurious references to DwarfWriter. SDIsel really doesn't
need it anymore, so don't addRequire it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100400 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
ea761868b5e4c0166721daf259f86c3816b44f42 05-Apr-2010 Chris Lattner <sabre@nondot.org> trim some spurious references to DwarfWriter. SDIsel really doesn't
need it anymore, so don't addRequire it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100400 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
2cb53307e4b148bddbe65301fee21ac4174292ed 05-Apr-2010 Chris Lattner <sabre@nondot.org> eliminate DwarfDebug::shouldEmit, which is the same now as MMI::hasDebugInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100386 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
994cb126c9e67e3dc79db24c609ee48564ab98bc 05-Apr-2010 Chris Lattner <sabre@nondot.org> eliminate DwarfDebug::shouldEmit, which is the same now as MMI::hasDebugInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100386 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
12bb45bc79dd2369145a28bf2fb79979b4c4999b 05-Apr-2010 Chris Lattner <sabre@nondot.org> fix a regression on 2009-08-17-DebugInfo.m


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100385 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6342b416f3086d3a4b9972106b77a3a8bc1d0d81 05-Apr-2010 Chris Lattner <sabre@nondot.org> fix a regression on 2009-08-17-DebugInfo.m


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100385 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3c00f8936502465d080aa1a79a3b51d0fb89820c 05-Apr-2010 Chris Lattner <sabre@nondot.org> selection dag doesn't need DwarfWriter, remove some tendrils.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100382 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
ba79d72eab446e64d360e8263d77732b5e13d556 05-Apr-2010 Chris Lattner <sabre@nondot.org> selection dag doesn't need DwarfWriter, remove some tendrils.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100382 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
a52b6176994e25280cf69a8b9069c1ebc5ef4fab 05-Apr-2010 Chris Lattner <sabre@nondot.org> fastisel doesn't need DwarfWriter, remove some tendricles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100381 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
d850ac79b57e6e0bf68ee93a94d0b3dcd9f6ca35 05-Apr-2010 Chris Lattner <sabre@nondot.org> fastisel doesn't need DwarfWriter, remove some tendricles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100381 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
bec073cea9e938743567789cc5deac473da04506 05-Apr-2010 Chris Lattner <sabre@nondot.org> just have all targets create the DwarfWriter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
90429c487fe62582241ffe0d3e8acce936f2f8bc 05-Apr-2010 Chris Lattner <sabre@nondot.org> just have all targets create the DwarfWriter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4e127676a8d067dcbd4f8acf6d4769643d0fadb9 05-Apr-2010 Chris Lattner <sabre@nondot.org> nuke DwarfPrinter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100375 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
505e86832ae7b0e1260fe7c1e7a3634ca515bc3e 05-Apr-2010 Chris Lattner <sabre@nondot.org> nuke DwarfPrinter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100375 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
f2691ededbfff885879b5a6333fd4402d6ddc83a 05-Apr-2010 Chris Lattner <sabre@nondot.org> make DwarfException not inherit from DwarfPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100374 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfWriter.cpp
84ac8b7f43514eda99b0de27c68fbcb5bfa2f399 05-Apr-2010 Chris Lattner <sabre@nondot.org> make DwarfException not inherit from DwarfPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100374 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfWriter.cpp
352c8e292c617e3ccedc31dd1c29a3020f400cd2 05-Apr-2010 Chris Lattner <sabre@nondot.org> change SizeOf to take AsmPrinter instead of TargetData,
simplifying a bunch of code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100373 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
a37d5387a54aa9424f6f8c96e5cab1dcbbcd8623 05-Apr-2010 Chris Lattner <sabre@nondot.org> change SizeOf to take AsmPrinter instead of TargetData,
simplifying a bunch of code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100373 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
bc0027bf180a255f3dcf03e992197da4919c88dd 05-Apr-2010 Chris Lattner <sabre@nondot.org> 1) make DIE take AsmPrinter instead of DwarfPrinter.
2) change DwarfDebug to not inherit from DwarfPrinter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100372 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
d38fee8ddc6597555904b82b6471a446cc5fe183 05-Apr-2010 Chris Lattner <sabre@nondot.org> 1) make DIE take AsmPrinter instead of DwarfPrinter.
2) change DwarfDebug to not inherit from DwarfPrinter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100372 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
193fec03331e41ddafa58a82d1e52f7904d06852 05-Apr-2010 Chris Lattner <sabre@nondot.org> Move EmitFrameMoves into AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100371 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
02b86b93dc4616571fed3473c6da9421c10f2fcc 05-Apr-2010 Chris Lattner <sabre@nondot.org> Move EmitFrameMoves into AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100371 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
a8b1f66657ac2e9bed8937a38cc52fc5beacaa96 05-Apr-2010 Chris Lattner <sabre@nondot.org> simplify code and reduce indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100369 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
786d17a0cf49e6bf95c53eff6148cf843d0f1c1d 05-Apr-2010 Chris Lattner <sabre@nondot.org> simplify code and reduce indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100369 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
c06b4740af510c449b41bf2a2f25216f1525a0af 05-Apr-2010 Chris Lattner <sabre@nondot.org> now that the magic is dispelled, move EmitSectionOffset to AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100368 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
6189ed10c1a6a39ad516aca2bda2c05fff35a55b 05-Apr-2010 Chris Lattner <sabre@nondot.org> now that the magic is dispelled, move EmitSectionOffset to AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100368 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
1f850aa77bd5df21936cf59660b16368858e6d32 05-Apr-2010 Chris Lattner <sabre@nondot.org> eliminate the magic AbsoluteDebugSectionOffsets MAI hook,
which is really a property of the section being referenced.
Add a predicate to MCSection to replace it.

Yay for reduction in magic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100367 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
3d2251361171b1a41bdb2ac71882e69d48617f49 05-Apr-2010 Chris Lattner <sabre@nondot.org> eliminate the magic AbsoluteDebugSectionOffsets MAI hook,
which is really a property of the section being referenced.
Add a predicate to MCSection to replace it.

Yay for reduction in magic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100367 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
706afc068ba2625b61677505ab4ed9b6a814aa1a 05-Apr-2010 Chris Lattner <sabre@nondot.org> only emit section labels if we have debug info, fixing a few
regtest failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100366 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
be15beb54ace72508cb3e597c1819132bbbe66f1 05-Apr-2010 Chris Lattner <sabre@nondot.org> only emit section labels if we have debug info, fixing a few
regtest failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100366 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
094932e6c481a403dbd10093f2e6fb9634455c4d 05-Apr-2010 Chris Lattner <sabre@nondot.org> I was wrong, ocaml isn't referencing 'Ldata_begin', so remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100365 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
4ad1efec925f36cb5ab461fc3c7e40baaf70ae1a 05-Apr-2010 Chris Lattner <sabre@nondot.org> I was wrong, ocaml isn't referencing 'Ldata_begin', so remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100365 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c43a7e74dba5d45b39dace1136efb1ddc098a694 05-Apr-2010 Chris Lattner <sabre@nondot.org> add some assertions to EmitSectionOffset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100364 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
a33b2a1ee6f8d544571ec4a9be819292f6bf315c 05-Apr-2010 Chris Lattner <sabre@nondot.org> add some assertions to EmitSectionOffset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100364 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
733c69d93e92da8d658710372e8c65165b2239c0 05-Apr-2010 Chris Lattner <sabre@nondot.org> stop emitting some dead L labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100363 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
11b8f30567b514e9ea816fe11bff1c806a9331b9 05-Apr-2010 Chris Lattner <sabre@nondot.org> stop emitting some dead L labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100363 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
66143d234be38a7420c5b327567945340bb1c977 05-Apr-2010 Chris Lattner <sabre@nondot.org> Store an use the symbols emitted at the start of the debug
sections instead of magically rematerializing them later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100362 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9c69e28553c5c344666aebce266694cf2d73e8d5 05-Apr-2010 Chris Lattner <sabre@nondot.org> Store an use the symbols emitted at the start of the debug
sections instead of magically rematerializing them later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100362 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d91fd8c3cd59d68a5e7aa3b8027e3920e7616d0d 05-Apr-2010 Chris Lattner <sabre@nondot.org> remove the didInitial ivar, rename emitInitial to be more
descriptive, change EmitSectionOffset back to taking a
symbol instead of a string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100361 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
fa070b01753e2d547539dca4e9d55459c652dc9c 05-Apr-2010 Chris Lattner <sabre@nondot.org> remove the didInitial ivar, rename emitInitial to be more
descriptive, change EmitSectionOffset back to taking a
symbol instead of a string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100361 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
d0e5004f025a0cd3aeb5821649d371cf69794773 05-Apr-2010 Chris Lattner <sabre@nondot.org> simplify EmitSectionOffset a little bit, improve comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100360 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
2e3ebedc881091fcf0c68aebb48649582689ee78 05-Apr-2010 Chris Lattner <sabre@nondot.org> simplify EmitSectionOffset a little bit, improve comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100360 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
d8f37da98d19b7df3bed2391967e53ff8abd3765 04-Apr-2010 Chris Lattner <sabre@nondot.org> The "IsSmall" argument to EmitSectionOffset is always true,
constant fold it away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100356 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
83d1618b462ae42b61cfa366d090792eb10f05c6 04-Apr-2010 Chris Lattner <sabre@nondot.org> The "IsSmall" argument to EmitSectionOffset is always true,
constant fold it away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100356 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
771e52e32d26bb7717b33f62f73b9351b1db3cf9 04-Apr-2010 Chris Lattner <sabre@nondot.org> eliminate the "isEH" argument to EmitSectionOffset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100355 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
f88dce1f89ddb30b2370318284a6b307d7a44a98 04-Apr-2010 Chris Lattner <sabre@nondot.org> eliminate the "isEH" argument to EmitSectionOffset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100355 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
bcc67c3f75bce85abf6500c737b15919e177bbaa 04-Apr-2010 Chris Lattner <sabre@nondot.org> isAbsoluteEHSectionOffsets always returns false, eliminate it
and substitute false at the one call site.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100354 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
0887fa0b8c966234025535d4adcbd5f562a3c0a5 04-Apr-2010 Chris Lattner <sabre@nondot.org> isAbsoluteEHSectionOffsets always returns false, eliminate it
and substitute false at the one call site.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100354 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
297f3a7bfc757fb55fd8f7b0f8be1f56362ac950 04-Apr-2010 Chris Lattner <sabre@nondot.org> move some more stuff to asmprinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100351 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
d2af7853e377bce40cbf3e0632a4608484b6aba4 04-Apr-2010 Chris Lattner <sabre@nondot.org> move some more stuff to asmprinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100351 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
fe717923d00b1febb6cb091600775e1d105fed74 04-Apr-2010 Chris Lattner <sabre@nondot.org> simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100350 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
9be49131363f79ad58a5deb4daf175a7b1c0ec66 04-Apr-2010 Chris Lattner <sabre@nondot.org> simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100350 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
28e23aa64c3c2c93dfa10856ea413b2086251fdf 04-Apr-2010 Chris Lattner <sabre@nondot.org> move EmitEncodingByte to AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100349 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
ca6190b108aeb4a2eeb6f5c6457bb17509b85d9d 04-Apr-2010 Chris Lattner <sabre@nondot.org> move EmitEncodingByte to AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100349 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
4bfddc846a0c7c332277099062c1a7b623d2bdec 04-Apr-2010 Chris Lattner <sabre@nondot.org> move EmitCFAByte to AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100348 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfPrinter.cpp
7a101f45c10082e9765ffec57a2d51f5fd0abc37 04-Apr-2010 Chris Lattner <sabre@nondot.org> move EmitCFAByte to AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100348 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/DwarfPrinter.cpp
fd2a3f6533db8f06b6be8b418a34452208fa1409 04-Apr-2010 Chris Lattner <sabre@nondot.org> inline EmitDifference away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100347 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
a64371828e27dcc30d38e7246dda0f35c1dfde40 04-Apr-2010 Chris Lattner <sabre@nondot.org> inline EmitDifference away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100347 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
66f717044652407ed716a3bf8d413f50446c9e23 04-Apr-2010 Chris Lattner <sabre@nondot.org> resolve a fixme.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100346 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
af8df264952698cfde59d99c96d4a0da9e4f5afa 04-Apr-2010 Chris Lattner <sabre@nondot.org> resolve a fixme.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100346 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b93558d9b161989f71297ecd69a173af141b802a 04-Apr-2010 Chris Lattner <sabre@nondot.org> move gettemplabel and getdwlabel to AsmPrinter and rename
them for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100345 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
c021572511f08372ae52fe8e31d3c307cab448fd 04-Apr-2010 Chris Lattner <sabre@nondot.org> move gettemplabel and getdwlabel to AsmPrinter and rename
them for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100345 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
26be1c167a76e02cc0f37a9a81115b9ad05c0fc6 04-Apr-2010 Chris Lattner <sabre@nondot.org> move uleb/sleb printing into AsmPrinter from DwarfPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100344 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/CMakeLists.txt
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
7e1a8f882f1baa1c0d5204373d6eb4cb7fc9f3ea 04-Apr-2010 Chris Lattner <sabre@nondot.org> move uleb/sleb printing into AsmPrinter from DwarfPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100344 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterDwarf.cpp
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/CMakeLists.txt
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
c143f0a7ff75e13d1878480965f68dd1aa1256cb 04-Apr-2010 Chris Lattner <sabre@nondot.org> more interface cleanup make some helpers static functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100343 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
17fedf216bc10c66e02694854f522cb602097005 04-Apr-2010 Chris Lattner <sabre@nondot.org> more interface cleanup make some helpers static functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100343 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
97c69b7c9f982bd1bd3bf1b67f82cb3778235939 04-Apr-2010 Chris Lattner <sabre@nondot.org> clean up the asmprinter header and privatize some stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100342 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
3f53c8398d81065736a784469c9dd5afff85673f 04-Apr-2010 Chris Lattner <sabre@nondot.org> clean up the asmprinter header and privatize some stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100342 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
a29bbb7cebddd0b111c04b2faa3bbe7ecd82ae32 04-Apr-2010 Chris Lattner <sabre@nondot.org> use stringref instead of strtol to avoid errno gymnastics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100341 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
65eeaad91d78b2a677ca889eaff60f6d807c7030 04-Apr-2010 Chris Lattner <sabre@nondot.org> use stringref instead of strtol to avoid errno gymnastics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100341 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinterInlineAsm.cpp
599df3c3c817cbf1839a29a321a955cfbd1e091a 04-Apr-2010 Chris Lattner <sabre@nondot.org> split inline asm support out to its own .cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100340 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/CMakeLists.txt
736e31d0cfd8a28c31741f39be606a11e7fc0036 04-Apr-2010 Chris Lattner <sabre@nondot.org> split inline asm support out to its own .cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100340 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/AsmPrinterInlineAsm.cpp
smPrinter/CMakeLists.txt
435a7333f07394dcaadbadb85d5db9fc6f3b000d 04-Apr-2010 Chris Lattner <sabre@nondot.org> inline processDebugLoc and simplify it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100339 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
285199502b08d7d2ac5f37ce5f94cb5e68cec197 04-Apr-2010 Chris Lattner <sabre@nondot.org> inline processDebugLoc and simplify it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100339 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
49318558ba975937d490250a6fde2d0ea40c41c5 04-Apr-2010 Chris Lattner <sabre@nondot.org> minor tidying.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100338 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
dfa107e45ac6a145c03376ecc0530d8ece358238 04-Apr-2010 Chris Lattner <sabre@nondot.org> minor tidying.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100338 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
610fbcb62924fc58dd7bbe95a69d33b3a05d8e09 04-Apr-2010 Chris Lattner <sabre@nondot.org> clean up the asmprinter interface a bit, rename a few
"Print" methods to "Emit". Emit is something that goes
to an mc streamer, Print is something that goes to a
raw_ostream (for inline asm)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100337 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
300a4c5640fb1c717ba0d7108d15aec1bd7eb396 04-Apr-2010 Chris Lattner <sabre@nondot.org> clean up the asmprinter interface a bit, rename a few
"Print" methods to "Emit". Emit is something that goes
to an mc streamer, Print is something that goes to a
raw_ostream (for inline asm)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100337 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
017c7f97bb1d77c393f15ebba21c92c31631df9f 04-Apr-2010 Chris Lattner <sabre@nondot.org> remove TargetMachine.h #include, also, TRI isn't used frequently
enough to warrant caching in AsmPrinter, so remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100336 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
9d1c1ada213c80135fbdda704175aae689daa6f9 04-Apr-2010 Chris Lattner <sabre@nondot.org> remove TargetMachine.h #include, also, TRI isn't used frequently
enough to warrant caching in AsmPrinter, so remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100336 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
761dabbf5fc8ba997d4173523a3d766962ab68cb 04-Apr-2010 Chris Lattner <sabre@nondot.org> lazily allocate the GCMetadataPrinters map and remove DenseMap
from the AsmPrinter interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100331 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e00b59f954c7e27d9d34abf90bfac969fb12f19a 04-Apr-2010 Chris Lattner <sabre@nondot.org> lazily allocate the GCMetadataPrinters map and remove DenseMap
from the AsmPrinter interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100331 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3eac1ed5c28f6fd3b670f996e71709c6b16ab9d6 04-Apr-2010 Chris Lattner <sabre@nondot.org> Momentous day: remove the "O" member from AsmPrinter. Now all
"asm printering" happens through MCStreamer. This also
Streamerizes PIC16 debug info, which escaped my attention.

This removes a leak from LLVMTargetMachine of the 'legacy'
output stream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100327 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LVMTargetMachine.cpp
b23569aff0a6d2b231cb93cc4acd0ac060ba560f 04-Apr-2010 Chris Lattner <sabre@nondot.org> Momentous day: remove the "O" member from AsmPrinter. Now all
"asm printering" happens through MCStreamer. This also
Streamerizes PIC16 debug info, which escaped my attention.

This removes a leak from LLVMTargetMachine of the 'legacy'
output stream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100327 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LVMTargetMachine.cpp
2ef7d86653f6a913948b533c525e1e3098485ab4 04-Apr-2010 Chris Lattner <sabre@nondot.org> now that all operand printing happens to specified streams, we can
print function level inline asm with EmitInlineAsm instead of writing
it directly to "O".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100326 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
de0f339ec3a5d804b85043174521efec4ad14991 04-Apr-2010 Chris Lattner <sabre@nondot.org> now that all operand printing happens to specified streams, we can
print function level inline asm with EmitInlineAsm instead of writing
it directly to "O".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100326 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
75e113cb5a14f3e749d1c84b3f5c91706e1c47e8 04-Apr-2010 Chris Lattner <sabre@nondot.org> remove the raw_ostream from various dwarf printing things.

The only thing left is LEB printing, which uses EmitRawText
for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100325 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/DwarfWriter.cpp
75f50725c1d7f86ee545337b155b4feac66627f6 04-Apr-2010 Chris Lattner <sabre@nondot.org> remove the raw_ostream from various dwarf printing things.

The only thing left is LEB printing, which uses EmitRawText
for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100325 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/DwarfWriter.cpp
1bf2b2853b43edaa360771c2934b39391784b754 04-Apr-2010 Chris Lattner <sabre@nondot.org> mcize the gc metadata printing stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100324 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/OcamlGCPrinter.cpp
CMetadataPrinter.cpp
7d73c7f0d618dd6661cd55834c58aa62f22b28fe 04-Apr-2010 Chris Lattner <sabre@nondot.org> mcize the gc metadata printing stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100324 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/OcamlGCPrinter.cpp
CMetadataPrinter.cpp
39db196b431ab5eb5a4ffff141ca1cca327ed7e8 04-Apr-2010 Chris Lattner <sabre@nondot.org> use EmitRawText instead of O in DwarfPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100323 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfPrinter.cpp
0b9bdb47bd9447dbf5a9cb827be588deb8cb2759 04-Apr-2010 Chris Lattner <sabre@nondot.org> use EmitRawText instead of O in DwarfPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100323 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfPrinter.cpp
3eb5dc17a0715f7c67caca590c8349f5599ff657 04-Apr-2010 Chris Lattner <sabre@nondot.org> fix PrintAsmOperand and PrintAsmMemoryOperand to pass down
raw_ostream to print to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100313 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c75c028a15a13786eee585aa634b4faf694dd00a 04-Apr-2010 Chris Lattner <sabre@nondot.org> fix PrintAsmOperand and PrintAsmMemoryOperand to pass down
raw_ostream to print to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100313 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6608f88bf90a76f35aa28b1ace35b52bc9b96e49 04-Apr-2010 Chris Lattner <sabre@nondot.org> change this back too


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100310 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d32c8a561734e05ff78da4435de0e85e0eed88e1 04-Apr-2010 Chris Lattner <sabre@nondot.org> change this back too


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100310 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3f72cb89251eeb79475edeecd88651cc6552785e 04-Apr-2010 Chris Lattner <sabre@nondot.org> check in what I tested. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100309 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e1783cadf77d6a8e637d0eb79e66f42228d7ec3c 04-Apr-2010 Chris Lattner <sabre@nondot.org> check in what I tested. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100309 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
691f640be57ccdfcc734d6ccba03996c69c8fefe 04-Apr-2010 Chris Lattner <sabre@nondot.org> MMI is always available, rename O -> OS in printInlineAsm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100308 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c1e0b76306dd1cf1809a15ff8466de30e3a800e5 04-Apr-2010 Chris Lattner <sabre@nondot.org> MMI is always available, rename O -> OS in printInlineAsm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100308 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
99fbae7d5b397f285b5e6a9d4da079f79214e1b3 04-Apr-2010 Chris Lattner <sabre@nondot.org> fix an ugly wart in the MCInstPrinter api where the
raw_ostream to print an instruction to had to be specified
at MCInstPrinter construction time instead of being able
to pick at each call to printInstruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100307 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
d374087be5360a353a4239a155b1227057145f48 04-Apr-2010 Chris Lattner <sabre@nondot.org> fix an ugly wart in the MCInstPrinter api where the
raw_ostream to print an instruction to had to be specified
at MCInstPrinter construction time instead of being able
to pick at each call to printInstruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100307 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
4e972531cf2d719522ab38ce3b5ad1a625579d03 04-Apr-2010 Chris Lattner <sabre@nondot.org> change a ton of code to not implicitly use the "O" raw_ostream
member of AsmPrinter. Instead, pass it in explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100306 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
35c33bd772b3cfb34fdc6b5c9171f955454d0043 04-Apr-2010 Chris Lattner <sabre@nondot.org> change a ton of code to not implicitly use the "O" raw_ostream
member of AsmPrinter. Instead, pass it in explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100306 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
483af3c218eaedddcf8873e6af35eba739f593ab 04-Apr-2010 Mon P Wang <wangmp@apple.com> Reapply address space patch after fixing an issue in MemCopyOptimizer.
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100304 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
20adc9dc4650313f017b27d9818eb2176238113d 04-Apr-2010 Mon P Wang <wangmp@apple.com> Reapply address space patch after fixing an issue in MemCopyOptimizer.
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100304 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
6d718817f982b804ff516e43a47f38aa78d2a4a9 04-Apr-2010 Chris Lattner <sabre@nondot.org> asmstreamerize the .size directive for function bodies, force clients
of printOffset to pass in a stream to print to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100296 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0c08d092049c025c9ccf7143e39f39dc4e30d6b4 04-Apr-2010 Chris Lattner <sabre@nondot.org> asmstreamerize the .size directive for function bodies, force clients
of printOffset to pass in a stream to print to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100296 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
002afa95b6aa586b01580b73ad65a1f3c6f6dca4 04-Apr-2010 Chris Lattner <sabre@nondot.org> emit the cygwin stub thing through mcstreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100295 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
fd60b8b4842c04e272a5cbdd404ed88d63d6df61 04-Apr-2010 Chris Lattner <sabre@nondot.org> emit the cygwin stub thing through mcstreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100295 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c468b2b89a6f687e31b43395d7077eec473f3470 04-Apr-2010 Chris Lattner <sabre@nondot.org> add a twine form of MCStreamer::EmitRawText, and mc'ize
a few more things in AsmPrinter.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
58bc4dd4a91443ddd3120b0a2f1801ad4d6aae1c 04-Apr-2010 Chris Lattner <sabre@nondot.org> add a twine form of MCStreamer::EmitRawText, and mc'ize
a few more things in AsmPrinter.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
dce97dd5b4bdc6cbcf2298a1cdc8e0523b3d1f12 04-Apr-2010 Chris Lattner <sabre@nondot.org> start moving towards emitting inline asm statements with
EmitInlineAsm. However, this attempt is foiled by operands
being emitted directly to "O" so I'll have to do some surgery
and finish MCizing the world.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100291 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f94f8dcda71b0069f9dbde979a81a58a49194ba2 04-Apr-2010 Chris Lattner <sabre@nondot.org> start moving towards emitting inline asm statements with
EmitInlineAsm. However, this attempt is foiled by operands
being emitted directly to "O" so I'll have to do some surgery
and finish MCizing the world.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100291 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
11b3d38ba67b9b142ed23203ba0f2cceaa1807cd 03-Apr-2010 Chris Lattner <sabre@nondot.org> add a new EmitInlineAsm function to asmprinter to handle inline asm.
If we have an MCAsmStreamer, we continue to emit asm textually,
otherwise we (currently) emit an error to errs and ignore it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100289 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
91bead790518fcf5cb26019fb1ebf2372e8a5b3f 03-Apr-2010 Chris Lattner <sabre@nondot.org> add a new EmitInlineAsm function to asmprinter to handle inline asm.
If we have an MCAsmStreamer, we continue to emit asm textually,
otherwise we (currently) emit an error to errs and ignore it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100289 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
02935a5f010ab909c809bbe702f737f6fd13aafd 03-Apr-2010 Chris Lattner <sabre@nondot.org> mc'ize comment printing around file scope inline asm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100288 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
47b7e5dae911bc98aa76fa5d2ee506c9304f941a 03-Apr-2010 Chris Lattner <sabre@nondot.org> mc'ize comment printing around file scope inline asm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100288 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
68a217169a546c904bb1dc8ac3f1afb36a29020c 03-Apr-2010 David Greene <greened@obbligato.org> Ok, third time's the charm. No changes from last time except the CMake
source addition. Apparently the buildbots were wrong about failures.

---

Add some switches helpful for debugging:

-print-before=<Pass Name>

Dump IR before running pass <Pass Name>.

-print-before-all

Dump IR before running each pass.

-print-after-all

Dump IR after running each pass.

These are helpful when tracking down a miscompilation. It is easy to
get IR dumps and do diffs on them, etc.

To make this work well, add a new getPrinterPass API to Pass so that
each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass
suitable for dumping out the kind of object the Pass works on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100249 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
achineFunction.cpp
achineFunctionPass.cpp
achineFunctionPrinterPass.cpp
5c8aa950fe3484b6e115647328c196f8be64f9ed 03-Apr-2010 David Greene <greened@obbligato.org> Ok, third time's the charm. No changes from last time except the CMake
source addition. Apparently the buildbots were wrong about failures.

---

Add some switches helpful for debugging:

-print-before=<Pass Name>

Dump IR before running pass <Pass Name>.

-print-before-all

Dump IR before running each pass.

-print-after-all

Dump IR after running each pass.

These are helpful when tracking down a miscompilation. It is easy to
get IR dumps and do diffs on them, etc.

To make this work well, add a new getPrinterPass API to Pass so that
each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass
suitable for dumping out the kind of object the Pass works on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100249 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
achineFunction.cpp
achineFunctionPass.cpp
achineFunctionPrinterPass.cpp
09165316263d5d0509abd0b7596b4155c5dc6bf5 02-Apr-2010 Dale Johannesen <dalej@apple.com> Skip debug info when looking for existing EH calls at the
beginning of a block.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100230 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
7249ef04557cc6f9af7b6df93728683be3b65048 02-Apr-2010 Dale Johannesen <dalej@apple.com> Skip debug info when looking for existing EH calls at the
beginning of a block.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100230 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
a226fcbadb7db1393bdfea948c37878cd0ef6cd6 02-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix anachronism.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100225 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeDbgValue.h
fd919200d4f678ff751f96a1d3b7e14785fb2338 02-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix anachronism.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100225 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeDbgValue.h
5da5274cba288ccb160edc1dda3c614f38d8f218 02-Apr-2010 Chris Lattner <sabre@nondot.org> fix the llvm-x86_64-linux buildbot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100223 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeDbgValue.h
42f95ca96b4dc252d334426729113d54c95f092a 02-Apr-2010 Chris Lattner <sabre@nondot.org> fix the llvm-x86_64-linux buildbot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100223 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeDbgValue.h
9ec907d62d48dc70c7e82c9696458f85c401fac1 02-Apr-2010 Chris Lattner <sabre@nondot.org> remove empty file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100222 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
achineFunctionPrinterPass.cpp
457c6c5ccbc49b97a1cc669051227fa27af8c5a9 02-Apr-2010 Chris Lattner <sabre@nondot.org> remove empty file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100222 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
achineFunctionPrinterPass.cpp
65657aea6fd982c141b764915a45d015b7057431 02-Apr-2010 Chris Lattner <sabre@nondot.org> stop using DebugLoc::getUnknownLoc()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100215 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineSSAUpdater.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
a4f2bb08de92ccec21cbb3d0a9518384b0173660 02-Apr-2010 Chris Lattner <sabre@nondot.org> stop using DebugLoc::getUnknownLoc()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100215 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineSSAUpdater.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
b9692a7da0e45bd941437ae1974ee6919aff5a34 02-Apr-2010 Chris Lattner <sabre@nondot.org> Switch the code generator (except the JIT) onto the new DebugLoc
representation. This eliminates the 'DILocation' MDNodes for
file/line/col tuples from -O0 -g codegen.

This remove the old DebugLoc class, making it a typedef for DebugLoc,
I'll rename NewDebugLoc next.

I didn't update the JIT to use the new apis, so it will continue to
work, but be as slow as before. Someone should eventually do this
or, better yet, rip out the JIT debug info stuff and build the JIT
on top of MC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100209 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
achineFunction.cpp
achineInstr.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
de4845c163a5847c82d7ce10ed0c320098bce6e0 02-Apr-2010 Chris Lattner <sabre@nondot.org> Switch the code generator (except the JIT) onto the new DebugLoc
representation. This eliminates the 'DILocation' MDNodes for
file/line/col tuples from -O0 -g codegen.

This remove the old DebugLoc class, making it a typedef for DebugLoc,
I'll rename NewDebugLoc next.

I didn't update the JIT to use the new apis, so it will continue to
work, but be as slow as before. Someone should eventually do this
or, better yet, rip out the JIT debug info stuff and build the JIT
on top of MC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100209 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
achineFunction.cpp
achineInstr.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
52ff54e483c6882e5876d1f8081feef428a459a4 02-Apr-2010 Evan Cheng <evan.cheng@apple.com> Correctly lower memset / memcpy of undef. It should be a nop. PR6767.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100208 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f28f8bc40eedc6304ab25dd8bed486fa08f51f70 02-Apr-2010 Evan Cheng <evan.cheng@apple.com> Correctly lower memset / memcpy of undef. It should be a nop. PR6767.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100208 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ddc54c42305891b695fb7a03f066e5111acd7478 02-Apr-2010 Evan Cheng <evan.cheng@apple.com> Revert 100204. It broke a bunch of tests and apparently changed what passes are run during codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100207 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineFunctionPass.cpp
achineFunctionPrinterPass.cpp
cf5862d8ac9562e633e6ef7cb55e67c2b7ca9c0a 02-Apr-2010 Evan Cheng <evan.cheng@apple.com> Revert 100204. It broke a bunch of tests and apparently changed what passes are run during codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100207 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineFunctionPass.cpp
achineFunctionPrinterPass.cpp
04e12609d98266b1716ee6ec8ec931e6f305cbe7 02-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Update CMake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100206 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
d0327f80ecb9d21fca8388efc591b86a30958889 02-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Update CMake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100206 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
e998d48e15811a6bd9b2c5874ed746e11b924702 02-Apr-2010 David Greene <greened@obbligato.org> Let's try this again. Re-apply 100143 including an apparent missing
<string> include. For some reason the buildbot choked on this while my
builds did not. It's probably due to a difference in system headers.

---

Add some switches helpful for debugging:

-print-before=<Pass Name>

Dump IR before running pass <Pass Name>.

-print-before-all

Dump IR before running each pass.

-print-after-all

Dump IR after running each pass.

These are helpful when tracking down a miscompilation. It is easy to
get IR dumps and do diffs on them, etc.

To make this work well, add a new getPrinterPass API to Pass so that
each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass
suitable for dumping out the kind of object the Pass works on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100204 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineFunctionPass.cpp
achineFunctionPrinterPass.cpp
434bd8551d71384648f2e155d76b5ddbc4d1b258 02-Apr-2010 David Greene <greened@obbligato.org> Let's try this again. Re-apply 100143 including an apparent missing
<string> include. For some reason the buildbot choked on this while my
builds did not. It's probably due to a difference in system headers.

---

Add some switches helpful for debugging:

-print-before=<Pass Name>

Dump IR before running pass <Pass Name>.

-print-before-all

Dump IR before running each pass.

-print-after-all

Dump IR after running each pass.

These are helpful when tracking down a miscompilation. It is easy to
get IR dumps and do diffs on them, etc.

To make this work well, add a new getPrinterPass API to Pass so that
each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass
suitable for dumping out the kind of object the Pass works on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100204 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineFunctionPass.cpp
achineFunctionPrinterPass.cpp
f9f760e09acb520d70f23cdbd6b2d288b9094a46 02-Apr-2010 Mon P Wang <wangmp@apple.com> Revert r100191 since it breaks objc in clang


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100199 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
e754d3fb852abdeaf910c7331eed60f6303597c1 02-Apr-2010 Mon P Wang <wangmp@apple.com> Revert r100191 since it breaks objc in clang


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100199 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
703dd7c7eda9ffea68170bd9d8cdbc74322825dc 02-Apr-2010 Mon P Wang <wangmp@apple.com> Reapply address space patch after fixing an issue in MemCopyOptimizer.
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100191 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
e33c848fa481b038d5ad0c7c898c33b2b27ec71e 02-Apr-2010 Mon P Wang <wangmp@apple.com> Reapply address space patch after fixing an issue in MemCopyOptimizer.
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100191 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
583bd1720b42702d7c02c197916919107f683d27 02-Apr-2010 Evan Cheng <evan.cheng@apple.com> After trivial coalescing, the MI being visited may have become a copy. Avoid adding it to CSE hash table since copies aren't being considered for CSE and they may be deleted.
rdar://7819990


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100170 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
db8771af286bc84267e7b5bd17eab51cd4ea552f 02-Apr-2010 Evan Cheng <evan.cheng@apple.com> After trivial coalescing, the MI being visited may have become a copy. Avoid adding it to CSE hash table since copies aren't being considered for CSE and they may be deleted.
rdar://7819990


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100170 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
139dcd7aa428c188facd672b1c5a0e299b298390 02-Apr-2010 Dale Johannesen <dalej@apple.com> Teach AnalyzeBranch, RemoveBranch and the branch
folder to be tolerant of debug info following the
branch(es) at the end of a block.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100168 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
93d6a7e9c21204c52d6efec6c672163e7de79660 02-Apr-2010 Dale Johannesen <dalej@apple.com> Teach AnalyzeBranch, RemoveBranch and the branch
folder to be tolerant of debug info following the
branch(es) at the end of a block.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100168 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
83852fdbe1e1f296033b7449ab29ee3bfc4828a5 02-Apr-2010 Eric Christopher <echristo@apple.com> Revert r100143.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100146 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineFunctionPass.cpp
achineFunctionPrinterPass.cpp
1d8f83d0a00e912c55ec0974eba6122666cc6fa1 02-Apr-2010 Eric Christopher <echristo@apple.com> Revert r100143.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100146 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineFunctionPass.cpp
achineFunctionPrinterPass.cpp
e815112bc2f937c1f7e763db8bc9dc446c47cdfe 02-Apr-2010 Devang Patel <dpatel@apple.com> Revert r100117.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100145 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c8e77640a53823b233f3f7a5c2be12aef9ebc69e 02-Apr-2010 Devang Patel <dpatel@apple.com> Revert r100117.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100145 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
86a7e009b9c72cfdeb186ab7f138b855950a9f29 02-Apr-2010 David Greene <greened@obbligato.org> Add some switches helpful for debugging:

-print-before=<Pass Name>

Dump IR before running pass <Pass Name>.

-print-before-all

Dump IR before running each pass.

-print-after-all

Dump IR after running each pass.

These are helpful when tracking down a miscompilation. It is easy to
get IR dumps and do diffs on them, etc.

To make this work well, add a new getPrinterPass API to Pass so that
each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass
suitable for dumping out the kind of object the Pass works on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100143 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineFunctionPass.cpp
achineFunctionPrinterPass.cpp
8ef3acba00c9c42d450fa52c7d3faebce1e507dd 02-Apr-2010 David Greene <greened@obbligato.org> Add some switches helpful for debugging:

-print-before=<Pass Name>

Dump IR before running pass <Pass Name>.

-print-before-all

Dump IR before running each pass.

-print-after-all

Dump IR after running each pass.

These are helpful when tracking down a miscompilation. It is easy to
get IR dumps and do diffs on them, etc.

To make this work well, add a new getPrinterPass API to Pass so that
each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass
suitable for dumping out the kind of object the Pass works on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100143 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineFunctionPass.cpp
achineFunctionPrinterPass.cpp
fa2e0b8f3b9304c6e6ee521d4cd02974b88d2a1c 01-Apr-2010 Devang Patel <dpatel@apple.com> Do not eagerly record known previous location. DBG_VALUE may not cause a new label due to one or other reason.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100134 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
24c20e2435be1ee2af5de486f7567f92cebaf8cd 01-Apr-2010 Devang Patel <dpatel@apple.com> Do not eagerly record known previous location. DBG_VALUE may not cause a new label due to one or other reason.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100134 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4a5fdcb5b8c91893fbf3cfce117ef15bd14d5b8a 01-Apr-2010 Evan Cheng <evan.cheng@apple.com> Skip checking preferred alignment of GVs defined in other translation units all together.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100133 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6cdb7e22aaa229d2b2845d7e8a5a11a30eeaac99 01-Apr-2010 Evan Cheng <evan.cheng@apple.com> Skip checking preferred alignment of GVs defined in other translation units all together.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100133 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7fed26826a06a92975666b6a555af27261827a4a 01-Apr-2010 Evan Cheng <evan.cheng@apple.com> - Avoid using floating point stores to implement memset unless the value is zero.
- Do not try to infer GV alignment unless its type is sized. It's not possible to infer alignment if it has opaque type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100118 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
94107ba9ceaa199f8e5c03912511b0619c84226d 01-Apr-2010 Evan Cheng <evan.cheng@apple.com> - Avoid using floating point stores to implement memset unless the value is zero.
- Do not try to infer GV alignment unless its type is sized. It's not possible to infer alignment if it has opaque type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100118 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d9bfc2b3ac57f002e702f8922afca448b0e14e3e 01-Apr-2010 Devang Patel <dpatel@apple.com> Skip instructions until new scope is seen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100117 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
58c7aa61d49f155a1d36b9c14273de5a630de8e1 01-Apr-2010 Devang Patel <dpatel@apple.com> Skip instructions until new scope is seen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100117 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6339775293e35038eef25d6194ff189d21ffce6b 01-Apr-2010 Devang Patel <dpatel@apple.com> Cosmetic changes.
Update comment, rename a local variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100116 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8935d90a9095edf5643ef4a362a64df706ea97be 01-Apr-2010 Devang Patel <dpatel@apple.com> Cosmetic changes.
Update comment, rename a local variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100116 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0b592c03bc7cc8c973f5fbda6c149c1b3de2bf84 01-Apr-2010 Evan Cheng <evan.cheng@apple.com> Fix sdisel memcpy, memset, memmove lowering:
1. Makes it possible to lower with floating point loads and stores.
2. Avoid unaligned loads / stores unless it's fast.
3. Fix some memcpy lowering logic bug related to when to optimize a
load from constant string into a constant.
4. Adjust x86 memcpy lowering threshold to make it more sane.
5. Fix x86 target hook so it uses vector and floating point memory
ops more effectively.
rdar://7774704


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100090 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
255f20f7f76e4ca1ac1c73294852cb6fcb18c77d 01-Apr-2010 Evan Cheng <evan.cheng@apple.com> Fix sdisel memcpy, memset, memmove lowering:
1. Makes it possible to lower with floating point loads and stores.
2. Avoid unaligned loads / stores unless it's fast.
3. Fix some memcpy lowering logic bug related to when to optimize a
load from constant string into a constant.
4. Adjust x86 memcpy lowering threshold to make it more sane.
5. Fix x86 target hook so it uses vector and floating point memory
ops more effectively.
rdar://7774704


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100090 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
48e1a9cab59c9f1b155f762a68c6f68aaeddedc7 01-Apr-2010 Bill Wendling <isanbard@gmail.com> Reapply r100056. It doesn't look like it's the one that's causing a failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100065 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
e543d161a0959a912efd20027ca98d3d0bf576ec 01-Apr-2010 Bill Wendling <isanbard@gmail.com> Reapply r100056. It doesn't look like it's the one that's causing a failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100065 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
15a729e9cc521bed831e738805313a109dee8544 01-Apr-2010 Bill Wendling <isanbard@gmail.com> Revert r100056. It was causing a failure on MSVC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100062 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
9e9cca424cf0374259706cbedec89507bf89bdcf 01-Apr-2010 Bill Wendling <isanbard@gmail.com> Revert r100056. It was causing a failure on MSVC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100062 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
d586848a72be7117fec179627c54e0dd6b34d7e8 01-Apr-2010 Stuart Hastings <stuart@apple.com> Reverting 100048; it broke two Frontend debug info tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100058 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
f8df814869368edd3f74bc81dca202f0d2a55b66 01-Apr-2010 Stuart Hastings <stuart@apple.com> Reverting 100048; it broke two Frontend debug info tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100058 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d5902dde9b8adc8942ba367430900209bc539e7a 01-Apr-2010 Bill Wendling <isanbard@gmail.com> Rewrite CorrectExtraCFGEdges() to make it more understandable.

* Set the "DestA" and "DestB" according to how they're understood by the
method. I.e., if one or both of them should point to the "fall through" block,
then point to the fall through block.

* Improve the loop that removes superfluous edges to be more understandable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100056 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
bbd51cd0a108ea4d47eb6f957e1409507097dfc9 01-Apr-2010 Bill Wendling <isanbard@gmail.com> Rewrite CorrectExtraCFGEdges() to make it more understandable.

* Set the "DestA" and "DestB" according to how they're understood by the
method. I.e., if one or both of them should point to the "fall through" block,
then point to the fall through block.

* Improve the loop that removes superfluous edges to be more understandable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100056 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
237a389a4739043ce735c30b9b1baed85ef4dc4b 31-Mar-2010 Stuart Hastings <stuart@apple.com> Debug info can now properly represent functions inside classes inside other functions. Partial fix for Radar 7424645.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100048 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
a88cb38d0220d5b0e4394f3280e1cec5f30ef4fc 31-Mar-2010 Stuart Hastings <stuart@apple.com> Debug info can now properly represent functions inside classes inside other functions. Partial fix for Radar 7424645.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100048 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
648940b9c1e4633dde4aa9728124faa35e7f186e 31-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Reduce string trashing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100038 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
bbb88db993af5f30eecc3139f9bf7c703e8ad7c1 31-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Reduce string trashing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100038 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
138c7ff4431ac423bea28f9381a14c5239dfb920 31-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> DwarfDebug: Allocate DIEValues with a BumpPtrAllocator. Most of them are
POD-like anyway, so we don't even care about calling their d'tors (DIEBlock
being the exception).

~6% less mallocs and ~1% compile time improvement on clang -O0 -g oggenc.c



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100035 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
345ef343ccc8c4e66166ae631c127136202e067b 31-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> DwarfDebug: Allocate DIEValues with a BumpPtrAllocator. Most of them are
POD-like anyway, so we don't even care about calling their d'tors (DIEBlock
being the exception).

~6% less mallocs and ~1% compile time improvement on clang -O0 -g oggenc.c



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100035 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
a8c5bd2e558231b16fbd156401bea1dad7d6bdda 31-Mar-2010 Chris Lattner <sabre@nondot.org> reduce indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99999 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
cfd3188a11dd71a6416f5b7aef29c47129f6df4e 31-Mar-2010 Chris Lattner <sabre@nondot.org> reduce indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99999 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
5df82554295322bcde46f76ceb1f326fc4983800 31-Mar-2010 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99998 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1d65ba732cd0957a0badea4634c9272d93c71612 31-Mar-2010 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99998 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fd37680370e1d88768b04afad59b176ca5f43c21 31-Mar-2010 Chris Lattner <sabre@nondot.org> MI != 0 is checked in the assert right above this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99995 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ff741ab70975c266b3a4dd652b93cfc53bfbc8c3 31-Mar-2010 Chris Lattner <sabre@nondot.org> MI != 0 is checked in the assert right above this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99995 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
202f10bae73c28a871d68f8fcb6aa6fb67ef41fa 31-Mar-2010 Chris Lattner <sabre@nondot.org> use the isDebugValue() predicate and pop_back_val()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99993 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
14d750d0ad97a7d7fa76c0177327cda3f32f876f 31-Mar-2010 Chris Lattner <sabre@nondot.org> use the isDebugValue() predicate and pop_back_val()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99993 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8143ce8cc63055804f3fb8eb7b13f2dc594c5b50 31-Mar-2010 Chris Lattner <sabre@nondot.org> assert is a function-like macro, not a control flow operator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99992 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ed7a77bfb2c8d527ea8ac1a947d3ed80fbfb5839 31-Mar-2010 Chris Lattner <sabre@nondot.org> assert is a function-like macro, not a control flow operator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99992 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a7ea0fbcb2c04cab4e52fe885559a426cb2ce770 31-Mar-2010 Chris Lattner <sabre@nondot.org> reduce indentation, fit in 80 cols and various other cosmetic cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99989 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
4dd816309162dc499c11cdd9a2bfaa535bad814a 31-Mar-2010 Chris Lattner <sabre@nondot.org> reduce indentation, fit in 80 cols and various other cosmetic cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99989 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
0ab86bed697bb390c97bd73a66cc4945ec75275b 31-Mar-2010 Chris Lattner <sabre@nondot.org> use the optimized debug info apis in sdisel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99986 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
23dbf6683b5de64bd0b2f05a5a311a98480b3a72 31-Mar-2010 Chris Lattner <sabre@nondot.org> use the optimized debug info apis in sdisel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99986 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0b44e49f000a4da6b9948bdaa923b48911d2f47a 31-Mar-2010 Chris Lattner <sabre@nondot.org> add new apis for getting/setting !dbg metadata on
instructions. In addition to being a convenience,
they are faster than the old apis, particularly when
not going from an MDKindID like people should be
doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99982 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
870cfcf9a6189b65a8ee805b93a2c737c0183e62 31-Mar-2010 Chris Lattner <sabre@nondot.org> add new apis for getting/setting !dbg metadata on
instructions. In addition to being a convenience,
they are faster than the old apis, particularly when
not going from an MDKindID like people should be
doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99982 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
76821a73c39a21f7116ef99aa60940b07aedefac 31-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99948 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
100f090adde26005b9f1eca96871dff52825b27b 31-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99948 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
e383a18a02da3c25c6b60ee055ddef373bf89955 31-Mar-2010 Devang Patel <dpatel@apple.com> Ignore invalid metadata.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99938 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
722f2290b800ea96670e923ee9a4aa3b9efa35e8 31-Mar-2010 Devang Patel <dpatel@apple.com> Ignore invalid metadata.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99938 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f4862b06ca84fae2bb80e4936b3b2e598419c704 30-Mar-2010 Mon P Wang <wangmp@apple.com> Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
A update of langref will occur in a subsequent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99928 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
808bab0169ab7d2e8dfdc72dd2c991cd8ff2396d 30-Mar-2010 Mon P Wang <wangmp@apple.com> Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
A update of langref will occur in a subsequent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99928 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
128fdd98acae4b74400a03b6940e8209c05e7474 30-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Introduce SpecificBumpPtrAllocator, a wrapper for BumpPtrAllocator which allows
only a single type of object to be allocated. Use it to make VNInfo destruction
typesafe.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99919 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
reAllocSplitting.cpp
991de14dd62dcbab4b31357ae22dc5b053ba50a0 30-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Introduce SpecificBumpPtrAllocator, a wrapper for BumpPtrAllocator which allows
only a single type of object to be allocated. Use it to make VNInfo destruction
typesafe.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99919 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
reAllocSplitting.cpp
3b197832bf569e331ee057aece06ecd99b13ba2f 30-Mar-2010 Chris Lattner <sabre@nondot.org> Rip out the 'is temporary' nonsense from the MCContext interface to
create symbols. It is extremely error prone and a source of a lot
of the remaining integrated assembler bugs on x86-64.

This fixes rdar://7807601.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99902 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfPrinter.cpp
achineBasicBlock.cpp
achineFunction.cpp
argetLoweringObjectFileImpl.cpp
9b97a73dedf736e14b04a3d1a153f10d25b2507b 30-Mar-2010 Chris Lattner <sabre@nondot.org> Rip out the 'is temporary' nonsense from the MCContext interface to
create symbols. It is extremely error prone and a source of a lot
of the remaining integrated assembler bugs on x86-64.

This fixes rdar://7807601.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99902 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfPrinter.cpp
achineBasicBlock.cpp
achineFunction.cpp
argetLoweringObjectFileImpl.cpp
1ac55a69f0e84c14ed2d4651dcd574f14f30e751 30-Mar-2010 Evan Cheng <evan.cheng@apple.com> Funky indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99901 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
87bd1916024497ceaf3cdc050e743a532813e82b 30-Mar-2010 Evan Cheng <evan.cheng@apple.com> Funky indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99901 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
98ca237866b93f0905a5262263713921dea4a265 30-Mar-2010 Devang Patel <dpatel@apple.com> There is no need to fall through after processing DBG_VALUE machine instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99899 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7ed631157738132f88125bc374850326f9b2f8cd 30-Mar-2010 Devang Patel <dpatel@apple.com> There is no need to fall through after processing DBG_VALUE machine instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99899 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a2e02dfa83224bcf056da7b488ef7257f3a45806 30-Mar-2010 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99895 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
7a8cf2822de1c69551588fc4395bdd0fec18611f 30-Mar-2010 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99895 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
75ae7ac964133d47df16b30d5dd23620e5f3f4a1 30-Mar-2010 Edwin Török <edwintorok@gmail.com> Reapply r99881 with some fixes: only call destructor in releaseMemory!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99883 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
01cb1b665da03e2b74c0724f71751e912ec8c2be 30-Mar-2010 Torok Edwin <edwintorok@gmail.com> Reapply r99881 with some fixes: only call destructor in releaseMemory!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99883 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
b433bf9e02a22cf11395ff6a40bd45056b4ec094 30-Mar-2010 Edwin Török <edwintorok@gmail.com> Revert 99881, it brooke smooshlab's llvm-gcc-i386-darwin9.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99882 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
226dd2ba992b1f00491c10c59ca1889825bf92b6 30-Mar-2010 Torok Edwin <edwintorok@gmail.com> Revert 99881, it brooke smooshlab's llvm-gcc-i386-darwin9.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99882 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5697fa998e62ff77965b4a7878ec102ea1245da8 30-Mar-2010 Edwin Török <edwintorok@gmail.com> Introduce another Reset() method in BumpPtrAllocator that calls a destructor
on all objects it has allocated, if they are all of the same size and alignment.
Use this to destruct all VNInfos allocated in LiveIntervalAnalysis (PR6653).

valnos is not reliable for this purpose, as seen in r99400
(which still leaked, and sometimes caused double frees).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99881 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
2a22004f6857c57dc483ea6180f0e1f86854bd13 30-Mar-2010 Torok Edwin <edwintorok@gmail.com> Introduce another Reset() method in BumpPtrAllocator that calls a destructor
on all objects it has allocated, if they are all of the same size and alignment.
Use this to destruct all VNInfos allocated in LiveIntervalAnalysis (PR6653).

valnos is not reliable for this purpose, as seen in r99400
(which still leaked, and sometimes caused double frees).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99881 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
20d2e38aa9ba1a833c58f85efbf1283e1aa7c44a 30-Mar-2010 Evan Cheng <evan.cheng@apple.com> Avoid being influenced by the presence of dbg_value instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99879 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegRewriter.cpp
28a1e486907104b85c5787345914917d74f0cf77 30-Mar-2010 Evan Cheng <evan.cheng@apple.com> Avoid being influenced by the presence of dbg_value instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99879 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegRewriter.cpp
308cd0e5c481389fc33d4b25742a9d6a99cf3c68 30-Mar-2010 Bill Wendling <isanbard@gmail.com> Re-add back in the slow way of determining of a clean-up should become a
catch-all. The "dominates" way won't catch all of the selectors which must be
changed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99850 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
201f5f039f25921b459263e4fb71e3dc4925ecf0 30-Mar-2010 Bill Wendling <isanbard@gmail.com> Re-add back in the slow way of determining of a clean-up should become a
catch-all. The "dominates" way won't catch all of the selectors which must be
changed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99850 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
19b59f45bddaaabef125d3deec372552a8f0df39 30-Mar-2010 Bill Wendling <isanbard@gmail.com> A more general (and simpler!) implementation of r99671. It performs a similar
transform. I.e., if a clean-up eh.selector call dominates the invoke of an
_Unwind_Resume_or_Rethrow, then we convert the eh.selector into a
catch-all. This patch, however, uses the DominatorTree information, and doesn't
go through the whole rigmarole of starting at the eh.exception call, finding the
corresponding URoR and eh.selector calls, and trying to trace through any number
of instruction types to get to them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99846 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
bfde644e8a99ffde095f04212d6ba77aa7b3bec7 30-Mar-2010 Bill Wendling <isanbard@gmail.com> A more general (and simpler!) implementation of r99671. It performs a similar
transform. I.e., if a clean-up eh.selector call dominates the invoke of an
_Unwind_Resume_or_Rethrow, then we convert the eh.selector into a
catch-all. This patch, however, uses the DominatorTree information, and doesn't
go through the whole rigmarole of starting at the eh.exception call, finding the
corresponding URoR and eh.selector calls, and trying to trace through any number
of instruction types to get to them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99846 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
9a9a4ac55b0f70ad14dd4a4e1f9ba5208f18fb67 30-Mar-2010 Devang Patel <dpatel@apple.com> Encode start location of debug value, communicated through DBG_VALUE machine instruction, in a variable's DIE.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99845 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
aead63c0337ed24053b8bdde8918aacdc66d8231 30-Mar-2010 Devang Patel <dpatel@apple.com> Encode start location of debug value, communicated through DBG_VALUE machine instruction, in a variable's DIE.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99845 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
f9d000304234675eb34c984e846251bb643bf170 29-Mar-2010 Evan Cheng <evan.cheng@apple.com> Fix PR4975. Avoid referencing empty vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99840 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8e36a5c960e07555d80fb98d71c692c20f3ea6c4 29-Mar-2010 Evan Cheng <evan.cheng@apple.com> Fix PR4975. Avoid referencing empty vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99840 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e392242edab8709353202295344ec92cc620c927 29-Mar-2010 Evan Cheng <evan.cheng@apple.com> Pool allocate SDDbgValue nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99836 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
31441b7e95e0840e1ae144e5db6f791d6a36bc60 29-Mar-2010 Evan Cheng <evan.cheng@apple.com> Pool allocate SDDbgValue nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99836 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
08f7b612ed2767db3f0ddd90159cdbd0f1ee65a0 29-Mar-2010 Chris Lattner <sabre@nondot.org> use RAII for ExceptionTimer too


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99833 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
c3b228c97851abf5c4552512df63b4bf98fd3c5a 29-Mar-2010 Chris Lattner <sabre@nondot.org> use RAII for ExceptionTimer too


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99833 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
b49c9f875f5e7519e158246519ddbb89a97707c8 29-Mar-2010 Chris Lattner <sabre@nondot.org> fix a variety of issues were we'd start DebugTimer but
not stop it by using RAII.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99832 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a909d6635135acd12175f9de86e2a0ad47501b6c 29-Mar-2010 Chris Lattner <sabre@nondot.org> fix a variety of issues were we'd start DebugTimer but
not stop it by using RAII.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99832 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
abc2b350dfc1e7fb434e35688d6f1a3b0ab71e96 29-Mar-2010 Devang Patel <dpatel@apple.com> Refactor code to push DILocation prcessing into DwarfDebug.cpp from AsmPrinter.cpp.
This is same as r99772 (which was reverted) with just one meaningful difference where two source lines exchanged their positions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99816 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
553881bddcdeb66c0ae06bf9f62ca63b9f29b2e8 29-Mar-2010 Devang Patel <dpatel@apple.com> Refactor code to push DILocation prcessing into DwarfDebug.cpp from AsmPrinter.cpp.
This is same as r99772 (which was reverted) with just one meaningful difference where two source lines exchanged their positions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99816 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
96507a3ae63d4b3252b3a7cb2c581a8972b99ccc 28-Mar-2010 Devang Patel <dpatel@apple.com> Revert 99772.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99778 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
de9b1efbe5650f2eef8a552a81e94a6e682e05f0 28-Mar-2010 Devang Patel <dpatel@apple.com> Revert 99772.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99778 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
b9eb9ebef6db1f9e7cc885c41d257cf5b1237e97 28-Mar-2010 Chris Lattner <sabre@nondot.org> add a statistic for the # times isel has to backtrack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99774 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
bed993d8a4ede75a24a142437057b42498ce5b9f 28-Mar-2010 Chris Lattner <sabre@nondot.org> add a statistic for the # times isel has to backtrack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99774 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
10356f0800602870e902de0ea383faf78024c0cb 28-Mar-2010 Devang Patel <dpatel@apple.com> Refactoring. Push DILocation processing in to DwarfDebug from AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99772 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
c7eae5ca4a5c9fd760ec3c38e1e46cd9fda113aa 28-Mar-2010 Devang Patel <dpatel@apple.com> Refactoring. Push DILocation processing in to DwarfDebug from AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99772 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
8b09306a76d9260af846a841f414bb10833a52fa 28-Mar-2010 Chris Lattner <sabre@nondot.org> finally remove the immAllOnesV_bc/immAllZerosV_bc patterns
and those derived from them. These are obnoxious because
they were written as: PatLeaf<(bitconvert). Not having an
argument was foiling adding better type checking for operand
count matching up with what was required (in this case,
bitconvert always requires an operand!)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99759 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
caa8870fe09f5526e611434b6bb9f7040c7dfa60 28-Mar-2010 Chris Lattner <sabre@nondot.org> finally remove the immAllOnesV_bc/immAllZerosV_bc patterns
and those derived from them. These are obnoxious because
they were written as: PatLeaf<(bitconvert). Not having an
argument was foiling adding better type checking for operand
count matching up with what was required (in this case,
bitconvert always requires an operand!)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99759 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c1900d9f5d5565be00eaa8c69bde61f6b95dc3c8 28-Mar-2010 Chris Lattner <sabre@nondot.org> comply with the wishes of a fixme.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5d9a1bce83a18a4f972c5974fa9d7fa3c4de001f 28-Mar-2010 Chris Lattner <sabre@nondot.org> comply with the wishes of a fixme.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e185c2a24de741374f1286111ac69d911b4f8ab0 28-Mar-2010 Chris Lattner <sabre@nondot.org> now that (parallel) is gone and a variety of bugs in targets
are cleaned up, we can remove an old fixme.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99741 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b0e483e2c47c122f58cec4c83e37ceef92c36aef 28-Mar-2010 Chris Lattner <sabre@nondot.org> now that (parallel) is gone and a variety of bugs in targets
are cleaned up, we can remove an old fixme.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99741 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
05a383ab4d46656b57c5b36337ca5e819350796d 28-Mar-2010 Chris Lattner <sabre@nondot.org> add an optimized form of OPC_EmitMergeInputChains for the 1, 0 and
1, 1 cases which are by-far the most frequent. This shrinks the X86
isel table from 77014 -> 74657 bytes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99740 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
aa4e3391c8814c6ce0bbc530ea4d5905414b2763 28-Mar-2010 Chris Lattner <sabre@nondot.org> add an optimized form of OPC_EmitMergeInputChains for the 1, 0 and
1, 1 cases which are by-far the most frequent. This shrinks the X86
isel table from 77014 -> 74657 bytes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99740 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
32ac9e77eb4519d019bf8a7c9c3be71dd21530c0 28-Mar-2010 Chris Lattner <sabre@nondot.org> don't add nodes to the now-dead nodes list multiple times, this
can cause a crash on crazy situations in msp430 when morph-node-to
is disabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99739 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
856fb395e46a8d485081acbf11928047d852c636 28-Mar-2010 Chris Lattner <sabre@nondot.org> don't add nodes to the now-dead nodes list multiple times, this
can cause a crash on crazy situations in msp430 when morph-node-to
is disabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99739 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c16022adcf2f6e76d8d0c9bf003d6ab7dbb8781b 28-Mar-2010 Chris Lattner <sabre@nondot.org> don't add flag nodes with chain results to the NowDeadNodes
list multiple times when MorphNodeTo can't be applied.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99735 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
19e37cbf4fa202fc7ca1d769e5ce476f83290dd5 28-Mar-2010 Chris Lattner <sabre@nondot.org> don't add flag nodes with chain results to the NowDeadNodes
list multiple times when MorphNodeTo can't be applied.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99735 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
92800f1a0d2d20c82a99a437c1096de4c2e388a4 27-Mar-2010 Chris Lattner <sabre@nondot.org> improve -debug-only=isel comments for cases when we don't enter a
scope due to obviously false predicate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99723 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a6f8693385636b18ae05e30f5017393ad1309bb2 27-Mar-2010 Chris Lattner <sabre@nondot.org> improve -debug-only=isel comments for cases when we don't enter a
scope due to obviously false predicate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99723 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7012a49c6957952e247b43516739d57daf28ad30 27-Mar-2010 Bill Wendling <isanbard@gmail.com> Forgot the part where we handle the ".llvm.eh.catch.all.value".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99697 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
e6b293b78d8eb3eb749771d2201ace3ecd076010 27-Mar-2010 Bill Wendling <isanbard@gmail.com> Forgot the part where we handle the ".llvm.eh.catch.all.value".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99697 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
6d2157b0bf5fd23d1d95b9decb87a552afa1d627 27-Mar-2010 Bill Wendling <isanbard@gmail.com> Return if we changed anything or not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99695 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
43de15f8a356293dd1b1c4dd321f90802fff5ce3 27-Mar-2010 Bill Wendling <isanbard@gmail.com> Return if we changed anything or not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99695 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
fe872e059a1136f3d4356895bfe6d4f315c9b559 27-Mar-2010 Bill Wendling <isanbard@gmail.com> If a selector has a call to ".llvm.eh.catch.all.value" that we haven't
converted, then use the initializer, since using the name itself won't work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99692 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
bfbd853958518981dc7a614a388bf93e1895d2b5 27-Mar-2010 Bill Wendling <isanbard@gmail.com> If a selector has a call to ".llvm.eh.catch.all.value" that we haven't
converted, then use the initializer, since using the name itself won't work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99692 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
58abbd9b3d35e908e579b96555f3b81c65f64216 27-Mar-2010 Bill Wendling <isanbard@gmail.com> If we mark clean-ups as clean-ups, then it could break when inlining through an
'invoke' instruction. You will get a situation like this:

bb:
%ehptr = eh.exception()
%sel = eh.selector(%ehptr, @per, 0);

...

bb2:
invoke _Unwind_Resume_or_Rethrow(%ehptr) %normal unwind to %lpad

lpad:
...

The unwinder will see the %sel call as a clean-up and, if it doesn't have a
catch further up the call stack, it will skip running it. But there *is* another
catch up the stack -- the catch for the %lpad. However, we can't see that. This
is fixed in code-gen, where we detect this situation, and convert the "clean-up"
selector call into a "catch-all" selector call. This gives us the correct
semantics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99671 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
2ad4aca8b2924065dfe51113ff197026a9c762c2 27-Mar-2010 Bill Wendling <isanbard@gmail.com> If we mark clean-ups as clean-ups, then it could break when inlining through an
'invoke' instruction. You will get a situation like this:

bb:
%ehptr = eh.exception()
%sel = eh.selector(%ehptr, @per, 0);

...

bb2:
invoke _Unwind_Resume_or_Rethrow(%ehptr) %normal unwind to %lpad

lpad:
...

The unwinder will see the %sel call as a clean-up and, if it doesn't have a
catch further up the call stack, it will skip running it. But there *is* another
catch up the stack -- the catch for the %lpad. However, we can't see that. This
is fixed in code-gen, where we detect this situation, and convert the "clean-up"
selector call into a "catch-all" selector call. This gives us the correct
semantics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99671 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
cad2210dad6c96b53b0d9a63b3caa74e7baa59aa 26-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Add few missed libcalls and correct names for others.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99656 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
de0118c324a3fb8b0b5afa8e46996d9b81666bfd 26-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Add few missed libcalls and correct names for others.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99656 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
aea51bd14e2af177717328b6a65e9cb026800c45 26-Mar-2010 Dale Johannesen <dalej@apple.com> Debug info shouldn't affect kills.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99637 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
4d12d3b70fe91e80852f9867acef327dbfaf77d6 26-Mar-2010 Dale Johannesen <dalej@apple.com> Debug info shouldn't affect kills.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99637 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
ae54e1b9db4e89e926f5e73b17d388dc1eb676fa 26-Mar-2010 Evan Cheng <evan.cheng@apple.com> LiveVariables should clear kill / dead markers first. This allows us to remove a hack in the scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99597 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
electionDAG/InstrEmitter.cpp
d05e8055362be52fc33dcc685ba2ae5c722506b5 26-Mar-2010 Evan Cheng <evan.cheng@apple.com> LiveVariables should clear kill / dead markers first. This allows us to remove a hack in the scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99597 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
electionDAG/InstrEmitter.cpp
70ca1daea686d7e87e1340dd996f973b9ae23490 26-Mar-2010 Evan Cheng <evan.cheng@apple.com> Try trivial remat before the coalescer gives up on a vr / physreg coalescing for fear of tying up a physical register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99575 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9f689486094303aff800093cf36d95023da02025 26-Mar-2010 Evan Cheng <evan.cheng@apple.com> Try trivial remat before the coalescer gives up on a vr / physreg coalescing for fear of tying up a physical register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99575 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c0c2e93f4b00a9373e38818790802276f24855f3 26-Mar-2010 Dale Johannesen <dalej@apple.com> Handle DEBUG_VALUE in this pass.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99573 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeExts.cpp
1feeadac1baa7c8725dcd8755abfe90d8defb7df 26-Mar-2010 Dale Johannesen <dalej@apple.com> Handle DEBUG_VALUE in this pass.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99573 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeExts.cpp
ccf2da5a319042969442b1633fc2f95b0aee9573 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99544 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
460e479b1964d5a8caf85b11e4b94e530db38fcf 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99544 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b9a3008079b89fcfc2cde8c46f4db45536260166 25-Mar-2010 Chris Lattner <sabre@nondot.org> fix a valgrind error on copy-constructor-synthesis.cpp, which is caused when
the custom insertion hook deletes the instruction, then we try to set dead
flags on it. Neither the code that I added nor the code that was there
before was safe.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99538 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
7bf198fd607b356e767e0577cac81c3491c4bc90 25-Mar-2010 Chris Lattner <sabre@nondot.org> fix a valgrind error on copy-constructor-synthesis.cpp, which is caused when
the custom insertion hook deletes the instruction, then we try to set dead
flags on it. Neither the code that I added nor the code that was there
before was safe.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99538 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
9bc4e57cc092ccdb694ca9783dc36617b9dab51e 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Remove an unused option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99537 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
fd59f4cd3d099bf737a01eb75240fbf8e51cab62 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Remove an unused option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99537 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
8b1c07a24ab6f73e62313765742b5a0b6b38a207 25-Mar-2010 Devang Patel <dpatel@apple.com> Add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99507 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
2ddefecfa063b99550bd1fc9fd53efe433be54fb 25-Mar-2010 Devang Patel <dpatel@apple.com> Add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99507 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
a77e51ef30db86c78c4ab0c0b377cfbc4da4892e 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Scheduler assumes SDDbgValue nodes are in source order. That's true currently. But add an assertion to verify it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99501 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
4ec9bd9a6f92a10185870bae2cebce199f6acc5a 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Scheduler assumes SDDbgValue nodes are in source order. That's true currently. But add an assertion to verify it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99501 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
0de5856fbeb6a3e9001d478f4c6df257154d6a87 25-Mar-2010 Chris Lattner <sabre@nondot.org> Change tblgen to emit FOOISD opcode names as two
bytes instead of one byte. This is important because
we're running up to too many opcodes to fit in a byte
and it is aggrevated by FIRST_TARGET_MEMORY_OPCODE
making the numbering sparse. This just bites the
bullet and bloats out the table. In practice, this
increases the size of the x86 isel table from 74.5K
to 76K. I think we'll cope :)

This fixes rdar://7791648


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99494 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d5d5a3dcbaa4e7f394ba045e2d7d0ec3aa76f50c 25-Mar-2010 Chris Lattner <sabre@nondot.org> Change tblgen to emit FOOISD opcode names as two
bytes instead of one byte. This is important because
we're running up to too many opcodes to fit in a byte
and it is aggrevated by FIRST_TARGET_MEMORY_OPCODE
making the numbering sparse. This just bites the
bullet and bloats out the table. In practice, this
increases the size of the x86 isel table from 74.5K
to 76K. I think we'll cope :)

This fixes rdar://7791648


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99494 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fbd664a8030a17e7731b2d85839cca9ceefb196c 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Remove a fixme that doesn't make sense any more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
167bda4baa9482fa72d7b320aaa8aee50a0aa520 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Remove a fixme that doesn't make sense any more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
ef134fd771b161666b5417dc2ed4594f7927b1eb 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Make sure SDDbgValue.Invalid is initialized to false by all the constructors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99487 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeDbgValue.h
c388ace6f9012c503630eb633e3977e0fc42bb00 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Make sure SDDbgValue.Invalid is initialized to false by all the constructors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99487 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeDbgValue.h
cc2f056d727637ecbb355842c575d280024f0040 25-Mar-2010 Chris Lattner <sabre@nondot.org> Make the NDEBUG assertion stronger and more clear what is
happening.

Enhance scheduling to set the DEAD flag on implicit defs
more aggressively. Before, we'd set an implicit def operand
to dead if it were present in the SDNode corresponding to
the machineinstr but had no use. Now we do it in this case
AND if the implicit def does not exist in the SDNode at all.

This exposes a couple of problems: one is the FIXME, which
causes a live intervals crash on CodeGen/X86/sibcall.ll.
The second is that it makes machinecse and licm more
aggressive (which is a good thing) but also exposes a case
where licm hoists a set0 and then it doesn't get resunk.

Talking to codegen folks about both these issues, but I need
this patch in in the meantime.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99485 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
47cdf4abff20eb9d7d05406cc1a9be2890ed39bb 25-Mar-2010 Chris Lattner <sabre@nondot.org> Make the NDEBUG assertion stronger and more clear what is
happening.

Enhance scheduling to set the DEAD flag on implicit defs
more aggressively. Before, we'd set an implicit def operand
to dead if it were present in the SDNode corresponding to
the machineinstr but had no use. Now we do it in this case
AND if the implicit def does not exist in the SDNode at all.

This exposes a couple of problems: one is the FIXME, which
causes a live intervals crash on CodeGen/X86/sibcall.ll.
The second is that it makes machinecse and licm more
aggressive (which is a good thing) but also exposes a case
where licm hoists a set0 and then it doesn't get resunk.

Talking to codegen folks about both these issues, but I need
this patch in in the meantime.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99485 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
4575d32812f946d69cd29c306b5e323f12fef37c 25-Mar-2010 Chris Lattner <sabre@nondot.org> reapply 99444/99445, which I speculatively reverted in
r99453.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
3d7d07ef038696cefcaf3ce5335072964199a78d 25-Mar-2010 Chris Lattner <sabre@nondot.org> reapply 99444/99445, which I speculatively reverted in
r99453.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
fd9760502d0fc87ac49dac834660a657f6b78370 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Change how dbg_value sdnodes are converted into machine instructions. Their placement should be determined by the relative order of incoming llvm instructions. The scheduler will now use the SDNode ordering information to determine where to insert them. A dbg_value instruction is inserted after the instruction with the last highest source order and before the instruction with the next highest source order. It will optimize the placement by inserting right after the instruction that produces the value if they have consecutive order numbers.

Here is a theoretical example that illustrates why the placement is important.

tmp1 =
store tmp1 -> x
...
tmp2 = add ...
...
call
...
store tmp2 -> x

Now mem2reg comes along:

tmp1 =
dbg_value (tmp1 -> x)
...
tmp2 = add ...
...
call
...
dbg_value (tmp2 -> x)

When the debugger examine the value of x after the add instruction but before the call, it should have the value of tmp1.

Furthermore, for dbg_value's that reference constants, they should not be emitted at the beginning of the block (since they do not have "producers").

This patch also cleans up how SDISel manages DbgValue nodes. It allow a SDNode to be referenced by multiple SDDbgValue nodes. When a SDNode is deleted, it uses the information to find the SDDbgValues and invalidate them. They are not deleted until the corresponding SelectionDAG is destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99469 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/SDNodeDbgValue.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
bfcb3051899b7141a946d769fcf6e8a8453bc530 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Change how dbg_value sdnodes are converted into machine instructions. Their placement should be determined by the relative order of incoming llvm instructions. The scheduler will now use the SDNode ordering information to determine where to insert them. A dbg_value instruction is inserted after the instruction with the last highest source order and before the instruction with the next highest source order. It will optimize the placement by inserting right after the instruction that produces the value if they have consecutive order numbers.

Here is a theoretical example that illustrates why the placement is important.

tmp1 =
store tmp1 -> x
...
tmp2 = add ...
...
call
...
store tmp2 -> x

Now mem2reg comes along:

tmp1 =
dbg_value (tmp1 -> x)
...
tmp2 = add ...
...
call
...
dbg_value (tmp2 -> x)

When the debugger examine the value of x after the add instruction but before the call, it should have the value of tmp1.

Furthermore, for dbg_value's that reference constants, they should not be emitted at the beginning of the block (since they do not have "producers").

This patch also cleans up how SDISel manages DbgValue nodes. It allow a SDNode to be referenced by multiple SDDbgValue nodes. When a SDNode is deleted, it uses the information to find the SDDbgValues and invalidate them. They are not deleted until the corresponding SelectionDAG is destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99469 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/SDNodeDbgValue.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
83975ff16df9495a1b2a7809d262faa3284bc301 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Avoid being influenced by dbg_value instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99465 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
impleRegisterCoalescing.cpp
48f2cb926e2512a1c4c33ca5a9e757de1c12036c 25-Mar-2010 Evan Cheng <evan.cheng@apple.com> Avoid being influenced by dbg_value instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99465 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
impleRegisterCoalescing.cpp
ed62517410e3e16d5c80bad448063c1bc9e6ad20 25-Mar-2010 Chris Lattner <sabre@nondot.org> revert 99444/99445. This doesn't cause the failure of
2006-07-19-stwbrx-crash.ll for me, but it's the only likely
patch in the blame list of several bots. Lets see if this
fixes it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99453 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
d41952da109565ab11b7f435c39a0c524c75298e 25-Mar-2010 Chris Lattner <sabre@nondot.org> revert 99444/99445. This doesn't cause the failure of
2006-07-19-stwbrx-crash.ll for me, but it's the only likely
patch in the blame list of several bots. Lets see if this
fixes it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99453 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
5d957ad9d56383c90eef0576413b0c94f4c34222 24-Mar-2010 Chris Lattner <sabre@nondot.org> remove dead argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99445 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
4020670195e96f98f949737f95dcd4916282a5e8 24-Mar-2010 Chris Lattner <sabre@nondot.org> remove dead argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99445 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
389f3b84f5a1535bb9be169ff1896c24723764c9 24-Mar-2010 Chris Lattner <sabre@nondot.org> split EmitNode in half to reduce indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99444 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
c243dea003bfe11cb4cdc0cef80997b06b96cb21 24-Mar-2010 Chris Lattner <sabre@nondot.org> split EmitNode in half to reduce indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99444 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
e485a5d1f8105b01365702ef802904c0f22c4f1f 24-Mar-2010 Devang Patel <dpatel@apple.com> Use SP filename directly instead of SP's context's filename.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99429 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9bb59a2bdc470c1b68a90a597ffa3f3bc8fbf22b 24-Mar-2010 Devang Patel <dpatel@apple.com> Use SP filename directly instead of SP's context's filename.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99429 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6f3af6e9613e7998f18f3f7e8e6f78e949a77229 24-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert Edwin's change that is breaking MultiSource/Applications/ClamAV/clamscan.
--- Reverse-merging r99400 into '.':
D test/CodeGen/Generic/2010-03-24-liveintervalleak.ll
U lib/CodeGen/LiveIntervalAnalysis.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99419 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d6a6b3b7563a3f54ba48d465fc03ee10bbccb7a8 24-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert Edwin's change that is breaking MultiSource/Applications/ClamAV/clamscan.
--- Reverse-merging r99400 into '.':
D test/CodeGen/Generic/2010-03-24-liveintervalleak.ll
U lib/CodeGen/LiveIntervalAnalysis.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99419 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
44c4da8634ded826be22f2188ef3699ac96e71e9 24-Mar-2010 Edwin Török <edwintorok@gmail.com> Fix memory leak in liveintervals: the destructor for VNInfos must be called,
otherwise the SmallVector it contains doesn't free its memory.
In most cases LiveIntervalAnalysis could get away by not calling the destructor,
because VNInfos are bumpptr-allocated, and smallvectors usually don't grow.
However when the SmallVector does grow it always leaks.

This is the valgrind shown leak from the original testcase:
==8206== 18,304 bytes in 151 blocks are definitely lost in loss record 164 of 164
==8206== at 0x4A079C7: operator new(unsigned long) (vg_replace_malloc.c:220)
==8206== by 0x4DB7A7E: llvm::SmallVectorBase::grow_pod(unsigned long, unsigned long) (in /home/edwin/clam/git/builds/defaul
t/libclamav/.libs/libclamav.so.6.1.0)
==8206== by 0x4F90382: llvm::VNInfo::addKill(llvm::SlotIndex) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libcl
amav.so.6.1.0)
==8206== by 0x5126B5C: llvm::LiveIntervals::handleVirtualRegisterDef(llvm::MachineBasicBlock*, llvm::ilist_iterator<llvm::M
achineInstr>, llvm::SlotIndex, llvm::MachineOperand&, unsigned int, llvm::LiveInterval&) (in /home/edwin/clam/git/builds/defau
lt/libclamav/.libs/libclamav.so.6.1.0)
==8206== by 0x512725E: llvm::LiveIntervals::handleRegisterDef(llvm::MachineBasicBlock*, llvm::ilist_iterator<llvm::MachineI
nstr>, llvm::SlotIndex, llvm::MachineOperand&, unsigned int) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libclamav
.so.6.1.0)
==8206== by 0x51278A8: llvm::LiveIntervals::computeIntervals() (in /home/edwin/clam/git/builds/default/libclamav/.libs/libc
lamav.so.6.1.0)
==8206== by 0x5127CB4: llvm::LiveIntervals::runOnMachineFunction(llvm::MachineFunction&) (in /home/edwin/clam/git/builds/de
fault/libclamav/.libs/libclamav.so.6.1.0)
==8206== by 0x4DAE935: llvm::FPPassManager::runOnFunction(llvm::Function&) (in /home/edwin/clam/git/builds/default/libclama
v/.libs/libclamav.so.6.1.0)
==8206== by 0x4DAEB10: llvm::FunctionPassManagerImpl::run(llvm::Function&) (in /home/edwin/clam/git/builds/default/libclama
v/.libs/libclamav.so.6.1.0)
==8206== by 0x4DAED3D: llvm::FunctionPassManager::run(llvm::Function&) (in /home/edwin/clam/git/builds/default/libclamav/.l
ibs/libclamav.so.6.1.0)
==8206== by 0x4D8BE8E: llvm::JIT::runJITOnFunctionUnlocked(llvm::Function*, llvm::MutexGuard const&) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libclamav.so.6.1.0)
==8206== by 0x4D8CA72: llvm::JIT::getPointerToFunction(llvm::Function*) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libclamav.so.6.1.0)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99400 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
15417383b96f9035a00bab5c13746f59e91e35e0 24-Mar-2010 Torok Edwin <edwintorok@gmail.com> Fix memory leak in liveintervals: the destructor for VNInfos must be called,
otherwise the SmallVector it contains doesn't free its memory.
In most cases LiveIntervalAnalysis could get away by not calling the destructor,
because VNInfos are bumpptr-allocated, and smallvectors usually don't grow.
However when the SmallVector does grow it always leaks.

This is the valgrind shown leak from the original testcase:
==8206== 18,304 bytes in 151 blocks are definitely lost in loss record 164 of 164
==8206== at 0x4A079C7: operator new(unsigned long) (vg_replace_malloc.c:220)
==8206== by 0x4DB7A7E: llvm::SmallVectorBase::grow_pod(unsigned long, unsigned long) (in /home/edwin/clam/git/builds/defaul
t/libclamav/.libs/libclamav.so.6.1.0)
==8206== by 0x4F90382: llvm::VNInfo::addKill(llvm::SlotIndex) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libcl
amav.so.6.1.0)
==8206== by 0x5126B5C: llvm::LiveIntervals::handleVirtualRegisterDef(llvm::MachineBasicBlock*, llvm::ilist_iterator<llvm::M
achineInstr>, llvm::SlotIndex, llvm::MachineOperand&, unsigned int, llvm::LiveInterval&) (in /home/edwin/clam/git/builds/defau
lt/libclamav/.libs/libclamav.so.6.1.0)
==8206== by 0x512725E: llvm::LiveIntervals::handleRegisterDef(llvm::MachineBasicBlock*, llvm::ilist_iterator<llvm::MachineI
nstr>, llvm::SlotIndex, llvm::MachineOperand&, unsigned int) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libclamav
.so.6.1.0)
==8206== by 0x51278A8: llvm::LiveIntervals::computeIntervals() (in /home/edwin/clam/git/builds/default/libclamav/.libs/libc
lamav.so.6.1.0)
==8206== by 0x5127CB4: llvm::LiveIntervals::runOnMachineFunction(llvm::MachineFunction&) (in /home/edwin/clam/git/builds/de
fault/libclamav/.libs/libclamav.so.6.1.0)
==8206== by 0x4DAE935: llvm::FPPassManager::runOnFunction(llvm::Function&) (in /home/edwin/clam/git/builds/default/libclama
v/.libs/libclamav.so.6.1.0)
==8206== by 0x4DAEB10: llvm::FunctionPassManagerImpl::run(llvm::Function&) (in /home/edwin/clam/git/builds/default/libclama
v/.libs/libclamav.so.6.1.0)
==8206== by 0x4DAED3D: llvm::FunctionPassManager::run(llvm::Function&) (in /home/edwin/clam/git/builds/default/libclamav/.l
ibs/libclamav.so.6.1.0)
==8206== by 0x4D8BE8E: llvm::JIT::runJITOnFunctionUnlocked(llvm::Function*, llvm::MutexGuard const&) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libclamav.so.6.1.0)
==8206== by 0x4D8CA72: llvm::JIT::getPointerToFunction(llvm::Function*) (in /home/edwin/clam/git/builds/default/libclamav/.libs/libclamav.so.6.1.0)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99400 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d2560964a3e920821da3cbfe4c06fb6b0b73ae8e 24-Mar-2010 Evan Cheng <evan.cheng@apple.com> dbg_value may end a block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99378 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
2250425d6e44558f9d333a5c7faef33744f561d6 24-Mar-2010 Evan Cheng <evan.cheng@apple.com> dbg_value may end a block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99378 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
53ea1f185f7a15b80b68e6124fa0e41eb8648d74 24-Mar-2010 Dan Gohman <gohman@apple.com> Remove the ConvertActions table and associated code, which is unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
0f920e55fcdc5c678a389e2aa4c792be5062c4ea 24-Mar-2010 Dan Gohman <gohman@apple.com> Remove the ConvertActions table and associated code, which is unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
1296c8c5a5aa965e377f011b4b3d742b3a80f9f8 23-Mar-2010 Dan Gohman <gohman@apple.com> Revert 99335. getTypeToExpandTo's iterative behavior is actually
needed here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99339 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
bc7a902713c4e3f13a93c383e647d2a18712f447 23-Mar-2010 Dan Gohman <gohman@apple.com> Revert 99335. getTypeToExpandTo's iterative behavior is actually
needed here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99339 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
37d4cb15530e2548de231844437786fcd162af28 23-Mar-2010 Dan Gohman <gohman@apple.com> Remove getTypeToExpandTo, since it isn't adding much value
beyond just calling getTypeToTransformTo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99335 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
349074896f17cdebf484f6be97248c6545ecf93b 23-Mar-2010 Dan Gohman <gohman@apple.com> Remove getTypeToExpandTo, since it isn't adding much value
beyond just calling getTypeToTransformTo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99335 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
e3bd242f787abda9e2df6aad53327b38900bcd59 23-Mar-2010 Evan Cheng <evan.cheng@apple.com> Ignore dbg_value's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99321 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
f1250eeadf39ed34c852d43de6c6780d5d5176dc 23-Mar-2010 Evan Cheng <evan.cheng@apple.com> Ignore dbg_value's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99321 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b24e42ee5a9aec166bc2ceaa773fe55835c7bb35 23-Mar-2010 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99319 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
112e5e7eff408cb106386a0641db258048bcc836 23-Mar-2010 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99319 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
f50a4230014a4c5839f5bbe97528443466cddf59 23-Mar-2010 Chris Lattner <sabre@nondot.org> Fix PR6673: updating the callback should not clear the map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99227 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
ea16ea59011ce6d5d9baaab16c33b1457ceab0da 23-Mar-2010 Chris Lattner <sabre@nondot.org> Fix PR6673: updating the callback should not clear the map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99227 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
7ac3983d770591af6acf0e719fe45cb735568187 23-Mar-2010 Devang Patel <dpatel@apple.com> Emit DW_AT_low_pc and DW_AT_high_pc attributes for TAG_compile_unit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99225 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4a602caf2e973f4446f4eec366124077ce91d06d 23-Mar-2010 Devang Patel <dpatel@apple.com> Emit DW_AT_low_pc and DW_AT_high_pc attributes for TAG_compile_unit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99225 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e76111a0ed9970f98e133d6b3e8d697c94298e26 22-Mar-2010 Devang Patel <dpatel@apple.com> DW_AT_stmt_list attribute attached with a compile unit encodes offset of line number information for this compile unit in debug_line section. This offset is always zero when only one compile unit is emitted in a object file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99223 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0493f95a2cc8f4faea3df1b97d613ae87c670153 22-Mar-2010 Devang Patel <dpatel@apple.com> DW_AT_stmt_list attribute attached with a compile unit encodes offset of line number information for this compile unit in debug_line section. This offset is always zero when only one compile unit is emitted in a object file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99223 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c69189190c46ee75fbd5d55c2827e05a41abfb27 22-Mar-2010 Evan Cheng <evan.cheng@apple.com> Reduce indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99214 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
a69ec09364213311f1ced39271a30f39076b207e 22-Mar-2010 Evan Cheng <evan.cheng@apple.com> Reduce indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99214 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
2944ced3daaaa3b568c1604f69656a1c616a40d4 22-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Fix a memory leak from DIE::addSiblingOffset() by adding the DIEValue
it allocates to DwarfDebug::DIEValues.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99196 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
638fe8dd62f0bd37a0ae7374eea280c224a84b6f 22-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Fix a memory leak from DIE::addSiblingOffset() by adding the DIEValue
it allocates to DwarfDebug::DIEValues.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99196 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
214197cf1bbbf826023d83ac8f02c8559f3cd98e 22-Mar-2010 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99195 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
fc91114a2e622776d003d121eebc3c1b79f418f3 22-Mar-2010 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99195 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
3daefb714fe9693ba7032fb8c5137dee3ae8f1d7 21-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Free SavedLI even if SimpleRegisterCoalescing::JoinCopy() returns early.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99113 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
6b4c12db13cf7dd570b12b6373f6b9b839f7d788 21-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Free SavedLI even if SimpleRegisterCoalescing::JoinCopy() returns early.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99113 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
4739e8492ddee17ca9bcb8cc514216739ffa5c72 19-Mar-2010 Bob Wilson <bob.wilson@apple.com> Stop trying to merge identical jump tables. This had been inadvertently
disabled for several months (since svn r88806) and no one noticed. My fix
for pr6543 yesterday reenabled it, but broke the ARM port's code for using
TBB/TBH. Rather than adding a target hook to disable merging for Thumb2 only,
I'm just taking this out. It is not common to have identical jump tables,
the code we used to merge them was O(N^2), and it only helps code size, not
performance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98977 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineFunction.cpp
80d23705e6df49a41298fd345be6f8a8d72f4fd0 19-Mar-2010 Bob Wilson <bob.wilson@apple.com> Stop trying to merge identical jump tables. This had been inadvertently
disabled for several months (since svn r88806) and no one noticed. My fix
for pr6543 yesterday reenabled it, but broke the ARM port's code for using
TBB/TBH. Rather than adding a target hook to disable merging for Thumb2 only,
I'm just taking this out. It is not common to have identical jump tables,
the code we used to merge them was O(N^2), and it only helps code size, not
performance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98977 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineFunction.cpp
242cfb9313ebd53ae2c91c10f706c9ed8699e9a1 19-Mar-2010 Mon P Wang <wangmp@apple.com> Fixed a widening bug where we were not using the correct size for the load


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98920 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
c1e5d491a0bd99a71c87f6a69bafbecd2f948c82 19-Mar-2010 Mon P Wang <wangmp@apple.com> Fixed a widening bug where we were not using the correct size for the load


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98920 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
c761f639f56add3f00ac84e2379d30d648a8bb81 18-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Get rid of target-specific nodes for fp16 <-> fp32 conversion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98888 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f0d500768d1a42e91c6324e6c8677cbe26df6e27 18-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Get rid of target-specific nodes for fp16 <-> fp32 conversion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98888 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7616a1ef5c411f4503cc99bf0a12a863551edf95 18-Mar-2010 Dan Gohman <gohman@apple.com> Define placement new wrappers for BumpPtrAllocator and
RecyclingAllocator to allow client code to be simpler, and
simplify several clients.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98847 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAG.cpp
9553188fccbf0ae9c5b6bef26d0d2bd5feff8b59 18-Mar-2010 Dan Gohman <gohman@apple.com> Define placement new wrappers for BumpPtrAllocator and
RecyclingAllocator to allow client code to be simpler, and
simplify several clients.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98847 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAG.cpp
1f8f580940e6374729d9190b931175c8636d8ad2 18-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix pr6543: svn r88806 changed MachineJumpTableInfo::getJumpTableIndex() to
always create a new jump table. The intention was to avoid merging jump
tables in SelectionDAGBuilder, and to wait for the branch folding pass to
merge tables. Unfortunately, the same getJumpTableIndex() method is also
used to merge tables in branch folding, so as a result of this change
branch tables are never merged. Worse, the branch folding code is expecting
getJumpTableIndex to always return the index of an existing table, but with
this change, it never does so. In at least some cases, e.g., pr6543, this
creates references to non-existent tables.

I've fixed the problem by adding a new createJumpTableIndex function, which
will always create a new table, and I've changed getJumpTableIndex to only
look at existing tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98845 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAGBuilder.cpp
d1ec31dca534a8816d7f2fcbfdc7ed4476b471d3 18-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix pr6543: svn r88806 changed MachineJumpTableInfo::getJumpTableIndex() to
always create a new jump table. The intention was to avoid merging jump
tables in SelectionDAGBuilder, and to wait for the branch folding pass to
merge tables. Unfortunately, the same getJumpTableIndex() method is also
used to merge tables in branch folding, so as a result of this change
branch tables are never merged. Worse, the branch folding code is expecting
getJumpTableIndex to always return the index of an existing table, but with
this change, it never does so. In at least some cases, e.g., pr6543, this
creates references to non-existent tables.

I've fixed the problem by adding a new createJumpTableIndex function, which
will always create a new table, and I've changed getJumpTableIndex to only
look at existing tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98845 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAGBuilder.cpp
35922008a8512a972ab3dfca0cf8aa00197dc1b5 18-Mar-2010 Dan Gohman <gohman@apple.com> Add explicit braces to avoid ambiguous ‘else’.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98838 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
1584390e550b1430fccfd100846844f9fdf6c15b 18-Mar-2010 Dan Gohman <gohman@apple.com> Add explicit braces to avoid ambiguous ‘else’.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98838 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
67b64b54702d1363b1740d7743c147be04d48905 18-Mar-2010 Devang Patel <dpatel@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98830 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
1ac2429d1f1b89a9a9c0397ef63c4f4fa535fee8 18-Mar-2010 Devang Patel <dpatel@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98830 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c66e78f345a4ab7b5223dc0dc48afe58e227d197 18-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Change coalescer complexity from N^2 to N logN by changing one letter."

This reverts commit 98776. It broke the llvm-gcc boot strap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98784 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
ec1176a206229b8aab0106715e640646d3efb692 18-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Change coalescer complexity from N^2 to N logN by changing one letter."

This reverts commit 98776. It broke the llvm-gcc boot strap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98784 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
1fa4f857d2edaaa97c35715f3adce2beba923480 18-Mar-2010 Devang Patel <dpatel@apple.com> Debug info intrinsic does not intefer during tail call optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98778 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c3188ce0f1ff2d1b830702a93134905b9719f410 18-Mar-2010 Devang Patel <dpatel@apple.com> Debug info intrinsic does not intefer during tail call optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98778 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
1e9c3873f517c24ecbfc8496b511b9b9cf42ea7e 18-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Change coalescer complexity from N^2 to N logN by changing one letter.

Remove ugly hack that aborted the coalescer before using N^2 time.

This affects functions with very complicated live intervals for physical
registers, i.e. functions with thousands of function calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98776 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0427b2ac4521de363a99b445567c006afd8b3d6e 18-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Change coalescer complexity from N^2 to N logN by changing one letter.

Remove ugly hack that aborted the coalescer before using N^2 time.

This affects functions with very complicated live intervals for physical
registers, i.e. functions with thousands of function calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98776 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b912cf31469e44fe2cd6252b356b7368db0cf4d8 17-Mar-2010 Devang Patel <dpatel@apple.com> Fix EmitSectionOffset incorrect argument. DwarfDebug is emitting debug info so isEH is always false. This was hiding until now from compilers because of default arguments. This was hiding from dwarf debug info users because for most of the platform isAbsoluteEHSectionOffsets() is same as isAbsoluteDebugSectionOffsets(). But Chris found it while updating dwarf printer to use MC*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98743 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5b33f3148c7495a5411109454fd1bd74baa291f6 17-Mar-2010 Devang Patel <dpatel@apple.com> Fix EmitSectionOffset incorrect argument. DwarfDebug is emitting debug info so isEH is always false. This was hiding until now from compilers because of default arguments. This was hiding from dwarf debug info users because for most of the platform isAbsoluteEHSectionOffsets() is same as isAbsoluteDebugSectionOffsets(). But Chris found it while updating dwarf printer to use MC*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98743 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6803e53ec9e1ed1cc4221eed1b93c672346dc26e 17-Mar-2010 Chris Lattner <sabre@nondot.org> fix GetOrCreateTemporarySymbol to require a name, clients
should use CreateTempSymbol() if they don't care about the
name.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98712 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
77e76940269b1bed36bc31ee5139b5c90fd13836 17-Mar-2010 Chris Lattner <sabre@nondot.org> fix GetOrCreateTemporarySymbol to require a name, clients
should use CreateTempSymbol() if they don't care about the
name.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98712 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
8ef7e2159fc1cccf6308d20f5ef7872c344e2253 17-Mar-2010 Bob Wilson <bob.wilson@apple.com> Remove a check that can no longer be true, after r84803.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98694 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
a1bdfc3c7fcd7bf8e42c6e4805bfb694230c7a55 17-Mar-2010 Bob Wilson <bob.wilson@apple.com> Remove a check that can no longer be true, after r84803.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98694 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
131e650578a8a506f4afb531bc557de1727f3098 16-Mar-2010 Evan Cheng <evan.cheng@apple.com> Fix liveintervals handling of dbg_value instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98686 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4507f089d48c5adb454cd12b68333d5590ce05dd 16-Mar-2010 Evan Cheng <evan.cheng@apple.com> Fix liveintervals handling of dbg_value instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98686 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
535969b90b24725bd3145ffd638077a5dd5e50fd 16-Mar-2010 Chris Lattner <sabre@nondot.org> reapply r98656 unmodified, which exposed the asmprinter not
handling constant unions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98680 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAGBuilder.cpp
93b122d3c484a8451024d6947be0f4037f86def0 16-Mar-2010 Chris Lattner <sabre@nondot.org> reapply r98656 unmodified, which exposed the asmprinter not
handling constant unions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98680 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAGBuilder.cpp
2aa0da2d8ec527695e826a57bdda33f1b3ea4756 16-Mar-2010 Devang Patel <dpatel@apple.com> Ignore debug value instructions while analyzing BB for tail duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98675 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
cbe1e31732c5d4fb1277195e76b9b42c115396aa 16-Mar-2010 Devang Patel <dpatel@apple.com> Ignore debug value instructions while analyzing BB for tail duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98675 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
15b64f335b2d8566d58a5e791c12c0ca0a17fe7a 16-Mar-2010 Daniel Dunbar <daniel@zuster.org> Revert r98656, its breaking all over the place.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98662 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAGBuilder.cpp
b85c7100c5f1ef34bace56c6978eca429df798f6 16-Mar-2010 Daniel Dunbar <daniel@zuster.org> Revert r98656, its breaking all over the place.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98662 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAGBuilder.cpp
777448f6491b6b82e2c39f11d353e39c24dd20e2 16-Mar-2010 Chris Lattner <sabre@nondot.org> improve support for uniontype and ConstantUnion, patch by Tim Northover!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98656 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAGBuilder.cpp
8b3b34f410f2bd05943e1c6f9b0514209731421d 16-Mar-2010 Chris Lattner <sabre@nondot.org> improve support for uniontype and ConstantUnion, patch by Tim Northover!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98656 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAGBuilder.cpp
617d39e2eb1da40b9871e0e9f49a31914f3a8be2 16-Mar-2010 Bill Wendling <isanbard@gmail.com> Use getFirstTerminator().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98604 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
b0d27662ea513eb6ea08c3c5101d27fc50da7fb2 16-Mar-2010 Bill Wendling <isanbard@gmail.com> Use getFirstTerminator().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98604 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
5c3a53f149ec5c4b40c599e7cde8136527d006c1 16-Mar-2010 Bill Wendling <isanbard@gmail.com> When checking if something's killed, don't rely simply on whether it's marked as
"used outside of the block". If the block ends in a return, then it won't be
used outside of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98599 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
8fe347a8b5f0d5dc4d3aea1fc3d3c4b21b6c686f 16-Mar-2010 Bill Wendling <isanbard@gmail.com> When checking if something's killed, don't rely simply on whether it's marked as
"used outside of the block". If the block ends in a return, then it won't be
used outside of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98599 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
cc1205defee0918c2d10c66a3abfbfc19a0cec1a 16-Mar-2010 Chris Lattner <sabre@nondot.org> Fix the third (and last known) case of code update problems due
to LLVM IR changes with addr label weirdness. In the testcase, we
generate references to the two bb's when codegen'ing the first
function:

_test1: ## @test1
leaq Ltmp0(%rip), %rax
..
leaq Ltmp1(%rip), %rax

Then continue to codegen the second function where the blocks
get merged. We're now smart enough to emit both labels, producing
this code:

_test_fun: ## @test_fun
## BB#0: ## %entry
Ltmp1: ## Block address taken
Ltmp0:
## BB#1: ## %ret
movl $-1, %eax
ret

Rejoice.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98595 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineModuleInfo.cpp
999aee24c7b7511575146b9950bb85830fab0378 16-Mar-2010 Chris Lattner <sabre@nondot.org> Fix the third (and last known) case of code update problems due
to LLVM IR changes with addr label weirdness. In the testcase, we
generate references to the two bb's when codegen'ing the first
function:

_test1: ## @test1
leaq Ltmp0(%rip), %rax
..
leaq Ltmp1(%rip), %rax

Then continue to codegen the second function where the blocks
get merged. We're now smart enough to emit both labels, producing
this code:

_test_fun: ## @test_fun
## BB#0: ## %entry
Ltmp1: ## Block address taken
Ltmp0:
## BB#1: ## %ret
movl $-1, %eax
ret

Rejoice.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98595 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineModuleInfo.cpp
12759cef26b06f95d1290e60c2bb27a7b411edb7 15-Mar-2010 Bill Wendling <isanbard@gmail.com> Now that the default for Darwin platforms is to place the LSDA into the TEXT
section, remove the target-specific code that performs this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98580 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
505ad8bed3321bc4b99af8fba4844efe2fe9e67a 15-Mar-2010 Bill Wendling <isanbard@gmail.com> Now that the default for Darwin platforms is to place the LSDA into the TEXT
section, remove the target-specific code that performs this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98580 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
f6853ffef510c3c0217e7e3c98969d82b56585ed 15-Mar-2010 Chris Lattner <sabre@nondot.org> Implement support for the case when a reference to a addr-of-bb
label is generated, but then the block is deleted. Since the
value is undefined, we just emit the label right after the entry
label of the function. It might matter that the label is in the
same section as the function was afterall.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98579 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineModuleInfo.cpp
9cc0da9c29302e9463a6f31ba705c8e1b6f4cea1 15-Mar-2010 Chris Lattner <sabre@nondot.org> Implement support for the case when a reference to a addr-of-bb
label is generated, but then the block is deleted. Since the
value is undefined, we just emit the label right after the entry
label of the function. It might matter that the label is in the
same section as the function was afterall.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98579 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineModuleInfo.cpp
f58a372722e320fe18c48c19fe8677ad1ff552c7 15-Mar-2010 Chris Lattner <sabre@nondot.org> use Mang->getSymbol() more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98577 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
4c6741f7078f3a9f655e67bf56bd4d5d427fc6bc 15-Mar-2010 Chris Lattner <sabre@nondot.org> use Mang->getSymbol() more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98577 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
893a97f1da187009c5028ffd3a93f99fc728c3c0 15-Mar-2010 Devang Patel <dpatel@apple.com> Create SDDbgValue for dbg_value intrinsics and remember its connections with DAG nodes.
This is a work in progress. Patch by Dale Johannesen!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98568 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
001903485fc78a4ae5f33420b25db73a22bfdf4a 15-Mar-2010 Devang Patel <dpatel@apple.com> Create SDDbgValue for dbg_value intrinsics and remember its connections with DAG nodes.
This is a work in progress. Patch by Dale Johannesen!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98568 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7770603fdc5bce161f3ead4bc8f490d716efb141 15-Mar-2010 Chris Lattner <sabre@nondot.org> Fix the case when a reference to an address taken BB is emitted in one
function, then the BB is RAUW'd before the definition is emitted. There
are still two cases not being handled, but this should improve us back to
the situation before I touched anything.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98566 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
0220ba7995236accae6ac009a2700871fc17007d 15-Mar-2010 Chris Lattner <sabre@nondot.org> Fix the case when a reference to an address taken BB is emitted in one
function, then the BB is RAUW'd before the definition is emitted. There
are still two cases not being handled, but this should improve us back to
the situation before I touched anything.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98566 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
7e90c68d16bf8b1efe8cdfa2f55db661bf6de5cc 15-Mar-2010 Chris Lattner <sabre@nondot.org> revert r98550, it isn't necessary or sufficient.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98558 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
88698f5dbcaa34c4d4e7c1bed7992c976183040a 15-Mar-2010 Chris Lattner <sabre@nondot.org> revert r98550, it isn't necessary or sufficient.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98558 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
14da02f654287314ec1235a165cd11bab1ec62b4 15-Mar-2010 Devang Patel <dpatel@apple.com> Emit dwarf variable info communicated by code generator through DBG_VALUE machine instructions.
This is a work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98556 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
electionDAG/SelectionDAGISel.cpp
90a48adf9cbea48f5318a5eb778056b4413e2ec0 15-Mar-2010 Devang Patel <dpatel@apple.com> Emit dwarf variable info communicated by code generator through DBG_VALUE machine instructions.
This is a work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98556 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
electionDAG/SelectionDAGISel.cpp
29c73ab16b0797e87316b3933aa3f9e307cf5436 15-Mar-2010 Chris Lattner <sabre@nondot.org> don't eliminate address-taken blocks here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98550 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
fc6e69bcb2c8b9157164adfaa0c86115e7356cd0 15-Mar-2010 Chris Lattner <sabre@nondot.org> don't eliminate address-taken blocks here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98550 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
63607d03b36007ff135dff8103b42a33e64ef80b 15-Mar-2010 Chris Lattner <sabre@nondot.org> SIGN_EXTEND from the same type as the dest is valid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ed7d10e1000ae88c9ec7a0db6002eb8b8543a470 15-Mar-2010 Chris Lattner <sabre@nondot.org> SIGN_EXTEND from the same type as the dest is valid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f53c2c785cd37ffd76f0a5db506fdef0ca9f100e 15-Mar-2010 Chris Lattner <sabre@nondot.org> sink the call to VT.getSizeInBits() down into its uses,
not all unary nodes necessarily have a simple result type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98547 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7fb5c2dbec26b7de959269ade8906a7a1b6c7539 15-Mar-2010 Chris Lattner <sabre@nondot.org> sink the call to VT.getSizeInBits() down into its uses,
not all unary nodes necessarily have a simple result type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98547 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
359e0b286694797598179563ff076e429a63321e 15-Mar-2010 Chris Lattner <sabre@nondot.org> fix MCSectionELF to not leak memory, just like I did for MCSymbol.
MCSectionMachO is already fine (yay for fixed size arrays?),
MCSectionCOFF still leaks.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98537 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
1f8008cf214b984954de2e986fb8cb0e5cc58606 15-Mar-2010 Chris Lattner <sabre@nondot.org> fix MCSectionELF to not leak memory, just like I did for MCSymbol.
MCSectionMachO is already fine (yay for fixed size arrays?),
MCSectionCOFF still leaks.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98537 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
54e7364e4b37a5698f1f2317bf73615b6410dbbc 15-Mar-2010 Chris Lattner <sabre@nondot.org> remove dead method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98526 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a833f6b0617228fa11f7d94bbabf87f737124a57 15-Mar-2010 Chris Lattner <sabre@nondot.org> remove dead method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98526 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ba137984eaac1bed6df9241e88688787f476570e 14-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove pointless forward declaration, MSVC got confused by this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98519 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadataPrinter.cpp
1610d430bead10168bc2c16fea5883463470481a 14-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove pointless forward declaration, MSVC got confused by this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98519 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadataPrinter.cpp
7e59edf0656c5211c0021bcf443ff05c5dfcd334 14-Mar-2010 Duncan Sands <baldrick@free.fr> Turn calls to copysignl into an FCOPYSIGN node. Handle FCOPYSIGN nodes
with ppc_f128 type by having the type legalizer turn these back into a
call to copysignl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98514 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
d2c817eff1d158398fb0a620fa762bf95207922f 14-Mar-2010 Duncan Sands <baldrick@free.fr> Turn calls to copysignl into an FCOPYSIGN node. Handle FCOPYSIGN nodes
with ppc_f128 type by having the type legalizer turn these back into a
call to copysignl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98514 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
1899ca3358e0f0477781472c3b0f4868b9d6e42b 14-Mar-2010 Evan Cheng <evan.cheng@apple.com> Rename SDDbgValue.h to SDNodeDbgValue.h for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98513 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/SDDbgValue.h
electionDAG/SDNodeDbgValue.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
a8efe28a44996978faa42a387f1a6087a7b942c7 14-Mar-2010 Evan Cheng <evan.cheng@apple.com> Rename SDDbgValue.h to SDNodeDbgValue.h for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98513 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/SDDbgValue.h
electionDAG/SDNodeDbgValue.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
214e738aabd76b123b2d1a0529b4f709141d014c 14-Mar-2010 Chris Lattner <sabre@nondot.org> fix ShrinkDemandedOps to not leave dead nodes around,
fixing PR6607


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98512 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c4a3f23b9251b07785cca646ad27b426dfa23230 14-Mar-2010 Chris Lattner <sabre@nondot.org> fix ShrinkDemandedOps to not leave dead nodes around,
fixing PR6607


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98512 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b6e225c0ede0d38e557b4f2bf77e617dc5c1e858 14-Mar-2010 Chris Lattner <sabre@nondot.org> rewrite ShrinkDemandedOps to be faster and indent less,
no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98511 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
25e0ab9ae5507b0589be852f54693dec66796f0e 14-Mar-2010 Chris Lattner <sabre@nondot.org> rewrite ShrinkDemandedOps to be faster and indent less,
no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98511 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
628fdf4475a248a496afb3c167d49a18a3fe006c 14-Mar-2010 Chris Lattner <sabre@nondot.org> make -view-isel-dags print after the 'ShrinkDemandedOps' pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98509 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
552186dfd3238a43655ffda1b5adadec461c9886 14-Mar-2010 Chris Lattner <sabre@nondot.org> make -view-isel-dags print after the 'ShrinkDemandedOps' pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98509 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
899c5cfbecf4221a3268384e417e85c29c130594 14-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Make default expansion for FP16 <-> FP32 nodes into libcalls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98501 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
927411b7ce0b7852fe4f392d8cd4faaa3881f852 14-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Make default expansion for FP16 <-> FP32 nodes into libcalls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98501 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
819e9e696f01ab31a92f558848b0a1e7f0b2ff18 14-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Add DAG nodes to represent FP16 <-> FP32 intrinsics

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98500 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
be5b032e4b06ae001098856c2dc4ebca41528132 14-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Add DAG nodes to represent FP16 <-> FP32 intrinsics

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98500 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
4489414d44a8621632e5e97253055452b2c66382 14-Mar-2010 Chris Lattner <sabre@nondot.org> fix AsmPrinter::GetBlockAddressSymbol to always return a unique
label instead of trying to form one based on the BB name (which
causes collisions if the name is empty). This fixes PR6608


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98495 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
3b9d6216a41cfd43759e787db26d797e1f0ba0a8 14-Mar-2010 Chris Lattner <sabre@nondot.org> fix AsmPrinter::GetBlockAddressSymbol to always return a unique
label instead of trying to form one based on the BB name (which
causes collisions if the name is empty). This fixes PR6608


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98495 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
54e56f247fa9361208901ff6009499cdffe41b05 14-Mar-2010 Chris Lattner <sabre@nondot.org> get MMI out of the label uniquing business, just go to MCContext
to get unique assembler temporary labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98489 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
63d7836267298f5b6cde43f0a89acbabfc109f48 14-Mar-2010 Chris Lattner <sabre@nondot.org> get MMI out of the label uniquing business, just go to MCContext
to get unique assembler temporary labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98489 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
d5060b8782344d73a2f5a10bbeb717427efc75d0 14-Mar-2010 Chris Lattner <sabre@nondot.org> don't use getDWLabel("label" anymore, always go through MMI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98485 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8d9aaba84e80d40093fa8e1fe452a5ddcb4cc7f7 14-Mar-2010 Chris Lattner <sabre@nondot.org> don't use getDWLabel("label" anymore, always go through MMI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98485 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
25e3d086379011fe80085d4e866e89dbfa1e8ffa 14-Mar-2010 Chris Lattner <sabre@nondot.org> remove now-dead code, all labels use MCSymbols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98484 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
0397ada8ae1d1bc71037d8cd4a855d3ff04acbbb 14-Mar-2010 Chris Lattner <sabre@nondot.org> remove now-dead code, all labels use MCSymbols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98484 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
8d9d06a458385706f5ca92d2890dc8faae452a9c 14-Mar-2010 Chris Lattner <sabre@nondot.org> change SrcLineInfo to contain a label instead of a label ID.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98483 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
25b68c6770b7ba044ad37e0aed4f1c414f3b5209 14-Mar-2010 Chris Lattner <sabre@nondot.org> change SrcLineInfo to contain a label instead of a label ID.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98483 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6090b4245384dcca0d2188165825917384d1350d 14-Mar-2010 Chris Lattner <sabre@nondot.org> Now that DBG_LABEL is updated, we can finally make MachineMove
contain an MCSymbol instead of a label index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98482 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
2e9919a5e5fe76f4b1e3290103c4bfd149ebba9c 14-Mar-2010 Chris Lattner <sabre@nondot.org> Now that DBG_LABEL is updated, we can finally make MachineMove
contain an MCSymbol instead of a label index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98482 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
359731acbae700a9590257899bf54c05fee8a9cd 14-Mar-2010 Chris Lattner <sabre@nondot.org> change the DBG_LABEL MachineInstr to always be created
with an MCSymbol instead of an immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98481 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6ffcccab5191ef1dcde876800c24a1f58b3b7ad8 14-Mar-2010 Chris Lattner <sabre@nondot.org> change the DBG_LABEL MachineInstr to always be created
with an MCSymbol instead of an immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98481 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e71efe3e3cb30b10dc266abe9cd445f26ad8a402 14-Mar-2010 Chris Lattner <sabre@nondot.org> unbreak the build, grr symlinks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98477 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
9a38e67590fa1431bd7e950f4ce2684d9f572176 14-Mar-2010 Chris Lattner <sabre@nondot.org> unbreak the build, grr symlinks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98477 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
118964b2f1cc8f64e302833b5d501cdcd61c6bec 14-Mar-2010 Chris Lattner <sabre@nondot.org> Change this code to allocate temporary labels from mccontext,
not from MMI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98475 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
90f172aa80b6dc98188ca32c66a438b6f6ed91e7 14-Mar-2010 Chris Lattner <sabre@nondot.org> Change this code to allocate temporary labels from mccontext,
not from MMI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98475 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
0ede4555ac1c1e207285264a2ff546d46d0f8efd 14-Mar-2010 Chris Lattner <sabre@nondot.org> switch GC_LABEL to use an MCSymbol operand instead of a label ID operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98474 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
CMetadata.cpp
CMetadataPrinter.cpp
CStrategy.cpp
aba9bcb9b60edbad3646b2f3088c120d06549cc7 14-Mar-2010 Chris Lattner <sabre@nondot.org> switch GC_LABEL to use an MCSymbol operand instead of a label ID operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98474 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
CMetadata.cpp
CMetadataPrinter.cpp
CStrategy.cpp
717599e12b75880fa58dbdabf8671f4806104d86 14-Mar-2010 Chris Lattner <sabre@nondot.org> Fix some EH failures on NNT I introduced in r98461


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98471 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
f14645cc6474dab76b266906575ce4e4d018e9ee 14-Mar-2010 Chris Lattner <sabre@nondot.org> Fix some EH failures on NNT I introduced in r98461


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98471 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
c6169fc4776a1474166362fd2343f2296b298d75 14-Mar-2010 Chris Lattner <sabre@nondot.org> fix a bug I introduced in r98459, causing some NNT failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98470 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
21f9c8de53936ad5aa9e1f37cc68efa493c2ca94 14-Mar-2010 Chris Lattner <sabre@nondot.org> fix a bug I introduced in r98459, causing some NNT failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98470 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
8574dddd63edcb47af66df3ea309ff03a6b04549 14-Mar-2010 Chris Lattner <sabre@nondot.org> change the LabelSDNode to be EHLabelSDNode and make it hold
an MCSymbol. Make the EH_LABEL MachineInstr hold its label
with an MCSymbol instead of ID. Fix a bug in MMI.cpp which
would return labels named "Label4" instead of "label4".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98463 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
7561d480953e0a2faa4af9be0a00b1180097c4bd 14-Mar-2010 Chris Lattner <sabre@nondot.org> change the LabelSDNode to be EHLabelSDNode and make it hold
an MCSymbol. Make the EH_LABEL MachineInstr hold its label
with an MCSymbol instead of ID. Fix a bug in MMI.cpp which
would return labels named "Label4" instead of "label4".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98463 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
7e6559526af9f502d5f245b2fd02041a243387e8 14-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate InvalidateLabel and LabelIDList from MMI and replace
them with a counter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98462 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineModuleInfo.cpp
ailDuplication.cpp
nreachableBlockElim.cpp
18589de9b1b8c157dea602653042e486128dd9e4 14-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate InvalidateLabel and LabelIDList from MMI and replace
them with a counter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98462 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineModuleInfo.cpp
ailDuplication.cpp
nreachableBlockElim.cpp
31ae74daf3babf1733bb19cdef09eee8220d3497 14-Mar-2010 Chris Lattner <sabre@nondot.org> use Label->isDefined() instead of isLabelDeleted() now that we
consistently use MCSymbol and only call this predicate after
they should have been emitted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98461 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
b91306053d0aebd748bf854f05d93cd1939a1543 14-Mar-2010 Chris Lattner <sabre@nondot.org> use Label->isDefined() instead of isLabelDeleted() now that we
consistently use MCSymbol and only call this predicate after
they should have been emitted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98461 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
e3330170d608053806e37c4dc953f15cf47b3388 14-Mar-2010 Chris Lattner <sabre@nondot.org> change EH related stuff (other than EH_LABEL) to use MCSymbol
instead of label ID's. This cleans up and regularizes a bunch
of code and makes way for future progress.

Unfortunately, this pointed out to me that JITDwarfEmitter.cpp
is largely copy and paste from DwarfException/MachineModuleInfo
and other places. This is very sad and disturbing. :(

One major change here is that TidyLandingPads moved from being
called in DwarfException::BeginFunction to being called in
DwarfException::EndFunction. There should not be any
functionality change from doing this, but I'm not an EH expert.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98459 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
LFCodeEmitter.h
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
1611273351d75b5cbe2a67485bb9831d5916fe26 14-Mar-2010 Chris Lattner <sabre@nondot.org> change EH related stuff (other than EH_LABEL) to use MCSymbol
instead of label ID's. This cleans up and regularizes a bunch
of code and makes way for future progress.

Unfortunately, this pointed out to me that JITDwarfEmitter.cpp
is largely copy and paste from DwarfException/MachineModuleInfo
and other places. This is very sad and disturbing. :(

One major change here is that TidyLandingPads moved from being
called in DwarfException::BeginFunction to being called in
DwarfException::EndFunction. There should not be any
functionality change from doing this, but I'm not an EH expert.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98459 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
LFCodeEmitter.h
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
d13daf889c4864428fa13fdf88a50a2fa6367c34 13-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate the now-unneeded context argument of MBB::getSymbol()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98451 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineBasicBlock.cpp
1b2eb0e8a6aaf034675b17be6d853cb1c666200f 13-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate the now-unneeded context argument of MBB::getSymbol()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98451 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineBasicBlock.cpp
f4853459db476c7487bc5b4b5bd68c5c7f995600 13-Mar-2010 Chris Lattner <sabre@nondot.org> rearrange MCContext ownership. Before LLVMTargetMachine created it
and passing off ownership to AsmPrinter. Now MachineModuleInfo
creates it and owns it by value. This allows us to use MCSymbols
more consistently throughout the rest of the code generator, and
simplifies a bit of code. This also allows MachineFunction to
keep an MCContext reference handy, and cleans up the TargetRegistry
interfaces for AsmPrinters.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98450 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LVMTargetMachine.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
achineModuleInfo.cpp
11d53c129fc9c2a4510605ec0a1696f58750af52 13-Mar-2010 Chris Lattner <sabre@nondot.org> rearrange MCContext ownership. Before LLVMTargetMachine created it
and passing off ownership to AsmPrinter. Now MachineModuleInfo
creates it and owns it by value. This allows us to use MCSymbols
more consistently throughout the rest of the code generator, and
simplifies a bit of code. This also allows MachineFunction to
keep an MCContext reference handy, and cleans up the TargetRegistry
interfaces for AsmPrinters.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98450 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LVMTargetMachine.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
achineModuleInfo.cpp
40918f9a8189ca619fa64f12c744f1852f1c4223 13-Mar-2010 Chris Lattner <sabre@nondot.org> add support for MCSymbols as operands to MachineInstrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98433 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
72aaa3c79869870bd16402ed1f37b80a5e71c800 13-Mar-2010 Chris Lattner <sabre@nondot.org> add support for MCSymbols as operands to MachineInstrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98433 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
dd4f4f8db0b0a379b7169137e9e1123e0457ff61 13-Mar-2010 Chris Lattner <sabre@nondot.org> simplify EmitFrameMoves to take BaseLabel in as a symbol
instead of as a stem+idx pair, simplify the "is a new
location" check to use symbol comparison.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98432 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
5e6cbe0eff1249daaa02807f8cb4b33d43fdf985 13-Mar-2010 Chris Lattner <sabre@nondot.org> simplify EmitFrameMoves to take BaseLabel in as a symbol
instead of as a stem+idx pair, simplify the "is a new
location" check to use symbol comparison.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98432 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
314e3362ddb8933bbc7e48358280005bf08cea74 13-Mar-2010 Chris Lattner <sabre@nondot.org> factor some labels, simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98429 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
fb65807c349b82e3f464158e89acd894cbd0b6ed 13-Mar-2010 Chris Lattner <sabre@nondot.org> factor some labels, simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98429 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
dd21da85d8c49cc756fdc73397ab6728290655c0 13-Mar-2010 Chris Lattner <sabre@nondot.org> various cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98426 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
206d61e62f02f5ea5eefdd125dc48ff28f15da4a 13-Mar-2010 Chris Lattner <sabre@nondot.org> various cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98426 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0f093f88ff73a4fc34658c0455a5be368d94eacc 13-Mar-2010 Chris Lattner <sabre@nondot.org> reimplement the string pool used for inlined function
entries to not thrash std::strings and MCSymbols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98415 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
bc733f54c0d344d72aadf2f925a08babfeb7ea6a 13-Mar-2010 Chris Lattner <sabre@nondot.org> reimplement the string pool used for inlined function
entries to not thrash std::strings and MCSymbols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98415 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
dd9a08f0ef4c1a8fb08a7d73f3ddb836db26c78d 12-Mar-2010 Chris Lattner <sabre@nondot.org> remove gone method, grr symlinks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98392 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
528a126d326e186f0efd1c864f507e795f251675 12-Mar-2010 Chris Lattner <sabre@nondot.org> remove gone method, grr symlinks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98392 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
90825795edd087fbf23aa439075b791b2b2be878 12-Mar-2010 Chris Lattner <sabre@nondot.org> inline the now-trivial implementation of GetGlobalValueSymbol into
some of its callers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98388 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
deb0cba1bad5a46bbecb75666e415c3dee9c89eb 12-Mar-2010 Chris Lattner <sabre@nondot.org> inline the now-trivial implementation of GetGlobalValueSymbol into
some of its callers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98388 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
2a2a67300bbc6da884a2b12d1f97c92ea7ebbd14 12-Mar-2010 Chris Lattner <sabre@nondot.org> give Mangler access to TargetData.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98378 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
b87c305fa77650ee581d4a8c65a0757f88002441 12-Mar-2010 Chris Lattner <sabre@nondot.org> give Mangler access to TargetData.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98378 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
81199d536aff3725dad0dab10a485bf749b63bda 12-Mar-2010 Chris Lattner <sabre@nondot.org> finally give Mangler a getSymbol method, which returns an MCSymbol
for a global instead of messing around with string buffers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98366 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
73ff564d65e9c748562c5734d1f72a2a233f0275 12-Mar-2010 Chris Lattner <sabre@nondot.org> finally give Mangler a getSymbol method, which returns an MCSymbol
for a global instead of messing around with string buffers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98366 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0a74342b9e610529bb7c400aece9be6483d8484d 12-Mar-2010 Chris Lattner <sabre@nondot.org> remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98365 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
0d941c15c0c88e062b548b74e0805e0ffb7427fe 12-Mar-2010 Chris Lattner <sabre@nondot.org> remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98365 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
4aeebec75cfa9bda32788bc338c82781d02dc060 12-Mar-2010 Chris Lattner <sabre@nondot.org> make the mangler take an MCContext instead of an MAI.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98363 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
LVMTargetMachine.cpp
5ef31a039dbb9c36cfd78442b3554d1b6974ec4c 12-Mar-2010 Chris Lattner <sabre@nondot.org> make the mangler take an MCContext instead of an MAI.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98363 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
LVMTargetMachine.cpp
6489bbbe9915d526aba2b749d601f8176b6ffff1 12-Mar-2010 Chris Lattner <sabre@nondot.org> remove MAI argument from createAsmStreamer since it
can get it from the context now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98361 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
fdab14b10564283028e9bdb628d095feae7fa071 12-Mar-2010 Chris Lattner <sabre@nondot.org> remove MAI argument from createAsmStreamer since it
can get it from the context now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98361 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
3317849de1728ea522a06982d08099a86c24c006 12-Mar-2010 Chris Lattner <sabre@nondot.org> fix a bug emitting .secrel32 that I introduced, PR6587, patch
by A.Mazur!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98360 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
20e3280f3fdd3f306edcdc8a92a3be05d184f434 12-Mar-2010 Chris Lattner <sabre@nondot.org> fix a bug emitting .secrel32 that I introduced, PR6587, patch
by A.Mazur!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98360 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
ecca2e6a2e156bc1197e79138382f34457f67a44 12-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Free DbgScopes in DwarfDebug::endFunction(). Also increased the const-ness of
several fields to make it easier to figure out where bugs might be creeping in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98358 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
5c213dc78cc717c30908212049e35cfdb950fa24 12-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Free DbgScopes in DwarfDebug::endFunction(). Also increased the const-ness of
several fields to make it easier to figure out where bugs might be creeping in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98358 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
21c2a825b0362e5ac2fba700dbe903425647f2b6 12-Mar-2010 Duncan Sands <baldrick@free.fr> Revert turning copysignl into a COPYSIGN node for the moment:
ppc calls copysignl with a 128 bit ppc long double, resulting
in a node that the type legalizer doesn't know how to expand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
0ac5d2d7ffd1a8cfbecf4c3834dc557a18c7ee0a 12-Mar-2010 Duncan Sands <baldrick@free.fr> Revert turning copysignl into a COPYSIGN node for the moment:
ppc calls copysignl with a 128 bit ppc long double, resulting
in a node that the type legalizer doesn't know how to expand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
0617f31129f3223f5e307793e20fd03c0273fa84 12-Mar-2010 Duncan Sands <baldrick@free.fr> Now that it's supported, turn copysignl into a COPYSIGN node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
bb2f0c541c1bcf05131b66e4aa036229fc5f068b 12-Mar-2010 Duncan Sands <baldrick@free.fr> Now that it's supported, turn copysignl into a COPYSIGN node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
fbb152823a5f8b97ea606152cdf0507551fa7c9c 12-Mar-2010 Duncan Sands <baldrick@free.fr> Fix PR6522: implement copysign expansion for x86 long double
(it seems that FreeBSD doesn't have copysignl). Done by
removing a bunch of assumptions from the code. This may also
help with sparc 128 bit floats.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98346 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5d54b4112d7b8bcd49a07e398ebff263fac1eb9c 12-Mar-2010 Duncan Sands <baldrick@free.fr> Fix PR6522: implement copysign expansion for x86 long double
(it seems that FreeBSD doesn't have copysignl). Done by
removing a bunch of assumptions from the code. This may also
help with sparc 128 bit floats.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98346 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
219a8bed7b44ee401da3ec15109f39daa5f31fa2 12-Mar-2010 Chris Lattner <sabre@nondot.org> fix PR6577, a bug in sdbuilder lowering select instructions
whose true value was not Val#0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98336 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b3e87b2262087cf69f7461e4bc586cdb747434f7 12-Mar-2010 Chris Lattner <sabre@nondot.org> fix PR6577, a bug in sdbuilder lowering select instructions
whose true value was not Val#0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98336 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7666701e215354e50aeca18626056c7eeaad3498 12-Mar-2010 Devang Patel <dpatel@apple.com> There is no need to create specification DIE for definitions at DIFile level.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98302 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1b596e399bd284bc7c2f48fb2e5a852452faf3dd 12-Mar-2010 Devang Patel <dpatel@apple.com> There is no need to create specification DIE for definitions at DIFile level.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98302 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fb2a90f8d0168277b2bb749fcc1c70b006ffd4e4 12-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract methods from LocalRewriter::RewriteMBB bringing it down to 666 lines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98295 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
56698803d94575dacee59b4515067864d5282239 12-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract methods from LocalRewriter::RewriteMBB bringing it down to 666 lines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98295 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
fd0f12e3443dab14a052aa965ab4fddf3b9a0b80 11-Mar-2010 Chris Lattner <sabre@nondot.org> change MCContext to always have an MCAsmInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98293 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
c18409aed80ba1c6c5998befd3c3c8edc865c423 11-Mar-2010 Chris Lattner <sabre@nondot.org> change MCContext to always have an MCAsmInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98293 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
8364cff8d7ee2dfa26ae700865c31e66ccf0dd31 11-Mar-2010 Chris Lattner <sabre@nondot.org> fix a fixme in TargetLoweringObjectFile::getExprForDwarfReference
where we used ot create an MCSymbol for ".". Now emit an assembler
temporary label and reference it instead of "." textually.

rdar://7739457


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98292 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
argetLoweringObjectFileImpl.cpp
42263e2e407ab7d1d805e7b41cffd7217134d3b6 11-Mar-2010 Chris Lattner <sabre@nondot.org> fix a fixme in TargetLoweringObjectFile::getExprForDwarfReference
where we used ot create an MCSymbol for ".". Now emit an assembler
temporary label and reference it instead of "." textually.

rdar://7739457


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98292 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
argetLoweringObjectFileImpl.cpp
a14fdab9680e07363a2784ff0cf6604f7bdd414d 11-Mar-2010 Dan Gohman <gohman@apple.com> Remove getWidenVectorType, which is no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98289 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
a257095ebb29fd223be2fdbf86d542c5bdfe05f0 11-Mar-2010 Dan Gohman <gohman@apple.com> Remove getWidenVectorType, which is no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98289 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d96b9ea0e0d41556bb33e98d23fe6e057d45c2e8 11-Mar-2010 Chris Lattner <sabre@nondot.org> rename getSymbolForDwarf* to getExprForDwarf* since it returns
an MCExpr and not an MCSymbol. Change it to take an MCStreamer,
which is currently unused.

No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98278 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
argetLoweringObjectFileImpl.cpp
3192d14076dbe5724ce85b9d48644bb3c081f0e5 11-Mar-2010 Chris Lattner <sabre@nondot.org> rename getSymbolForDwarf* to getExprForDwarf* since it returns
an MCExpr and not an MCSymbol. Change it to take an MCStreamer,
which is currently unused.

No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98278 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
argetLoweringObjectFileImpl.cpp
12e32e6ca75ba22c09d7dcbd4836c7604a2f58c0 11-Mar-2010 Evan Cheng <evan.cheng@apple.com> In case of tail call size of Ins and InVals may not match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98277 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
af1871fa6dc916ef1ab5b4b30cf56aa134fcff19 11-Mar-2010 Evan Cheng <evan.cheng@apple.com> In case of tail call size of Ins and InVals may not match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98277 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c3545716b952d0e1a1043fd21852c72418098023 11-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Avoid leaking CompileUnits in DwarfDebug.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98268 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d0f393d46f159f3349e219f9af6880b037822193 11-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Avoid leaking CompileUnits in DwarfDebug.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98268 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9f3cfe66353a3cf1accccb0fc82d4d2f62ee5fe7 11-Mar-2010 Richard Osborne <richard@xmos.com> Add a new jump table encoding to indicate jump tables entries
are inside the function by the target at the point of use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98255 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
95da605e15a6f108b551ecc6772823ea53de3007 11-Mar-2010 Richard Osborne <richard@xmos.com> Add a new jump table encoding to indicate jump tables entries
are inside the function by the target at the point of use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98255 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
197e06c45d80790f0aff1282f81418332e49fda3 11-Mar-2010 Evan Cheng <evan.cheng@apple.com> The check for coalescing a virtual register to a physical register, e.g.
cl = EXTRACT_SUBREG reg1024, 1, is overly conservative. It should check
for overlaps of vr's live interval with the super registers of the
physical register (ECX in this case) and let JoinIntervals() handle checking
the coalescing feasibility against the physical register (cl in this case).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98251 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
826cbac2a0cef418fd8949813761c2ed975f3df1 11-Mar-2010 Evan Cheng <evan.cheng@apple.com> The check for coalescing a virtual register to a physical register, e.g.
cl = EXTRACT_SUBREG reg1024, 1, is overly conservative. It should check
for overlaps of vr's live interval with the super registers of the
physical register (ECX in this case) and let JoinIntervals() handle checking
the coalescing feasibility against the physical register (cl in this case).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98251 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
c920384bda471d0861967e9b84db1180ac59ed13 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> Remove dead include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98225 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
0193c0994bddb24225e47f91c19b9e75f8aebd44 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> Remove dead include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98225 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c8fe0b0fd8ba50bbcc51bac76bf1660dd35cc5f1 11-Mar-2010 Dale Johannesen <dalej@apple.com> Fix debug_value handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98224 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
e68ea060c78356253d771e039747fbc06c623646 11-Mar-2010 Dale Johannesen <dalej@apple.com> Fix debug_value handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98224 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
d155a234986a4bec204bdc755c918651a2abe5ed 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC: Provide MCAssembler with a TargetAsmBackend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98222 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
1f3e445184e5ca2aa4295c2a77f2a4e0b957fea1 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC: Provide MCAssembler with a TargetAsmBackend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98222 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
47827503ecf990f0f5bf1e2eed3827bd7ebda966 11-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> VirtRegRewriter spring cleaning. No functional change.

Move methods out of line and M-x whitespace-cleanup.
Promote common method arguments to member variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98207 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
2cb4202f0748ed1e1a40a85dc9cc805629262abf 11-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> VirtRegRewriter spring cleaning. No functional change.

Move methods out of line and M-x whitespace-cleanup.
Promote common method arguments to member variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98207 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
d9a7d298929fc46d2093be94a3901c98dac3ecc8 11-Mar-2010 Chris Lattner <sabre@nondot.org> fix PR6533 by updating the br(xor) code to remember the case
when it looked past a trunc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f2f64e906372a3008112420b15daeb68c3e942e3 11-Mar-2010 Chris Lattner <sabre@nondot.org> fix PR6533 by updating the br(xor) code to remember the case
when it looked past a trunc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9ff9443988f5cc98d698d7a2a5623fb90954c8d9 11-Mar-2010 Dale Johannesen <dalej@apple.com> Cosmetic: lengthen names and improve comments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98202 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/SDDbgValue.h
e3b8533e711718ffa5366cbc8fdf7c6881b8cb02 11-Mar-2010 Dale Johannesen <dalej@apple.com> Cosmetic: lengthen names and improve comments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98202 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/SDDbgValue.h
ce99651283626c14f32f25d4b0dc486e14ffd41b 10-Mar-2010 Bill Wendling <isanbard@gmail.com> Add a bit along with the MCSymbols stored in the MachineModuleInfo maps that
indicates that an MCSymbol is external or not. (It's true if it's external.)
This will be used to specify the correct information to add to non-lazy
pointers. That will be explained further when this bit is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98199 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfoImpls.cpp
argetLoweringObjectFileImpl.cpp
cebae36f57456fe6b0e13726acd1e0250654f02d 10-Mar-2010 Bill Wendling <isanbard@gmail.com> Add a bit along with the MCSymbols stored in the MachineModuleInfo maps that
indicates that an MCSymbol is external or not. (It's true if it's external.)
This will be used to specify the correct information to add to non-lazy
pointers. That will be explained further when this bit is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98199 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfoImpls.cpp
argetLoweringObjectFileImpl.cpp
f4243fbef8bbe9ad6fe63831f32883038058f746 10-Mar-2010 Dale Johannesen <dalej@apple.com> Progress towards shepherding debug info through SelectionDAG.
No functional effect yet. This is still evolving and should
not be viewed as final.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98195 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/SDDbgValue.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
bfdf7f38523bd38ae0538861a2bfd8bdc46e5c33 10-Mar-2010 Dale Johannesen <dalej@apple.com> Progress towards shepherding debug info through SelectionDAG.
No functional effect yet. This is still evolving and should
not be viewed as final.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98195 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/SDDbgValue.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
05719e6bdef6162bcd4c74882f28ad88c6d9747a 10-Mar-2010 Dan Gohman <gohman@apple.com> Fix another bitwidth calculation to handle vector types; based on a
patch by Micah Villmow for PR6572.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98188 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8f78e3c87d462e71ddcd3d4f53446b902cc5c593 10-Mar-2010 Dan Gohman <gohman@apple.com> Fix another bitwidth calculation to handle vector types; based on a
patch by Micah Villmow for PR6572.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98188 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9387f316e147fd50315acfabe479c75391eae3fa 10-Mar-2010 Dale Johannesen <dalej@apple.com> Fix another place where DEBUG_VALUE affected codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98181 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
2cd9ffef6e74febd727f0b548c21ba3f4e5cd26f 10-Mar-2010 Dale Johannesen <dalej@apple.com> Fix another place where DEBUG_VALUE affected codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98181 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
0d192b74a722dfa25d5d2abf32cbd5437f9c914a 10-Mar-2010 Dale Johannesen <dalej@apple.com> Fix a bug in DEBUG_VALUE handling Devang ran into.
I'll get this loop right yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98155 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a2f767b1a7ed6aa4edd6dcf65b68bf3a4ed3901e 10-Mar-2010 Dale Johannesen <dalej@apple.com> Fix a bug in DEBUG_VALUE handling Devang ran into.
I'll get this loop right yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98155 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
60313f81e737297349305e503b5353c11f89679c 10-Mar-2010 Chris Lattner <sabre@nondot.org> move three lowering hooks from MAI to TLOF and make one of them
semantic instead of syntactic. This completes MCization of
darwin/x86[-64]!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98145 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
argetLoweringObjectFileImpl.cpp
09d53fecfcc93377627b6ee7b4d92f8a6ff152e9 10-Mar-2010 Chris Lattner <sabre@nondot.org> move three lowering hooks from MAI to TLOF and make one of them
semantic instead of syntactic. This completes MCization of
darwin/x86[-64]!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98145 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
argetLoweringObjectFileImpl.cpp
117b8ddbbd6ff9a2b50cba8e4bcaa246ac0ce0ff 10-Mar-2010 Dale Johannesen <dalej@apple.com> This survived a bootstrap, so let's try 98104 again.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98137 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
c5cf227f3dac755508928b9dee8ac6a45dcb4e4f 10-Mar-2010 Dale Johannesen <dalej@apple.com> This survived a bootstrap, so let's try 98104 again.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98137 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
d8859015a09b34c91c803827b2d04087e0c44ede 10-Mar-2010 Evan Cheng <evan.cheng@apple.com> Enable machine cse pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98132 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
fac4f1f1815b54346a805834a8c19d573ce8856c 10-Mar-2010 Evan Cheng <evan.cheng@apple.com> Enable machine cse pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98132 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
58f7d86dfa16850034769ce6d27269a5da07ac10 10-Mar-2010 Chris Lattner <sabre@nondot.org> mcize the rest of EH emission, only one more directive missing
for darwin/x86 to be completely mcized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98130 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
974c0fb4047f7d9f190f6ca5780c7a06e6c40914 10-Mar-2010 Chris Lattner <sabre@nondot.org> mcize the rest of EH emission, only one more directive missing
for darwin/x86 to be completely mcized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98130 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
48fb0b1ef44bbff1b7557bccfd26ca7d3825625c 10-Mar-2010 Chris Lattner <sabre@nondot.org> add missing filename!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98125 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
49f618a1e4814a9fa3fd2855c6e2325753df477a 10-Mar-2010 Chris Lattner <sabre@nondot.org> add missing filename!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98125 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
72121e4e6261beba09f5d22854cfcc3332f7c5bf 10-Mar-2010 Chris Lattner <sabre@nondot.org> set the temporary bit on MCSymbols correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98124 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
achineBasicBlock.cpp
achineFunction.cpp
argetLoweringObjectFileImpl.cpp
98cdab53c302a2d6686fa428c0e896b1fb195311 10-Mar-2010 Chris Lattner <sabre@nondot.org> set the temporary bit on MCSymbols correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98124 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
achineBasicBlock.cpp
achineFunction.cpp
argetLoweringObjectFileImpl.cpp
259d5c987a0c14f49194d859093425446bac56f7 10-Mar-2010 Evan Cheng <evan.cheng@apple.com> Add a couple more heuristics to neuter machine cse some more.

1. Be careful with cse "cheap" expressions. e.g. constant materialization. Only cse them when the common expression is local or in a direct predecessor. We don't want cse of cheap instruction causing other expressions to be spilled.
2. Watch out for the case where the expression doesn't itself uses a virtual register. e.g. lea of frame object. If the common expression itself is used by copies (common for passing addresses to function calls), don't perform the cse. Since these expressions do not use a register, it creates a live range but doesn't close any, we want to be very careful with increasing register pressure.

Note these are heuristics so machine cse doesn't make register allocator unhappy. Once we have proper live range splitting and re-materialization support in place, these should be evaluated again.

Now machine cse is almost always a win on llvm nightly tests on x86 and x86_64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98121 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
2938a00f29dae82e47bf4939bcc8d0ff734ef582 10-Mar-2010 Evan Cheng <evan.cheng@apple.com> Add a couple more heuristics to neuter machine cse some more.

1. Be careful with cse "cheap" expressions. e.g. constant materialization. Only cse them when the common expression is local or in a direct predecessor. We don't want cse of cheap instruction causing other expressions to be spilled.
2. Watch out for the case where the expression doesn't itself uses a virtual register. e.g. lea of frame object. If the common expression itself is used by copies (common for passing addresses to function calls), don't perform the cse. Since these expressions do not use a register, it creates a live range but doesn't close any, we want to be very careful with increasing register pressure.

Note these are heuristics so machine cse doesn't make register allocator unhappy. Once we have proper live range splitting and re-materialization support in place, these should be evaluated again.

Now machine cse is almost always a win on llvm nightly tests on x86 and x86_64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98121 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
eb159d6ec70ddea165a2e84496cc635453f3a9c4 10-Mar-2010 Chris Lattner <sabre@nondot.org> inline away a form of IsPCRelative, eliminating the
dead IsPCRel argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98117 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
d85fc6e0b1750907bacf1cd7309e85e777b23a4d 10-Mar-2010 Chris Lattner <sabre@nondot.org> inline away a form of IsPCRelative, eliminating the
dead IsPCRel argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98117 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
ee3b40f64dfa5ea52a407897e966829468e1d11b 10-Mar-2010 Chris Lattner <sabre@nondot.org> add some fixme's for MCizing. EH still has a few things that
need to be MCized, but the last debug info thing are LEB and
cygwin specific (which the MC api doesn't support yet) and
one specific form of EmitReference which I'll tackle next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98116 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
188a87da79f51b00522b9487ee352a50a01e5ea4 10-Mar-2010 Chris Lattner <sabre@nondot.org> add some fixme's for MCizing. EH still has a few things that
need to be MCized, but the last debug info thing are LEB and
cygwin specific (which the MC api doesn't support yet) and
one specific form of EmitReference which I'll tackle next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98116 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
5a729995478d86e9f559b53d2ee4fb9b8c26e90b 10-Mar-2010 Jim Grosbach <grosbach@apple.com> Clear up the last (famous last words) frame index value reuse issues for Thumb1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98109 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
7c617b5e53987d786451dd668b5113f2e2b983f8 10-Mar-2010 Jim Grosbach <grosbach@apple.com> Clear up the last (famous last words) frame index value reuse issues for Thumb1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98109 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
7458b8e69bfcab4c7c07177ae9d37db876d4dd4c 10-Mar-2010 Dale Johannesen <dalej@apple.com> Speculatively revert 98104; could be what's causing crashes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98108 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
7dda453410eb957cd52cff4f8fa8d5a9c09e28df 10-Mar-2010 Dale Johannesen <dalej@apple.com> Speculatively revert 98104; could be what's causing crashes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98108 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
e77cd0fbe65ca3511105303a483d8782d96a5629 10-Mar-2010 Chris Lattner <sabre@nondot.org> mcize uses of PrintRelDirective and eliminate it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98107 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
90e4af7b9d479a6766924cfa375474a870fe4a0d 10-Mar-2010 Chris Lattner <sabre@nondot.org> mcize uses of PrintRelDirective and eliminate it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98107 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
43cfc4882a0e8e15aaef6224dd771e914f15a92d 10-Mar-2010 Chris Lattner <sabre@nondot.org> inline the bool form of PrintRelDirective away, leaving just the unsigned form.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98106 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
4aeaca40539ffd6562df22765bba3cf98e2fff9d 10-Mar-2010 Chris Lattner <sabre@nondot.org> inline the bool form of PrintRelDirective away, leaving just the unsigned form.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98106 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
9ef8efd5f3606859c5674fb7b3c6e1c60320d752 10-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate EOL, adding all comments with the OutStreamer.AddComment
method. With this, comments should end up on the same lines as the .byte
directives (for example) and we now get no output with:

$ llc CodeGen/X86/2009-02-12-DebugInfoVLA.ll -o - -filetype=null -asm-verbose

woot.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98105 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
233f52be36a6a2ec053b1580fdf89625de256513 10-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate EOL, adding all comments with the OutStreamer.AddComment
method. With this, comments should end up on the same lines as the .byte
directives (for example) and we now get no output with:

$ llc CodeGen/X86/2009-02-12-DebugInfoVLA.ll -o - -filetype=null -asm-verbose

woot.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98105 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
375f8bab865f8721a9c634df5bd0c512debda46e 10-Mar-2010 Dale Johannesen <dalej@apple.com> Ever more complicated DEBUG_VALUE fixes for branch folding.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98104 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
7f876967c0b368de48a1d0b9318b5113fddcf591 10-Mar-2010 Dale Johannesen <dalej@apple.com> Ever more complicated DEBUG_VALUE fixes for branch folding.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98104 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
8bd2f8f499244d677beada39759eb12926bdbb44 10-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate a bunch of \n's that are being printed to O. Next up is to kill
off "EOL".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98102 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
0d9d70f0130ca609a1f41e0d90b3952751c110ab 10-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate a bunch of \n's that are being printed to O. Next up is to kill
off "EOL".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98102 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
c93996e75223dbc176cd78675d1956e5424468ef 10-Mar-2010 Chris Lattner <sabre@nondot.org> convert the non-"ispcrel" case of EmitReference to MC,
significant debug info testcases are now all going through
MCStreamer, though they print a lot of extraneous newlines to "O".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98101 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
fcdae492ea4fc66ba547da6f761c2dd96b67fc82 10-Mar-2010 Chris Lattner <sabre@nondot.org> convert the non-"ispcrel" case of EmitReference to MC,
significant debug info testcases are now all going through
MCStreamer, though they print a lot of extraneous newlines to "O".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98101 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
b2247c71f6be3cb12c8aaf47c45d225e2e056856 09-Mar-2010 Jim Grosbach <grosbach@apple.com> Change the Value argument to eliminateFrameIndex to a type-tagged value. This
is preparatory to having PEI's scavenged frame index value reuse logic
properly distinguish types of frame values (e.g., whether the value is
stack-pointer relative or frame-pointer relative).

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98086 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
dff4b4c5a7cc894d3b4b6c6e779ea8f47fa50630 09-Mar-2010 Jim Grosbach <grosbach@apple.com> Change the Value argument to eliminateFrameIndex to a type-tagged value. This
is preparatory to having PEI's scavenged frame index value reuse logic
properly distinguish types of frame values (e.g., whether the value is
stack-pointer relative or frame-pointer relative).

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98086 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
7f2525d3f032406712531d3341385e977abde4f2 09-Mar-2010 Evan Cheng <evan.cheng@apple.com> Allow more cross-rc coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98048 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
bfc999956315ec0b29b4feb3780dd985e8e3f288 09-Mar-2010 Evan Cheng <evan.cheng@apple.com> Allow more cross-rc coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98048 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
597b0fc0795cad9bc222538348a4a6c6c92b5d82 09-Mar-2010 Chris Lattner <sabre@nondot.org> reapply r98035:
Now that setStartLabel takes an MCSymbol, we can de-ID'ize
beginScope and RecordSourceLine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98047 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
c608784dc8a668abbb96e7a471e6341c1fda669f 09-Mar-2010 Chris Lattner <sabre@nondot.org> reapply r98035:
Now that setStartLabel takes an MCSymbol, we can de-ID'ize
beginScope and RecordSourceLine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98047 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
4ba1da94686b3bff553f01c2a87b037cd07e43d2 09-Mar-2010 Chris Lattner <sabre@nondot.org> add some extra checks. I'm not sure why, but this does unbreak a
failure remaining on mainline.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98046 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6c7dfc046326f7c52c8df782c326b703882b3796 09-Mar-2010 Chris Lattner <sabre@nondot.org> add some extra checks. I'm not sure why, but this does unbreak a
failure remaining on mainline.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98046 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4b64a67cbc845b36b6352ca4bc0eb69c8b77cc5f 09-Mar-2010 Evan Cheng <evan.cheng@apple.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98045 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
7ef1840d9e17f8064c87982a09b99279365db700 09-Mar-2010 Evan Cheng <evan.cheng@apple.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98045 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
a0426450dafbbff6eb574d6a1cb6fbcd9dbb92dd 09-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't do illegal cross-class coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98044 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
1552cccc76c62513a1b38dc1d6fac2c11897cebe 09-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't do illegal cross-class coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98044 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
2b8890f8354ef742b6917695c14826cf52b23b66 09-Mar-2010 Evan Cheng <evan.cheng@apple.com> - Make the machine cse dumb coalescer (as opposed to the more awesome simple
coalescer) handle sub-register classes.
- Add heuristics to avoid non-profitable cse. Given the current lack of live
range splitting, avoid cse when an expression has PHI use and the would be
new use is in a BB where the expression wasn't already being used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98043 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineCSE.cpp
31f94c7c22cbf59753764bc17130dca6a73c0b4e 09-Mar-2010 Evan Cheng <evan.cheng@apple.com> - Make the machine cse dumb coalescer (as opposed to the more awesome simple
coalescer) handle sub-register classes.
- Add heuristics to avoid non-profitable cse. Given the current lack of live
range splitting, avoid cse when an expression has PHI use and the would be
new use is in a BB where the expression wasn't already being used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98043 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineCSE.cpp
47c1a21487b423574a1204c13e4d7e2493aa26cf 09-Mar-2010 Eric Christopher <echristo@apple.com> Speculatively revert r98035. It appears to have caused a set of buildbot
failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98039 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
ee6414cf04d680d2c49b867fc6085be79ed32a44 09-Mar-2010 Eric Christopher <echristo@apple.com> Speculatively revert r98035. It appears to have caused a set of buildbot
failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98039 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
27a54bce61f9f1578542bbecb0043145740aac4f 09-Mar-2010 Dan Gohman <gohman@apple.com> Attempt to make this debug output meaningful, both in the case of
multibyte opcodes and in the case of multiple scopes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98036 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
19b3826d0f0e299447d0a1c47d4fb2899d32d31f 09-Mar-2010 Dan Gohman <gohman@apple.com> Attempt to make this debug output meaningful, both in the case of
multibyte opcodes and in the case of multiple scopes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98036 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d1644025f0362ad90323c4e6c23a5d4f5c674f38 09-Mar-2010 Chris Lattner <sabre@nondot.org> Now that setStartLabel takes an MCSymbol, we can de-ID'ize
beginScope and RecordSourceLine.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98035 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
1e233f510c3d5d26de97d90ec6b061a6643e892c 09-Mar-2010 Chris Lattner <sabre@nondot.org> Now that setStartLabel takes an MCSymbol, we can de-ID'ize
beginScope and RecordSourceLine.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98035 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
855e8f504dca2e4130c223372d1429cbbe88d418 09-Mar-2010 Chris Lattner <sabre@nondot.org> change DbgScope to keep track of the start/end label as MCSymbol*
now that the dependence on ID is removed from MMI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98034 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b7db73348241ff51f6ac6c4b65cd3d2ff36036b3 09-Mar-2010 Chris Lattner <sabre@nondot.org> change DbgScope to keep track of the start/end label as MCSymbol*
now that the dependence on ID is removed from MMI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98034 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ebf83e8dae4d0d230e8db7bda1670b9633cc4fa4 09-Mar-2010 Chris Lattner <sabre@nondot.org> remove a useless optimization: now that label replacement never
happens, the start/end of a scope can never be the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98032 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5b9062cb3ad2a60f18e941ac42a2382302c46f24 09-Mar-2010 Chris Lattner <sabre@nondot.org> remove a useless optimization: now that label replacement never
happens, the start/end of a scope can never be the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98032 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5e42343a7b40d2fc6be5516fdcb033b3be025889 09-Mar-2010 Chris Lattner <sabre@nondot.org> strength reduce MMI::MappedLabel to MMI::isLabelDeleted,
and add a FIXME about how we are eventually going to zap this
lookup table once mc world domination is complete.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98031 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
achineModuleInfo.cpp
a34ec2290fa441d312ac33a61e6ec6029259bdef 09-Mar-2010 Chris Lattner <sabre@nondot.org> strength reduce MMI::MappedLabel to MMI::isLabelDeleted,
and add a FIXME about how we are eventually going to zap this
lookup table once mc world domination is complete.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98031 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
achineModuleInfo.cpp
11c1f42f66fc4b9dd714c1125c11c4bbf3e22f30 09-Mar-2010 Chris Lattner <sabre@nondot.org> mcstreamerize AsmPrinter::printLabel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98025 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
b2cc1a39f79742320ee6ba126d9eec4d6770dee7 09-Mar-2010 Chris Lattner <sabre@nondot.org> mcstreamerize AsmPrinter::printLabel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98025 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
7d14541501c65eba4a23db59e70dbb0ee6deebfb 09-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Disable physical register coalescing when the number of live ranges for the
physreg becomes ridiculously high.

std::upper_bound may be log(N), but for sufficiently large live intervals, it
becomes log(N)*cachemiss = a long long time.

This patch improves coalescer time by 4500x for a function with 20000
function calls. The generated code is different, but not significantly worse -
the allocator hints are almost as good as physreg coalescing anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98023 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
35071a08470b56dff90697618682720df7d3896c 09-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Disable physical register coalescing when the number of live ranges for the
physreg becomes ridiculously high.

std::upper_bound may be log(N), but for sufficiently large live intervals, it
becomes log(N)*cachemiss = a long long time.

This patch improves coalescer time by 4500x for a function with 20000
function calls. The generated code is different, but not significantly worse -
the allocator hints are almost as good as physreg coalescing anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98023 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
2ab0c4432295561a9cd88bf1cbde18070ff38538 09-Mar-2010 Chris Lattner <sabre@nondot.org> add a EmitSymbolValue convenience method to MCStreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98017 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
6cde3e6e993126df756e3be5b9ef43540b904644 09-Mar-2010 Chris Lattner <sabre@nondot.org> add a EmitSymbolValue convenience method to MCStreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98017 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
ead58652052b3763b92e70ef76cf90fb26322417 09-Mar-2010 Chris Lattner <sabre@nondot.org> make InlineInfoLabels hold MCSymbol*'s, avoiding
recomputation of the labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98016 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6ed0f90dacc7c42b48019ad035fc2767adeaf04a 09-Mar-2010 Chris Lattner <sabre@nondot.org> make InlineInfoLabels hold MCSymbol*'s, avoiding
recomputation of the labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98016 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
e90630aa8ccdad105ea95e30db647cf603ed6105 09-Mar-2010 Chris Lattner <sabre@nondot.org> mc'ize the last use of PrintLabelName and eliminate PrintLabelName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98015 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
b9dc5f7b580951d51cb32b56b769ccda0647a7f6 09-Mar-2010 Chris Lattner <sabre@nondot.org> mc'ize the last use of PrintLabelName and eliminate PrintLabelName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98015 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
84c27b212bf0db9c7a775193746ea480e131dc07 09-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate an argument from PrintRelDirective, sinking
the one special case into EmitSectionOffset. MCize
the non-special case in EmitSectionOffset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98014 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
ef6b14f51c137e7386d8a2fb568c5a96defc2d36 09-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate an argument from PrintRelDirective, sinking
the one special case into EmitSectionOffset. MCize
the non-special case in EmitSectionOffset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98014 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
416bc0a3195b13cfbdba5b9c09b67cdcc4447323 09-Mar-2010 Dan Gohman <gohman@apple.com> Print the correct index in the "match failed at index" message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98013 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8f03d751619b72bffebbcd2161dcdaa4578a31e0 09-Mar-2010 Dan Gohman <gohman@apple.com> Print the correct index in the "match failed at index" message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98013 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ed844324de8ee9e0d6a7957ef1e8559559dec976 09-Mar-2010 Chris Lattner <sabre@nondot.org> remove the suffix form of PrintLabelName, which was only
used for 'flavor'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98012 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
b67d69df658b1b60a40ce2dfe33c1f32e20c33bb 09-Mar-2010 Chris Lattner <sabre@nondot.org> remove the suffix form of PrintLabelName, which was only
used for 'flavor'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98012 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
819669a9aec2102b8ed02fd704b7b8389a0782e8 09-Mar-2010 Chris Lattner <sabre@nondot.org> now that the debug and eh emitters use a common .set counter,
we can eliminate "flavor".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98011 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
c3421bb80559c3103e5e52af11a92a02848b13b7 09-Mar-2010 Chris Lattner <sabre@nondot.org> now that the debug and eh emitters use a common .set counter,
we can eliminate "flavor".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98011 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
d317fefecc0da2173d513760fe48e2792248be69 09-Mar-2010 Chris Lattner <sabre@nondot.org> move .set generation out of DwarfPrinter into AsmPrinter and
MCize it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98010 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
0d50c7620d92762eaa5c9dedd07c94f5a6a19935 09-Mar-2010 Chris Lattner <sabre@nondot.org> move .set generation out of DwarfPrinter into AsmPrinter and
MCize it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98010 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
f8de150bd306e91b4bf7e0962982239c31d13fe6 09-Mar-2010 Evan Cheng <evan.cheng@apple.com> Don't waste time trying to CSE labels, phis, inline asm. Definitely avoid cse implicit-def for obvious performance reason.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98009 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
5196018d9cb80a1cc81b95c6365de24f33c5f6bb 09-Mar-2010 Evan Cheng <evan.cheng@apple.com> Don't waste time trying to CSE labels, phis, inline asm. Definitely avoid cse implicit-def for obvious performance reason.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98009 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
6df19429b0d16020cf10afa72dbedc4e8082f3ae 09-Mar-2010 Evan Cheng <evan.cheng@apple.com> Restrict machine cse to really trivial coalescing. Leave the heavy lifting to a real coalescer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98007 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
6c3b8ac6c9dfd7687a8097586925c09a84ab3d2e 09-Mar-2010 Evan Cheng <evan.cheng@apple.com> Restrict machine cse to really trivial coalescing. Leave the heavy lifting to a real coalescer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98007 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
f8bfa88c4fae4773a01204ea2ba508aa3a58392d 09-Mar-2010 Chris Lattner <sabre@nondot.org> simplify EmitSectionOffset to always use .set if it is
available, the only thing this affects is that we produce
.set in one case we didn't before, which shouldn't harm
anything. Make EmitSectionOffset call EmitDifference
instead of duplicating it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98005 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
57578766aa33d1a22cd124316df318db3e44f34a 09-Mar-2010 Chris Lattner <sabre@nondot.org> simplify EmitSectionOffset to always use .set if it is
available, the only thing this affects is that we produce
.set in one case we didn't before, which shouldn't harm
anything. Make EmitSectionOffset call EmitDifference
instead of duplicating it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98005 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
2a65fd402f4630fa79c32d7f97ffea4b8c6e2d63 09-Mar-2010 Chris Lattner <sabre@nondot.org> Remove a version of EmitDifference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98002 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
effa868d385d861fd1937ccac759bebe9b76596b 09-Mar-2010 Chris Lattner <sabre@nondot.org> Remove a version of EmitDifference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98002 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
04f37895b1d991edf1dff63c3db5feef7348182f 08-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate a form of PrintLabelName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97999 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
dd8187a3e9509c670162b6ae8b7115723a37f01c 08-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate a form of PrintLabelName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97999 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
a84ac5ce50428a30a62a0f821961206bb4f32e1c 08-Mar-2010 Chris Lattner <sabre@nondot.org> remove another form of EmitReference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97998 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
326861c4c823faedd5123f2acd5ad83f7a547e80 08-Mar-2010 Chris Lattner <sabre@nondot.org> remove another form of EmitReference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97998 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
7bc335544d5214706dbc9689974559fdf7767fb3 08-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate the non-MCSymbol versions of EmitReference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97997 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
c7249da2e9d1b89f3b49a12dc698d6a683c32402 08-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate the non-MCSymbol versions of EmitReference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97997 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
6d213e8da0d7222e44197ec75d3d76ec833be0df 08-Mar-2010 Chris Lattner <sabre@nondot.org> mc'ize EmitLabel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97996 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
f829eef8facab98ecb0fab5823511596b4ecb87b 08-Mar-2010 Chris Lattner <sabre@nondot.org> mc'ize EmitLabel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97996 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
703d12e3049bf879fe9f09688bc1799ddab87a75 08-Mar-2010 Chris Lattner <sabre@nondot.org> merge DIEObjectLabel and DIEDwarfLabel into DIELabel.

Yes, DIE you fiendish labels, die all of you.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97995 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfPrinter.h
4faf59af82784dc21418d61bb3a68d3a2dc0b56e 08-Mar-2010 Chris Lattner <sabre@nondot.org> merge DIEObjectLabel and DIEDwarfLabel into DIELabel.

Yes, DIE you fiendish labels, die all of you.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97995 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfPrinter.h
be4c2fc20d67b2f98dc6f02a1234d6724ae9d993 08-Mar-2010 Chris Lattner <sabre@nondot.org> elimiante the DWLabel class, using MCSymbol instead. Start
switching some stuff over to passing around MCSymbol* instead
of stem+ID.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97993 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfLabel.cpp
smPrinter/DwarfLabel.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
b98b1bf43259052d1b06b90cc643a47bb239e2bb 08-Mar-2010 Chris Lattner <sabre@nondot.org> elimiante the DWLabel class, using MCSymbol instead. Start
switching some stuff over to passing around MCSymbol* instead
of stem+ID.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97993 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfLabel.cpp
smPrinter/DwarfLabel.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
7f9e0f3b7b35817655e9a9bfa428bb007a278593 08-Mar-2010 Devang Patel <dpatel@apple.com> Derive DIType from DIScope. This simplifies getContext() where for members the context is a type. This also eliminates need of CompileUnitMaps maintained by dwarf writer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97990 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
77bf295dbb0b049fdec853ced0763084c43b2438 08-Mar-2010 Devang Patel <dpatel@apple.com> Derive DIType from DIScope. This simplifies getContext() where for members the context is a type. This also eliminates need of CompileUnitMaps maintained by dwarf writer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97990 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9e592490c358725242fe663ffc6badeea1cdf3c0 08-Mar-2010 Devang Patel <dpatel@apple.com> Avoid using DIDescriptor.isNull().
This is a first step towards eliminating checks in Descriptor constructors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97975 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
achineInstr.cpp
3c91b05d2b1751b9e4e21fd958d358ec463dcd3c 08-Mar-2010 Devang Patel <dpatel@apple.com> Avoid using DIDescriptor.isNull().
This is a first step towards eliminating checks in Descriptor constructors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97975 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
achineInstr.cpp
be149874dbf1f1a139afb106da91d617025964eb 08-Mar-2010 Devang Patel <dpatel@apple.com> Revert r97947.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97963 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
achineInstr.cpp
0ef3fa6aabc80995c8a0bd829c85c89ef2d4c32d 08-Mar-2010 Devang Patel <dpatel@apple.com> Revert r97947.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97963 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
achineInstr.cpp
523423613992fd514f7660b52002628bc8d199fb 08-Mar-2010 Devang Patel <dpatel@apple.com> Avoid using DIDescriptor.isNull().
This is a first step towards eliminating unncessary constructor checks in light weight DIDescriptor wrappers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97947 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
achineInstr.cpp
d8cc5d5256e79a74188dfef5a12d43127330dad3 08-Mar-2010 Devang Patel <dpatel@apple.com> Avoid using DIDescriptor.isNull().
This is a first step towards eliminating unncessary constructor checks in light weight DIDescriptor wrappers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97947 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
achineInstr.cpp
62ced028e5ec7247bc5ba21703845bed2742361b 08-Mar-2010 Dale Johannesen <dalej@apple.com> Add Order to SDDbgValue



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97939 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDDbgValue.h
fab4a25d46cdd178c20e6a8029a2eed10f61f0ba 08-Mar-2010 Dale Johannesen <dalej@apple.com> Add Order to SDDbgValue



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97939 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDDbgValue.h
b2b03b997805c3ea281ec60f01862bc7decfaffd 08-Mar-2010 Dale Johannesen <dalej@apple.com> Fix dbg value handling in tail merging.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97938 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
84839daa595968286acd25644820c644867f0c52 08-Mar-2010 Dale Johannesen <dalej@apple.com> Fix dbg value handling in tail merging.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97938 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
df49dc7d29863a30f785c6e8ec88dcf8c8846c56 08-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Revert r97917, which was causing Clang Debug self-host failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97932 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1ddcf35b68a4c326c548272134611ce54b1afd25 08-Mar-2010 Douglas Gregor <dgregor@apple.com> Revert r97917, which was causing Clang Debug self-host failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97932 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6dbc2eece96fe5e7610818ae079ce66942ebb12e 07-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Roll r97906 forward again, without double-deleting CompileUnit::IndexTyDie.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97917 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9467f0e3bd2b0fece0d50a6d92f996b4f3952096 07-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Roll r97906 forward again, without double-deleting CompileUnit::IndexTyDie.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97917 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d700ed3e880cdd2cd29d65bed84f8a92f77caed9 07-Mar-2010 Chris Lattner <sabre@nondot.org> Use Other as a sentinel instead of iAny.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97914 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
acee647b13d6e3e92cdbfe9657622a3daa2a6da1 07-Mar-2010 Chris Lattner <sabre@nondot.org> Use Other as a sentinel instead of iAny.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97914 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
10bb693ebf8b677e8f27b4793863ffc24dc3df51 07-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> _2_ gcc crashes, ah, ah, ah...

(Rolling back r97906.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97909 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8c42ca937453bd216b68baff1f32b47430d5b374 07-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> _2_ gcc crashes, ah, ah, ah...

(Rolling back r97906.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97909 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
3116cb1b4c71c62300384650750c1c8017a2fedc 07-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Avoid leaking CompileUnits and DbgScopes from DwarfDebug. Leaks found by Valgrind!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97906 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
f7399bf929f401d4e1aa40f4f7a2265e2cdedc39 07-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Avoid leaking CompileUnits and DbgScopes from DwarfDebug. Leaks found by Valgrind!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97906 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
009f16a9f1bc686b19942df8a387588bbb85a44e 07-Mar-2010 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97895 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
98f15d27cda62ca2f973da0244b6b5e15f18acb7 07-Mar-2010 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97895 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
812cafa610e0930d80e5fb1195bc0d5b5b335f0f 06-Mar-2010 Evan Cheng <evan.cheng@apple.com> Don't update physical register def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97861 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
6cc1aeaad23b878fbf252efc3e45fb3a74a646eb 06-Mar-2010 Evan Cheng <evan.cheng@apple.com> Don't update physical register def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97861 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
740089a49a70d6a5ba13dae28e43a2bfeaf1e860 06-Mar-2010 Dale Johannesen <dalej@apple.com> Add some new bits of debug info handling. No
functional change yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97855 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/SDDbgValue.h
06a26637daff1bb785ef0945d1ba05f6ccdfab86 06-Mar-2010 Dale Johannesen <dalej@apple.com> Add some new bits of debug info handling. No
functional change yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97855 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/SDDbgValue.h
185b448620f102722e5ecee117fab6e80300219f 06-Mar-2010 Dan Gohman <gohman@apple.com> Reapply r97778 and r97779, enabled only for unsigned i64 to f64
conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97854 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0fa9d1d9011a98212b66daf27f6a8a3d734ae818 06-Mar-2010 Dan Gohman <gohman@apple.com> Reapply r97778 and r97779, enabled only for unsigned i64 to f64
conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97854 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1305dfe74b8030ccf405ac4c9011c778dc39dc0f 05-Mar-2010 Charles Davis <cdavis@mines.edu> Don't emit global symbols into the (__TEXT,__ustring) section on Darwin. This
is a workaround for <rdar://problem/7672401/> (which I filed).

This let's us build Wine on Darwin, and it gets the Qt build there a little bit
further (so Doug says).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97845 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
314fef6127a18db9f8c39f0081566f49c70a15f0 05-Mar-2010 Charles Davis <cdavis@mines.edu> Don't emit global symbols into the (__TEXT,__ustring) section on Darwin. This
is a workaround for <rdar://problem/7672401/> (which I filed).

This let's us build Wine on Darwin, and it gets the Qt build there a little bit
further (so Doug says).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97845 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
6207e5dfc3b6eee5be5703142b928e432c646d53 05-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Better handling of dead super registers in LiveVariables. We used to do this:

CALL ... %RAX<imp-def>
... [not using %RAX]
%EAX = ..., %RAX<imp-use, kill>
RET %EAX<imp-use,kill>

Now we do this:

CALL ... %RAX<imp-def, dead>
... [not using %RAX]
%EAX = ...
RET %EAX<imp-use,kill>

By not artificially keeping %RAX alive, we lower register pressure a bit.

The correct number of instructions for 2008-08-05-SpillerBug.ll is obviously
55, anybody can see that. Sheesh.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97838 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
53e000bac319a25f7c13ec8b7b413418fba5ef20 05-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Better handling of dead super registers in LiveVariables. We used to do this:

CALL ... %RAX<imp-def>
... [not using %RAX]
%EAX = ..., %RAX<imp-use, kill>
RET %EAX<imp-use,kill>

Now we do this:

CALL ... %RAX<imp-def, dead>
... [not using %RAX]
%EAX = ...
RET %EAX<imp-use,kill>

By not artificially keeping %RAX alive, we lower register pressure a bit.

The correct number of instructions for 2008-08-05-SpillerBug.ll is obviously
55, anybody can see that. Sheesh.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97838 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
4f8f6b3f37759474a0bc139d586cc2e6adc37793 05-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> We don't really care about correct register liveness information after the
post-ra scheduler has run. Disable the verifier checks that late in the game.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97837 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
a76e816844debe822c23932ef6a71c127d073063 05-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> We don't really care about correct register liveness information after the
post-ra scheduler has run. Disable the verifier checks that late in the game.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97837 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
4f8e6669676759f830877d3f777ad967663a97e8 05-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid creating bad PHI instructions when BR is being const-folded.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97836 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
580bba2b0dd2173c899699a87e109bfd1482c001 05-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid creating bad PHI instructions when BR is being const-folded.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97836 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f2ae2a4e14e17e359e3060a2615cb7eae4ab9880 05-Mar-2010 Chris Lattner <sabre@nondot.org> Fix PR6497, a bug where we'd fold a load into an addc
node which has a flag. That flag in turn was used by an
already-selected adde which turned into an ADC32ri8 which
used a selected load which was chained to the load we
folded. This flag use caused us to form a cycle. Fix
this by not ignoring chains in IsLegalToFold even in
cases where the isel thinks it can.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97791 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
18fdabadca110671b436de52fe7bd492ad49e656 05-Mar-2010 Chris Lattner <sabre@nondot.org> Fix PR6497, a bug where we'd fold a load into an addc
node which has a flag. That flag in turn was used by an
already-selected adde which turned into an ADC32ri8 which
used a selected load which was chained to the load we
folded. This flag use caused us to form a cycle. Fix
this by not ignoring chains in IsLegalToFold even in
cases where the isel thinks it can.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97791 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3f799de278213e4c890af7a2662ac1fb6e205899 05-Mar-2010 Chris Lattner <sabre@nondot.org> inline a small function with one call site.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97789 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9bbcd5ee5b9a34f82d7d0570256ff4b4f53fabe9 05-Mar-2010 Chris Lattner <sabre@nondot.org> inline a small function with one call site.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97789 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2af1f30658e4bf432ed89e351bfd16d4e43786a2 05-Mar-2010 Dan Gohman <gohman@apple.com> Revert r97778 and r97779. They're somehow breaking llvm-gcc builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97781 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b6b343d77acb5c290f7093e741fbce484d11cedc 05-Mar-2010 Dan Gohman <gohman@apple.com> Revert r97778 and r97779. They're somehow breaking llvm-gcc builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97781 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4497854a94c9d2f53e6e8005c60ab072059a3d9c 05-Mar-2010 Dan Gohman <gohman@apple.com> Fix these constants to be more portable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
808ab341b4572815a74235ef00ccb446d334b957 05-Mar-2010 Dan Gohman <gohman@apple.com> Fix these constants to be more portable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
625f5cd301d073267ab2a78cf59fbf5085231c8d 05-Mar-2010 Dan Gohman <gohman@apple.com> Rewrite i64-to-f64 conversion using an algorithm which handles
rounding correctly. This implementation is a generalization of
the x86_64 code in compiler-rt.

This fixes rdar://7683708.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97778 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cfa7ca19974a463b47f16a61bfecf7f532dca07d 05-Mar-2010 Dan Gohman <gohman@apple.com> Rewrite i64-to-f64 conversion using an algorithm which handles
rounding correctly. This implementation is a generalization of
the x86_64 code in compiler-rt.

This fixes rdar://7683708.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97778 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
999c188203b1a2013ab6682b7d9fc0fb400ac16c 05-Mar-2010 Dale Johannesen <dalej@apple.com> Fix some more places where dbg_value affected codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97765 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
riticalAntiDepBreaker.cpp
achineSink.cpp
ostRASchedulerList.cpp
b0812f114b83a32c4b90a4b553c7177c557558b5 05-Mar-2010 Dale Johannesen <dalej@apple.com> Fix some more places where dbg_value affected codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97765 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
riticalAntiDepBreaker.cpp
achineSink.cpp
ostRASchedulerList.cpp
07e383ce90b3462f6ada1db29adcac32fd2b78e0 04-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Fix memcheck-found leaks: one false positive from using new[], and one true
positive where pointers would be leaked on llvm_shutdown.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97759 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
e8cfa63e4ec3eb5dde44c8f30dee136b20f8195d 04-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Fix memcheck-found leaks: one false positive from using new[], and one true
positive where pointers would be leaked on llvm_shutdown.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97759 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
cd27762f1de3539ab857852666a8ad7efe79aed8 04-Mar-2010 Jim Grosbach <grosbach@apple.com> For SJLJ exception handling, make sure that all calls that are not marked
as nounwind are marked with a -1 call-site value. This is necessary to, for
example, correctly process exceptions thrown from within an "unexpected"
execption handler (see SingleSource/Regression/C++/EH/expection_spec_test.cpp).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97757 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
b58a59b3c1563ab5bd7225748e32933bf6d76c03 04-Mar-2010 Jim Grosbach <grosbach@apple.com> For SJLJ exception handling, make sure that all calls that are not marked
as nounwind are marked with a -1 call-site value. This is necessary to, for
example, correctly process exceptions thrown from within an "unexpected"
execption handler (see SingleSource/Regression/C++/EH/expection_spec_test.cpp).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97757 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
5e4415d10159d96f00103cf510855f833508f3d2 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Run machine licm before machine cse to avoid messing up licm opportunities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97752 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
c46e293e946d109319d382b4547b4f47806d567a 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Run machine licm before machine cse to avoid messing up licm opportunities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97752 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
5daca473d881155a2d66ba067d55d21f84a7bf11 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Avoid cse load instructions unless they are known to be invariant loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97747 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
a5f32cb3d3cab0463c407cfd2c4153d5dea4498d 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Avoid cse load instructions unless they are known to be invariant loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97747 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
b75a7b3f65a514955589404b304510f9d1663c7c 04-Mar-2010 Chris Lattner <sabre@nondot.org> add a statistic for # times fastisel fails.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97738 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c19ae9d91d30bc008e0be5f5d4727f333199f64c 04-Mar-2010 Chris Lattner <sabre@nondot.org> add a statistic for # times fastisel fails.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97738 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
dbd638803fb4bd508c7aaf2447157b60e6105c0c 04-Mar-2010 Dan Gohman <gohman@apple.com> Fix a typo Duncan noticed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97735 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ba72b0c4e17795fd61e18d022a6d86a680be00c5 04-Mar-2010 Dan Gohman <gohman@apple.com> Fix a typo Duncan noticed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97735 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a342f90c3157d12a13eff85ae5211164906e98bf 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Rename -machine-cse to -enable-machine-cse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97713 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
9763f709e229ff39d9f00a1086c07dfa0398b485 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Rename -machine-cse to -enable-machine-cse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97713 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
fdc05a7be971ace165e45ac7af498fd300fa547f 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Look ahead a bit to determine if a physical register def that is not marked dead is really alive. This is necessary to catch a lot of common cse opportunities for targets like x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97706 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
b3958e80324884e3d1c1e198a50f212bae0c3b77 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Look ahead a bit to determine if a physical register def that is not marked dead is really alive. This is necessary to catch a lot of common cse opportunities for targets like x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97706 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
609472bddef8b70aa4deb784e54e0775b1d4aa21 04-Mar-2010 Chris Lattner <sabre@nondot.org> change the new isel matcher to emit ComplexPattern matches
as the very last thing before node emission. This should
dramatically reduce the number of times we do 'MatchAddress'
on X86, speeding up compile time. This also improves comments
in the tables and shrinks the table a bit, now down to
80506 bytes for x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
57bf8a483edf97589c3e6085721e72fc187677a8 04-Mar-2010 Chris Lattner <sabre@nondot.org> change the new isel matcher to emit ComplexPattern matches
as the very last thing before node emission. This should
dramatically reduce the number of times we do 'MatchAddress'
on X86, speeding up compile time. This also improves comments
in the tables and shrinks the table a bit, now down to
80506 bytes for x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2bafa4b0441e0174c80af34004ef3ceca92aa664 04-Mar-2010 Dan Gohman <gohman@apple.com> Fix more code to work properly with vector operands. Based on
a patch my Micah Villmow for PR6465.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6900a39d28132d86529724ba4dc8302edf1a9b53 04-Mar-2010 Dan Gohman <gohman@apple.com> Fix more code to work properly with vector operands. Based on
a patch my Micah Villmow for PR6465.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
369679ef2fd29be0b8878f2045670522f38fa051 04-Mar-2010 Chris Lattner <sabre@nondot.org> inline CannotYetSelectIntrinsic into CannotYetSelect and simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97690 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2c4afd1d8e3cd7cdf47a163deaf345a747541367 04-Mar-2010 Chris Lattner <sabre@nondot.org> inline CannotYetSelectIntrinsic into CannotYetSelect and simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97690 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f69f9754688bce361248d923de709d8077e81ffa 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Fix a logic error. An instruction that has a live physical register def cannot be CSE'ed, but it *can* be used to replace a common subexpression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97688 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
67bda7215b4bc1b3cc9dd80ef5785ac6dd26fb8c 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Fix a logic error. An instruction that has a live physical register def cannot be CSE'ed, but it *can* be used to replace a common subexpression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97688 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
17e800108e9f55fb2b0230e658b3fc0310cd24ee 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Remove PHINodeTraits and use MachineInstrExpressionTrait instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97687 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
a92dced4a186c03f06a1e9156ca00d997ef0a972 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Remove PHINodeTraits and use MachineInstrExpressionTrait instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97687 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
a967def511718c391d4d93d24efa202f318fcf6e 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Move MachineInstrExpressionTrait::getHashValue() out of line so it can skip over only virtual register defs. This matches what isEqual() is doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97680 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
67eaa08f2b71aa8aec8cdf4c7d970db4cad58ada 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Move MachineInstrExpressionTrait::getHashValue() out of line so it can skip over only virtual register defs. This matches what isEqual() is doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97680 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
920613ea2ca17d200ac23b882e11c58851e9c1bc 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Re-apply r97667 but with a little bit of thought put into the patch. This implements a special DenseMapInfo trait for DenseMap<MachineInstr*> that compare the value of the MachineInstr rather than the pointer value. Since the hashing and equality test functions ignore defs it's useful for doing CSE kind optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97678 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
05bdcbb1ae48d1d1209173d137d11c35f46abff3 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Re-apply r97667 but with a little bit of thought put into the patch. This implements a special DenseMapInfo trait for DenseMap<MachineInstr*> that compare the value of the MachineInstr rather than the pointer value. Since the hashing and equality test functions ignore defs it's useful for doing CSE kind optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97678 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
bf0b0681b58d156a5c58364b4d32ed8ef940d72e 03-Mar-2010 Dan Gohman <gohman@apple.com> Revert 97667. It broke a bunch of tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97673 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
319dfa3fb38a0769806b155dbe8fc0af7f8bdb1e 03-Mar-2010 Dan Gohman <gohman@apple.com> Revert 97667. It broke a bunch of tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97673 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
4a568a55f36865f84ef51f200891a7962b1cfc52 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Fix funky indentation and add comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97670 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
34cdf6edf55d22832dee34fe6a39f1e10691ab51 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Fix funky indentation and add comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97670 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
38f625ff4050111d8ac873d821e470a985aabad5 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Move DenseMapInfo for MachineInstr* to MachineInstr.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97667 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
a054ae02fda1886f36b4b51cba8ac8000ed8be8a 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Move DenseMapInfo for MachineInstr* to MachineInstr.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97667 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
4f6bea00e74ce718c1e61a4b29b08a8d35c201ce 03-Mar-2010 Dan Gohman <gohman@apple.com> Fix a bug in SelectionDAG's ReplaceAllUsesWith in the case where
CSE and recursive RAUW calls delete a node from the use list,
invalidating the use list iterator. There's currently no known
way to reproduce this in an unmodified LLVM, however there's no
fundamental reason why a SelectionDAG couldn't be formed which
would trigger this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97665 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a72d2a210c61aa60f5e03bfc3cd697f809fee3e5 03-Mar-2010 Dan Gohman <gohman@apple.com> Fix a bug in SelectionDAG's ReplaceAllUsesWith in the case where
CSE and recursive RAUW calls delete a node from the use list,
invalidating the use list iterator. There's currently no known
way to reproduce this in an unmodified LLVM, however there's no
fundamental reason why a SelectionDAG couldn't be formed which
would trigger this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97665 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
86a144c9543b17fb15eeaf17e16686a5c863461c 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Machine CSE work in progress. It's doing some CSE now. But implicit def of physical registers are getting in the way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97664 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
16b48b8a05d6881b575846fe42fad9a0c75b8a53 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Machine CSE work in progress. It's doing some CSE now. But implicit def of physical registers are getting in the way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97664 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
38b5bbc353899affb812ea4ebb6ccb134278d826 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Add MachineRegisterInfo::hasOneUse and hasOneNonDBGUse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97663 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
woAddressInstructionPass.cpp
1423c70b8f1b1a757c640fac9a17cb015012e8e9 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Add MachineRegisterInfo::hasOneUse and hasOneNonDBGUse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97663 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
woAddressInstructionPass.cpp
c652eca76ebc6032871d555f9f7a67d2fc14e4a2 03-Mar-2010 Bill Wendling <isanbard@gmail.com> Revert...
--- Reverse-merging r97592 into '.':
U lib/CodeGen/TargetLoweringObjectFileImpl.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97657 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
fec8657351346966e48f9248079e85602dc1f85d 03-Mar-2010 Bill Wendling <isanbard@gmail.com> Revert...
--- Reverse-merging r97592 into '.':
U lib/CodeGen/TargetLoweringObjectFileImpl.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97657 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
9851e78217bb61e1626440fb09204bee37e22728 03-Mar-2010 Chris Lattner <sabre@nondot.org> add some of the more obscure predicate types to the
Scope accelerator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97652 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
da828e3c8c869c0a62fefbd4c14811ca6fb4913d 03-Mar-2010 Chris Lattner <sabre@nondot.org> add some of the more obscure predicate types to the
Scope accelerator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97652 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7f6953355214dbc1055049dd4496d5bb455718b6 03-Mar-2010 Chris Lattner <sabre@nondot.org> speed up scope node processing: if the first element of a scope
entry we're about to process is obviously going to fail, don't
bother pushing a scope only to have it immediately be popped.
This avoids a lot of scope stack traffic in common cases.

Unfortunately, this requires duplicating some of the predicate
dispatch. To avoid duplicating the actual logic I pulled each
predicate out to its own static function which gets used in
both places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97651 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f1b7c7d476a2f30f035c527cfe8e14c6c6255f07 03-Mar-2010 Chris Lattner <sabre@nondot.org> speed up scope node processing: if the first element of a scope
entry we're about to process is obviously going to fail, don't
bother pushing a scope only to have it immediately be popped.
This avoids a lot of scope stack traffic in common cases.

Unfortunately, this requires duplicating some of the predicate
dispatch. To avoid duplicating the actual logic I pulled each
predicate out to its own static function which gets used in
both places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97651 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c4188acb9c90d663f755aff45548df07006bceb2 03-Mar-2010 Chris Lattner <sabre@nondot.org> introduce a new SwitchTypeMatcher node (which is analogous to
SwitchOpcodeMatcher) and have DAGISelMatcherOpt form it. This
speeds up selection, particularly for X86 which has lots of
variants of instructions with only type differences.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97645 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cfe2eab7446dedc471592fe702fefef783383171 03-Mar-2010 Chris Lattner <sabre@nondot.org> introduce a new SwitchTypeMatcher node (which is analogous to
SwitchOpcodeMatcher) and have DAGISelMatcherOpt form it. This
speeds up selection, particularly for X86 which has lots of
variants of instructions with only type differences.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97645 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ef1588e0f11b3167641471b1e8017a37becbc54d 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Work in progress. Finding some cse now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97635 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
6ba9554988f2efe13c6556c6149aea4846cf415d 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Work in progress. Finding some cse now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97635 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
75c9f34b795e875808c0279a2e67ed31b6678a36 03-Mar-2010 Bill Wendling <isanbard@gmail.com> Use APInt instead of zext value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97631 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
32f9eb2bc3ddaf17e790f086056829e4ad91ab66 03-Mar-2010 Bill Wendling <isanbard@gmail.com> Use APInt instead of zext value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97631 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
11fd549ebe3895b606a394ba8a0c239424b806cf 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> - Change MachineInstr::isIdenticalTo to take a new option that determines whether it should skip checking defs or at least virtual register defs. This subsumes part of the TargetInstrInfo::isIdentical functionality.
- Eliminate TargetInstrInfo::isIdentical and replace it with produceSameValue. In the default case, produceSameValue just checks whether two machine instructions are identical (except for virtual register defs). But targets may override it to check for unusual cases (e.g. ARM pic loads from constant pools).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97628 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineLICM.cpp
argetInstrInfoImpl.cpp
506049f29f4f202a8e45feb916cc0264440a7f6d 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> - Change MachineInstr::isIdenticalTo to take a new option that determines whether it should skip checking defs or at least virtual register defs. This subsumes part of the TargetInstrInfo::isIdentical functionality.
- Eliminate TargetInstrInfo::isIdentical and replace it with produceSameValue. In the default case, produceSameValue just checks whether two machine instructions are identical (except for virtual register defs). But targets may override it to check for unusual cases (e.g. ARM pic loads from constant pools).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97628 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineLICM.cpp
argetInstrInfoImpl.cpp
f47ee4db9e22e0e672ff0ab664447854c2d52b1c 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Add an option to enable machine cse (it's not doing anything yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97627 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
d89347cb49178da65a1c72cde5d54e79007d57ae 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Add an option to enable machine cse (it's not doing anything yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97627 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
72f81c05606ff41d5d7af4eea76d57d90bb29f43 03-Mar-2010 Bill Wendling <isanbard@gmail.com> This test case:

long test(long x) { return (x & 123124) | 3; }

Currently compiles to:

_test:
orl $3, %edi
movq %rdi, %rax
andq $123127, %rax
ret

This is because instruction and DAG combiners canonicalize

(or (and x, C), D) -> (and (or, D), (C | D))

However, this is only profitable if (C & D) != 0. It gets in the way of the
3-addressification because the input bits are known to be zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97616 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7d9f2b93a356aa89186522bd61c5c565718ff555 03-Mar-2010 Bill Wendling <isanbard@gmail.com> This test case:

long test(long x) { return (x & 123124) | 3; }

Currently compiles to:

_test:
orl $3, %edi
movq %rdi, %rax
andq $123127, %rax
ret

This is because instruction and DAG combiners canonicalize

(or (and x, C), D) -> (and (or, D), (C | D))

However, this is only profitable if (C & D) != 0. It gets in the way of the
3-addressification because the input bits are known to be zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97616 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
017965026f37cd0b619b3f580f544566fe560950 02-Mar-2010 Chris Lattner <sabre@nondot.org> Fix some issues in WalkChainUsers dealing with
CopyToReg/CopyFromReg/INLINEASM. These are annoying because
they have the same opcode before an after isel. Fix this by
setting their NodeID to -1 to indicate that they are selected,
just like what automatically happens when selecting things that
end up being machine nodes.

With that done, give IsLegalToFold a new flag that causes it to
ignore chains. This lets the HandleMergeInputChains routine be
the one place that validates chains after a match is successful,
enabling the new hotness in chain processing. This smarter
chain processing eliminates the need for "PreprocessRMW" in the
X86 and MSP430 backends and enables MSP to start matching it's
multiple mem operand instructions more aggressively.

I currently #if out the dead code in the X86 backend and MSP
backend, I'll remove it for real in a follow-on patch.

The testcase changes are:
test/CodeGen/X86/sse3.ll: we generate better code
test/CodeGen/X86/store_op_load_fold2.ll: PreprocessRMW was
miscompiling this before, we now generate correct code
Convert it to filecheck while I'm at it.
test/CodeGen/MSP430/Inst16mm.ll: Add a testcase for mem/mem
folding to make anton happy. :)




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97596 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d1b738298359846b9cccaa0931e6ec1fc59a6d87 02-Mar-2010 Chris Lattner <sabre@nondot.org> Fix some issues in WalkChainUsers dealing with
CopyToReg/CopyFromReg/INLINEASM. These are annoying because
they have the same opcode before an after isel. Fix this by
setting their NodeID to -1 to indicate that they are selected,
just like what automatically happens when selecting things that
end up being machine nodes.

With that done, give IsLegalToFold a new flag that causes it to
ignore chains. This lets the HandleMergeInputChains routine be
the one place that validates chains after a match is successful,
enabling the new hotness in chain processing. This smarter
chain processing eliminates the need for "PreprocessRMW" in the
X86 and MSP430 backends and enables MSP to start matching it's
multiple mem operand instructions more aggressively.

I currently #if out the dead code in the X86 backend and MSP
backend, I'll remove it for real in a follow-on patch.

The testcase changes are:
test/CodeGen/X86/sse3.ll: we generate better code
test/CodeGen/X86/store_op_load_fold2.ll: PreprocessRMW was
miscompiling this before, we now generate correct code
Convert it to filecheck while I'm at it.
test/CodeGen/MSP430/Inst16mm.ll: Add a testcase for mem/mem
folding to make anton happy. :)




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97596 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d3198e39175d5d317e4f0fdfc5019fb5fe847bc5 02-Mar-2010 Bill Wendling <isanbard@gmail.com> Okay. One last attempt:

Place the LSDA into the TEXT section on Mach-O. This saves space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97592 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
d556155afde4fe05f0701a35caf072c3b3409a90 02-Mar-2010 Bill Wendling <isanbard@gmail.com> Okay. One last attempt:

Place the LSDA into the TEXT section on Mach-O. This saves space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97592 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
0df32098702460a923c0654fc78394c7dc9c6d62 02-Mar-2010 Chris Lattner <sabre@nondot.org> run HandleMergeInputChains even if we only have one input chain.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97581 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
00592ec857b4c3f31b46412e2738924238c59983 02-Mar-2010 Chris Lattner <sabre@nondot.org> run HandleMergeInputChains even if we only have one input chain.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97581 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6ef8bb4ed5d6f3027ffe1d50df2b389302d60f3a 02-Mar-2010 Evan Cheng <evan.cheng@apple.com> Swap parameters of isSafeToMove and isSafeToReMat for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97578 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
achineInstr.cpp
achineSink.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
ac1abde05b7e6956c01deb6557539bee8fea30f4 02-Mar-2010 Evan Cheng <evan.cheng@apple.com> Swap parameters of isSafeToMove and isSafeToReMat for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97578 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
achineInstr.cpp
achineSink.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
bdc2d1d127af1cf26a909648d8038f225160a6f6 02-Mar-2010 Evan Cheng <evan.cheng@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97577 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
c5bbba1e499d46f52364e76ea95d4a37adced676 02-Mar-2010 Evan Cheng <evan.cheng@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97577 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
36cd9f87e832aa08fba5d7298ff1be4940bb97ea 02-Mar-2010 Devang Patel <dpatel@apple.com> Fix grammar.
Thanks Duncan!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97572 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1eac3e7d1e5d0bce098f15d87a2c8741eba73662 02-Mar-2010 Devang Patel <dpatel@apple.com> Fix grammar.
Thanks Duncan!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97572 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
385f39fc2a100a8411544ff4b0fe9c9d1cc7d6e3 02-Mar-2010 Chris Lattner <sabre@nondot.org> Fix the xfail I added a couple of patches back. The issue
was that we weren't properly handling the case when interior
nodes of a matched pattern become dead after updating chain
and flag uses. Now we handle this explicitly in
UpdateChainsAndFlags.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97561 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
82dd3d38d9b3bd49f19b8230f39d33e8ee6d4055 02-Mar-2010 Chris Lattner <sabre@nondot.org> Fix the xfail I added a couple of patches back. The issue
was that we weren't properly handling the case when interior
nodes of a matched pattern become dead after updating chain
and flag uses. Now we handle this explicitly in
UpdateChainsAndFlags.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97561 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ad7c0f5649d9cee42bd54e02b817316dddb8db80 02-Mar-2010 Chris Lattner <sabre@nondot.org> I was confused about this, it turns out that MorphNodeTo
*does* delete ex-operands that become dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
61c97f693216670cda554d287cd871fdea1b36f9 02-Mar-2010 Chris Lattner <sabre@nondot.org> I was confused about this, it turns out that MorphNodeTo
*does* delete ex-operands that become dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ad0310618a87ee72b74b75b1960603169e9f087d 02-Mar-2010 Chris Lattner <sabre@nondot.org> factor node morphing out to its own helper method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3ff1e4db7896a8ccec74800d52a926118d025260 02-Mar-2010 Chris Lattner <sabre@nondot.org> factor node morphing out to its own helper method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6411e3e62ea9dfe23f5fa24b9d6a84da7ec70a98 02-Mar-2010 Chris Lattner <sabre@nondot.org> Sink InstructionSelect() out of each target into SDISel, and rename it
DoInstructionSelection. Inline "SelectRoot" into it from DAGISelHeader.
Sink some other stuff out of DAGISelHeader into SDISel.

Eliminate the various 'Indent' stuff from various targets, which dates
to when isel was recursive.

17 files changed, 114 insertions(+), 430 deletions(-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97555 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7c306da505e2d7f64e160890b274a47fa0740962 02-Mar-2010 Chris Lattner <sabre@nondot.org> Sink InstructionSelect() out of each target into SDISel, and rename it
DoInstructionSelection. Inline "SelectRoot" into it from DAGISelHeader.
Sink some other stuff out of DAGISelHeader into SDISel.

Eliminate the various 'Indent' stuff from various targets, which dates
to when isel was recursive.

17 files changed, 114 insertions(+), 430 deletions(-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97555 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
70b967f60ef497a35bba54053e95a014d4cb6498 02-Mar-2010 Eric Christopher <echristo@apple.com> Add file to CMakeLists.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97545 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
7b2c9e6a30530b6c4496f3a511f9d821ecb83b69 02-Mar-2010 Eric Christopher <echristo@apple.com> Add file to CMakeLists.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97545 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
2730339da956c0f56161c125741918c245caae16 02-Mar-2010 Evan Cheng <evan.cheng@apple.com> Add skeleton of a machine level cse pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97543 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
c6fe333688519c5a28d1e0f30ecdaa2ad8f1d410 02-Mar-2010 Evan Cheng <evan.cheng@apple.com> Add skeleton of a machine level cse pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97543 91177308-0d34-0410-b5e6-96231b3b80d8
achineCSE.cpp
4fd9d3136226bf472a0c3a22799f91be39a331a3 02-Mar-2010 Chris Lattner <sabre@nondot.org> Use the right induction variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97541 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6183fbd7267a7de857e32a2106cfb46a219728f1 02-Mar-2010 Chris Lattner <sabre@nondot.org> Use the right induction variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97541 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d9245c391fe16261902c9840e26a3d82a26f50f6 02-Mar-2010 Chris Lattner <sabre@nondot.org> Rewrite chain handling validation and input TokenFactor handling
stuff now that we don't care about emulating the old broken
behavior of the old isel. This eliminates the
'CheckChainCompatible' check (along with IsChainCompatible) which
did an incorrect and inefficient scan *up* the chain nodes which
happened as the pattern was being formed and does the validation
at the end in HandleMergeInputChains when it forms a structural
pattern. This scans "down" the graph, which means that it is
quickly bounded by nodes already selected. This also handles
token factors that get "trapped" in the dag.

Removing the CheckChainCompatible nodes also shrinks the
generated tables by about 6K for X86 (down to 83K).

There are two pieces remaining before I can nuke PreprocessRMW:
1. I xfailed a test because we're now producing worse code in a
case that has nothing to do with the change: it turns out that
our use of MorphNodeTo will leave dead nodes in the graph
which (depending on how the graph is walked) end up causing
bogus uses of chains and blocking matches. This is really
bad for other reasons, so I'll fix this in a follow-up patch.

2. CheckFoldableChainNode needs to be improved to handle the TF.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97539 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c6d7ad3c7d83e9af29bf3ba3bf3280e72a952f98 02-Mar-2010 Chris Lattner <sabre@nondot.org> Rewrite chain handling validation and input TokenFactor handling
stuff now that we don't care about emulating the old broken
behavior of the old isel. This eliminates the
'CheckChainCompatible' check (along with IsChainCompatible) which
did an incorrect and inefficient scan *up* the chain nodes which
happened as the pattern was being formed and does the validation
at the end in HandleMergeInputChains when it forms a structural
pattern. This scans "down" the graph, which means that it is
quickly bounded by nodes already selected. This also handles
token factors that get "trapped" in the dag.

Removing the CheckChainCompatible nodes also shrinks the
generated tables by about 6K for X86 (down to 83K).

There are two pieces remaining before I can nuke PreprocessRMW:
1. I xfailed a test because we're now producing worse code in a
case that has nothing to do with the change: it turns out that
our use of MorphNodeTo will leave dead nodes in the graph
which (depending on how the graph is walked) end up causing
bogus uses of chains and blocking matches. This is really
bad for other reasons, so I'll fix this in a follow-up patch.

2. CheckFoldableChainNode needs to be improved to handle the TF.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97539 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
978e526b88f014cbbeb11afe1a27c76806e9ac9b 02-Mar-2010 Dan Gohman <gohman@apple.com> Fix several places to handle vector operands properly.
Based on a patch by Micah Villmow for PR6438.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97538 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
5b870aff81da0c07413f0241087bb3722954b83d 02-Mar-2010 Dan Gohman <gohman@apple.com> Fix several places to handle vector operands properly.
Based on a patch by Micah Villmow for PR6438.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97538 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
1ca34452bef99e9607f302b2abb54693b7114076 02-Mar-2010 Bill Wendling <isanbard@gmail.com> Remove dead parameter passing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97536 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
46ada19645c981a0b7932487d163f7582074a4d9 02-Mar-2010 Bill Wendling <isanbard@gmail.com> Remove dead parameter passing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97536 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
0ab194f68a5a8da0c37c1aa726cf2f89c0c2b7f0 02-Mar-2010 Devang Patel <dpatel@apple.com> Constructors and operators for anonymous aggregates does not names. Do not force empty AT_name attribute in such cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97533 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6b506cbce0ad7ad217a58cd1d6740e23c36f67ec 02-Mar-2010 Devang Patel <dpatel@apple.com> Constructors and operators for anonymous aggregates does not names. Do not force empty AT_name attribute in such cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97533 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
eac59b0c6ce69beed03154b5d3f51a311b6dd9c1 02-Mar-2010 Chris Lattner <sabre@nondot.org> remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97529 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
319ef940303146dfb885794d21c98da1d5e84048 02-Mar-2010 Chris Lattner <sabre@nondot.org> remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97529 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
25f10c41e764fd73b3c03841e20c75b1169fbb7b 02-Mar-2010 Chris Lattner <sabre@nondot.org> refactor some code out of OPC_EmitMergeInputChains into a
new helper function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97525 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6b30792d2d7d142b8192241e6232aee004f745fb 02-Mar-2010 Chris Lattner <sabre@nondot.org> refactor some code out of OPC_EmitMergeInputChains into a
new helper function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97525 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b5b32a356894c7a60a508d836149caa19c6f5b16 01-Mar-2010 Chris Lattner <sabre@nondot.org> remove all but one version of SelectionDAG::MorphNodeTo
(the most general) the others are dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97511 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
df51247725143acb781c224faffd848cc7cf95d8 01-Mar-2010 Chris Lattner <sabre@nondot.org> remove all but one version of SelectionDAG::MorphNodeTo
(the most general) the others are dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97511 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
06ba7392aec78d44372333135be0e398ddb160fa 01-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use methods to determine if a LiveInterval is spillable.

Don't accidentally produce unspillable intervals for deeply nested loops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97496 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e5d90416ee1a4f45eba80789a7a3cbc3d497a4cd 01-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use methods to determine if a LiveInterval is spillable.

Don't accidentally produce unspillable intervals for deeply nested loops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97496 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
2418741aba10d6137858dbf7a7773c21f02ba640 01-Mar-2010 Chris Lattner <sabre@nondot.org> Accelerate isel dispatch for tables that start with a top-level
OPC_SwitchOpcode to use a table lookup instead of having to go
through the interpreter for this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97469 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7390eebd49b786f3293d24f76fedb02fe183468c 01-Mar-2010 Chris Lattner <sabre@nondot.org> Accelerate isel dispatch for tables that start with a top-level
OPC_SwitchOpcode to use a table lookup instead of having to go
through the interpreter for this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97469 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f4aab034434769a98250611400b01a9f75cff607 01-Mar-2010 Dan Gohman <gohman@apple.com> Fix optimization of ISD::TRUNCATE on vector operands. Based on a patch
by Micah Villmow for PR6335.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
042919c0c5f87f937e1a01ca548811af2f297e83 01-Mar-2010 Dan Gohman <gohman@apple.com> Fix optimization of ISD::TRUNCATE on vector operands. Based on a patch
by Micah Villmow for PR6335.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
a9578c4edc53ecd83f32022c0e12ab748ae2d3cd 01-Mar-2010 Chris Lattner <sabre@nondot.org> some trivial microoptimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97441 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
7d892d6e6d451e9a0d0f9db839a943a256126c05 01-Mar-2010 Chris Lattner <sabre@nondot.org> some trivial microoptimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97441 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
220b968d46e3b86b47362794ddd81eda30b7e78e 01-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate the CheckMultiOpcodeMatcher code and have each
ComplexPattern at the root be generated multiple times, once
for each opcode they are part of. This encourages factoring
because the opcode checks get treated just like everything
else in the matcher.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97439 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fa342faef9d1c89de356ed83a6c6529ed3e87610 01-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate the CheckMultiOpcodeMatcher code and have each
ComplexPattern at the root be generated multiple times, once
for each opcode they are part of. This encourages factoring
because the opcode checks get treated just like everything
else in the matcher.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97439 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2e9e684955d5da919a9a0daffe5ee19f3760d08e 01-Mar-2010 Chris Lattner <sabre@nondot.org> add a new OPC_SwitchOpcode which is semantically equivalent
to a scope where every child starts with a CheckOpcode, but
executes more efficiently. Enhance DAGISelMatcherOpt to
form it.

This also fixes a bug in CheckOpcode: apparently the SDNodeInfo
objects are not pointer comparable, we have to compare the
enum name.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97438 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
eb66921adb943ea841e72c8eee4777607c48b70e 01-Mar-2010 Chris Lattner <sabre@nondot.org> add a new OPC_SwitchOpcode which is semantically equivalent
to a scope where every child starts with a CheckOpcode, but
executes more efficiently. Enhance DAGISelMatcherOpt to
form it.

This also fixes a bug in CheckOpcode: apparently the SDNodeInfo
objects are not pointer comparable, we have to compare the
enum name.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97438 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
21181d1e6a08e95d701d593b5c500ce9afef7634 28-Feb-2010 Chris Lattner <sabre@nondot.org> eliminate GetInt1/2



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97426 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
14df8dc680d40173f34d693f9dc451f8a30c907b 28-Feb-2010 Chris Lattner <sabre@nondot.org> eliminate GetInt1/2



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97426 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
65ff433eb3c69e3cd5e124f74aa1eca662b70759 28-Feb-2010 Chris Lattner <sabre@nondot.org> hoist the new isel interpreter out of DAGISelHeader.h
(which gets #included into the middle of each
target's DAGISel class) into a .cpp file where it is
only compiled once.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97425 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2a49d57d2d9dd19125a9ba302e883f6ba6c38b83 28-Feb-2010 Chris Lattner <sabre@nondot.org> hoist the new isel interpreter out of DAGISelHeader.h
(which gets #included into the middle of each
target's DAGISel class) into a .cpp file where it is
only compiled once.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97425 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7a58f525f4b84038aebb05a7ebe98960d836dbba 28-Feb-2010 Chris Lattner <sabre@nondot.org> enhance the new isel to handle the 'node already exists'
case of MorphNodeTo directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
21221e357c6aa9ade3966ee86dab7d44c25220d0 28-Feb-2010 Chris Lattner <sabre@nondot.org> enhance the new isel to handle the 'node already exists'
case of MorphNodeTo directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ae73795036ed372fd47ecf4b3ed6e334342910d3 28-Feb-2010 Chris Lattner <sabre@nondot.org> simplify this code, return only ever has zero or one operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97408 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
25d5837889622584b53b6ffebcfa9ebf14f09d7b 28-Feb-2010 Chris Lattner <sabre@nondot.org> simplify this code, return only ever has zero or one operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97408 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
0930cfb240884081833d646a258052be9bba978c 28-Feb-2010 Dan Gohman <gohman@apple.com> Don't try to replace physical registers when doing CSE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97360 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
6ac33b4533889f132ba10c812ae574d779c827b9 28-Feb-2010 Dan Gohman <gohman@apple.com> Don't try to replace physical registers when doing CSE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97360 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
fa7441049ea3232093295ef91217a8ec64adc227 28-Feb-2010 Dan Gohman <gohman@apple.com> Add a flag to addPassesToEmit* to disable the Verifier pass run
after LSR, so that clients can opt in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97357 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
8772f5041ce8e98695655a72a54b952583630617 28-Feb-2010 Dan Gohman <gohman@apple.com> Add a flag to addPassesToEmit* to disable the Verifier pass run
after LSR, so that clients can opt in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97357 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
84313ac28fa9693a5cd553d9f6744a36cac1f962 28-Feb-2010 Dan Gohman <gohman@apple.com> Don't unconditionally suppress hoisting of instructions with implicit
defs or uses. The regular def and use checking below covers them, and
can be more precise. It's safe to hoist an instruction with a dead
implicit def if the register isn't live into the loop header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97352 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
a363a9b71afcf326d376445f6f3cae0c36e6e9d9 28-Feb-2010 Dan Gohman <gohman@apple.com> Don't unconditionally suppress hoisting of instructions with implicit
defs or uses. The regular def and use checking below covers them, and
can be more precise. It's safe to hoist an instruction with a dead
implicit def if the register isn't live into the loop header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97352 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
cb611273cb26cdf5fefcdbbbaa862e87c8295c34 27-Feb-2010 Evan Cheng <evan.cheng@apple.com> Re-apply 97040 with fix. This survives a ppc self-host llvm-gcc bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
2c755ba12a79e0bb2899c0bde00b2f7ea2c975a0 27-Feb-2010 Evan Cheng <evan.cheng@apple.com> Re-apply 97040 with fix. This survives a ppc self-host llvm-gcc bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
d273e99db7f6b381d7032a7e5420a9a2e8da9342 27-Feb-2010 Bill Wendling <isanbard@gmail.com> The TType is always absptr on Mach-O...at least for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97295 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
4933a373a7abb2f6442beb71c964eb0e97b590dc 27-Feb-2010 Bill Wendling <isanbard@gmail.com> The TType is always absptr on Mach-O...at least for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97295 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
6478712f778316f7b171e3d9f18c500e14cd843a 26-Feb-2010 Bill Wendling <isanbard@gmail.com> A much cleaner (and less code!) way of inserting the correct amount of padding
for alignment into the LSDA. If the TType base offset is emitted, then put the
padding there. Otherwise, put it in the call site table length. There will be no
conflict between the two sites when placing the padding in one place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97277 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
1869ac8b716da4fdbaaf3e5484238f36881fc14b 26-Feb-2010 Bill Wendling <isanbard@gmail.com> A much cleaner (and less code!) way of inserting the correct amount of padding
for alignment into the LSDA. If the TType base offset is emitted, then put the
padding there. Otherwise, put it in the call site table length. There will be no
conflict between the two sites when placing the padding in one place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97277 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
3a3c48eff9f8cad2dab101c2df306cf9b724a99a 26-Feb-2010 Bill Wendling <isanbard@gmail.com> Comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97269 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
6507eca124883c90cc300c1ff344f79a8b4181a5 26-Feb-2010 Bill Wendling <isanbard@gmail.com> Comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97269 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
98172eed77c6cbbdefea7ebe0efe13df8c3591a4 26-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the right floating point load/store instructions in PPCInstrInfo::foldMemoryOperandImpl().

The PowerPC floating point registers can represent both f32 and f64 via the
two register classes F4RC and F8RC. F8RC is considered a subclass of F4RC to
allow cross-class coalescing. This coalescing only affects whether registers
are spilled as f32 or f64.

Spill slots must be accessed with load/store instructions corresponding to the
class of the spilled register. PPCInstrInfo::foldMemoryOperandImpl was looking
at the instruction opcode which is wrong.

X86 has similar floating point register classes, but doesn't try to fold
memory operands, so there is no problem there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97262 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
243296690ec78fc918762bd73896b09e26537f47 26-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the right floating point load/store instructions in PPCInstrInfo::foldMemoryOperandImpl().

The PowerPC floating point registers can represent both f32 and f64 via the
two register classes F4RC and F8RC. F8RC is considered a subclass of F4RC to
allow cross-class coalescing. This coalescing only affects whether registers
are spilled as f32 or f64.

Spill slots must be accessed with load/store instructions corresponding to the
class of the spilled register. PPCInstrInfo::foldMemoryOperandImpl was looking
at the instruction opcode which is wrong.

X86 has similar floating point register classes, but doesn't try to fold
memory operands, so there is no problem there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97262 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
30b10f6e7cae3bba728671dde1cc66c5bb3a4b34 26-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove dead code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97261 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
66df66c5fb4ef0aedd8fcae152f58e9baa0bb017 26-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove dead code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97261 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
10712669099c41e0c6f5a4d04be6d7af19cc1f6d 26-Feb-2010 Dale Johannesen <dalej@apple.com> Move dbg_value generation to target-independent FastISel,
as X86 is currently the only FastISel target. Per review.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
45df7616528e3d101c5b2938bd4d865321205d33 26-Feb-2010 Dale Johannesen <dalej@apple.com> Move dbg_value generation to target-independent FastISel,
as X86 is currently the only FastISel target. Per review.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
95565945de6dac729bf8bf374d2c46edd64810c6 26-Feb-2010 Bob Wilson <bob.wilson@apple.com> Remove unused "NoPRE" parameter in GVN and createGVNPass().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97235 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
60df9077ebe2a38723beadedd88e349f9aa214cb 26-Feb-2010 Bob Wilson <bob.wilson@apple.com> Remove unused "NoPRE" parameter in GVN and createGVNPass().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97235 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
cf756463841be7ef1e22c340f1134ea046ce006e 26-Feb-2010 Bill Wendling <isanbard@gmail.com> Fix comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97200 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
0b1d2f30124285cc853a12deb0f45a72add26d04 26-Feb-2010 Bill Wendling <isanbard@gmail.com> Fix comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97200 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
5d247e1c3eb86a1af0ba33bb296bc0c898e52b8d 26-Feb-2010 Bill Wendling <isanbard@gmail.com> Add another (and hopefully the last) exception case, where once we recalculate
the alignment requirement, if it no longer makes the TType base offset overflow
into extra bytes, then we need to pad to those bytes ourselves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97196 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
bb4283ec1349087566e53f57ca09f9ed3bd5a7fd 26-Feb-2010 Bill Wendling <isanbard@gmail.com> Add another (and hopefully the last) exception case, where once we recalculate
the alignment requirement, if it no longer makes the TType base offset overflow
into extra bytes, then we need to pad to those bytes ourselves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97196 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
69bc7383a9f23982786ab08c393c702f6b56d5be 26-Feb-2010 Bill Wendling <isanbard@gmail.com> And should use the correct variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97193 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
fdb2be8b09f06c1124c990b959ee2dcc1008fab4 26-Feb-2010 Bill Wendling <isanbard@gmail.com> And should use the correct variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97193 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
f03e5e946d880a174fdad63bd5658f27e926eb98 26-Feb-2010 Bill Wendling <isanbard@gmail.com> Got assertion check backwards.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97192 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
a88864542503fdecbb2ed3adea53545a14991dde 26-Feb-2010 Bill Wendling <isanbard@gmail.com> Got assertion check backwards.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97192 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
b2053dfe9b3c1701e0a918b5bc762fa0cb7b51d4 26-Feb-2010 Bill Wendling <isanbard@gmail.com> Catch a corner case where adding the padding to the "TType base offset" field
will eliminate the need for padding in the "Call site table length". E.g., if
we have this:

GCC_except_table1:
Lexception1:
.byte 0xff ## @LPStart Encoding = omit
.byte 0x9b ## @TType Encoding = indirect pcrel sdata4
.byte 0x7f ## @TType base offset
.byte 0x03 ## Call site Encoding = udata4
.byte 0x89 ## Call site table length

with padding of 1. We want to emit the padding like this:

GCC_except_table1:
Lexception1:
.byte 0xff ## @LPStart Encoding = omit
.byte 0x9b ## @TType Encoding = indirect pcrel sdata4
.byte 0xff ## @TType base offset
.space 1,0 ## Padding
.byte 0x03 ## Call site Encoding = udata4
.byte 0x89 ## Call site table length

and not with padding on the "Call site table length" entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97183 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
86f0d33f85c19af294916eacd175f6b0cd81142f 26-Feb-2010 Bill Wendling <isanbard@gmail.com> Catch a corner case where adding the padding to the "TType base offset" field
will eliminate the need for padding in the "Call site table length". E.g., if
we have this:

GCC_except_table1:
Lexception1:
.byte 0xff ## @LPStart Encoding = omit
.byte 0x9b ## @TType Encoding = indirect pcrel sdata4
.byte 0x7f ## @TType base offset
.byte 0x03 ## Call site Encoding = udata4
.byte 0x89 ## Call site table length

with padding of 1. We want to emit the padding like this:

GCC_except_table1:
Lexception1:
.byte 0xff ## @LPStart Encoding = omit
.byte 0x9b ## @TType Encoding = indirect pcrel sdata4
.byte 0xff ## @TType base offset
.space 1,0 ## Padding
.byte 0x03 ## Call site Encoding = udata4
.byte 0x89 ## Call site table length

and not with padding on the "Call site table length" entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97183 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
3be02b851918489d8fb8154678d476c806ade67a 25-Feb-2010 Bill Wendling <isanbard@gmail.com> Make comment more meaningful.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97169 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
f7e90ae2057adcf6fa4b023110611084f28fd6c1 25-Feb-2010 Bill Wendling <isanbard@gmail.com> Make comment more meaningful.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97169 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
1257158b2bd13e489275b940ae1e2909e27b51c7 25-Feb-2010 Dan Gohman <gohman@apple.com> Fix ExpandVectorBuildThroughStack for the case where the
operands are themselves vectors. Based on a patch by
Micah Villmow for PR6338.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9949dd612c8100f7ea7e6daaa56e465f106dd0bd 25-Feb-2010 Dan Gohman <gohman@apple.com> Fix ExpandVectorBuildThroughStack for the case where the
operands are themselves vectors. Based on a patch by
Micah Villmow for PR6338.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2576a8eb5cb9a2d80fafe064d9cac6f6b32607f8 25-Feb-2010 Dan Gohman <gohman@apple.com> Revert r97064. Duncan pointed out that bitcasts are defined in
terms of store and load, which means bitcasting between scalar
integer and vector has endian-specific results, which undermines
this whole approach.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97137 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
aa9d854b334cab2f29ca6d95413a0946b8a38429 25-Feb-2010 Dan Gohman <gohman@apple.com> Revert r97064. Duncan pointed out that bitcasts are defined in
terms of store and load, which means bitcasting between scalar
integer and vector has endian-specific results, which undermines
this whole approach.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97137 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
e1973f26cbd79854dd38f18f2df838fb7927302a 25-Feb-2010 Bill Wendling <isanbard@gmail.com> MC'ize padding when padding the ULEB128 value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97087 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
f0bd4cc1b605d52bbf03aa38e5c806bcb6f334f5 25-Feb-2010 Bill Wendling <isanbard@gmail.com> MC'ize padding when padding the ULEB128 value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97087 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
a7888eaec3b317e17b637d76408fed9abd8ced95 25-Feb-2010 Bill Wendling <isanbard@gmail.com> LLVM puts padding bytes in the __gcc_except_tab section after the
GCC_except_table label but before the Lexception, which the FDE references.
This causes problems as the FDE does not point to the start of an LSDA chunk.

Use an unnormalized uleb128 for the call-site table length that includes the
padding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97078 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
3dc9b4872b28016b38ce31fa4356e17c96420579 25-Feb-2010 Bill Wendling <isanbard@gmail.com> LLVM puts padding bytes in the __gcc_except_tab section after the
GCC_except_table label but before the Lexception, which the FDE references.
This causes problems as the FDE does not point to the start of an LSDA chunk.

Use an unnormalized uleb128 for the call-site table length that includes the
padding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97078 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
ae64c5492ad209f288bd57c98e3519c9d2e35cba 24-Feb-2010 Chris Lattner <sabre@nondot.org> clean up various VT manipulations, patch by Micah Villmow! PR6337


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5cf0b6e4a94ab3baa991795051f63db139097ed3 24-Feb-2010 Chris Lattner <sabre@nondot.org> clean up various VT manipulations, patch by Micah Villmow! PR6337


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4bc2134f965d55e32cd9caf7296f2f86b852bd36 24-Feb-2010 Dan Gohman <gohman@apple.com> Make getTypeSizeInBits work correctly for array types; it should return
the number of value bits, not the number of bits of allocation for in-memory
storage.

Make getTypeStoreSize and getTypeAllocSize work consistently for arrays and
vectors.

Fix several places in CodeGen which compute offsets into in-memory vectors
to use TargetData information.

This fixes PR1784.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97064 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
c382bc3c0f476bf94303d9892af4e2cee173bfe5 24-Feb-2010 Dan Gohman <gohman@apple.com> Make getTypeSizeInBits work correctly for array types; it should return
the number of value bits, not the number of bits of allocation for in-memory
storage.

Make getTypeStoreSize and getTypeAllocSize work consistently for arrays and
vectors.

Fix several places in CodeGen which compute offsets into in-memory vectors
to use TargetData information.

This fixes PR1784.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97064 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
7de873559115ed9c149f09b3bc8b96cb19e7a480 24-Feb-2010 Chris Lattner <sabre@nondot.org> convert cycle checker to smallptrset, add comments and make it
more elegant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97059 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
46ca5efdd5b748ba8aa62168f7753cb46b683bc5 24-Feb-2010 Chris Lattner <sabre@nondot.org> convert cycle checker to smallptrset, add comments and make it
more elegant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97059 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9e2aad9d672e7151a94413e5007b0c588ea77162 24-Feb-2010 Chris Lattner <sabre@nondot.org> revert david's patch which does not even build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97057 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a1461ccfa0f19b2a81afb401c1d772f751edf7ae 24-Feb-2010 Chris Lattner <sabre@nondot.org> revert david's patch which does not even build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97057 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7f3a69fb451686b06bb99976b239af68580e5435 24-Feb-2010 David Greene <greened@obbligato.org> Use a SmallPtrSet as suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97056 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2f9b6851982608e8aa20ca99398daf949d0f707b 24-Feb-2010 David Greene <greened@obbligato.org> Use a SmallPtrSet as suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97056 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a77358b755e6629917d2a12ed97065a6952b397e 24-Feb-2010 Daniel Dunbar <daniel@zuster.org> Speculatively revert r97011, "Re-apply 96540 and 96556 with fixes.", again in
the hopes of fixing PPC bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97040 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
cfe30effbb952ae5b49a01de8329e3a2c14bad75 24-Feb-2010 Daniel Dunbar <daniel@zuster.org> Speculatively revert r97011, "Re-apply 96540 and 96556 with fixes.", again in
the hopes of fixing PPC bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97040 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
e8cc39fad0c152a1b03f52b3cc821b3ce418e89c 24-Feb-2010 Dan Gohman <gohman@apple.com> When forming SSE min and max nodes for UGE and ULE comparisons, it's
necessary to swap the operands to handle NaN and negative zero properly.

Also, reintroduce logic for checking for NaN conditions when forming
SSE min and max instructions, fixed to take into consideration NaNs and
negative zeros. This allows forming min and max instructions in more
cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97025 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e832693acbfc713bcaf44720efa8149e93a38027 24-Feb-2010 Dan Gohman <gohman@apple.com> When forming SSE min and max nodes for UGE and ULE comparisons, it's
necessary to swap the operands to handle NaN and negative zero properly.

Also, reintroduce logic for checking for NaN conditions when forming
SSE min and max instructions, fixed to take into consideration NaNs and
negative zeros. This allows forming min and max instructions in more
cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97025 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
deb48434e382de441595b0ac39cd585cab092080 24-Feb-2010 Chris Lattner <sabre@nondot.org> Change the scheduler from adding nodes in allnodes order
to adding them in a determinstic order (bottom up from
the root) based on the structure of the graph itself.

This updates tests for some random changes, interesting
bits: CodeGen/Blackfin/promote-logic.ll no longer crashes.
I have no idea why, but that's good right?

CodeGen/X86/2009-07-16-LoadFoldingBug.ll also fails, but
now compiles to have one fewer constant pool entry, making
the expected load that was being folded disappear. Since it
is an unreduced mass of gnast, I just removed it.

This fixes PR6370


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97023 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
736a6ea3a2a5322db0e09d97651a1acc07502e41 24-Feb-2010 Chris Lattner <sabre@nondot.org> Change the scheduler from adding nodes in allnodes order
to adding them in a determinstic order (bottom up from
the root) based on the structure of the graph itself.

This updates tests for some random changes, interesting
bits: CodeGen/Blackfin/promote-logic.ll no longer crashes.
I have no idea why, but that's good right?

CodeGen/X86/2009-07-16-LoadFoldingBug.ll also fails, but
now compiles to have one fewer constant pool entry, making
the expected load that was being folded disappear. Since it
is an unreduced mass of gnast, I just removed it.

This fixes PR6370


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97023 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
5a7626432cc08fabeaa6f00af467e37dcfad543e 24-Feb-2010 Chris Lattner <sabre@nondot.org> add node #'s to debug dumps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97019 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
91ff7f75f55a626eb41761f3ded9f3d13002980c 24-Feb-2010 Chris Lattner <sabre@nondot.org> add node #'s to debug dumps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97019 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
65d174147dd73e78cd0070c9a2113f3acdc3e924 24-Feb-2010 Evan Cheng <evan.cheng@apple.com> Re-apply 96540 and 96556 with fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
97e6b8390b405f9e7dd994f111a5950fca2962d2 24-Feb-2010 Evan Cheng <evan.cheng@apple.com> Re-apply 96540 and 96556 with fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
def44715c1558a6bbf1e555b7ab0390c7e2ca26c 24-Feb-2010 Chris Lattner <sabre@nondot.org> make selectnodeto set the nodeid to -1. This makes it more akin to
creating a new node then replacing uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97000 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5857e0add8ab25825628d1ef19cec027e605dcd5 24-Feb-2010 Chris Lattner <sabre@nondot.org> make selectnodeto set the nodeid to -1. This makes it more akin to
creating a new node then replacing uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97000 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
87ae511380520df80baa23398dcdc92de0758274 23-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to handle sub-registers when moving imp-defs to a rematted instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96995 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
450986db9607b1444cb50740fa4c102f20f92f6b 23-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to handle sub-registers when moving imp-defs to a rematted instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96995 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
4bfc2ff97460982aba13452245616e8d791048f0 23-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep track of phi join registers explicitly in LiveVariables.

Previously, LiveIntervalAnalysis would infer phi joins by looking for multiply
defined registers. That doesn't work if the phi join is implicitly defined in
all but one of the predecessors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96994 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
HIElimination.cpp
dcfe5f30b5e262971f601a65bebcc0367fef56c5 23-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep track of phi join registers explicitly in LiveVariables.

Previously, LiveIntervalAnalysis would infer phi joins by looking for multiply
defined registers. That doesn't work if the phi join is implicitly defined in
all but one of the predecessors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96994 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
HIElimination.cpp
be96dbf5a8f6742931bcc58d9edc556a6e322ccd 23-Feb-2010 Chris Lattner <sabre@nondot.org> fix a bug in findNonImmUse (used by IsLegalToFold) where nodes with
no id's would cause early exit allowing IsLegalToFold to return true
instead of false, producing a cyclic dag.

This was striking the new isel because it isn't using SelectNodeTo yet,
which theoretically is just an optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96972 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
da244a091dcde022ea4938793d81ee957903ed70 23-Feb-2010 Chris Lattner <sabre@nondot.org> fix a bug in findNonImmUse (used by IsLegalToFold) where nodes with
no id's would cause early exit allowing IsLegalToFold to return true
instead of false, producing a cyclic dag.

This was striking the new isel because it isn't using SelectNodeTo yet,
which theoretically is just an optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96972 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
91d5e06c189787ac18cdf66148503d0d4198730f 23-Feb-2010 Chris Lattner <sabre@nondot.org> Print node ID's in dumps and views if set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4548e02bd6336983a21afdf5f6a3ea333ce2daca 23-Feb-2010 Chris Lattner <sabre@nondot.org> Print node ID's in dumps and views if set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a6e2dadb90050b1f474ddda629590d2a662ab8ef 23-Feb-2010 Chris Lattner <sabre@nondot.org> use OutStreamer.EmitCodeAlignment for alignment in the text
segment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96967 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2cce3712fafb2e72e144414377cd48f5ab95a5ae 23-Feb-2010 Chris Lattner <sabre@nondot.org> use OutStreamer.EmitCodeAlignment for alignment in the text
segment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96967 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
923912cedf4cb6a97dc2bdde78b3bfdc9e0c2212 23-Feb-2010 David Greene <greened@obbligato.org> Speed up cycle checking significantly by caching results.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96956 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e3d97c744772c075e11f372548cc8d848d555ee9 23-Feb-2010 David Greene <greened@obbligato.org> Speed up cycle checking significantly by caching results.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96956 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
04852f2fa78133ee168123e1e58aa9a2ecea46cf 23-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Dead code elimination

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96837 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
f895dbeb29b63f775e341f53ab92609c8da25392 23-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Dead code elimination

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96837 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
1ec98d37dba535b039287f750e7ec12363982f9f 23-Feb-2010 Jim Grosbach <grosbach@apple.com> Updated version of r96634 (which was reverted due to failing 176.gcc and
126.gcc nightly tests. These failures uncovered latent bugs that machine DCE
could remove one half of a stack adjust down/up pair, causing PEI to assert.
This update fixes that, and the tests now pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96822 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
4642ad3af1cf508ac320b9afd25b065f08b36574 23-Feb-2010 Jim Grosbach <grosbach@apple.com> Updated version of r96634 (which was reverted due to failing 176.gcc and
126.gcc nightly tests. These failures uncovered latent bugs that machine DCE
could remove one half of a stack adjust down/up pair, causing PEI to assert.
This update fixes that, and the tests now pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96822 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
661aabbef97a9f691ae468efa5496e0a6553e684 22-Feb-2010 Dan Gohman <gohman@apple.com> Fix various doxygen warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96779 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/HeuristicSolver.h
fb76fe09297ee292129e44d723127f2408602a3d 22-Feb-2010 Dan Gohman <gohman@apple.com> Fix various doxygen warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96779 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/HeuristicSolver.h
df708fc4cc64bd61e4db81be32bd726c6a1ec4bc 21-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> It turned out that we failed to emit proper symbol stubs on non-x86/darwin for ages (we emitted a reference to a stub, but no stub was emitted). The code inside x86-32/macho target objfile lowering should actually be the generic one - move it there.

This (I really, really hope) should fix EH issues on ppc/darwin
and arm/darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96755 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
293d592bf9cff6c3679998dde32f3cfd3cd53bc4 21-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> It turned out that we failed to emit proper symbol stubs on non-x86/darwin for ages (we emitted a reference to a stub, but no stub was emitted). The code inside x86-32/macho target objfile lowering should actually be the generic one - move it there.

This (I really, really hope) should fix EH issues on ppc/darwin
and arm/darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96755 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
53e7a839f94b9e9ea0999a28b75a1e7a2c6bd460 21-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable assertion to detect cyclic valno references.

This changes the stack overflow in PR6363 to an assertion failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96744 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b1ce7b132497e0c05d2201f75d43d0f803ba7f88 21-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable assertion to detect cyclic valno references.

This changes the stack overflow in PR6363 to an assertion failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96744 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
4a6943c195de8df683174628024411cb1eddfde1 19-Feb-2010 Bob Wilson <bob.wilson@apple.com> Revert 96634. It causes assertion failures for 126.gcc and 176.gcc in
the armv6 nightly tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96691 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
1a2e8686f8137a1a2329952ffd1e21969ea1658c 19-Feb-2010 Bob Wilson <bob.wilson@apple.com> Revert 96634. It causes assertion failures for 126.gcc and 176.gcc in
the armv6 nightly tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96691 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
de5c9579952a2906097828d2517a3182cafb23ee 19-Feb-2010 Charles Davis <cdavis@mines.edu> Add support for the 'alignstack' attribute to the x86 backend. Fixes PR5254.

Also, FileCheck'ize a test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96686 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
5dfa26795da9c521babd598ef911e6d95bd20d37 19-Feb-2010 Charles Davis <cdavis@mines.edu> Add support for the 'alignstack' attribute to the x86 backend. Fixes PR5254.

Also, FileCheck'ize a test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96686 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
7455116392f9aeb5c78dc3a4c7ce5c833a3f3b4b 19-Feb-2010 Bob Wilson <bob.wilson@apple.com> Revert Anton's most recent EH patch (r96637), since it breaks a lot of
ARM and Thumb tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96680 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
6b89aa57e6506f073579398bd74845db9463b9f1 19-Feb-2010 Bob Wilson <bob.wilson@apple.com> Revert Anton's most recent EH patch (r96637), since it breaks a lot of
ARM and Thumb tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96680 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
a5fbee007bda63f348079de2966c3d56b5fe65f7 19-Feb-2010 Duncan Sands <baldrick@free.fr> Revert commits 96556 and 96640, because commit 96556 breaks the
dragonegg self-host build. I reverted 96640 in order to revert
96556 (96640 goes on top of 96556), but it also looks like with
both of them applied the breakage happens even earlier. The
symptom of the 96556 miscompile is the following crash:

llvm[3]: Compiling AlphaISelLowering.cpp for Release build
cc1plus: /home/duncan/tmp/tmp/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:4982: void llvm::SelectionDAG::ReplaceAllUsesWith(llvm::SDNode*, llvm::SDNode*, llvm::SelectionDAG::DAGUpdateListener*): Assertion `(!From->hasAnyUseOfValue(i) || From->getValueType(i) == To->getValueType(i)) && "Cannot use this version of ReplaceAllUsesWith!"' failed.
Stack dump:
0. Running pass 'X86 DAG->DAG Instruction Selection' on function '@_ZN4llvm19AlphaTargetLowering14LowerOperationENS_7SDValueERNS_12SelectionDAGE'
g++: Internal error: Aborted (program cc1plus)

This occurs when building LLVM using LLVM built by LLVM (via
dragonegg). Probably LLVM has miscompiled itself, though it
may have miscompiled GCC and/or dragonegg itself: at this point
of the self-host build, all of GCC, LLVM and dragonegg were built
using LLVM. Unfortunately this kind of thing is extremely hard
to debug, and while I did rummage around a bit I didn't find any
smoking guns, aka obviously miscompiled code.

Found by bisection.

r96556 | evancheng | 2010-02-18 03:13:50 +0100 (Thu, 18 Feb 2010) | 5 lines

Some dag combiner goodness:
Transform br (xor (x, y)) -> br (x != y)
Transform br (xor (xor (x,y), 1)) -> br (x == y)
Also normalize (and (X, 1) == / != 1 -> (and (X, 1)) != / == 0 to match to "test on x86" and "tst on arm"

r96640 | evancheng | 2010-02-19 01:34:39 +0100 (Fri, 19 Feb 2010) | 16 lines

Transform (xor (setcc), (setcc)) == / != 1 to
(xor (setcc), (setcc)) != / == 1.

e.g. On x86_64
%0 = icmp eq i32 %x, 0
%1 = icmp eq i32 %y, 0
%2 = xor i1 %1, %0
br i1 %2, label %bb, label %return
=>
testl %edi, %edi
sete %al
testl %esi, %esi
sete %cl
cmpb %al, %cl
je LBB1_2



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
3eba667081cb63761861e4543715c90f8fc47b18 19-Feb-2010 Duncan Sands <baldrick@free.fr> Revert commits 96556 and 96640, because commit 96556 breaks the
dragonegg self-host build. I reverted 96640 in order to revert
96556 (96640 goes on top of 96556), but it also looks like with
both of them applied the breakage happens even earlier. The
symptom of the 96556 miscompile is the following crash:

llvm[3]: Compiling AlphaISelLowering.cpp for Release build
cc1plus: /home/duncan/tmp/tmp/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:4982: void llvm::SelectionDAG::ReplaceAllUsesWith(llvm::SDNode*, llvm::SDNode*, llvm::SelectionDAG::DAGUpdateListener*): Assertion `(!From->hasAnyUseOfValue(i) || From->getValueType(i) == To->getValueType(i)) && "Cannot use this version of ReplaceAllUsesWith!"' failed.
Stack dump:
0. Running pass 'X86 DAG->DAG Instruction Selection' on function '@_ZN4llvm19AlphaTargetLowering14LowerOperationENS_7SDValueERNS_12SelectionDAGE'
g++: Internal error: Aborted (program cc1plus)

This occurs when building LLVM using LLVM built by LLVM (via
dragonegg). Probably LLVM has miscompiled itself, though it
may have miscompiled GCC and/or dragonegg itself: at this point
of the self-host build, all of GCC, LLVM and dragonegg were built
using LLVM. Unfortunately this kind of thing is extremely hard
to debug, and while I did rummage around a bit I didn't find any
smoking guns, aka obviously miscompiled code.

Found by bisection.

r96556 | evancheng | 2010-02-18 03:13:50 +0100 (Thu, 18 Feb 2010) | 5 lines

Some dag combiner goodness:
Transform br (xor (x, y)) -> br (x != y)
Transform br (xor (xor (x,y), 1)) -> br (x == y)
Also normalize (and (X, 1) == / != 1 -> (and (X, 1)) != / == 0 to match to "test on x86" and "tst on arm"

r96640 | evancheng | 2010-02-19 01:34:39 +0100 (Fri, 19 Feb 2010) | 16 lines

Transform (xor (setcc), (setcc)) == / != 1 to
(xor (setcc), (setcc)) != / == 1.

e.g. On x86_64
%0 = icmp eq i32 %x, 0
%1 = icmp eq i32 %y, 0
%2 = xor i1 %1, %0
br i1 %2, label %bb, label %return
=>
testl %edi, %edi
sete %al
testl %esi, %esi
sete %cl
cmpb %al, %cl
je LBB1_2



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
7ef91d5d2ed4129318c2e297cac5601bbc8c0c75 19-Feb-2010 Evan Cheng <evan.cheng@apple.com> Transform (xor (setcc), (setcc)) == / != 1 to
(xor (setcc), (setcc)) != / == 1.

e.g. On x86_64
%0 = icmp eq i32 %x, 0
%1 = icmp eq i32 %y, 0
%2 = xor i1 %1, %0
br i1 %2, label %bb, label %return
=>
testl %edi, %edi
sete %al
testl %esi, %esi
sete %cl
cmpb %al, %cl
je LBB1_2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96640 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
97a35fc3a744c905e1aeed8542fae366c7940f95 19-Feb-2010 Evan Cheng <evan.cheng@apple.com> Transform (xor (setcc), (setcc)) == / != 1 to
(xor (setcc), (setcc)) != / == 1.

e.g. On x86_64
%0 = icmp eq i32 %x, 0
%1 = icmp eq i32 %y, 0
%2 = xor i1 %1, %0
br i1 %2, label %bb, label %return
=>
testl %edi, %edi
sete %al
testl %esi, %esi
sete %cl
cmpb %al, %cl
je LBB1_2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96640 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6597f3c14987050cda9d87e00a970934898fee3a 19-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> Use the same encoding for EH stuff uniformly on all MachO targets.
This hopefulyl should unbreak EH on PPC/Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96637 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
f0e7c87e56df43b012667762e2fb3e1b9edb766d 19-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> Use the same encoding for EH stuff uniformly on all MachO targets.
This hopefulyl should unbreak EH on PPC/Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96637 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
60f445031000f4a264412387932fce0de1000f00 19-Feb-2010 Jim Grosbach <grosbach@apple.com> Radar 7636153. In the presence of large call frames, it's not sufficient
for ARM to just check if a function has a FP to determine if it's safe
to simplify the stack adjustment pseudo ops prior to eliminating frame
indices. Allow targets to override the default behavior and does so for ARM
and Thumb2.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96634 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
cf43e60544041c127bb875fe4cf0d0ae96cd6c78 19-Feb-2010 Jim Grosbach <grosbach@apple.com> Radar 7636153. In the presence of large call frames, it's not sufficient
for ARM to just check if a function has a FP to determine if it's safe
to simplify the stack adjustment pseudo ops prior to eliminating frame
indices. Allow targets to override the default behavior and does so for ARM
and Thumb2.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96634 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
f58b8c903ad67f0ad4d28043b74f13850a494f8a 18-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Always normalize spill weights, also for intervals created by spilling.

Moderate the weight given to very small intervals.

The spill weight given to new intervals created when spilling was not
normalized in the same way as the original spill weights calculated by
CalcSpillWeights. That meant that restored registers would tend to hang around
because they had a much higher spill weight that unspilled registers.

This improves the runtime of a few tests by up to 10%, and there are no
significant regressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96613 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveIntervalAnalysis.cpp
352d352c023ed411d9e4357ea01f3ec468ff87dc 18-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Always normalize spill weights, also for intervals created by spilling.

Moderate the weight given to very small intervals.

The spill weight given to new intervals created when spilling was not
normalized in the same way as the original spill weights calculated by
CalcSpillWeights. That meant that restored registers would tend to hang around
because they had a much higher spill weight that unspilled registers.

This improves the runtime of a few tests by up to 10%, and there are no
significant regressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96613 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveIntervalAnalysis.cpp
cfb570d1b4526af2eb636064e2655b99ac9f4f22 18-Feb-2010 Dan Gohman <gohman@apple.com> Make CodePlacementOpt detect special EH control flow by
checking whether AnalyzeBranch disagrees with the CFG
directly, rather than looking for EH_LABEL instructions.
EH_LABEL instructions aren't always at the end of the
block, due to FP_REG_KILL and other things. This fixes
an infinite loop compiling MultiSource/Benchmarks/Bullet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96611 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
49d7f8d341a7b4137c674ce0f08f5b18e8195f4a 18-Feb-2010 Dan Gohman <gohman@apple.com> Make CodePlacementOpt detect special EH control flow by
checking whether AnalyzeBranch disagrees with the CFG
directly, rather than looking for EH_LABEL instructions.
EH_LABEL instructions aren't always at the end of the
block, due to FP_REG_KILL and other things. This fixes
an infinite loop compiling MultiSource/Benchmarks/Bullet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96611 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
8240009254585bde6c3b1d89f000b5192f352698 18-Feb-2010 Duncan Sands <baldrick@free.fr> Uniformize the way these options are printed. Requested by
Russell Wallace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96580 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
irtRegRewriter.cpp
18619b2aeba5468512d6684c4fd96d0ad280e01d 18-Feb-2010 Duncan Sands <baldrick@free.fr> Uniformize the way these options are printed. Requested by
Russell Wallace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96580 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
irtRegRewriter.cpp
1bd541d35acf4e345305a8b3d981f3f50cde0c64 18-Feb-2010 Duncan Sands <baldrick@free.fr> Remove terminating dot in description. Inconsistency pointed
out by Russell Wallace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96579 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
1aecd15bd1b54f33bfd928e082a3798f0edf33aa 18-Feb-2010 Duncan Sands <baldrick@free.fr> Remove terminating dot in description. Inconsistency pointed
out by Russell Wallace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96579 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
33a29e431f2f235aaae4f2d53fbfaca1c445a5a5 18-Feb-2010 Evan Cheng <evan.cheng@apple.com> Some dag combiner goodness:
Transform br (xor (x, y)) -> br (x != y)
Transform br (xor (xor (x,y), 1)) -> br (x == y)
Also normalize (and (X, 1) == / != 1 -> (and (X, 1)) != / == 0 to match to "test on x86" and "tst on arm"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96556 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
89bb7b56407bf81a5d5fdcdac7106d94bb30dd65 18-Feb-2010 Evan Cheng <evan.cheng@apple.com> Some dag combiner goodness:
Transform br (xor (x, y)) -> br (x != y)
Transform br (xor (xor (x,y), 1)) -> br (x == y)
Also normalize (and (X, 1) == / != 1 -> (and (X, 1)) != / == 0 to match to "test on x86" and "tst on arm"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96556 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
05a001f8364754dc202260edd890d4846857525f 17-Feb-2010 David Greene <greened@obbligato.org> Make the non-temporal bit "significant" in MemSDNodes so they aren't
CSE'd or otherwise combined with temporal MemSDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96505 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1157f791c967668f0838bb6edb66103c760f1a5b 17-Feb-2010 David Greene <greened@obbligato.org> Make the non-temporal bit "significant" in MemSDNodes so they aren't
CSE'd or otherwise combined with temporal MemSDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96505 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b37d7ccd41ea807661a576480c143537dbc58018 17-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Dead code elimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96496 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
1bf1691ed3bf4cb16ea221f062f1bb978fc8ea9d 17-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Dead code elimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96496 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
04740c8fce9aeabcbdbb2763696648b53945cb77 17-Feb-2010 Chris Lattner <sabre@nondot.org> move isOnlyReachableByFallthrough out of MachineBasicBlock into AsmPrinter,
and add a sparc implementation that knows about delay slots. Patch by
Nathan Keynes!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96492 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineBasicBlock.cpp
0a3f39985b3827a02a7ce1ca5e310b68820fd26d 17-Feb-2010 Chris Lattner <sabre@nondot.org> move isOnlyReachableByFallthrough out of MachineBasicBlock into AsmPrinter,
and add a sparc implementation that knows about delay slots. Patch by
Nathan Keynes!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96492 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineBasicBlock.cpp
d7fb4b22530b0bc5da92d73750f6036f6d8a1a43 17-Feb-2010 Chris Lattner <sabre@nondot.org> sink special case "cannotyetselect" for intrinsics out of the
tblgen splatted code into the implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96460 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
409ac586e83525a760692cf0affb01f1c9efa594 17-Feb-2010 Chris Lattner <sabre@nondot.org> sink special case "cannotyetselect" for intrinsics out of the
tblgen splatted code into the implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96460 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a5e66024017daacce6f409d60d94a8a1b9e0c35d 17-Feb-2010 Lang Hames <lhames@gmail.com> Removed an early out which was causing the PBQP allocator to not compute live-in sets or run the rewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96450 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
a6b80dd031a122a80683414db4f3858b85d89e49 17-Feb-2010 Lang Hames <lhames@gmail.com> Removed an early out which was causing the PBQP allocator to not compute live-in sets or run the rewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96450 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
067e6d9f234becde5a72eff6f8bc64bfeb557ea5 17-Feb-2010 Devang Patel <dpatel@apple.com> Before setting scope end marker, pay attention to scope begin marker and existing scope end marker, if any. Scope must begin before it ends and nested inlined scope do not truncate surrounding scope.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96445 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
22fb4b2a5708c2987a04a823df98b6f9fda60d0c 17-Feb-2010 Devang Patel <dpatel@apple.com> Before setting scope end marker, pay attention to scope begin marker and existing scope end marker, if any. Scope must begin before it ends and nested inlined scope do not truncate surrounding scope.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96445 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
10343d91c52ddbfd7572032a95724f0c1ba10c7b 16-Feb-2010 Duncan Sands <baldrick@free.fr> There are two ways of checking for a given type, for example isa<PointerType>(T)
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96344 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
1df9859c40492511b8aa4321eb76496005d3b75b 16-Feb-2010 Duncan Sands <baldrick@free.fr> There are two ways of checking for a given type, for example isa<PointerType>(T)
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96344 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
35740e3d4acada6a7b9ecfd61d604abcadbb07a1 16-Feb-2010 Dale Johannesen <dalej@apple.com> Handle DBG_VALUE mixed with labels when doing PHI
elimination. Before a DBG_VALUE could affect codegen.
The solution here is imperfect and not final.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96318 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.h
6e303cb9fa5fdf93a09b8b6017658f3c72a21292 16-Feb-2010 Dale Johannesen <dalej@apple.com> Handle DBG_VALUE mixed with labels when doing PHI
elimination. Before a DBG_VALUE could affect codegen.
The solution here is imperfect and not final.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96318 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.h
55057296377b0c031432574b3cdee00ada7dda6b 16-Feb-2010 Dale Johannesen <dalej@apple.com> Reapply 96294; now that I've gotten around to looking
at older buildbot messages, I see the failure predates
this patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96307 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
f463d9554b5bfa735e896ceb06f5fea42d33955b 16-Feb-2010 Dale Johannesen <dalej@apple.com> Reapply 96294; now that I've gotten around to looking
at older buildbot messages, I see the failure predates
this patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96307 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
a073f75cf9f04e915df11f6a0fc748c8ca8e2b3b 16-Feb-2010 Dale Johannesen <dalej@apple.com> Something broke. Hard to believe it was this patch
but it's harder to believe it's the other candidate,
so reverting. Temporarily I hope.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96303 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
2e2b4382426f3c918bf8f6d5a417884058b4375e 16-Feb-2010 Dale Johannesen <dalej@apple.com> Something broke. Hard to believe it was this patch
but it's harder to believe it's the other candidate,
so reverting. Temporarily I hope.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96303 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
7e80b27fc4d48723bf82d91dda904e88e4d66908 16-Feb-2010 Evan Cheng <evan.cheng@apple.com> Fix a memory leak. Patch by Nicolas Geoffray.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96295 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f76de0011ff062d8fd6ba81382a7c7c36c9151c2 16-Feb-2010 Evan Cheng <evan.cheng@apple.com> Fix a memory leak. Patch by Nicolas Geoffray.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96295 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1b22395812efed8c62c943f234be78fdd52b8982 16-Feb-2010 Dale Johannesen <dalej@apple.com> More handling of DBG_VALUE.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96294 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
a95f9ed2b8348e91250a22c1aadf20637bcfcb3e 16-Feb-2010 Dale Johannesen <dalej@apple.com> More handling of DBG_VALUE.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96294 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
0dd39a88d18baef39c6c0f28d6f8f5d4385f6809 15-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> Add missed entry to cmake build list file

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96292 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
04c60d9535f0824f16bf6b48b820349db7241d90 15-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> Add missed entry to cmake build list file

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96292 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
756ae49d30932ed7d89dabcef350e5dae3020238 15-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> Use ttype encoding consistently

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96290 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
0b2173069688cae0321b05714f16a8886834cfe6 15-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> Use ttype encoding consistently

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96290 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
84d365c9f4cc0ea5e33f84c90732f69779bbcda6 15-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> Move TLOF implementations to libCodegen to resolve layering violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96288 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
362dd0bef5437f85586c046bc53287b6fbe9c099 15-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> Move TLOF implementations to libCodegen to resolve layering violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96288 91177308-0d34-0410-b5e6-96231b3b80d8
argetLoweringObjectFileImpl.cpp
bf2ffccd8775a82a9589ba522861a1140d4a0aad 15-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> It turns out that we emitted completely wrong common EH frame since the early beginning! The "z" CIE augmentation mark indicates that there is an extra word containing the size of augmentation section. However, even for frames w/o any augmentation data we emitted size uleb! (this is the case of "unwinding through C code"). Thus frame moves information was emitterd completely wrong.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96287 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
ac8a3d0b5b464e4dd7c45ba111e6da1aeed39bc5 15-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> It turns out that we emitted completely wrong common EH frame since the early beginning! The "z" CIE augmentation mark indicates that there is an extra word containing the size of augmentation section. However, even for frames w/o any augmentation data we emitted size uleb! (this is the case of "unwinding through C code"). Thus frame moves information was emitterd completely wrong.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96287 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
d779bcb96ab72939243f1fdd85a2daae863a82c4 15-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> Preliminary patch to improve dwarf EH generation - Hooks to return Personality / FDE / LSDA / TType encoding depending on target / options (e.g. code model / relocation model) - MCIzation of Dwarf EH printer to use encoding information - Stub generation for ELF target (needed for indirect references) - Some other small changes here and there

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96285 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
achineModuleInfoImpls.cpp
9184b25fa543a900463215c11635c2c014ddb623 15-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> Preliminary patch to improve dwarf EH generation - Hooks to return Personality / FDE / LSDA / TType encoding depending on target / options (e.g. code model / relocation model) - MCIzation of Dwarf EH printer to use encoding information - Stub generation for ELF target (needed for indirect references) - Some other small changes here and there

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96285 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
achineModuleInfoImpls.cpp
fcda7188895dcf339e281d59a234ac0b06370758 15-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR6300.

A virtual register can be used before it is defined in the same MBB if the MBB
is part of a loop. Teach the implicit-def pass about this case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96279 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
8eea48a43da9e861841abe869c5f3215c1f42d27 15-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR6300.

A virtual register can be used before it is defined in the same MBB if the MBB
is part of a loop. Teach the implicit-def pass about this case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96279 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
f80681ead6c31677f300779fe356c77e34678396 15-Feb-2010 Evan Cheng <evan.cheng@apple.com> Split SelectionDAGISel::IsLegalAndProfitableToFold to
IsLegalToFold and IsProfitableToFold. The generic version of the later simply checks whether the folding candidate has a single use.

This allows the target isel routines more flexibility in deciding whether folding makes sense. The specific case we are interested in is folding constant pool loads with multiple uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
014bf215c3457bb34fee348265e8f63a70b4d503 15-Feb-2010 Evan Cheng <evan.cheng@apple.com> Split SelectionDAGISel::IsLegalAndProfitableToFold to
IsLegalToFold and IsProfitableToFold. The generic version of the later simply checks whether the folding candidate has a single use.

This allows the target isel routines more flexibility in deciding whether folding makes sense. The specific case we are interested in is folding constant pool loads with multiple uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7c5a506c74431cbdb99e5147fe5a0dadd395cf06 15-Feb-2010 David Greene <greened@obbligato.org> Add non-temporal flags and remove an assumption of default arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96240 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
1e559443a17d1b335f697551c6263ba60d5dd827 15-Feb-2010 David Greene <greened@obbligato.org> Add non-temporal flags and remove an assumption of default arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96240 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
5e4774db6de9a5be1a1d8e9610ef8293358b6b01 15-Feb-2010 David Greene <greened@obbligato.org> Add non-temporal flags to MachineMemOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96226 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ba2b297ca53cd685ba397177e9d2d8c239da971e 15-Feb-2010 David Greene <greened@obbligato.org> Add non-temporal flags to MachineMemOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96226 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e92dee17fa016e12fa9fad042f3d19bf9322908b 15-Feb-2010 Duncan Sands <baldrick@free.fr> Uniformize the names of type predicates: rather than having isFloatTy and
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96223 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuilder.cpp
tackProtector.cpp
b0bc6c361da9009e8414efde317d9bbff755f6c0 15-Feb-2010 Duncan Sands <baldrick@free.fr> Uniformize the names of type predicates: rather than having isFloatTy and
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96223 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuilder.cpp
tackProtector.cpp
e7dda277a77b3b8d9e8a7b30f0fe5d623ecd2cc6 15-Feb-2010 Dale Johannesen <dalej@apple.com> Ignore DBG_VALUE in a couple more places.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96207 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
3da6e09de53d1f50ceed308de855cdce1a54cb81 15-Feb-2010 Dale Johannesen <dalej@apple.com> Ignore DBG_VALUE in a couple more places.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96207 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
412646479ff2453f68c098ef99867b894682e5cb 13-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR6283.

When coalescing with a physreg, remember to add imp-def and imp-kill when
dealing with sub-registers.

Also fix a related bug in VirtRegRewriter where substitutePhysReg may
reallocate the operand list on an instruction and invalidate the reg_iterator.
This can happen when a register is mentioned twice on the same instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96072 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
d135f14f614ff0272b4653877abe09a2914a0227 13-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR6283.

When coalescing with a physreg, remember to add imp-def and imp-kill when
dealing with sub-registers.

Also fix a related bug in VirtRegRewriter where substitutePhysReg may
reallocate the operand list on an instruction and invalidate the reg_iterator.
This can happen when a register is mentioned twice on the same instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96072 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
7f8ae1bc1fd9ef029bc354361a41d1e2667367bb 13-Feb-2010 Evan Cheng <evan.cheng@apple.com> Teach MachineFrameInfo to track maximum alignment while stack objects are being
created. This ensures it's updated at all time. It means targets which perform
dynamic stack alignment would know whether it is required and whether frame
pointer register cannot be made available register allocation.
This is a fix for rdar://7625239. Sorry, I can't create a reasonably sized test
case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96069 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
7545f49a5edfe19612d03e683d8b955c03018056 13-Feb-2010 Evan Cheng <evan.cheng@apple.com> Teach MachineFrameInfo to track maximum alignment while stack objects are being
created. This ensures it's updated at all time. It means targets which perform
dynamic stack alignment would know whether it is required and whether frame
pointer register cannot be made available register allocation.
This is a fix for rdar://7625239. Sorry, I can't create a reasonably sized test
case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96069 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
3ba1ff076374c46e2d41f56d4d9551def0ea6e84 13-Feb-2010 Bob Wilson <bob.wilson@apple.com> Besides removing phi cycles that reduce to a single value, also remove dead
phi cycles. Adjust a few tests to keep dead instructions from being optimized
away. This (together with my previous change for phi cycles) fixes Apple
radar 7627077.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96057 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ptimizePHIs.cpp
bf9b221c006a99d6f117c1048412859d5637bcde 13-Feb-2010 Bob Wilson <bob.wilson@apple.com> Besides removing phi cycles that reduce to a single value, also remove dead
phi cycles. Adjust a few tests to keep dead instructions from being optimized
away. This (together with my previous change for phi cycles) fixes Apple
radar 7627077.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96057 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ptimizePHIs.cpp
003217591d6c8a906438f16cf368da6c343e285d 13-Feb-2010 Chris Lattner <sabre@nondot.org> give MCCodeEmitters access to the current MCContext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96038 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
86020e46289643de2f8c7603b550ffc8b6aff376 13-Feb-2010 Chris Lattner <sabre@nondot.org> give MCCodeEmitters access to the current MCContext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96038 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
a8427f8952c642f1ebdc14f95e64113d83f24488 12-Feb-2010 Dale Johannesen <dalej@apple.com> Rewrite handling of DBG_VALUE; previous algorithm
didn't handle
X =
Y<dead> = use X
DBG_VALUE(X)
I was hoping to avoid this approach as it's slower,
but I don't think it can be done.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95996 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
2d1ec73d94941805de9f4392dbec052ce399ed58 12-Feb-2010 Dale Johannesen <dalej@apple.com> Rewrite handling of DBG_VALUE; previous algorithm
didn't handle
X =
Y<dead> = use X
DBG_VALUE(X)
I was hoping to avoid this approach as it's slower,
but I don't think it can be done.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95996 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
d7df9e124368e5e48122aef8154f39b0346226f5 12-Feb-2010 Dan Gohman <gohman@apple.com> Reapply the new LoopStrengthReduction code, with compile time and
bug fixes, and with improved heuristics for analyzing foreign-loop
addrecs.

This change also flattens IVUsers, eliminating the stride-oriented
groupings, which makes it easier to work with.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95975 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
572645cf84060c0fc25cb91d38cb9079918b3a88 12-Feb-2010 Dan Gohman <gohman@apple.com> Reapply the new LoopStrengthReduction code, with compile time and
bug fixes, and with improved heuristics for analyzing foreign-loop
addrecs.

This change also flattens IVUsers, eliminating the stride-oriented
groupings, which makes it easier to work with.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95975 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
4a08b90bc70e6a988fd3988fb7f11718ffe00808 12-Feb-2010 Lang Hames <lhames@gmail.com> * Updated the cost matrix normalization proceedure to better handle infinite costs.
* Enabled R1/R2 application for nodes with infinite spill costs in the Briggs heuristic (made
safe by the changes to the normalization proceedure).
* Removed a redundant header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95973 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
5cef638855c9f2bb23a9c181cc47ddace8551f50 12-Feb-2010 Lang Hames <lhames@gmail.com> * Updated the cost matrix normalization proceedure to better handle infinite costs.
* Enabled R1/R2 application for nodes with infinite spill costs in the Briggs heuristic (made
safe by the changes to the normalization proceedure).
* Removed a redundant header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95973 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
90b0d5cdd86d7436a92aac43e69b68be8c749dc9 12-Feb-2010 Bob Wilson <bob.wilson@apple.com> Add a new pass on machine instructions to optimize away PHI cycles that
reduce down to a single value. InstCombine already does this transformation
but DAG legalization may introduce new opportunities. This has turned out to
be important for ARM where 64-bit values are split up during type legalization:
InstCombine is not able to remove the PHI cycles on the 64-bit values but
the separate 32-bit values can be optimized. I measured the compile time
impact of this (running llc on 176.gcc) and it was not significant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95951 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
LVMTargetMachine.cpp
ptimizePHIs.cpp
fe61fb1e1082c81653ed78efd6d471592a2e57ad 12-Feb-2010 Bob Wilson <bob.wilson@apple.com> Add a new pass on machine instructions to optimize away PHI cycles that
reduce down to a single value. InstCombine already does this transformation
but DAG legalization may introduce new opportunities. This has turned out to
be important for ARM where 64-bit values are split up during type legalization:
InstCombine is not able to remove the PHI cycles on the 64-bit values but
the separate 32-bit values can be optimized. I measured the compile time
impact of this (running llc on 176.gcc) and it was not significant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95951 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
LVMTargetMachine.cpp
ptimizePHIs.cpp
dec66800d0c57b2bc6e93cb5ed5e119238519bf4 12-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Reapply coalescer fix for better cross-class coalescing.

This time with fixed test cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95938 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
4a540f0593f32d928534817b59c4a528e2197e0c 12-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Reapply coalescer fix for better cross-class coalescing.

This time with fixed test cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95938 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
ebdcf95e6a8836fe0d137d2ac69f9f781734f738 11-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert functional change. This broke a bunch of tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95921 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9637dd50f46bde79091c86c062b58bf406ac2a25 11-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert functional change. This broke a bunch of tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95921 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
bd72f44221082ea9f0a4f8c79a09225b4cf599a7 11-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> It is always good to do a cross-class join when the large register has a tiny interval.

Also avoid division by zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95917 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
a875fd0fdbf5fd111e97fa909e13ad48936856d1 11-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> It is always good to do a cross-class join when the large register has a tiny interval.

Also avoid division by zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95917 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
cd160d31418a6b7861fe2d645d77759e4bcaa2d6 11-Feb-2010 Dale Johannesen <dalej@apple.com> Allow for more than one DBG_VALUE targeting the
same dead instruction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95890 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
39c7a198ea0e10ec258c7df6bba25d4bcaf0792c 11-Feb-2010 Dale Johannesen <dalej@apple.com> Allow for more than one DBG_VALUE targeting the
same dead instruction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95890 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
74e639f162fb56cb2c87d0db7fd836c34a959a3f 11-Feb-2010 Dale Johannesen <dalej@apple.com> Don't allow DBG_VALUE to affect codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95889 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
3bfef03eb6eb6b1b8fe85ba1029ef709aaafe8af 11-Feb-2010 Dale Johannesen <dalej@apple.com> Don't allow DBG_VALUE to affect codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95889 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b867128dfeb2cdd5016516489e38bd35710f4e2f 11-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use array_pod_sort instead of std::sort for improved code size.

Use SmallVector instead of std::vector for better speed when indirectbr has
few successors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b5b90eddcd5e0a3199a7d5064b9d7551cc1dff9c 11-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use array_pod_sort instead of std::sort for improved code size.

Use SmallVector instead of std::vector for better speed when indirectbr has
few successors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
0523d683c6ae5a3d686bc63ca1457985d692b3b5 11-Feb-2010 Bill Wendling <isanbard@gmail.com> Use .empty() instead of .size().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95871 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
e9d10a6c398246fac376804143e868d6c20b6947 11-Feb-2010 Bill Wendling <isanbard@gmail.com> Use .empty() instead of .size().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95871 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
d9696785905a1d2aed7ac6c587aefd5e726c250d 11-Feb-2010 Bill Wendling <isanbard@gmail.com> Fix to get it to compile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95840 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
ca51d051385d5286d1b56b67f7d41468bf1b96dd 11-Feb-2010 Bill Wendling <isanbard@gmail.com> Fix to get it to compile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95840 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
0559f91a9b0a6f81457ac73755bab2da0b724586 11-Feb-2010 Bill Wendling <isanbard@gmail.com> Don't print out a default newline when emitting the section offset. There are
almost always comments afterwards that need printing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95839 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfPrinter.cpp
4cb4895e41435deb1b92a195de420d04e00c7234 11-Feb-2010 Bill Wendling <isanbard@gmail.com> Don't print out a default newline when emitting the section offset. There are
almost always comments afterwards that need printing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95839 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DwarfPrinter.cpp
217b0a9b15146f981fab0cfafb651a50235cf8c0 11-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Reuse operand location when updating PHI instructions.

Calling RemoveOperand is very expensive on huge PHI instructions. This makes
early tail duplication run twice as fast on the Firefox JavaScript
interpreter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95832 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
09eeac9f5f8c21621f82f9b6598eb7e34593357e 11-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Reuse operand location when updating PHI instructions.

Calling RemoveOperand is very expensive on huge PHI instructions. This makes
early tail duplication run twice as fast on the Firefox JavaScript
interpreter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95832 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
a2d21bdb882e18a753d36e22304bd88000e820b2 11-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove duplicate successors from indirectbr instructions before building the machine CFG.

This makes early tail duplication run 60 times faster when compiling the Firefox
JavaScript interpreter, see PR6186.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95831 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
598b24c6d1d6eecb558051d79d8b801542663e09 11-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove duplicate successors from indirectbr instructions before building the machine CFG.

This makes early tail duplication run 60 times faster when compiling the Firefox
JavaScript interpreter, see PR6186.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95831 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
15e34200c767d0edbd2256d4eae312c30a08b1b8 11-Feb-2010 Mon P Wang <wangmp@apple.com> The previous fix of widening divides that trap was too fragile as it depends on custom
lowering and requires that certain types exist in ValueTypes.h. Modified widening to
check if an op can trap and if so, the widening algorithm will apply only the op on
the defined elements. It is safer to do this in widening because the optimizer can't
guarantee removing unused ops in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95823 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
electionDAG/TargetLowering.cpp
f7ea6c3ee89e605c8d0bb7cdb0ade79706c750e8 11-Feb-2010 Mon P Wang <wangmp@apple.com> The previous fix of widening divides that trap was too fragile as it depends on custom
lowering and requires that certain types exist in ValueTypes.h. Modified widening to
check if an op can trap and if so, the widening algorithm will apply only the op on
the defined elements. It is safer to do this in widening because the optimizer can't
guarantee removing unused ops in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95823 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
electionDAG/TargetLowering.cpp
a80bab71ccd52a1900117339b9d24b2549a4730e 11-Feb-2010 Dale Johannesen <dalej@apple.com> Ignore debug info one more place during coalescing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95819 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
99efcf299fb522297dee43066f9c19df00813dcb 11-Feb-2010 Dale Johannesen <dalej@apple.com> Ignore debug info one more place during coalescing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95819 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
dc687cb3565e6f40a3a2d38b55b89fab3b44f7e1 10-Feb-2010 Bob Wilson <bob.wilson@apple.com> Delete dead PHI machine instructions. These can be created due to type
legalization even when the IR-level optimizer has removed dead phis, such
as when the high half of an i64 value is unused on a 32-bit target.
I had to adjust a few test cases that had dead phis.
This is a partial fix for Radar 7627077.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95816 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
5e2b05a71e81b28712b77419f68657462494e103 10-Feb-2010 Bob Wilson <bob.wilson@apple.com> Delete dead PHI machine instructions. These can be created due to type
legalization even when the IR-level optimizer has removed dead phis, such
as when the high half of an i64 value is unused on a 32-bit target.
I had to adjust a few test cases that had dead phis.
This is a partial fix for Radar 7627077.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95816 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
9f2ec003a549daadb083dc66098fef1e850e3b20 10-Feb-2010 Dale Johannesen <dalej@apple.com> Skip debug info in a couple of places.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95814 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b8ff934e94637462901ebd1c849aeaf71350dacc 10-Feb-2010 Dale Johannesen <dalej@apple.com> Skip debug info in a couple of places.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95814 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
7c99a19b753c91264b5ce38b1752fbeb80b6dce6 10-Feb-2010 Bill Wendling <isanbard@gmail.com> Use an index instead of pointers into the vector. If the vector resizes, then
the pointer values could be invalid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95813 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
0a9abcbffed2ccef44138f997c070ba9159b1443 10-Feb-2010 Bill Wendling <isanbard@gmail.com> Use an index instead of pointers into the vector. If the vector resizes, then
the pointer values could be invalid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95813 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
9abc0488e982bf5cc2295ea9675ce66eda6999fb 10-Feb-2010 Dale Johannesen <dalej@apple.com> When I rewrote this loop per Chris' preference I
changed its behavior. Oops.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95811 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e21765d1c86dedbb5537ba6cf5e0cf156d7283ea 10-Feb-2010 Dale Johannesen <dalej@apple.com> When I rewrote this loop per Chris' preference I
changed its behavior. Oops.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95811 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
dc9a0664253bca3cd3dbfaa16d4972a63a7d89eb 10-Feb-2010 Dan Gohman <gohman@apple.com> Fix several comments which had previously been "the the" where a
different word was intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95795 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
f3b11aa6a72e0c31066a60c2e888e7a5eb5f2399 10-Feb-2010 Dan Gohman <gohman@apple.com> Fix several comments which had previously been "the the" where a
different word was intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95795 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
e264f62ca09a8f65c87a46d562a4d0f9ec5d457e 10-Feb-2010 Shih-wei Liao <sliao@google.com> Check in LLVM r95781.
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ntiDepBreaker.h
smPrinter/AsmPrinter.cpp
smPrinter/CMakeLists.txt
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfLabel.cpp
smPrinter/DwarfLabel.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/DwarfWriter.cpp
smPrinter/Makefile
smPrinter/OcamlGCPrinter.cpp
ranchFolding.cpp
ranchFolding.h
MakeLists.txt
alcSpillWeights.cpp
odePlacementOpt.cpp
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
LF.h
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
xactHazardRecognizer.cpp
xactHazardRecognizer.h
CMetadata.cpp
CMetadataPrinter.cpp
CStrategy.cpp
fConversion.cpp
ntrinsicLowering.cpp
LVMTargetMachine.cpp
atencyPriorityQueue.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achineBasicBlock.cpp
achineDominators.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
achineFunctionPass.cpp
achineInstr.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineModuleInfoImpls.cpp
achinePassRegistry.cpp
achineRegisterInfo.cpp
achineSSAUpdater.cpp
achineSink.cpp
achineVerifier.cpp
akefile
bjectCodeEmitter.cpp
camlGC.cpp
ptimizeExts.cpp
BQP/Graph.h
BQP/HeuristicBase.h
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
BQP/Math.h
BQP/Solution.h
HIElimination.cpp
HIElimination.h
asses.cpp
ostRASchedulerList.cpp
reAllocSplitting.cpp
rocessImplicitDefs.cpp
rologEpilogInserter.cpp
rologEpilogInserter.h
seudoSourceValue.cpp
EADME.txt
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
egisterCoalescer.cpp
egisterScavenging.cpp
cheduleDAG.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
cheduleDAGPrinter.cpp
electionDAG/CMakeLists.txt
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/Makefile
electionDAG/SDNodeOrdering.h
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
hadowStackGC.cpp
hrinkWrapping.cpp
impleHazardRecognizer.h
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
jLjEHPrepare.cpp
lotIndexes.cpp
piller.cpp
piller.h
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
irtRegMap.h
irtRegRewriter.cpp
irtRegRewriter.h
df1a7ffe7f19756ba874b3c07615d93ece611a1d 10-Feb-2010 Dan Gohman <gohman@apple.com> Fix "the the" and similar typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95781 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
odePlacementOpt.cpp
xactHazardRecognizer.cpp
achineFunction.cpp
achineInstr.cpp
BQP/HeuristicSolver.h
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
lotIndexes.cpp
trongPHIElimination.cpp
irtRegMap.cpp
f451cb870efcf9e0302d25ed05f4cac6bb494e42 10-Feb-2010 Dan Gohman <gohman@apple.com> Fix "the the" and similar typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95781 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
odePlacementOpt.cpp
xactHazardRecognizer.cpp
achineFunction.cpp
achineInstr.cpp
BQP/HeuristicSolver.h
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
lotIndexes.cpp
trongPHIElimination.cpp
irtRegMap.cpp
238a8d4c3d6868ba4d75158fb7320ef716b1f496 10-Feb-2010 Evan Cheng <evan.cheng@apple.com> Now that ShrinkDemandedOps() is separated out from DAG combine. It sometimes leave some obvious nops which dag combine used to clean up afterwards e.g. (trunk (ext n)) -> n. Look for them and squash them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95757 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
046632f272b22a653c204c0ef56eb4076368d4bb 10-Feb-2010 Evan Cheng <evan.cheng@apple.com> Now that ShrinkDemandedOps() is separated out from DAG combine. It sometimes leave some obvious nops which dag combine used to clean up afterwards e.g. (trunk (ext n)) -> n. Look for them and squash them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95757 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
83efe12ce124419eba2ff9dc354fa248d672d7df 10-Feb-2010 Dale Johannesen <dalej@apple.com> Rewrite loop to suit Chris' preference.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95749 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1d0aeabe3fce2ce6610e988b36582b47a7684f74 10-Feb-2010 Dale Johannesen <dalej@apple.com> Rewrite loop to suit Chris' preference.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95749 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f2f451d4eb04db04bc45999bfc8bd0dd6a27dfde 10-Feb-2010 Chris Lattner <sabre@nondot.org> fix a layering violation: VirtRegRewriter.cpp shouldn't use AsmPrinter.h.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95748 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
irtRegRewriter.cpp
45282aedb9c5a33d20565502c6c8fc871fa84cbe 10-Feb-2010 Chris Lattner <sabre@nondot.org> fix a layering violation: VirtRegRewriter.cpp shouldn't use AsmPrinter.h.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95748 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
irtRegRewriter.cpp
bdd099ecaa89228d499d4c153237e81f037208b9 10-Feb-2010 Evan Cheng <evan.cheng@apple.com> Remove duplicated #include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95747 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
1e5cc222e85fdfdec34e977977c9ca0dea83aa04 10-Feb-2010 Evan Cheng <evan.cheng@apple.com> Remove duplicated #include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95747 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
784555218036dd9945a7f060ad5660e838bb4978 10-Feb-2010 Evan Cheng <evan.cheng@apple.com> Emit an error for illegal inline asm constraint (which uses illegal type) rather than asserting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95746 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
electionDAG/SelectionDAGBuilder.cpp
8112b5322ef60c2dc3cbf0c05671de76df31cf02 10-Feb-2010 Evan Cheng <evan.cheng@apple.com> Emit an error for illegal inline asm constraint (which uses illegal type) rather than asserting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95746 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
electionDAG/SelectionDAGBuilder.cpp
18ab47ac9b067010d6c09896509561d7991a0290 10-Feb-2010 Chris Lattner <sabre@nondot.org> fix missing #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95745 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
achineSSAUpdater.cpp
irtRegRewriter.cpp
3143e90ca89b808e98ad7354a9e7dd6bf42fef00 10-Feb-2010 Chris Lattner <sabre@nondot.org> fix missing #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95745 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
achineSSAUpdater.cpp
irtRegRewriter.cpp
fc5727dc3a284e11b729779a0ae20d5b3e12847f 10-Feb-2010 Bill Wendling <isanbard@gmail.com> Improve comments a even more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95740 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
d3a47a3ef3ea429f82b05cce9ecd7bc6d28badf0 10-Feb-2010 Bill Wendling <isanbard@gmail.com> Improve comments a even more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95740 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
5f2aa4db21cbf761d74af477d11f496eaa01f48a 10-Feb-2010 Dale Johannesen <dalej@apple.com> Skip DBG_VALUE many places in live intervals and
register coalescing. This fixes many crashes and
places where debug info affects codegen (when
dbg.value is lowered to machine instructions, which
it isn't yet in TOT).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95739 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
bd63520161629385ff5a0b037eccc770d8d15289 10-Feb-2010 Dale Johannesen <dalej@apple.com> Skip DBG_VALUE many places in live intervals and
register coalescing. This fixes many crashes and
places where debug info affects codegen (when
dbg.value is lowered to machine instructions, which
it isn't yet in TOT).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95739 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
18ae887e125ccf13369a335d27675dda2f282fa6 10-Feb-2010 Chris Lattner <sabre@nondot.org> Move verbose asm instruction comments to using MCStreamer.
The major win of this is that the code is simpler and they
print on the same line as the instruction again:

movl %eax, 96(%esp) ## 4-byte Spill
movl 96(%esp), %eax ## 4-byte Reload
cmpl 92(%esp), %eax ## 4-byte Folded Reload
jl LBB7_86



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95738 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
47529c9ac6d4731e9f5a1b2d3c64769b1b2d5f1d 10-Feb-2010 Chris Lattner <sabre@nondot.org> Move verbose asm instruction comments to using MCStreamer.
The major win of this is that the code is simpler and they
print on the same line as the instruction again:

movl %eax, 96(%esp) ## 4-byte Spill
movl 96(%esp), %eax ## 4-byte Reload
cmpl 92(%esp), %eax ## 4-byte Folded Reload
jl LBB7_86



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95738 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
30299f06097ea3e9a42b5c53712731bdf3e4c1b2 10-Feb-2010 Bill Wendling <isanbard@gmail.com> Improve comments a bit more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95737 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
35c187bcfda326edcddf0c71ab593786cf88f577 10-Feb-2010 Bill Wendling <isanbard@gmail.com> Improve comments a bit more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95737 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
04ec358aaeb196b8de2bc41e7dd09e31d82a64e9 10-Feb-2010 Dale Johannesen <dalej@apple.com> more comment updates



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95736 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
3b1906f48d0b541e5be0bc1918c94a454e908bc0 10-Feb-2010 Dale Johannesen <dalej@apple.com> more comment updates



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95736 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
db9d33ba6ce91d8365153ac92c96046a68afa871 10-Feb-2010 Dale Johannesen <dalej@apple.com> Add isDebug argument to ChangeToRegister; this prevents
the field from being used uninitialized later in some cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95735 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9653f9ec970147a12216d787078eab2f8b9c122a 10-Feb-2010 Dale Johannesen <dalej@apple.com> Add isDebug argument to ChangeToRegister; this prevents
the field from being used uninitialized later in some cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95735 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
726d397a8cc48a5cb5d2f8a0fe10f7f17f7d4afc 10-Feb-2010 Chris Lattner <sabre@nondot.org> print all the newlines at the end of instructions with
OutStreamer.AddBlankLine instead of textually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95734 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8e089a9e4d6b7aa2b3968c38644f926f60a7c670 10-Feb-2010 Chris Lattner <sabre@nondot.org> print all the newlines at the end of instructions with
OutStreamer.AddBlankLine instead of textually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95734 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e186ea09c2ee992bfec603ae61052c37043607a0 10-Feb-2010 Dale Johannesen <dalej@apple.com> Fix comments to reflect renaming elsewhere.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95730 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
egAllocLocal.cpp
electionDAG/FastISel.cpp
10fedd21d3d5e9527b13e38addd7002da2c1dc61 10-Feb-2010 Dale Johannesen <dalej@apple.com> Fix comments to reflect renaming elsewhere.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95730 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
egAllocLocal.cpp
electionDAG/FastISel.cpp
4e45d4038f73a9f9b011973cccc141f3188480b8 10-Feb-2010 David Greene <greened@obbligato.org> Only dump output in debug mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95711 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
39143700a41cc450252bf2e0b000ce1dd723eb0c 10-Feb-2010 David Greene <greened@obbligato.org> Only dump output in debug mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95711 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
cfa17985ae5be02135e39f36181195bcbfd3bd07 09-Feb-2010 Bill Wendling <isanbard@gmail.com> Improve comments in the LSDA somewhat. They can be improved much more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95707 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
1f8075d7d232dd0c7b0caa81ed3ce426a13f5a66 09-Feb-2010 Bill Wendling <isanbard@gmail.com> Improve comments in the LSDA somewhat. They can be improved much more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95707 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
4052b296030e3523b9a4a8d1e4a9af9091a8d7e8 09-Feb-2010 Chris Lattner <sabre@nondot.org> move target-independent opcodes out of TargetInstrInfo
into TargetOpcodes.h. #include the new TargetOpcodes.h
into MachineInstr. Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the
codebase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95687 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
alcSpillWeights.cpp
odePlacementOpt.cpp
eadMachineInstructionElim.cpp
CStrategy.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineLICM.cpp
achineSSAUpdater.cpp
achineSink.cpp
achineVerifier.cpp
ptimizeExts.cpp
HIElimination.cpp
HIElimination.h
reAllocSplitting.cpp
rocessImplicitDefs.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
lotIndexes.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegRewriter.cpp
518bb53485df640d7b7e3f6b0544099020c42aa7 09-Feb-2010 Chris Lattner <sabre@nondot.org> move target-independent opcodes out of TargetInstrInfo
into TargetOpcodes.h. #include the new TargetOpcodes.h
into MachineInstr. Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the
codebase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95687 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
alcSpillWeights.cpp
odePlacementOpt.cpp
eadMachineInstructionElim.cpp
CStrategy.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineLICM.cpp
achineSSAUpdater.cpp
achineSink.cpp
achineVerifier.cpp
ptimizeExts.cpp
HIElimination.cpp
HIElimination.h
reAllocSplitting.cpp
rocessImplicitDefs.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
lotIndexes.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
ailDuplication.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegRewriter.cpp
fa00947513b6cba185e3870221e0b09bd242c180 09-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to update live-in lists when coalescing physregs.

Patch by M Wahab!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95668 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
00350dbd718e993166da92f1388f57963716efeb 09-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to update live-in lists when coalescing physregs.

Patch by M Wahab!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95668 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
fe5c38072a6c6bd89361670523e57838140a2e2c 09-Feb-2010 Dale Johannesen <dalej@apple.com> Skip DEBUG_VALUE in some places where it was affecting codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95647 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveVariables.cpp
woAddressInstructionPass.cpp
d94998f52574eacef148bd856de701af2c594b03 09-Feb-2010 Dale Johannesen <dalej@apple.com> Skip DEBUG_VALUE in some places where it was affecting codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95647 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveVariables.cpp
woAddressInstructionPass.cpp
a0a98586f7ea4cb607c149cb309859d3973dff7d 09-Feb-2010 Devang Patel <dpatel@apple.com> Add declaration attribute to a variable DIE, if there is a separate DIE for the definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8581e0147cd7622ecec96a47310fc1a211b77908 09-Feb-2010 Devang Patel <dpatel@apple.com> Add declaration attribute to a variable DIE, if there is a separate DIE for the definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
36edd2c95fdb2f77e1c886fb9f959d60b02f7cfa 09-Feb-2010 Lang Hames <lhames@gmail.com> Fixed a bug in the PBQP allocator's findCoalesces method.

Previously spill registers, whose def indexes are not defined, would sometimes be improperly marked as coalescable with conflicting registers. The new findCoalesces routine conservatively assumes that any register with at least one undefined def is not coalescable with any register it interferes with.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95636 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
0b23dc0cc8fb2967dc08574910536cc074863bcb 09-Feb-2010 Lang Hames <lhames@gmail.com> Fixed a bug in the PBQP allocator's findCoalesces method.

Previously spill registers, whose def indexes are not defined, would sometimes be improperly marked as coalescable with conflicting registers. The new findCoalesces routine conservatively assumes that any register with at least one undefined def is not coalescable with any register it interferes with.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95636 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
039aed6edab16ad196c80d97ee972506972f078e 09-Feb-2010 Lang Hames <lhames@gmail.com> Added copy sensible construction & assignment to PBQP graphs and fixed a memory access bug in the heuristic solver.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95633 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/Graph.h
BQP/HeuristicSolver.h
ddea94a8193a9bdbcd2d7655c3be7b189f7e30ac 09-Feb-2010 Lang Hames <lhames@gmail.com> Added copy sensible construction & assignment to PBQP graphs and fixed a memory access bug in the heuristic solver.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95633 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/Graph.h
BQP/HeuristicSolver.h
69003fc57deb3d06a59092e8edc69a886f34e817 09-Feb-2010 Dan Gohman <gohman@apple.com> Implement AsmPrinter support for several more operators which have
direct MCExpr equivalents. Don't use MCExpr::Shr because it isn't
consistent between targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95620 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5938a3e681ab7612f5921c5ccaca5d2e0851c60f 09-Feb-2010 Dan Gohman <gohman@apple.com> Implement AsmPrinter support for several more operators which have
direct MCExpr equivalents. Don't use MCExpr::Shr because it isn't
consistent between targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95620 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3274882ec8b5fe6f17f88674433a77b7a892ada7 09-Feb-2010 Chris Lattner <sabre@nondot.org> now that @GOTOFF is no longer represented as a suffix on a
MCSymbol, we can remove the 'suffix' argument of
GetBlockAddressSymbol. Do so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95601 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
951755445821b92c3dc38f32b5c36e9875fa4318 09-Feb-2010 Chris Lattner <sabre@nondot.org> now that @GOTOFF is no longer represented as a suffix on a
MCSymbol, we can remove the 'suffix' argument of
GetBlockAddressSymbol. Do so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95601 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
933f193cf388024c0a385808683aec98d6dbe780 08-Feb-2010 Dan Gohman <gohman@apple.com> ConstantFoldConstantExpression can theoretically return the original
expression; don't go into an infinite loop if it does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95591 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
54e72eca0c5d012546fcc6d1fdac7ee56c90686c 08-Feb-2010 Dan Gohman <gohman@apple.com> ConstantFoldConstantExpression can theoretically return the original
expression; don't go into an infinite loop if it does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95591 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8e0ed34112d7ff6a6211d0b0168d34ce0be747dc 08-Feb-2010 Dan Gohman <gohman@apple.com> When CodeGen'ing unoptimized code, there may be unfolded constant expressions
in global initializers. Instead of aborting, attempt to fold them on the
spot. If folding succeeds, emit the folded expression instead.

This fixes PR6255.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95583 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
618f17702d09795279717827eeb06632d6ef49e4 08-Feb-2010 Dan Gohman <gohman@apple.com> When CodeGen'ing unoptimized code, there may be unfolded constant expressions
in global initializers. Instead of aborting, attempt to fold them on the
spot. If folding succeeds, emit the folded expression instead.

This fixes PR6255.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95583 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9cfc4c0346214456c6e77f4e1a6f6546ef44d337 08-Feb-2010 Dale Johannesen <dalej@apple.com> Apply the 95471 fix to SelectionDAGBuilder as well;
we can get in here if FastISel gives up in a block.
(Actually the two copies of this need to be unified. Later.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95579 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8ac38f2a616d303423e66023d2d2a6ff96c5040a 08-Feb-2010 Dale Johannesen <dalej@apple.com> Apply the 95471 fix to SelectionDAGBuilder as well;
we can get in here if FastISel gives up in a block.
(Actually the two copies of this need to be unified. Later.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95579 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
4bfece3213313d8e89a2c1b539e2248dfdd8c157 08-Feb-2010 Dan Gohman <gohman@apple.com> In guaranteed tailcall mode, don't decline the tailcall optimization
for blocks ending in "unreachable".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95565 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c2e93b255e120f066ad8c16b0593b05f7e9f3d19 08-Feb-2010 Dan Gohman <gohman@apple.com> In guaranteed tailcall mode, don't decline the tailcall optimization
for blocks ending in "unreachable".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95565 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3ef960d295493fb1b9e5076ea07b83ef8a232a5e 07-Feb-2010 Duncan Sands <baldrick@free.fr> Give DwarfPrinter a protected (but not virtual) destructor. Cppcheck
warns about this base class not having a virtual destructor, but since
this class has no virtual methods and neither it or the types derived
from it has a destructor, a protected trivial destructor will do (and
shuts cppcheck up) the trick without the cost of introducing a vtable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95526 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.h
3dc32ed569ab8f94e8036f5aae9d683c34bd31f3 07-Feb-2010 Duncan Sands <baldrick@free.fr> Give DwarfPrinter a protected (but not virtual) destructor. Cppcheck
warns about this base class not having a virtual destructor, but since
this class has no virtual methods and neither it or the types derived
from it has a destructor, a protected trivial destructor will do (and
shuts cppcheck up) the trick without the cost of introducing a vtable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95526 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.h
254de0edb72f9c9e5b16d7b6331593d11157ce3c 06-Feb-2010 Evan Cheng <evan.cheng@apple.com> Run codegen dce pass for all targets at all optimization levels. Previously it's
only run for x86 with fastisel. I've found it being very effective in
eliminating some obvious dead code as result of formal parameter lowering
especially when tail call optimization eliminated the need for some of the loads
from fixed frame objects. It also shrinks a number of the tests. A couple of
tests no longer make sense and are now eliminated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95493 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
LVMTargetMachine.cpp
iveIntervalAnalysis.cpp
00a99a35840451a291eb61a192a750908a4073ae 06-Feb-2010 Evan Cheng <evan.cheng@apple.com> Run codegen dce pass for all targets at all optimization levels. Previously it's
only run for x86 with fastisel. I've found it being very effective in
eliminating some obvious dead code as result of formal parameter lowering
especially when tail call optimization eliminated the need for some of the loads
from fixed frame objects. It also shrinks a number of the tests. A couple of
tests no longer make sense and are now eliminated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95493 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
LVMTargetMachine.cpp
iveIntervalAnalysis.cpp
f7cd4ca5d5cdf33d900e181a06b64e41ee3960dc 06-Feb-2010 Bob Wilson <bob.wilson@apple.com> Fix an uninitialized value. Radar 7609421.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95488 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
5d48c6d2cb7fb73c8bb042fbc4e8662347df70bc 06-Feb-2010 Bob Wilson <bob.wilson@apple.com> Fix an uninitialized value. Radar 7609421.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95488 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
1a68ec1d4aae7947e5f0462c82077f93333cca9f 06-Feb-2010 Dale Johannesen <dalej@apple.com> After Victor's latest commits I am seeing null
addresses in dbg.declare; ignore this for the
moment to prevent things from breaking.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95471 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
dc9185657593b5c1db86cb95a04a68fc09194993 06-Feb-2010 Dale Johannesen <dalej@apple.com> After Victor's latest commits I am seeing null
addresses in dbg.declare; ignore this for the
moment to prevent things from breaking.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95471 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c5dc725a7b5176771a55ea1b5ceb5666ae084e88 06-Feb-2010 Devang Patel <dpatel@apple.com> Set DW_AT_artificial only if argument is marked as artificial.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95461 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b4645643de240e5b3461b03a9c6950fefe1538ac 06-Feb-2010 Devang Patel <dpatel@apple.com> Set DW_AT_artificial only if argument is marked as artificial.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95461 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
530a81e793a4016c15d6bafb80b918ea4fb28dde 06-Feb-2010 Devang Patel <dpatel@apple.com> Do not generate specification DIE for nested functions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95452 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6cda22eae404e25944dc29c59e9fc239e8c1891c 06-Feb-2010 Devang Patel <dpatel@apple.com> Do not generate specification DIE for nested functions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95452 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8558d763f21b4a35b2aeccf5de6dcb809d66ff19 05-Feb-2010 Evan Cheng <evan.cheng@apple.com> When the scheduler unfold a load folding instruction it move some of the predecessors to the unfolded load. It decides what gets moved to the load by checking whether the new load is using the predecessor as an operand. The check neglects the cases whether the predecessor is a flagged scheduling unit.
rdar://7604000


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95339 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
5ba8bf6d28ad350114a4b02f01d70ebe08612cfe 05-Feb-2010 Evan Cheng <evan.cheng@apple.com> When the scheduler unfold a load folding instruction it move some of the predecessors to the unfolded load. It decides what gets moved to the load by checking whether the new load is using the predecessor as an operand. The check neglects the cases whether the predecessor is a flagged scheduling unit.
rdar://7604000


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95339 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
380d4a269e3932f9ad4d99c9f1300361eecb766d 05-Feb-2010 Bill Wendling <isanbard@gmail.com> An empty global constant (one of size 0) may have a section immediately
following it. However, the EmitGlobalConstant method wasn't emitting a body for
the constant. The assembler doesn't like that. Before, we were generating this:

.zerofill __DATA, __common, __cmd, 1, 3

This fix puts us back to that semantic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95336 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
744f579b63987854ac1b3f2f9c8d2659c5b5ee40 05-Feb-2010 Bill Wendling <isanbard@gmail.com> An empty global constant (one of size 0) may have a section immediately
following it. However, the EmitGlobalConstant method wasn't emitting a body for
the constant. The assembler doesn't like that. Before, we were generating this:

.zerofill __DATA, __common, __cmd, 1, 3

This fix puts us back to that semantic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95336 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
217685b229a3b5d8bb1416126b1b64ab15e963bd 04-Feb-2010 Evan Cheng <evan.cheng@apple.com> Fix typo Duncan noticed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95322 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6fdce6590261476964cb921a959ed83353e8b096 04-Feb-2010 Evan Cheng <evan.cheng@apple.com> Fix typo Duncan noticed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95322 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
32db0b8104a828cc965b84b7d379f89158e342e4 04-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix small bug in handling instructions with more than one implicitly defined operand.

ProcessImplicitDefs would only mark one operand per instruction with <undef>.
This fixed PR6086.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95319 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
e4d2d96cc8663b9a6040532cea2f2e72688bd895 04-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix small bug in handling instructions with more than one implicitly defined operand.

ProcessImplicitDefs would only mark one operand per instruction with <undef>.
This fixed PR6086.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95319 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
9a7226ffee3f2bcbf895b61c992fd52aad703048 04-Feb-2010 Evan Cheng <evan.cheng@apple.com> It's too risky to eliminate sext / zext of call results for tail call optimization even if the caller / callee attributes completely match. The callee may have been bitcast'ed (or otherwise lied about what it's doing).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95282 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
446bc10085482aba8cde79d22e10c1fe90ac54b9 04-Feb-2010 Evan Cheng <evan.cheng@apple.com> It's too risky to eliminate sext / zext of call results for tail call optimization even if the caller / callee attributes completely match. The callee may have been bitcast'ed (or otherwise lied about what it's doing).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95282 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
84aba948550c797f65a251c01500703858dd5140 03-Feb-2010 Devang Patel <dpatel@apple.com> Emit appropriate expression to find virtual base offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95242 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c1dc8fff79eecc154eb6a62d652c5209d71c031b 03-Feb-2010 Devang Patel <dpatel@apple.com> Emit appropriate expression to find virtual base offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95242 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
bf7d00abd2602d7eee2c086882ad7b716253e61d 03-Feb-2010 Devang Patel <dpatel@apple.com> Provide interface to identifiy artificial methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95240 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4e0d19dfd9ab77f9974cb07320dfe4f7f5ffd7b9 03-Feb-2010 Devang Patel <dpatel@apple.com> Provide interface to identifiy artificial methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95240 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7765306eef752f506f6d2720de53dc14197b3cfc 03-Feb-2010 Chris Lattner <sabre@nondot.org> make MachineModuleInfoMachO hold non-const MCSymbol*'s instead
of const ones. non-const ones aren't very useful, because you can't
even, say, emit them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95205 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfoImpls.cpp
d269a6e460a71a6c5c361a26c56c91fdb9486f45 03-Feb-2010 Chris Lattner <sabre@nondot.org> make MachineModuleInfoMachO hold non-const MCSymbol*'s instead
of const ones. non-const ones aren't very useful, because you can't
even, say, emit them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95205 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfoImpls.cpp
93ed96f75fa6d5f07748c2608d66cd7fb28012b9 03-Feb-2010 Chris Lattner <sabre@nondot.org> change addPassesToEmitFile to return true on failure instead of its input,
add -filetype=null for performance testing and remove -filetype=dynlib,
which isn't planned to be implemented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95202 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
5669e3009761dff20b67e18a382c334041887928 03-Feb-2010 Chris Lattner <sabre@nondot.org> change addPassesToEmitFile to return true on failure instead of its input,
add -filetype=null for performance testing and remove -filetype=dynlib,
which isn't planned to be implemented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95202 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
c41310c1debf41b0fe1569982719fe571866888d 03-Feb-2010 Evan Cheng <evan.cheng@apple.com> Revert 94937 and move the noreturn check to codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95198 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
febc81680c80a53f15f85b1812cba07fc179b9fd 03-Feb-2010 Evan Cheng <evan.cheng@apple.com> Revert 94937 and move the noreturn check to codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95198 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
411c05288da7bed30b35be92bcf6cca5466364db 03-Feb-2010 Evan Cheng <evan.cheng@apple.com> Allow all types of callee's to be tail called. But avoid automatic tailcall if the callee is a result of bitcast to avoid losing necessary zext / sext etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
86809ccdaddf48a87ed772bc01464812caaf4baf 03-Feb-2010 Evan Cheng <evan.cheng@apple.com> Allow all types of callee's to be tail called. But avoid automatic tailcall if the callee is a result of bitcast to avoid losing necessary zext / sext etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
32b33f15eb5592331cc893043be273c64b42cf76 03-Feb-2010 Chris Lattner <sabre@nondot.org> don't emit \n's at the start of X86AsmPrinter::runOnMachineFunction,
.o files don't like that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95187 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d26a80f666fb925956a4f19143265f5150756df0 03-Feb-2010 Chris Lattner <sabre@nondot.org> don't emit \n's at the start of X86AsmPrinter::runOnMachineFunction,
.o files don't like that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95187 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
dc091da21df4460d274807b0357f41c103f1b904 03-Feb-2010 Chris Lattner <sabre@nondot.org> privatize a bunch of methods and move \n printing into them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95186 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f64159c8402ef17d14b5f7555378b2c321a4a5ab 03-Feb-2010 Chris Lattner <sabre@nondot.org> privatize a bunch of methods and move \n printing into them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95186 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
da4d84a794114b7aefe5fc1caa33753d5b8d4143 03-Feb-2010 Dale Johannesen <dalej@apple.com> Reapply 95050 with a tweak to check the register class.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95183 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
9a6636b2cdb2be054850d69619504058f7c8ed91 03-Feb-2010 Dale Johannesen <dalej@apple.com> Reapply 95050 with a tweak to check the register class.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95183 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
0c920438c1f21ee6d9befa4aac8b884b8cafbc9c 03-Feb-2010 Chris Lattner <sabre@nondot.org> rejigger the world so that EmitInstruction prints the \n at
the end of the instruction instead of expecting the caller to
do it. This currently causes the asm-verbose instruction
comments to be on the next line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95178 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d1ff72b8a797304f146e4293db8c814231ea8cb3 03-Feb-2010 Chris Lattner <sabre@nondot.org> rejigger the world so that EmitInstruction prints the \n at
the end of the instruction instead of expecting the caller to
do it. This currently causes the asm-verbose instruction
comments to be on the next line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95178 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ff259dbe71427fbe989d2f886f08c00e369df771 03-Feb-2010 Chris Lattner <sabre@nondot.org> sink handling of target-independent machine instrs (other
than DEBUG_VALUE :( ) into the target indep AsmPrinter.cpp
file. This allows elimination of the
NO_ASM_WRITER_BOILERPLATE hack among other things.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95177 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0d883e3f8484491d010b8f8b7a1aecc58cb5fa8e 03-Feb-2010 Chris Lattner <sabre@nondot.org> sink handling of target-independent machine instrs (other
than DEBUG_VALUE :( ) into the target indep AsmPrinter.cpp
file. This allows elimination of the
NO_ASM_WRITER_BOILERPLATE hack among other things.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95177 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4b8234c54c1f72a649687997b26f9d252529cf64 03-Feb-2010 Chris Lattner <sabre@nondot.org> pass an instprinter into the AsmPrinter if it is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95168 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
6c8d6ec2a7906733401aae121a5e1eacf477c0f5 03-Feb-2010 Chris Lattner <sabre@nondot.org> pass an instprinter into the AsmPrinter if it is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95168 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
d6889ceb21f6478604547c55963539a7ecc8449f 03-Feb-2010 Chris Lattner <sabre@nondot.org> make any use of the "O" stream in asmprinter print to
stderr if in filetype=obj mode. This is a hack, and will
live until dwarf emission and other random stuff that is
not yet going through MCStreamer is upgraded. It only
impacts filetype=obj mode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95166 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
be2e76bbb358ba58aecc05c94fb98cf5c2981bd2 03-Feb-2010 Chris Lattner <sabre@nondot.org> make any use of the "O" stream in asmprinter print to
stderr if in filetype=obj mode. This is a hack, and will
live until dwarf emission and other random stuff that is
not yet going through MCStreamer is upgraded. It only
impacts filetype=obj mode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95166 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
20bb6c0b391cad84d81120cf11330c998a97371d 03-Feb-2010 Chris Lattner <sabre@nondot.org> Hook up -filetype=obj through the MachO streamer. Here's a demo:

$ cat t.ll
@g = global i32 42
$ llc t.ll -o t.o -filetype=obj
$ nm t.o
00000000 D _g

There is still a ton of work left. Instructions are not being encoded
yet apparently.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95162 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ac7798e9062f9bc371709ed445e1b3153b581e9a 03-Feb-2010 Chris Lattner <sabre@nondot.org> Hook up -filetype=obj through the MachO streamer. Here's a demo:

$ cat t.ll
@g = global i32 42
$ llc t.ll -o t.o -filetype=obj
$ nm t.o
00000000 D _g

There is still a ton of work left. Instructions are not being encoded
yet apparently.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95162 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ff116f99c64e1ca085c9d1387f7bd6eb8e4dbd67 03-Feb-2010 Evan Cheng <evan.cheng@apple.com> Revert 95130.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95160 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
022d9e1cef7586a80a96446ae8691a37def9bbf4 03-Feb-2010 Evan Cheng <evan.cheng@apple.com> Revert 95130.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95160 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
56e867721dfa32bebff919775d054fbd27d6e53d 03-Feb-2010 Chris Lattner <sabre@nondot.org> use OwningPtr and factor code better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95156 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
6cafdcc9afb294b62962f94f03cc48d6b18712d0 03-Feb-2010 Chris Lattner <sabre@nondot.org> use OwningPtr and factor code better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95156 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
8d2970ba91fc2161bf5fc3d073a59cd4f3dc45a6 03-Feb-2010 Chris Lattner <sabre@nondot.org> refactor code so that LLVMTargetMachine creates the asmstreamer and
mccontext instead of having AsmPrinter do it. This allows other
types of MCStreamer's to be passed in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95155 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LVMTargetMachine.cpp
56591ab218639d8a6e4c756ca37adaf20215c3b6 03-Feb-2010 Chris Lattner <sabre@nondot.org> refactor code so that LLVMTargetMachine creates the asmstreamer and
mccontext instead of having AsmPrinter do it. This allows other
types of MCStreamer's to be passed in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95155 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LVMTargetMachine.cpp
ed8f0c61baa769f1a5bd1767fe715d7323e1aca1 02-Feb-2010 Chris Lattner <sabre@nondot.org> simplify getVerboseAsm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95153 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
e16ad1a9833c89965c921f137cfb6c424ff3e9c2 02-Feb-2010 Chris Lattner <sabre@nondot.org> simplify getVerboseAsm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95153 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
28761cf9ba65a2c97ebb02aa10c4a5485d255358 02-Feb-2010 Chris Lattner <sabre@nondot.org> move handling of asm-verbose out of AsmPrinter.cpp into LLVMTargetMachine.cpp with the rest of the command line options.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95152 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LVMTargetMachine.cpp
1f21990284906b1d3ed244d99808c6dade04d295 02-Feb-2010 Chris Lattner <sabre@nondot.org> move handling of asm-verbose out of AsmPrinter.cpp into LLVMTargetMachine.cpp with the rest of the command line options.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95152 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LVMTargetMachine.cpp
e58833b5e2fe3eb343ca5863d33ccee2c85b249d 02-Feb-2010 Chris Lattner <sabre@nondot.org> remove dead #include, stupid symlinks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95150 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
2e438c3a70dcd445f99f562e57715296e3cacc08 02-Feb-2010 Chris Lattner <sabre@nondot.org> remove dead #include, stupid symlinks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95150 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
ea38206ed77d355aac2f0bfa2e3f27ef7aa83c2e 02-Feb-2010 Chris Lattner <sabre@nondot.org> Remove a bunch of stuff around the edges of the ELF writer.
Now the only use of the ELF writer is the JIT, which won't be
easy to fix in the short term. :( :(



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95148 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
3813d8adf3788dd01a4cb9db01c122cd5e6a13b9 02-Feb-2010 Chris Lattner <sabre@nondot.org> Remove a bunch of stuff around the edges of the ELF writer.
Now the only use of the ELF writer is the JIT, which won't be
easy to fix in the short term. :( :(



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95148 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
ca6c93430e98e3fb0eaf40aa543ea1dc45cf35d7 02-Feb-2010 Evan Cheng <evan.cheng@apple.com> Pass callsite return type to TargetLowering::LowerCall and use that to check sibcall eligibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95130 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
942619695f4bd77934c09a1cae0fb39ae59edac3 02-Feb-2010 Evan Cheng <evan.cheng@apple.com> Pass callsite return type to TargetLowering::LowerCall and use that to check sibcall eligibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95130 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
53f24980e669cfa1585636897172a9c2013b850e 02-Feb-2010 Chris Lattner <sabre@nondot.org> eliminate FileModel::Model, just use CodeGenFileType. The client
of the code generator shouldn't care what object format a target
uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95124 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
211edae4843f5c2ee9c376e88e4cf0ecc8745f03 02-Feb-2010 Chris Lattner <sabre@nondot.org> eliminate FileModel::Model, just use CodeGenFileType. The client
of the code generator shouldn't care what object format a target
uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95124 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
72f6852e64650946e0c8f6896dccba3eeb81bb1c 02-Feb-2010 Chris Lattner <sabre@nondot.org> eliminate all forms of addPassesToEmitMachineCode except
the one used by the JIT. Remove all forms of
addPassesToEmitFileFinish except the one used by the static
code generator. Inline the remaining version of
addPassesToEmitFileFinish into its only caller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95109 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
b5c5160a554cb0debeb7913287d9c099a753a59e 02-Feb-2010 Chris Lattner <sabre@nondot.org> eliminate all forms of addPassesToEmitMachineCode except
the one used by the JIT. Remove all forms of
addPassesToEmitFileFinish except the one used by the static
code generator. Inline the remaining version of
addPassesToEmitFileFinish into its only caller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95109 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
2106e99cde730bc2e97944691676eb877ba5e75d 02-Feb-2010 Dale Johannesen <dalej@apple.com> Test revert 95050; there's a good chance it's causing
buildbot failure.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95103 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
62a04136d5e2f4153c02fb0b78be9b48e14423da 02-Feb-2010 Dale Johannesen <dalej@apple.com> Test revert 95050; there's a good chance it's causing
buildbot failure.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95103 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
e671159f4ba37abebfe2ebe7f08cf6fb97aff27b 02-Feb-2010 Chris Lattner <sabre@nondot.org> Inline addAssemblyEmitter into its one real caller and delete
the -print-emitted-asm option. The JIT shouldn't have to pull
in the asmprinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95100 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
0823d2a654cb3a075016f6efd21359ed4f5aca21 02-Feb-2010 Chris Lattner <sabre@nondot.org> Inline addAssemblyEmitter into its one real caller and delete
the -print-emitted-asm option. The JIT shouldn't have to pull
in the asmprinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95100 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
40b6cdaef9ac376bce891e90375868450f84158d 02-Feb-2010 Devang Patel <dpatel@apple.com> Apparently gdb is not amused by empty lines in pubtypes section.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95064 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e3d6d220bddbbd7d48b0610edf43e080a0b7467c 02-Feb-2010 Devang Patel <dpatel@apple.com> Apparently gdb is not amused by empty lines in pubtypes section.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95064 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0ceb489312cd308d27e0c3bfee93c0695fc0e2f5 02-Feb-2010 Devang Patel <dpatel@apple.com> NULL terminate name in pubtypes sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95062 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
31acb89c6545847435518f42825102aa30af9fd4 02-Feb-2010 Devang Patel <dpatel@apple.com> NULL terminate name in pubtypes sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95062 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
811db4ebfb2af70fe281acfa1d8074311230d2d7 02-Feb-2010 Dale Johannesen <dalej@apple.com> Make local RA smarter about reusing input register of a copy
as output. Needed for (functional) correctness in inline asm,
and should be generally beneficial. 7361612.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95050 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
5ce0ee9c099deb18d432c665d74634b0373071c7 02-Feb-2010 Dale Johannesen <dalej@apple.com> Make local RA smarter about reusing input register of a copy
as output. Needed for (functional) correctness in inline asm,
and should be generally beneficial. 7361612.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95050 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
278a15fc85c395cb765b66d012961417ed4b0003 02-Feb-2010 Daniel Dunbar <daniel@zuster.org> Update CMake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95041 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
87641fa6dc4de104dd4d5ef7fee49035331c4a8c 02-Feb-2010 Daniel Dunbar <daniel@zuster.org> Update CMake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95041 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
4b58ffd04419208c23abac071cb7c4334c132372 02-Feb-2010 Nate Begeman <natebegeman@mac.com> Kill the Mach-O writer, and temporarily make filetype=obj an error.
The MCStreamer based assemblers will take over for this functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95033 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achOWriter.cpp
achOWriter.h
39bdc78e6fcc2a152c6143952c23fba5db983227 02-Feb-2010 Nate Begeman <natebegeman@mac.com> Kill the Mach-O writer, and temporarily make filetype=obj an error.
The MCStreamer based assemblers will take over for this functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95033 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achOWriter.cpp
achOWriter.h
98e9782ff492262ecec571cd33f32478547a06f4 01-Feb-2010 Mon P Wang <wangmp@apple.com> Improve EXTRACT_VECTOR_ELT patch based on comments from Duncan


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95012 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
87c46d8a0e9d85d39bfd93a4e6307a871075add6 01-Feb-2010 Mon P Wang <wangmp@apple.com> Improve EXTRACT_VECTOR_ELT patch based on comments from Duncan


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95012 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
6c9f1bc1ea2a0476659c4547d5c0b175258f1ebc 01-Feb-2010 Chris Lattner <sabre@nondot.org> eliminate a bunch of pointless LLVMContext arguments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b29d596072d2ba32a0bb59241baf7a1c0ff5ed94 01-Feb-2010 Chris Lattner <sabre@nondot.org> eliminate a bunch of pointless LLVMContext arguments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7b92d04e46c4997309eb4ec2ab30423d118d259e 01-Feb-2010 Dale Johannesen <dalej@apple.com> fix PR 6157. Testcase pending.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94996 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
904c2fadbf44c47b418860f928f435a58da08bb6 01-Feb-2010 Dale Johannesen <dalej@apple.com> fix PR 6157. Testcase pending.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94996 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3a04886c19b3f2bf53a6f8c6c4955118f3408fd3 01-Feb-2010 Mon P Wang <wangmp@apple.com> Fixed a couple of optimization with EXTRACT_VECTOR_ELT that assumes the result
type is the same as the element type of the vector. EXTRACT_VECTOR_ELT can
be used to extended the width of an integer type. This fixes a bug for
Generic/vector-casts.ll on a ppc750.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
c6654ec498698919ae8388c53fe91d0366ac24c7 01-Feb-2010 Mon P Wang <wangmp@apple.com> Fixed a couple of optimization with EXTRACT_VECTOR_ELT that assumes the result
type is the same as the element type of the vector. EXTRACT_VECTOR_ELT can
be used to extended the width of an integer type. This fixes a bug for
Generic/vector-casts.ll on a ppc750.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
423dfa0a5bf34218f526c272ddeb244d7be0d8e3 30-Jan-2010 Devang Patel <dpatel@apple.com> Emit declaration DIE for the class static variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94870 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1ee0cb9a558f2bb739db19426a5aab936e16bacd 30-Jan-2010 Devang Patel <dpatel@apple.com> Emit declaration DIE for the class static variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94870 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3940d849787209a8e43682d61bf40fde9919a314 30-Jan-2010 Dale Johannesen <dalej@apple.com> Fix a case where debug_value could affect codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94866 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
ca1346122f07e56ab84a3ffaab02bd5a7d85c7af 30-Jan-2010 Dale Johannesen <dalej@apple.com> Fix a case where debug_value could affect codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94866 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
dc73c37d2da6bd3f3bbd7abcbdb682fae79893a2 29-Jan-2010 Devang Patel <dpatel@apple.com> Add size and location info in DW_TAG_class_type descriptor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94822 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8cbb6123acbb57480cbf7bc714724106db50e2e5 29-Jan-2010 Devang Patel <dpatel@apple.com> Add size and location info in DW_TAG_class_type descriptor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94822 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
574e2b262fa8c930144a709a97c84583b5281a3e 29-Jan-2010 Duncan Sands <baldrick@free.fr> Change the SREM case to match the logic in the IR version ComputeMaskedBits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94805 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5c2873a74bffaf608e268761b30439e158369413 29-Jan-2010 Duncan Sands <baldrick@free.fr> Change the SREM case to match the logic in the IR version ComputeMaskedBits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94805 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
87589f79a98529ea2d65c1fcd572d37c38ae93a1 28-Jan-2010 Bill Wendling <isanbard@gmail.com> Assign the ordering of SDNodes in a much less intrusive fashion. After the
"visit*" method is called, take the newly created nodes, walk them in a DFS
fashion, and if they don't have an ordering set, then give it one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94757 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
4533cac557cdcc13e7c990942758ec8338d9172a 28-Jan-2010 Bill Wendling <isanbard@gmail.com> Assign the ordering of SDNodes in a much less intrusive fashion. After the
"visit*" method is called, take the newly created nodes, walk them in a DFS
fashion, and if they don't have an ordering set, then give it one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94757 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
feb65e4ef7e539b86993b9840554725ae5a3853a 28-Jan-2010 Chris Lattner <sabre@nondot.org> add target hooks for emitting random gunk before and after the function body.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94732 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
edfe776ac29d9fd48ae8967f6742400aad65e39c 28-Jan-2010 Chris Lattner <sabre@nondot.org> add target hooks for emitting random gunk before and after the function body.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94732 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1db5d985d6cc883ad90073f979c483aa7c1b8955 28-Jan-2010 Jim Grosbach <grosbach@apple.com> Update of 94055 to track the IR level call site information via an intrinsic.
This allows code gen and the exception table writer to cooperate to make sure
landing pads are associated with the correct invoke locations.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94726 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
jLjEHPrepare.cpp
ca752c9020a1b1cf151142bd9e0cbca9af12d807 28-Jan-2010 Jim Grosbach <grosbach@apple.com> Update of 94055 to track the IR level call site information via an intrinsic.
This allows code gen and the exception table writer to cooperate to make sure
landing pads are associated with the correct invoke locations.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94726 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
jLjEHPrepare.cpp
1d40b3738f819d8cfb67b6b71d83642036388cd0 28-Jan-2010 Chris Lattner <sabre@nondot.org> Give AsmPrinter the most common expected implementation of
runOnMachineFunction, and switch PPC to use EmitFunctionBody.
The two ppc asmprinters now don't heave to define
runOnMachineFunction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94722 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d49fe1b6bc4615684c2ec71140a21e9c4cd69ce3 28-Jan-2010 Chris Lattner <sabre@nondot.org> Give AsmPrinter the most common expected implementation of
runOnMachineFunction, and switch PPC to use EmitFunctionBody.
The two ppc asmprinters now don't heave to define
runOnMachineFunction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94722 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5ab55984e1099748b6b3976f7bc08cf80b6a1550 28-Jan-2010 Chris Lattner <sabre@nondot.org> emit a 0 byte instead of a noop if a function is empty on darwin.
"0" is nice and target independent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94718 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
10e7c60c0444a766c256f6c7c922e43963590a5c 28-Jan-2010 Chris Lattner <sabre@nondot.org> emit a 0 byte instead of a noop if a function is empty on darwin.
"0" is nice and target independent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94718 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d7dede2bdd47620b6f8ac8e3f72d454bac8c1005 28-Jan-2010 Chris Lattner <sabre@nondot.org> Remove the argument from EmitJumpTableInfo, because it doesn't need it.

Move the X86 implementation of function body emission up to
AsmPrinter::EmitFunctionBody, which works by calling the virtual
EmitInstruction method.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94716 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
14c38ec2afeaf25c53a50c2c65116aca8c889401 28-Jan-2010 Chris Lattner <sabre@nondot.org> Remove the argument from EmitJumpTableInfo, because it doesn't need it.

Move the X86 implementation of function body emission up to
AsmPrinter::EmitFunctionBody, which works by calling the virtual
EmitInstruction method.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94716 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8559cf724e8fb6a74ee227709b3a634edb2f46b4 28-Jan-2010 Chris Lattner <sabre@nondot.org> Drop the argument to AsmPrinter::EmitConstantPool and make it virtual.
Overload it in the ARM backend to do nothing, since is does insane
constant pool emission.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94708 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a2406190ca28dc5901dfe747849c8eda9c29d7ee 28-Jan-2010 Chris Lattner <sabre@nondot.org> Drop the argument to AsmPrinter::EmitConstantPool and make it virtual.
Overload it in the ARM backend to do nothing, since is does insane
constant pool emission.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94708 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3298855a94df43a408b6804f74f8675dfc26fad8 28-Jan-2010 Chris Lattner <sabre@nondot.org> rename printVisibility to EmitVisibility and make it private,
constify EmitLinkage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94705 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
be9dfcef82c58063708e039bea3cf972ba41581b 28-Jan-2010 Chris Lattner <sabre@nondot.org> rename printVisibility to EmitVisibility and make it private,
constify EmitLinkage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94705 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e2ce4d925dc2016025a39193f7555555158e1b28 27-Jan-2010 Dale Johannesen <dalej@apple.com> If the only use of something is a DEBUG_VALUE, don't
let that stop it from being deleted, and change the
DEBUG_VALUE value to undef.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94694 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
9514fcbae518cfe3e4e4ea1fcc279babbdc38095 27-Jan-2010 Dale Johannesen <dalej@apple.com> If the only use of something is a DEBUG_VALUE, don't
let that stop it from being deleted, and change the
DEBUG_VALUE value to undef.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94694 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
9f4185e3a1ab4cc49e93d38afcfa29d6777d38cc 27-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Silence GCC warnings with asserts turned off. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94673 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
BQP/Heuristics/Briggs.h
de4c08008a10aba59171c56086d96c760990a4cb 27-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Silence GCC warnings with asserts turned off. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94673 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
BQP/Heuristics/Briggs.h
aec7a8a5b4f952b767fe0d301404e078425bde0d 27-Jan-2010 Chris Lattner <sabre@nondot.org> add a new AsmPrinter::EmitFunctionEntryLabel virtual function,
which allows targets to override function entry label emission.
Use it to convert linux/ppc to use EmitFunctionHeader().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94667 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2cf7251d39f28888af06b6f941eabd1d10995382 27-Jan-2010 Chris Lattner <sabre@nondot.org> add a new AsmPrinter::EmitFunctionEntryLabel virtual function,
which allows targets to override function entry label emission.
Use it to convert linux/ppc to use EmitFunctionHeader().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94667 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6b6ed5994d4c2be6e2087a969b35f55226d82608 27-Jan-2010 Evan Cheng <evan.cheng@apple.com> Eliminate target hook IsEligibleForTailCallOptimization.

Target independent isel should always pass along the "tail call" property. Change
target hook LowerCall's parameter "isTailCall" into a refernce. If the target
decides it's impossible to honor the tail call request, it should set isTailCall
to false to make target independent isel happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94626 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
0c439eb2c8397996cbccaf2798e598052d9982c8 27-Jan-2010 Evan Cheng <evan.cheng@apple.com> Eliminate target hook IsEligibleForTailCallOptimization.

Target independent isel should always pass along the "tail call" property. Change
target hook LowerCall's parameter "isTailCall" into a refernce. If the target
decides it's impossible to honor the tail call request, it should set isTailCall
to false to make target independent isel happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94626 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
bfbae45ecc789bc663f9fea39f60ffe34d5eff6c 27-Jan-2010 Chris Lattner <sabre@nondot.org> mcize label emission for functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94624 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9bc20ab519d47146a9716d7cff2a892da78774a6 27-Jan-2010 Chris Lattner <sabre@nondot.org> mcize label emission for functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94624 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
fa366055bfbd194d76964c1151c5352698430957 27-Jan-2010 Chris Lattner <sabre@nondot.org> use EmitLinkage for functions as well as globals. One output
change is that we now use ".linkonce discard" for global variables
instead of ".linkonce samesize". These should be the same, just less
strict. If anyone is interested in mcizing MCSection for COFF targets,
this should be easy to fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94623 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
111a3193b5e25f8765221f2e94fba888155fe4eb 27-Jan-2010 Chris Lattner <sabre@nondot.org> use EmitLinkage for functions as well as globals. One output
change is that we now use ".linkonce discard" for global variables
instead of ".linkonce samesize". These should be the same, just less
strict. If anyone is interested in mcizing MCSection for COFF targets,
this should be easy to fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94623 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3971bfd52ea146220a4983045e5ca0d765fdb1ac 27-Jan-2010 Chris Lattner <sabre@nondot.org> pull linkage emission code out to a new EmitLinkage function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94621 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a3e8883d710c435d640d65e52f0c6dcce21cad5b 27-Jan-2010 Chris Lattner <sabre@nondot.org> pull linkage emission code out to a new EmitLinkage function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94621 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7d7e511a8353733c220bf28514a61f02d571e645 27-Jan-2010 Chris Lattner <sabre@nondot.org> rearrange some directives, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94620 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b406a8141d704bca7a8eade3a0c46d7ec73affc8 27-Jan-2010 Chris Lattner <sabre@nondot.org> rearrange some directives, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94620 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5f287bd4daecba7bed5ace5937d512ee74225ce3 27-Jan-2010 Chris Lattner <sabre@nondot.org> remove a noop function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94616 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5c8697488ad6d860c448b6e7bed80dec8c90b585 27-Jan-2010 Chris Lattner <sabre@nondot.org> remove a noop function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94616 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e598067034348042de2048941af8e53a6ece2768 27-Jan-2010 Chris Lattner <sabre@nondot.org> now that enough stuff is constified, move function header printing
logic up from X86 into the common code. The other targets will
hopefully start using this soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94614 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b11caedd6f36afc6518cf0ea9bbff6500fd77334 27-Jan-2010 Chris Lattner <sabre@nondot.org> now that enough stuff is constified, move function header printing
logic up from X86 into the common code. The other targets will
hopefully start using this soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94614 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
69a76970a3bd6ba4aa79551cd662ca82ec550be8 27-Jan-2010 Chris Lattner <sabre@nondot.org> constify a bunch of dwarf stuff now that the registerinfo method
is constified.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94613 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.h
smPrinter/DwarfWriter.cpp
eec791afb127ed634ed5d1cdd2e6c47b3b70174c 27-Jan-2010 Chris Lattner <sabre@nondot.org> constify a bunch of dwarf stuff now that the registerinfo method
is constified.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94613 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.h
smPrinter/DwarfWriter.cpp
f69d87ca0cc23a4459e074edb2e4c1b20a5c7a93 27-Jan-2010 Evan Cheng <evan.cheng@apple.com> Allow some automatic tailcall optimization without changing ABI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94611 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
11e679324b693125a98d865fe3e9fc9b2a9e5d22 27-Jan-2010 Evan Cheng <evan.cheng@apple.com> Allow some automatic tailcall optimization without changing ABI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94611 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
ca41903f6813a6e28b136d7f4e30080305bbbe6e 26-Jan-2010 Chris Lattner <sabre@nondot.org> emit jump table an alias ".set" directives through MCStreamer as
assignments.

.set x, a-b

is the same as:

x = a-b



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94596 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfPrinter.cpp
c618c8aff46a8ec4d209d041404e780a0caaf77d 26-Jan-2010 Chris Lattner <sabre@nondot.org> emit jump table an alias ".set" directives through MCStreamer as
assignments.

.set x, a-b

is the same as:

x = a-b



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94596 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfPrinter.cpp
ae89d3b83bf8b2c3cf0be362ab872c162bad23ec 26-Jan-2010 Devang Patel <dpatel@apple.com> Use AssertingVH, just to be paranoid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94593 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3139fcf9edd046ba0b939dec72cd121e899d27d0 26-Jan-2010 Devang Patel <dpatel@apple.com> Use AssertingVH, just to be paranoid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94593 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5ae5240a9283d548c574e07c2ac5b1a1c3f16dce 26-Jan-2010 Devang Patel <dpatel@apple.com> Emit DW_AT_containing_type attribute for a class if containing type is known.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94587 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b554499871716fe647e226e52741b7fa69f7b7ba 26-Jan-2010 Devang Patel <dpatel@apple.com> Emit DW_AT_containing_type attribute for a class if containing type is known.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94587 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5e969572f5b9e519eb01837cd84f129e46b6b892 26-Jan-2010 Chris Lattner <sabre@nondot.org> Eliminate SetDirective, and replace it with HasSetDirective.
Default HasSetDirective to true, since most targets have it.

The targets that claim to not have it probably do, or it is
spelled differently. These include Blackfin, Mips, Alpha, and
PIC16. All of these except pic16 are normal ELF targets, so
they almost certainly have it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94585 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfPrinter.cpp
cee63322eaccc2f1067bdf5eab506e440f867da1 26-Jan-2010 Chris Lattner <sabre@nondot.org> Eliminate SetDirective, and replace it with HasSetDirective.
Default HasSetDirective to true, since most targets have it.

The targets that claim to not have it probably do, or it is
spelled differently. These include Blackfin, Mips, Alpha, and
PIC16. All of these except pic16 are normal ELF targets, so
they almost certainly have it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94585 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfPrinter.cpp
1fd0182a85e201f0b92773d9edaae8869fa190df 26-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate MCAsmInfo::NeedsSet: we now just use .set on any platform
that has it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94581 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
6a315c358ca35625ffd50fdc74556acb26ec7396 26-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate MCAsmInfo::NeedsSet: we now just use .set on any platform
that has it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94581 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
af70642ef1bba99e7e3ff099d21722a1934c28f9 26-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate the TargetLowering::UsesGlobalOffsetTable bool, which is
subsumed by TargetLowering::getJumpTableEncoding(). Change uses of
it to be more specific.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94529 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/TargetLowering.cpp
f1214cbf3c2d151d3a2353d82143da186313a42a 26-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate the TargetLowering::UsesGlobalOffsetTable bool, which is
subsumed by TargetLowering::getJumpTableEncoding(). Change uses of
it to be more specific.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94529 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/TargetLowering.cpp
c077d72f6bfa3c7dde7117bcf1debde3985e123e 26-Jan-2010 Chris Lattner <sabre@nondot.org> Now that printPICJumpTableSetLabel is not overloaded,
inline it into its only caller, allowing us to simplify it
and hoist bits out of the loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94528 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3b131d7cc4dc4bbb329c136705b37dc255995fbd 26-Jan-2010 Chris Lattner <sabre@nondot.org> Now that printPICJumpTableSetLabel is not overloaded,
inline it into its only caller, allowing us to simplify it
and hoist bits out of the loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94528 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
541d8904203676afa54e8763baaf6e8963a9dc3a 26-Jan-2010 Chris Lattner <sabre@nondot.org> Move getJTISymbol from MachineJumpTableInfo to MachineFunction,
which is more convenient, and change getPICJumpTableRelocBaseExpr
to take a MachineFunction to match.

Next, move the X86 code that create a PICBase symbol to
X86TargetLowering::getPICBaseSymbol from
X86MCInstLower::GetPICBaseSymbol, which was an asmprinter specific
library. This eliminates a 'gross hack', and allows us to
implement X86ISelLowering::getPICJumpTableRelocBaseExpr which now
calls it.

This in turn allows us to eliminate the
X86AsmPrinter::printPICJumpTableSetLabel method, which was the
only overload of printPICJumpTableSetLabel.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94526 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
electionDAG/TargetLowering.cpp
589c6f620e8dcf3d59af1ae0e15372c934647c82 26-Jan-2010 Chris Lattner <sabre@nondot.org> Move getJTISymbol from MachineJumpTableInfo to MachineFunction,
which is more convenient, and change getPICJumpTableRelocBaseExpr
to take a MachineFunction to match.

Next, move the X86 code that create a PICBase symbol to
X86TargetLowering::getPICBaseSymbol from
X86MCInstLower::GetPICBaseSymbol, which was an asmprinter specific
library. This eliminates a 'gross hack', and allows us to
implement X86ISelLowering::getPICJumpTableRelocBaseExpr which now
calls it.

This in turn allows us to eliminate the
X86AsmPrinter::printPICJumpTableSetLabel method, which was the
only overload of printPICJumpTableSetLabel.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94526 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
electionDAG/TargetLowering.cpp
978b977ac6a900c6645201b9bd346bdfd5687274 26-Jan-2010 Chris Lattner <sabre@nondot.org> add a new MachineJumpTableInfo::getJTISymbol method,
use it to implement the default TargetLowering::getPICJumpTableRelocBaseExpr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94523 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
electionDAG/TargetLowering.cpp
beeb93e6ba48af2661eabc4872d8b159fb43e5db 26-Jan-2010 Chris Lattner <sabre@nondot.org> add a new MachineJumpTableInfo::getJTISymbol method,
use it to implement the default TargetLowering::getPICJumpTableRelocBaseExpr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94523 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
electionDAG/TargetLowering.cpp
9f5b9c18ef28e8b61bf04bba0470933d25c05830 26-Jan-2010 Chris Lattner <sabre@nondot.org> stub out a new target hook, need some refactoring before I can
implement it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94521 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
13e97a29d9dfa5602f93a8c546f112c5d029e8f7 26-Jan-2010 Chris Lattner <sabre@nondot.org> stub out a new target hook, need some refactoring before I can
implement it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94521 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b494ccd48b787ec631650d25b118a01398f85859 26-Jan-2010 Chris Lattner <sabre@nondot.org> simplify asmprinter: only emit .set directives when entries have
EK_LabelDifference32 kind and the target has .set support. Simplify
X86AsmPrinter::printPICJumpTableSetLabel to make use of recent helpers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94518 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e35df92eca194365f984f9d24a74e4ddd6669c40 26-Jan-2010 Chris Lattner <sabre@nondot.org> simplify asmprinter: only emit .set directives when entries have
EK_LabelDifference32 kind and the target has .set support. Simplify
X86AsmPrinter::printPICJumpTableSetLabel to make use of recent helpers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94518 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3d680c04d25a32fd8b58b96a93081b4a10450845 26-Jan-2010 Chris Lattner <sabre@nondot.org> rename printPICJumpTableEntry -> EmitJumpTableEntry,
make it private and non-virtual. It handles the non-pic
case too, so just use it, simplifying EmitJumpTableInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94517 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6bf1def1598f9c7a699ce4874e7d2575212b4232 26-Jan-2010 Chris Lattner <sabre@nondot.org> rename printPICJumpTableEntry -> EmitJumpTableEntry,
make it private and non-virtual. It handles the non-pic
case too, so just use it, simplifying EmitJumpTableInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94517 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
84d5ca9524a5d23f88083d0663ee99dca739df21 26-Jan-2010 Chris Lattner <sabre@nondot.org> add a new MachineBasicBlock::getSymbol method, replacing
the AsmPrinter::GetMBBSymbol.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94515 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineBasicBlock.cpp
f71cb015c1386ff8adc9ef0aa03fc0f0fc4a6e3e 26-Jan-2010 Chris Lattner <sabre@nondot.org> add a new MachineBasicBlock::getSymbol method, replacing
the AsmPrinter::GetMBBSymbol.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94515 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineBasicBlock.cpp
408dcd3ebe187e2c098928caf9c4ce8928a30ba0 26-Jan-2010 Lang Hames <lhames@gmail.com> New PBQP solver.

* Fixed a reduction bug which occasionally led to infinite-cost (invalid)
register allocation solutions despite the existence finite-cost solutions.
* Significantly reduced memory usage (>50% reduction).
* Simplified a lot of the solver code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94514 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/AnnotatedGraph.h
BQP/ExhaustiveSolver.h
BQP/Graph.h
BQP/GraphBase.h
BQP/HeuristicBase.h
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
BQP/Math.h
BQP/PBQPMath.h
BQP/SimpleGraph.h
BQP/Solution.h
BQP/Solver.h
egAllocPBQP.cpp
030c4bfbc9885444b8a5ad0b5f1e50045a351d17 26-Jan-2010 Lang Hames <lhames@gmail.com> New PBQP solver.

* Fixed a reduction bug which occasionally led to infinite-cost (invalid)
register allocation solutions despite the existence finite-cost solutions.
* Significantly reduced memory usage (>50% reduction).
* Simplified a lot of the solver code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94514 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/AnnotatedGraph.h
BQP/ExhaustiveSolver.h
BQP/Graph.h
BQP/GraphBase.h
BQP/HeuristicBase.h
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
BQP/Math.h
BQP/PBQPMath.h
BQP/SimpleGraph.h
BQP/Solution.h
BQP/Solver.h
egAllocPBQP.cpp
01462baa9f30942d0e9c7fb3ceee167782d66c08 26-Jan-2010 Chris Lattner <sabre@nondot.org> make MachineFunction keep track of its ID and make
MachineFunctionAnalysis dole them out, instead of having
AsmPrinter do both. Have the AsmPrinter::SetupMachineFunction
method set the 'AsmPrinter::MF' variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94509 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
b84822fb7b64977c16e97b870891da1d6c9736fe 26-Jan-2010 Chris Lattner <sabre@nondot.org> make MachineFunction keep track of its ID and make
MachineFunctionAnalysis dole them out, instead of having
AsmPrinter do both. Have the AsmPrinter::SetupMachineFunction
method set the 'AsmPrinter::MF' variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94509 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
8ef60fc03000f1c082e6d3a2670a30677fedef58 26-Jan-2010 Chris Lattner <sabre@nondot.org> Add support for target-specific 32-bit custom-lowered
jump table entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94505 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
85fe07866a3b240d9facef3b2f2ea81a0a8db018 26-Jan-2010 Chris Lattner <sabre@nondot.org> Add support for target-specific 32-bit custom-lowered
jump table entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94505 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
06b01dd91b1a25b54e21a7ee643c80a1a0e7354a 26-Jan-2010 Chris Lattner <sabre@nondot.org> switch jump table entry emission to be based on EntryKind
instead of magic variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94500 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ff537cec2e7ee34d6879de0c8a39a3c65f6ab003 26-Jan-2010 Chris Lattner <sabre@nondot.org> switch jump table entry emission to be based on EntryKind
instead of magic variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94500 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
506f6f00593b8b872bbc4341f552b40266554d73 26-Jan-2010 Evan Cheng <evan.cheng@apple.com> Implement cond ? -1 : 0 with sbb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94490 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8c7ecaf524ec3040a9c1c7be5f37e574eb1d0207 26-Jan-2010 Evan Cheng <evan.cheng@apple.com> Implement cond ? -1 : 0 with sbb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94490 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4a99cf04ecc8f28bc9c9ad11e0eb4ffbca2c00ff 26-Jan-2010 Dale Johannesen <dalej@apple.com> Generate DEBUG_VALUE comments on x86. The (limited)
dbg.declare's we currently generate go through both
register allocators without perturbing the results.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94480 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5ed17ae92a9239c2ff7d3ba494bf96651598ee7a 26-Jan-2010 Dale Johannesen <dalej@apple.com> Generate DEBUG_VALUE comments on x86. The (limited)
dbg.declare's we currently generate go through both
register allocators without perturbing the results.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94480 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
1d196bc4e7da96ffa86fa5f42f411ac81f211e3e 26-Jan-2010 Chris Lattner <sabre@nondot.org> Rearrange handling of jump tables. Highlights:
1. MachineJumpTableInfo is now created lazily for a function the first time
it actually makes a jump table instead of for every function.
2. The encoding of jump table entries is now described by the
MachineJumpTableInfo::JTEntryKind enum. This enum is determined by the
TLI::getJumpTableEncoding() hook, instead of by lots of code scattered
throughout the compiler that "knows" that jump table entries are always
32-bits in pic mode (for example).
3. The size and alignment of jump table entries is now calculated based on
their kind, instead of at machinefunction creation time.

Future work includes using the EntryKind in more places in the compiler,
eliminating other logic that "knows" the layout of jump tables in various
situations.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94470 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
achineFunction.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
071c62fad0b25ad4131e7f984173a796c1e63f61 26-Jan-2010 Chris Lattner <sabre@nondot.org> Rearrange handling of jump tables. Highlights:
1. MachineJumpTableInfo is now created lazily for a function the first time
it actually makes a jump table instead of for every function.
2. The encoding of jump table entries is now described by the
MachineJumpTableInfo::JTEntryKind enum. This enum is determined by the
TLI::getJumpTableEncoding() hook, instead of by lots of code scattered
throughout the compiler that "knows" that jump table entries are always
32-bits in pic mode (for example).
3. The size and alignment of jump table entries is now calculated based on
their kind, instead of at machinefunction creation time.

Future work includes using the EntryKind in more places in the compiler,
eliminating other logic that "knows" the layout of jump tables in various
situations.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94470 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
achineFunction.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/TargetLowering.cpp
b10c7e2e10bb899f1f48cd33195c68b31ecc2db0 26-Jan-2010 Chris Lattner <sabre@nondot.org> prep work to support a future where getJumpTableInfo will return
a null pointer for functions with no jump tables. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94469 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
b1e803985d3378538ae9cff7eed4102c002d1e22 26-Jan-2010 Chris Lattner <sabre@nondot.org> prep work to support a future where getJumpTableInfo will return
a null pointer for functions with no jump tables. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94469 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
1f8c8922b2629e1033fee97d8daf779e497d561d 25-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate redundant argument to EmitJumpTableInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94464 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
44e87255e9b7a9d8ecb558690db1181882c08045 25-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate redundant argument to EmitJumpTableInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94464 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3dac341cc4f36feb2da4f1faade5721bb61f679a 25-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamerize gprel32 emission.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94452 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
718fb59801320b8cb22363d115b5fc5ec40dc1f5 25-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamerize gprel32 emission.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94452 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7eba67276623720f3b8b0e576fa2b0d6653bbbbf 25-Jan-2010 Chris Lattner <sabre@nondot.org> mcize the non-gprel cases of AsmPrinter::printPICJumpTableEntry


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94450 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1aca2492526c0a1aa464f2993084f9b30b53c009 25-Jan-2010 Chris Lattner <sabre@nondot.org> mcize the non-gprel cases of AsmPrinter::printPICJumpTableEntry


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94450 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
da1416d002c86c51b9a454289b2a9212f78b7af3 25-Jan-2010 Chris Lattner <sabre@nondot.org> handle the _set_ symbol with an MCSymbol.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94449 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
798d1256595dcc0f5d4423572f856d239f7de0e6 25-Jan-2010 Chris Lattner <sabre@nondot.org> handle the _set_ symbol with an MCSymbol.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94449 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
48b139f38b3823e6781da75eaae3c14b3d803456 25-Jan-2010 Chris Lattner <sabre@nondot.org> rename MAI::PICJumpTableDirective to MAI::GPRel32Directive to
make it clear what it is, instead of how it is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94448 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
78f485afb723121eedf4b6907ae6eb53da8af03c 25-Jan-2010 Chris Lattner <sabre@nondot.org> rename MAI::PICJumpTableDirective to MAI::GPRel32Directive to
make it clear what it is, instead of how it is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94448 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1eff8298e66d276fae0ab8bd8a79b29da8d929dc 25-Jan-2010 Chris Lattner <sabre@nondot.org> pull the non-pic jump table case out of printPICJumpTableEntry
and MCize the non-pic case. Now printPICJumpTableEntry really
is just about printing PIC entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94446 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a86106ed88582b913ac2394a5a4ad1868b299da4 25-Jan-2010 Chris Lattner <sabre@nondot.org> pull the non-pic jump table case out of printPICJumpTableEntry
and MCize the non-pic case. Now printPICJumpTableEntry really
is just about printing PIC entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94446 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
29814c4ecbee79b025c92fb295e39bcf62877ebe 25-Jan-2010 Chris Lattner <sabre@nondot.org> remove JumpTableDirective, it is always null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94445 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cba386ccac87c2446579ef235d2b4dc7951c0941 25-Jan-2010 Chris Lattner <sabre@nondot.org> remove JumpTableDirective, it is always null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94445 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ccda1400e725df3834ab6b552c0e00e956687ebd 25-Jan-2010 Chris Lattner <sabre@nondot.org> sink an arm specific method out of asmprinter into the ARMAsmPrinter and
rename it to avoid shadowing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94440 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
bfcb09688c7db15a9f9415d717a5a31c499a2208 25-Jan-2010 Chris Lattner <sabre@nondot.org> sink an arm specific method out of asmprinter into the ARMAsmPrinter and
rename it to avoid shadowing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94440 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
59be4eabff2c209e35841e2fea9596f0c35c4c72 25-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamerize .file and .file. This also fixes an issue where the
normal form of .file would fail if the filename had a weird character
in it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94437 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
a6594fc7156c0afbe6fd5a6aab9b099aaf950c53 25-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamerize .file and .file. This also fixes an issue where the
normal form of .file would fail if the filename had a weird character
in it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94437 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
9f8ef90c755b6b2b00fb3d07eb196a7fb9374949 25-Jan-2010 Chris Lattner <sabre@nondot.org> emit ELF .type directives through MCStreamer instead of doing it textually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94436 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a800f7c464ef9a376057a555129f36d1f8488c3b 25-Jan-2010 Chris Lattner <sabre@nondot.org> emit ELF .type directives through MCStreamer instead of doing it textually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94436 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
53ee5d89754b820e34a431d6491b24e281eb86bb 25-Jan-2010 Chris Lattner <sabre@nondot.org> add a comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94417 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1947f242d40227d36440a2702a0a612c8077d72e 25-Jan-2010 Chris Lattner <sabre@nondot.org> add a comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94417 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e13c8ac5306fa2d2069f0defa932adf6aa3355bb 25-Jan-2010 Chris Lattner <sabre@nondot.org> emit the .size directive for global variables on ELF through
mcstreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94416 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
99328add833807f12a4950c7de29fb2a5df04703 25-Jan-2010 Chris Lattner <sabre@nondot.org> emit the .size directive for global variables on ELF through
mcstreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94416 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e9a40677cd1fd95ed7e9b75a1df19449f432ad9e 24-Jan-2010 Chris Lattner <sabre@nondot.org> make -fno-rtti the default unless a directory builds with REQUIRES_RTTI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94378 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
akefile
electionDAG/Makefile
43b5f9312d56be400af031f7487a99b75b7b0f97 24-Jan-2010 Chris Lattner <sabre@nondot.org> make -fno-rtti the default unless a directory builds with REQUIRES_RTTI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94378 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
akefile
electionDAG/Makefile
2d2f100dfbb791da4e71e76dea0b9f041ff5b3d0 24-Jan-2010 Chris Lattner <sabre@nondot.org> fix some issues where we weren't emitting enough newlines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94370 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
3586e5eccf13d7129a44032a0dd553628cef3450 24-Jan-2010 Chris Lattner <sabre@nondot.org> fix some issues where we weren't emitting enough newlines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94370 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
91e06b40b2f8aa76d8e928dc6bdad7255bc070a8 24-Jan-2010 Chris Lattner <sabre@nondot.org> when emitting DIEs, emit the comment on the same line as the directive.
This fixes FrontendObjC/2009-11-30-Objc-ID.m


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94369 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a801362e84e08ccaf6f4f22f22e61fe3732c3754 24-Jan-2010 Chris Lattner <sabre@nondot.org> when emitting DIEs, emit the comment on the same line as the directive.
This fixes FrontendObjC/2009-11-30-Objc-ID.m


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94369 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
84889a98056cdb015a20ae9c01c08d768e49edae 24-Jan-2010 Mon P Wang <wangmp@apple.com> It seems better to scalarize vectors of size 1 instead of widening them.
Add support to widen SETCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94342 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/TargetLowering.cpp
6fb474bd3c3e291973ae8e087787090cf2be73f8 24-Jan-2010 Mon P Wang <wangmp@apple.com> It seems better to scalarize vectors of size 1 instead of widening them.
Add support to widen SETCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94342 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/TargetLowering.cpp
a8ff0dddb04db54c7c54d3f84babe100e577fc49 24-Jan-2010 Mon P Wang <wangmp@apple.com> Improved widening loads by adding support for wider loads if
the alignment allows. Fixed a bug where we didn't use a
vector load/store for PR5626.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94338 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
eb38ebf15c326a5bb45ca9da6329cdf19ad6df95 24-Jan-2010 Mon P Wang <wangmp@apple.com> Improved widening loads by adding support for wider loads if
the alignment allows. Fixed a bug where we didn't use a
vector load/store for PR5626.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94338 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
0df2cd581b55fd36b2fd0c93711812fd4773fa05 23-Jan-2010 Bill Wendling <isanbard@gmail.com> Remove the '-disable-scheduling' flag and replace it with the 'source' option of
the '-pre-RA-sched' flag. It actually makes more sense to do it this way. Also,
keep track of the SDNode ordering by default. Eventually, we would like to make
this ordering a way to break a "tie" in the scheduler. However, doing that now
breaks the "CodeGen/X86/abi-isel.ll" test for 32-bit Linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94308 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
187361b056823df4ff292561fe47468dad956872 23-Jan-2010 Bill Wendling <isanbard@gmail.com> Remove the '-disable-scheduling' flag and replace it with the 'source' option of
the '-pre-RA-sched' flag. It actually makes more sense to do it this way. Also,
keep track of the SDNode ordering by default. Eventually, we would like to make
this ordering a way to break a "tie" in the scheduler. However, doing that now
breaks the "CodeGen/X86/abi-isel.ll" test for 32-bit Linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94308 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
d70deeb19ecfe335eb475df22a1411e9e6927a44 23-Jan-2010 Chris Lattner <sabre@nondot.org> mcize lcomm, simplify .comm, extend both to support 64-bit sizes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94299 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9eb158d5b4cd4f6fc80912e2dd77bdf13c3ca0e7 23-Jan-2010 Chris Lattner <sabre@nondot.org> mcize lcomm, simplify .comm, extend both to support 64-bit sizes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94299 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2dc6ddd2a55ae263fe497b39fa1e4608e46d254d 23-Jan-2010 Chris Lattner <sabre@nondot.org> resolve a fixme: the "nonexecutable stack directive" is actually
a .section. Switch to it with SwitchSection.

However, I think that this directive should be safe on any ELF target.
If so, we should hoist it up out of the X86 and SystemZ targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f9f93e4388962b678fd59b7af5212d4cc0d38be2 23-Jan-2010 Chris Lattner <sabre@nondot.org> resolve a fixme: the "nonexecutable stack directive" is actually
a .section. Switch to it with SwitchSection.

However, I think that this directive should be safe on any ELF target.
If so, we should hoist it up out of the X86 and SystemZ targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
100d4240b793a0a8b471702d4a62859190d1f288 23-Jan-2010 Chris Lattner <sabre@nondot.org> remove a dead call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94297 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
74670b26fc62dce36a9d1d78caa1d481cec5b2eb 23-Jan-2010 Chris Lattner <sabre@nondot.org> remove a dead call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94297 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
10bcc6b7ebaba7df8c1d432cb37feb625ad1b7cc 23-Jan-2010 Chris Lattner <sabre@nondot.org> mcize visibility directives.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94295 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
152a29bfa6fa505182658d046bc75626e10d67c3 23-Jan-2010 Chris Lattner <sabre@nondot.org> mcize visibility directives.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94295 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
2d7c8149c012f5f600b61339a9ba590c850693ef 23-Jan-2010 Chris Lattner <sabre@nondot.org> move the various directive enums out of the MCStreamer class
into a new MCDirectives.h file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
a5ad93a10a5435f21090b09edb6b3a7e44967648 23-Jan-2010 Chris Lattner <sabre@nondot.org> move the various directive enums out of the MCStreamer class
into a new MCDirectives.h file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
54bfda730f4b2436460fc39e7c1633a489bad2a2 23-Jan-2010 Chris Lattner <sabre@nondot.org> Change constantexpr global variable initializers to convert the constants
to MCExpr then emit them through MCStreamer with EmitValue. I think all
global variable initializers are now going through mcstreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94293 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
52492ac0d03aa86b07ad889b69b0ba38ffec8011 23-Jan-2010 Chris Lattner <sabre@nondot.org> Change constantexpr global variable initializers to convert the constants
to MCExpr then emit them through MCStreamer with EmitValue. I think all
global variable initializers are now going through mcstreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94293 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d7b6c9c54d0cd4a1b92679f85f89fdd90782125a 23-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamerize .no_dead_strip and .reference for static ctors/dtors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94290 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
3a9be0ee36fe2143f514d28315f3dc1bda132b2e 23-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamerize .no_dead_strip and .reference for static ctors/dtors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94290 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
77e356cf12d1a71fe2cb710aba986c6aafd13d37 23-Jan-2010 Chris Lattner <sabre@nondot.org> mcize jump table and constant pool entry labels, .local on elf,
and some .weak directives.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94284 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3924868a957d5a6d468b61741cbb7db77324d1f6 23-Jan-2010 Chris Lattner <sabre@nondot.org> mcize jump table and constant pool entry labels, .local on elf,
and some .weak directives.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94284 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a68112c1520ced329a0121fa1e1ae3f89eec86c3 23-Jan-2010 Chris Lattner <sabre@nondot.org> emit .ascii and .asciz through MCStreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94282 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
05f845314a67f9c30a67e55ce1e3168ff6732ce8 23-Jan-2010 Chris Lattner <sabre@nondot.org> emit .ascii and .asciz through MCStreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94282 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cc564640451a9fb7c8732b93be3e3555c314a7b6 23-Jan-2010 Chris Lattner <sabre@nondot.org> remove one form of EmitString, just use EmitBytes instead. We must
be careful to add a \0 at the end though, because EmitString didn't
do this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94277 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
4cf202ba066a1310d8968c8d069787254934e59b 23-Jan-2010 Chris Lattner <sabre@nondot.org> remove one form of EmitString, just use EmitBytes instead. We must
be careful to add a \0 at the end though, because EmitString didn't
do this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94277 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
1fa30cb463eabc1fb0a7f8e5597c546ed699bf30 23-Jan-2010 Chris Lattner <sabre@nondot.org> teach MCAsmStreamer::EmitBytes to use .ascii and .asciz


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94259 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
12e555c36ce11c39ce15cd0b27bf7b02a068beb2 23-Jan-2010 Chris Lattner <sabre@nondot.org> teach MCAsmStreamer::EmitBytes to use .ascii and .asciz


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94259 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
8884788be78ac43ed8600ba8203b1f72ae20f7fe 23-Jan-2010 Evan Cheng <evan.cheng@apple.com> Enable pre-regalloc scheduling load clustering by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
42dae2d5ba0c22bed65e80ac56a7c304de911c33 23-Jan-2010 Evan Cheng <evan.cheng@apple.com> Enable pre-regalloc scheduling load clustering by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
05ae1d2f245811f66bf0e86c0d5bffc4829f0dbc 23-Jan-2010 Chris Lattner <sabre@nondot.org> move "EOL" from asmprinter to dwarfprinter. It should eventually
be completely eliminated, but today is not that day.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94253 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
faca5497a26672669934abbcf23894ce93408c10 23-Jan-2010 Chris Lattner <sabre@nondot.org> move "EOL" from asmprinter to dwarfprinter. It should eventually
be completely eliminated, but today is not that day.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94253 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
eba1e35f5023abe984843910b74b21df222f3610 23-Jan-2010 Chris Lattner <sabre@nondot.org> remove uses of EOL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94252 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
f537ce17522df35b9879e1d178ab963c41dab825 23-Jan-2010 Chris Lattner <sabre@nondot.org> remove uses of EOL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94252 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
ab4cf9537706a9b7439e62453dc27cf18f7dfc25 23-Jan-2010 Chris Lattner <sabre@nondot.org> add a new EmitCFAByte method and use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94251 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
245834dde5f735cd50395b2875a0f50b0ac0eaff 23-Jan-2010 Chris Lattner <sabre@nondot.org> add a new EmitCFAByte method and use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94251 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
bcc79433dfc42587a6fa303c239f13bfaa4db0c2 23-Jan-2010 Chris Lattner <sabre@nondot.org> move uleb printing from asmprinter to dwarfprinter, mcize,
cleanup and eliminate a bunch more uses of "EOL".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94250 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
894d75aa013143c92890d0205791d0d70a453114 23-Jan-2010 Chris Lattner <sabre@nondot.org> move uleb printing from asmprinter to dwarfprinter, mcize,
cleanup and eliminate a bunch more uses of "EOL".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94250 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
20f334ff0d71246a4d03b22dff4ee11ae86c5329 22-Jan-2010 Chris Lattner <sabre@nondot.org> move sleb printing out of asmprinter into dwarf printer, make clients
handle the comment better, MCize the non-.sleb case.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94244 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
bb9078a6b26f38594cde6fd0dcd17eca25ef0319 22-Jan-2010 Chris Lattner <sabre@nondot.org> move sleb printing out of asmprinter into dwarf printer, make clients
handle the comment better, MCize the non-.sleb case.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94244 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
0a0ea051700e1f6287df39c16ebfffb6c3782eac 22-Jan-2010 Devang Patel <dpatel@apple.com> Remove MetadataBase class because it is not adding significant value.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94243 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
bc5201f8371f9041e79efcca3b158335da5c2604 22-Jan-2010 Devang Patel <dpatel@apple.com> Remove MetadataBase class because it is not adding significant value.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94243 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
eed81588e2deec1d238ac2ae3ef942429eedf170 22-Jan-2010 Dale Johannesen <dalej@apple.com> Ignore DEBUG_VALUE when building live intervals;
this makes the code work transparently the same
whether they're there or not.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94240 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
lotIndexes.cpp
1caedd056dbc3eda1537ad8251323bd985819b80 22-Jan-2010 Dale Johannesen <dalej@apple.com> Ignore DEBUG_VALUE when building live intervals;
this makes the code work transparently the same
whether they're there or not.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94240 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
lotIndexes.cpp
d705acfef8b35c01f90ea573ecb2489fea293d35 22-Jan-2010 Chris Lattner <sabre@nondot.org> add a new DwarfPrinter::EmitEncodingByte method which handles
pretty printing encoding comments and eliminates redundancy on
the client side. We now get pretty dwarf like this again:

.byte 255 ## @LPStart Encoding = omit
.byte 0 ## @TType Encoding = absptr
.byte 0x28 ## @TType base offset
.byte 3 ## Call site Encoding = udata4
.byte 0x1a ## Call site table size
...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94239 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
f61ed8eb32aa1cfcb440742e6fbaa7c785647131 22-Jan-2010 Chris Lattner <sabre@nondot.org> add a new DwarfPrinter::EmitEncodingByte method which handles
pretty printing encoding comments and eliminates redundancy on
the client side. We now get pretty dwarf like this again:

.byte 255 ## @LPStart Encoding = omit
.byte 0 ## @TType Encoding = absptr
.byte 0x28 ## @TType base offset
.byte 3 ## Call site Encoding = udata4
.byte 0x1a ## Call site table size
...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94239 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
b21f1043a2ad037bc91bc31bbd20a55cd6a2f3ff 22-Jan-2010 Chris Lattner <sabre@nondot.org> rename the dwarf class to DwarfPrinter. This matches the filename
and much more accurately describes what it is all about.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94233 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
066c9acca354e88c19ce740a7ff0e5910362aa7b 22-Jan-2010 Chris Lattner <sabre@nondot.org> rename the dwarf class to DwarfPrinter. This matches the filename
and much more accurately describes what it is all about.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94233 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
57939f6e42de096263c4b743e585200e1cfe7971 22-Jan-2010 Chris Lattner <sabre@nondot.org> fix indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94232 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.h
3c65335f0696ea8876809d5bcddb97fa518b449a 22-Jan-2010 Chris Lattner <sabre@nondot.org> fix indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94232 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.h
ad65348ad547f41c654d8df74fd6a678c3b42a74 22-Jan-2010 Chris Lattner <sabre@nondot.org> inline away the trivial AsmPrinter::EOL() method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94230 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/OcamlGCPrinter.cpp
0ad9c911f5b7737ae199d703279984138553de9d 22-Jan-2010 Chris Lattner <sabre@nondot.org> inline away the trivial AsmPrinter::EOL() method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94230 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/OcamlGCPrinter.cpp
052348ee1a841a7ba39d49ccb39b66903908f7e3 22-Jan-2010 Chris Lattner <sabre@nondot.org> inline AsmPrinter::PrintHex into its two trivial callers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94228 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0595324ed825a6adfca77f7369b9846957d135ee 22-Jan-2010 Chris Lattner <sabre@nondot.org> inline AsmPrinter::PrintHex into its two trivial callers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94228 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5abc72c816042371354988f091b465b5e24d75fb 22-Jan-2010 Chris Lattner <sabre@nondot.org> change this to be a static function instead of a method on asmprinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94227 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
523a508576ee2c31ba58de1ca2fb7ffeebcc4a0b 22-Jan-2010 Chris Lattner <sabre@nondot.org> change this to be a static function instead of a method on asmprinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94227 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f60947496d768319a1efdab2d71c1aae06a8c2c0 22-Jan-2010 Chris Lattner <sabre@nondot.org> make the loop comment printer print out a much better structured
output. An example:

.align 4, 0x90
LBB1_5: ## %while.cond3
## Parent Loop BB1_1 Depth=1
## => This Loop Header: Depth=2
## Child Loop BB1_8 Depth 3
## Child Loop BB1_6 Depth 3



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94225 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
88ad3de7138a259d017933aea56f129d1ea335da 22-Jan-2010 Chris Lattner <sabre@nondot.org> make the loop comment printer print out a much better structured
output. An example:

.align 4, 0x90
LBB1_5: ## %while.cond3
## Parent Loop BB1_1 Depth=1
## => This Loop Header: Depth=2
## Child Loop BB1_8 Depth 3
## Child Loop BB1_6 Depth 3



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94225 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f1fc9678c548a6b97655cd99f91543c8a2d84e3d 22-Jan-2010 Chris Lattner <sabre@nondot.org> For blocks that are not loop headers, just print their loop depth and header BB.
For loop headers, print Inner loop along with the other stuff so it doesn't take
an extra line. We now get stuff like this:

LBB1_4: ## %land.end
## in Loop: Header=BB1_1 Depth=1
notb %al
testb $1, %al
jne LBB1_8

and:

LBB1_6: ## %while.cond7
## Inner Loop Header: Depth=3
## Inside Loop BB1_5 Depth 2
## Inside Loop BB1_1 Depth 1

which still isn't great for loop headers, but is much less verbose.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94221 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
965df54254b9e73949fc5649b51c3ca1bed4b4a6 22-Jan-2010 Chris Lattner <sabre@nondot.org> For blocks that are not loop headers, just print their loop depth and header BB.
For loop headers, print Inner loop along with the other stuff so it doesn't take
an extra line. We now get stuff like this:

LBB1_4: ## %land.end
## in Loop: Header=BB1_1 Depth=1
notb %al
testb $1, %al
jne LBB1_8

and:

LBB1_6: ## %while.cond7
## Inner Loop Header: Depth=3
## Inside Loop BB1_5 Depth 2
## Inside Loop BB1_1 Depth 1

which still isn't great for loop headers, but is much less verbose.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94221 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
82be51ce3b12d83e8f2d7b5a7c5a4b75beaf715d 22-Jan-2010 Chris Lattner <sabre@nondot.org> reenable the label loop comments and switch them to use the formatted
comment emission stuff. I'm going to rewrite this though because the
current output doesn't make sense.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94215 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d8d0aee26a5a759085bfa9114302e507c8685599 22-Jan-2010 Chris Lattner <sabre@nondot.org> reenable the label loop comments and switch them to use the formatted
comment emission stuff. I'm going to rewrite this though because the
current output doesn't make sense.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94215 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c006e1cc781b854bf6a8ebda79c222dc745753bb 22-Jan-2010 Chris Lattner <sabre@nondot.org> Convert some more random-comment-printing stuff to use
AddComment and GetCommentOS. Add a blank line between globals
(even in non-verbose mode) to make the assembly more readable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94202 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0fd90fd8d1c2143a763dee509c66a5b3c74088b1 22-Jan-2010 Chris Lattner <sabre@nondot.org> Convert some more random-comment-printing stuff to use
AddComment and GetCommentOS. Add a blank line between globals
(even in non-verbose mode) to make the assembly more readable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94202 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
49d7439115aed95bf267717de28c675bd65b1c35 22-Jan-2010 Chris Lattner <sabre@nondot.org> add a new MCAsmStreamer::GetCommentOS method to simplify stuff
that doesn't want to use twines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94199 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d79d9dce47d505369662ae5111dba24f9ccdef68 22-Jan-2010 Chris Lattner <sabre@nondot.org> add a new MCAsmStreamer::GetCommentOS method to simplify stuff
that doesn't want to use twines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94199 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
021da8e2bf8ac5d8b658bcce524c0327ed259142 22-Jan-2010 Chris Lattner <sabre@nondot.org> rename addComment -> AddComment for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94190 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d32c7cfa248f685e6e3064c0958dc2f0c31a4df6 22-Jan-2010 Chris Lattner <sabre@nondot.org> rename addComment -> AddComment for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94190 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1f08b046f9de970153fed1cba7c2c509eab2442e 22-Jan-2010 Dan Gohman <gohman@apple.com> Revert r94066, which was the patch which added a Verifier pass after
LoopStrengthReduce, as it's causing too much trouble (even with the
old LoopStrengthReduce code).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94172 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
12bdbf1ca80a1c7a18020f8fd4482180afcfe6f4 22-Jan-2010 Dan Gohman <gohman@apple.com> Revert r94066, which was the patch which added a Verifier pass after
LoopStrengthReduce, as it's causing too much trouble (even with the
old LoopStrengthReduce code).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94172 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
7cb3b78ef523efcdc1ef8413b2d936cadf718068 22-Jan-2010 Chris Lattner <sabre@nondot.org> Add the ability for MCStreamer to emit comments on the same line as directives.
Switch over the asm-verbose comment for double values to use it. We now get:

_x:
.long 343597384 ## double 1.231200e+02
.long 1079953326

For example, note that the comment is on the same line as the .long. Woo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94166 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
86e2211d0a496f470ea1d320161c8dc43593c5c6 22-Jan-2010 Chris Lattner <sabre@nondot.org> Add the ability for MCStreamer to emit comments on the same line as directives.
Switch over the asm-verbose comment for double values to use it. We now get:

_x:
.long 343597384 ## double 1.231200e+02
.long 1079953326

For example, note that the comment is on the same line as the .long. Woo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94166 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1ab24611a6a82c7d9d70204f51fed10f026b40bc 22-Jan-2010 Chris Lattner <sabre@nondot.org> pass "-fasm-verbose" into createAsmStreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94165 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
07404415ab97883b80d0dd87f1c5308e4eccbfd4 22-Jan-2010 Chris Lattner <sabre@nondot.org> pass "-fasm-verbose" into createAsmStreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94165 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5c804558fe5a69a7534b8a3bb7420ec1a483a1c8 22-Jan-2010 Chris Lattner <sabre@nondot.org> Stop building RTTI information for *most* llvm libraries. Notable
missing ones are libsupport, libsystem and libvmcore. libvmcore is
currently blocked on bugpoint, which uses EH. Once it stops using
EH, we can switch it off.

This #if 0's out 3 unit tests, because gtest requires RTTI information.
Suggestions welcome on how to fix this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94164 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
akefile
electionDAG/Makefile
e73a31f667ad2fe03e25c97ac45b58c30d7f07c3 22-Jan-2010 Chris Lattner <sabre@nondot.org> Stop building RTTI information for *most* llvm libraries. Notable
missing ones are libsupport, libsystem and libvmcore. libvmcore is
currently blocked on bugpoint, which uses EH. Once it stops using
EH, we can switch it off.

This #if 0's out 3 unit tests, because gtest requires RTTI information.
Suggestions welcome on how to fix this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94164 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
akefile
electionDAG/Makefile
ee574550fadaa4471c2b6179d20bc2808a1560d4 22-Jan-2010 Evan Cheng <evan.cheng@apple.com> Teach pre-regalloc scheduler to schedule loads from nearby addresses. It may improve cache locality. This is controlled by -cluster-loads for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94148 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
c589e03865bb31da70e0037d5c32fdaaa5f79f24 22-Jan-2010 Evan Cheng <evan.cheng@apple.com> Teach pre-regalloc scheduler to schedule loads from nearby addresses. It may improve cache locality. This is controlled by -cluster-loads for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94148 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
4507456b1f57372fef5019f846fe5aaab5382f34 21-Jan-2010 Evan Cheng <evan.cheng@apple.com> Trim unneeded includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94105 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGFast.cpp
80ffc965f513bed2252316af8530c14c36c2e295 21-Jan-2010 Evan Cheng <evan.cheng@apple.com> Trim unneeded includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94105 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGFast.cpp
f056e023189e48d0337c7198d9fed32a9285a434 21-Jan-2010 Jim Grosbach <grosbach@apple.com> back this out for now. Growing Function is not good.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94097 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
jLjEHPrepare.cpp
f38a33cd0aafff87a8f48debccb09971d2b82dd9 21-Jan-2010 Jim Grosbach <grosbach@apple.com> back this out for now. Growing Function is not good.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94097 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
jLjEHPrepare.cpp
998977a1ed18ec9739484e2e031697d07d945d1d 21-Jan-2010 Dan Gohman <gohman@apple.com> Run the verifier after LSR, to help catch use-before-def errors before
they reach codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94066 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
fca37064789620d80580bc19281ef30141e25dc1 21-Jan-2010 Dan Gohman <gohman@apple.com> Run the verifier after LSR, to help catch use-before-def errors before
they reach codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94066 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
469967b02bdd853dc6f1fc8e04df869d945c8f17 21-Jan-2010 Jim Grosbach <grosbach@apple.com> Make sure that landing pad entries in the EH call site table are in the proper
order for SjLj style exception handling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94055 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
jLjEHPrepare.cpp
d0a0c382ea51d36dc7e5938291763da73b4262dc 21-Jan-2010 Jim Grosbach <grosbach@apple.com> Make sure that landing pad entries in the EH call site table are in the proper
order for SjLj style exception handling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94055 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
jLjEHPrepare.cpp
923c91b35f1b9f2df7904384a1121a4cf4bde26d 21-Jan-2010 Jim Grosbach <grosbach@apple.com> SjLj EH introduces can introduce an additional edge to a landing pad and pad
normalization needs to take this into account.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94046 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
8d77cc8c5f47f2dbab867441251f5df796b78a6e 21-Jan-2010 Jim Grosbach <grosbach@apple.com> SjLj EH introduces can introduce an additional edge to a landing pad and pad
normalization needs to take this into account.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94046 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
e0dcaa8dc9715e0253dcdb1fa9d7f1ed49b84275 20-Jan-2010 Dale Johannesen <dalej@apple.com> make findDebugLoc a class method



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94032 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
73e884bb3e971b1e794ba2501df15138f73b8b1a 20-Jan-2010 Dale Johannesen <dalej@apple.com> make findDebugLoc a class method



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94032 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
c25757ceb6bbbd77d28eb1e07e8d7f557ced33fa 20-Jan-2010 David Greene <greened@obbligato.org> When XDEBUG is enabled, check for SelectionDAG cycles at some key
points. This will help us find future problems like the one
described in PR6019.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94019 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
cf495bc2e505e52ad018da55bed11c7b8bc97db5 20-Jan-2010 David Greene <greened@obbligato.org> When XDEBUG is enabled, check for SelectionDAG cycles at some key
points. This will help us find future problems like the one
described in PR6019.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94019 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4fb5a139995d84f045935934fa7f3d2a415f6586 20-Jan-2010 Chris Lattner <sabre@nondot.org> don't send null pointers through the constantexpr codepath unneededly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94010 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b0bedd6ebbbf0b9791291f37da5666dd456cf5b1 20-Jan-2010 Chris Lattner <sabre@nondot.org> don't send null pointers through the constantexpr codepath unneededly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94010 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d35446747f94cead6fc7484e01e0ed0a55a5af2a 20-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate some uses of AsmPrinter::EmitIntXXX


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93996 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfException.cpp
bcb83e5b6c8e074e73986cb641801ecbedd6e4ed 20-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate some uses of AsmPrinter::EmitIntXXX


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93996 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfException.cpp
939a31427d4d23ad68c2919bb8002e15a9fe5a2f 20-Jan-2010 Chris Lattner <sabre@nondot.org> inline and radically simplify printDataDirective. It will eventually
go completely away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93994 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ea3cb40fab5dc84caa0c6c6bcb650261b4b6e724 20-Jan-2010 Chris Lattner <sabre@nondot.org> inline and radically simplify printDataDirective. It will eventually
go completely away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93994 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8bae10512c413d643f199bbef96d72ce53f36978 20-Jan-2010 Chris Lattner <sabre@nondot.org> emit basic block labels with mcstreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93993 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
213168ba469703a186d060281e587d828878aa75 20-Jan-2010 Chris Lattner <sabre@nondot.org> emit basic block labels with mcstreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93993 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e795ca57c47876555cecacb9454dc0a21e284536 20-Jan-2010 Chris Lattner <sabre@nondot.org> emit integer and fp zeros as (e.g.) .byte 0 instead of .space 1,
for tidiness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93992 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
043c4e5c1d012c8131c7f2fa27a4def32740c42f 20-Jan-2010 Chris Lattner <sabre@nondot.org> emit integer and fp zeros as (e.g.) .byte 0 instead of .space 1,
for tidiness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93992 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f2fc2764fa7e0db258b290b79d8eb379ba6f097c 20-Jan-2010 Chris Lattner <sabre@nondot.org> signficant cleanups to EmitGlobalConstant (including streamerization
of int initializers), change some methods to be static functions,
use raw_ostream::write_hex instead of a smallstring dance with
APValue::toStringUnsigned(S, 16).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2dd245c469f4d842f2b7af80582fb4769a914b23 20-Jan-2010 Chris Lattner <sabre@nondot.org> signficant cleanups to EmitGlobalConstant (including streamerization
of int initializers), change some methods to be static functions,
use raw_ostream::write_hex instead of a smallstring dance with
APValue::toStringUnsigned(S, 16).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
41fd4b147ff4623ac3bce7999f7d730c656a5e23 20-Jan-2010 Chris Lattner <sabre@nondot.org> switch ConstantFP emission to use MCStreamer, significantly
simplifying the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93988 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9ceff94447235a2e369d9adfdf57368f57dd3f18 20-Jan-2010 Chris Lattner <sabre@nondot.org> switch ConstantFP emission to use MCStreamer, significantly
simplifying the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93988 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a39bf4e9046a0689b4036a0b7c5325aff68e2794 20-Jan-2010 Chris Lattner <sabre@nondot.org> make mcasmstreamer handle expanding 8 byte integer constants to
4-byte constants if .quad isn't supported. Switch a bunch of
methods used by the dwarf writer to use OutStreamer.EmitIntValue.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93987 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5eaa54e210256a939f15e918303197916c992aee 20-Jan-2010 Chris Lattner <sabre@nondot.org> make mcasmstreamer handle expanding 8 byte integer constants to
4-byte constants if .quad isn't supported. Switch a bunch of
methods used by the dwarf writer to use OutStreamer.EmitIntValue.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93987 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
92c78e8e9a83b4971a4173cde5a0c28f571bd485 20-Jan-2010 Chris Lattner <sabre@nondot.org> give createAsmStreamer an 'isLittleEndian' argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93986 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1658202529cf371e7e5f1a46d9ef80def5b3c3e0 20-Jan-2010 Chris Lattner <sabre@nondot.org> give createAsmStreamer an 'isLittleEndian' argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93986 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
fd311dffa36fe6e48734ba28e6439dcb5b22f7fb 20-Jan-2010 Devang Patel <dpatel@apple.com> If a instruction belongs to another function (and not current function) as per debug info attached with the instruction then ignore the dangling lexical scope of this instruction. Such scopes are unreachable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93967 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
42aafd7e578707ca20dec456e8996849984272bb 20-Jan-2010 Devang Patel <dpatel@apple.com> If a instruction belongs to another function (and not current function) as per debug info attached with the instruction then ignore the dangling lexical scope of this instruction. Such scopes are unreachable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93967 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a05f25bba28c58ad154d1198e0eb9d9199bbef31 20-Jan-2010 David Greene <greened@obbligato.org> Add some asserts to check SelectionDAG problems earlier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93960 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
221925eccace7433cb3b3c42875645c499db91a2 20-Jan-2010 David Greene <greened@obbligato.org> Add some asserts to check SelectionDAG problems earlier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93960 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4eb69a01c74db721f23bbcdc2156fa5b97dc9618 20-Jan-2010 Dale Johannesen <dalej@apple.com> Move findDebugLoc somewhere more central. Fix
more cases where debug declarations affect
debug line info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93953 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
918f0f0beab7401172b0b17aeb04e8d757e97a10 20-Jan-2010 Dale Johannesen <dalej@apple.com> Move findDebugLoc somewhere more central. Fix
more cases where debug declarations affect
debug line info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93953 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
9cb488e82728bba1cf27fb171e82de245f70d302 20-Jan-2010 Dan Gohman <gohman@apple.com> Fold (add x, shl(0 - y, n)) -> sub(x, shl(y, n)), to simplify some code
that SCEVExpander can produce when running on behalf of LSR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93949 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cd9e155755dab1913238ffc0374111a39d500adf 20-Jan-2010 Dan Gohman <gohman@apple.com> Fold (add x, shl(0 - y, n)) -> sub(x, shl(y, n)), to simplify some code
that SCEVExpander can produce when running on behalf of LSR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93949 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4e789288818a1573f38ae5e20b5713635a90491a 19-Jan-2010 Chris Lattner <sabre@nondot.org> simplify the rest of fp constant printing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93929 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
09ce674ce81cfa0de096f19833ae7bc7549d851a 19-Jan-2010 Chris Lattner <sabre@nondot.org> simplify the rest of fp constant printing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93929 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
84382d206ce887957fd1d14d84551971b2f0777f 19-Jan-2010 Chris Lattner <sabre@nondot.org> simplify the code for printing x86 long double, don't do work
for -fverbose-asm unless it's on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93926 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
72b5ebc6be0fcfa36583367bc20afadb2c24d985 19-Jan-2010 Chris Lattner <sabre@nondot.org> simplify the code for printing x86 long double, don't do work
for -fverbose-asm unless it's on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93926 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b2ddf24fe2203666bb04d74a54984f1be07124a5 19-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Identify predicate and optional-def operands when printing machine
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93925 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b1bb4afbc7d801f9875be135c428b6f05511db5d 19-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Identify predicate and optional-def operands when printing machine
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93925 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
030176ba3b80ebb99c871df436a67a9311e0accc 19-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate AsmPrinter::EmitZeros: just use MCStreamer directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93918 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6449abfbc86310edbbe0b5ffb3fad5c14301307f 19-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate AsmPrinter::EmitZeros: just use MCStreamer directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93918 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7498f8bf8fabc59d9eb21d56626a1db067a60df0 19-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Update CMake list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93905 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
dcff928b593ed443bab4713164bdaf2bd596259e 19-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Update CMake list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93905 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
b43b732b65703d4c76f04e44e7f370f7092be71a 19-Jan-2010 David Greene <greened@obbligato.org> Add some new debugging APIs to print out "raw" SelectionDAGs to make
understanding CannotYTetSelect and other errors easier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93901 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
ce6715faa37b2e44edcf400084aa808ae30d7085 19-Jan-2010 David Greene <greened@obbligato.org> Add some new debugging APIs to print out "raw" SelectionDAGs to make
understanding CannotYTetSelect and other errors easier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93901 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
a71dc60dc2bb5a154d9195dfe2d3126f7c7967d5 19-Jan-2010 Chris Lattner <sabre@nondot.org> Generalize mcasmstreamer data emission APIs to take an address space
identifier. There is no way to work around it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93896 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
aaec205b87637cd0d59d4f11630db603686eb73d 19-Jan-2010 Chris Lattner <sabre@nondot.org> Generalize mcasmstreamer data emission APIs to take an address space
identifier. There is no way to work around it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93896 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
bf17f5ba82f6443badf10e83fb539b82a2e6e29a 19-Jan-2010 Evan Cheng <evan.cheng@apple.com> Do not extend extension results beyond the use of a PHI instruction at the start of a use block. A PHI use is expected to kill its source values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93895 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeExts.cpp
590d16be6f335da07c66f3c92693d0e8a2f40069 19-Jan-2010 Evan Cheng <evan.cheng@apple.com> Do not extend extension results beyond the use of a PHI instruction at the start of a use block. A PHI use is expected to kill its source values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93895 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeExts.cpp
e72333d0b5224b235c1607238dd37a9bb774c3fd 19-Jan-2010 Chris Lattner <sabre@nondot.org> refactor code to be static functions instead of methods on AsmPrinter.
This fixes some bugs handling address spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93891 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
91093ecf0fed6f007e08f1a4531cdb6f438672a2 19-Jan-2010 Chris Lattner <sabre@nondot.org> refactor code to be static functions instead of methods on AsmPrinter.
This fixes some bugs handling address spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93891 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3b29636c60b7e1513f1ced8b220123868d24b748 19-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamerize AsmPrinter::EmitZeros, at least when emitting to the
default address space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93890 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8a6d7ac88f8b0f37c8c1f134efb39a0725394719 19-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamerize AsmPrinter::EmitZeros, at least when emitting to the
default address space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93890 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d551a916083e26fa64aa2bf7b50d13669ff7c004 19-Jan-2010 Chris Lattner <sabre@nondot.org> remove MAI::ZeroDirectiveSuffix, which is only used by MASM,
which we don't support anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93886 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f03ffd13f8f31fb8ead74b94eb2ef71b80ac7739 19-Jan-2010 Chris Lattner <sabre@nondot.org> remove MAI::ZeroDirectiveSuffix, which is only used by MASM,
which we don't support anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93886 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e9b2eed90ebc564917e62f79a5da0a72c394aadf 19-Jan-2010 Jim Grosbach <grosbach@apple.com> For aligned load/store instructions, it's only required to know whether a
function can support dynamic stack realignment. That's a much easier question
to answer at instruction selection stage than whether the function actually
will have dynamic alignment prologue. This allows the removal of the
stack alignment heuristic pass, and improves code quality for cases where
the heuristic would result in dynamic alignment code being generated when
it was not strictly necessary.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93885 91177308-0d34-0410-b5e6-96231b3b80d8
axStackAlignment.cpp
e45ab8a0a90e4f3a59d8c38038ae3e495ee1fef3 19-Jan-2010 Jim Grosbach <grosbach@apple.com> For aligned load/store instructions, it's only required to know whether a
function can support dynamic stack realignment. That's a much easier question
to answer at instruction selection stage than whether the function actually
will have dynamic alignment prologue. This allows the removal of the
stack alignment heuristic pass, and improves code quality for cases where
the heuristic would result in dynamic alignment code being generated when
it was not strictly necessary.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93885 91177308-0d34-0410-b5e6-96231b3b80d8
axStackAlignment.cpp
8c2d16dbc82838785aea7d55929aaed0ba1ab760 19-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamer'ize the rest of EmitGlobalVariable that is used on
darwin. The next big piece to get global variables streamerized
is EmitGlobalConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93870 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4c8c668b57f74e2849ba198c3abfc97899e8072b 19-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamer'ize the rest of EmitGlobalVariable that is used on
darwin. The next big piece to get global variables streamerized
is EmitGlobalConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93870 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f26c7790feb3890ff9c5927997432825043788ca 19-Jan-2010 Chris Lattner <sabre@nondot.org> stop using the .lcomm pseudoop on darwin, instead, directly use the
.zerofill directive. Streamerize its generation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93868 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
814819f6ea7fb0638fe73920299fda0da941a59e 19-Jan-2010 Chris Lattner <sabre@nondot.org> stop using the .lcomm pseudoop on darwin, instead, directly use the
.zerofill directive. Streamerize its generation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93868 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7d707f90692c75f1de63d0a8a1bc4c9d1c8fddad 19-Jan-2010 Devang Patel <dpatel@apple.com> MDNodes are not expected to disappear or replaced by another MDNode, so there is no need to pay the cost of WeakVH and ValueMaps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93865 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
622b02601bafdf40d103d67951fae88f409c4641 19-Jan-2010 Devang Patel <dpatel@apple.com> MDNodes are not expected to disappear or replaced by another MDNode, so there is no need to pay the cost of WeakVH and ValueMaps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93865 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c2103b1cdf55bc0e8015bbb2e3647e8a44b6738b 19-Jan-2010 Devang Patel <dpatel@apple.com> Avoid including DebugInfo.h in AsmPrinter.h



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93864 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
c99fd879c0f4bbc56c29d508fec7935e6cbd7ed0 19-Jan-2010 Devang Patel <dpatel@apple.com> Avoid including DebugInfo.h in AsmPrinter.h



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93864 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
ecf1cdc01d70f346dca485c104c7e60a937b420b 19-Jan-2010 Chris Lattner <sabre@nondot.org> mc'ize some stuff, don't comment out .lcomm directive in -fverbose-asm mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93860 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4ed5438f4882c9fe779b1a8ff546877889b222df 19-Jan-2010 Chris Lattner <sabre@nondot.org> mc'ize some stuff, don't comment out .lcomm directive in -fverbose-asm mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93860 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
fdcdb2cdced3b09de74e67b11f9c9558ee33e512 19-Jan-2010 Chris Lattner <sabre@nondot.org> factor this code better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93859 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9744d611d7c7c1fb51c50c4e94901e4e9a905116 19-Jan-2010 Chris Lattner <sabre@nondot.org> factor this code better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93859 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
410c9471b999ac45a0234be088da718f5626f76b 19-Jan-2010 Chris Lattner <sabre@nondot.org> Now that we have everything nicely factored (e.g. asmprinter is not
doing global variable classification anymore) and hookized, sink almost
all target targets global variable emission code into AsmPrinter and out
of each target.

Some notes:

1. PIC16 does completely custom and crazy stuff, so it is not changed.
2. XCore has some custom handling for extra directives. I'll look at it next.
3. This switches linux/ppc to use .globl instead of .global. If .globl is
actually wrong, let me know and I'll fix it.
4. This makes linux/ppc get a lot of random cases right which were obviously
wrong before, it is probably now a bit healthier.
5. Blackfin will probably start getting .comm and other things that it didn't
before. If this is undesirable, it should explicitly opt out of these
things by clearing the relevant fields of MCAsmInfo.

This leads to a nice diffstat:
14 files changed, 127 insertions(+), 830 deletions(-)




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93858 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
74bfe21b50c14c15f55ce3bd5857d65b588fae3c 19-Jan-2010 Chris Lattner <sabre@nondot.org> Now that we have everything nicely factored (e.g. asmprinter is not
doing global variable classification anymore) and hookized, sink almost
all target targets global variable emission code into AsmPrinter and out
of each target.

Some notes:

1. PIC16 does completely custom and crazy stuff, so it is not changed.
2. XCore has some custom handling for extra directives. I'll look at it next.
3. This switches linux/ppc to use .globl instead of .global. If .globl is
actually wrong, let me know and I'll fix it.
4. This makes linux/ppc get a lot of random cases right which were obviously
wrong before, it is probably now a bit healthier.
5. Blackfin will probably start getting .comm and other things that it didn't
before. If this is undesirable, it should explicitly opt out of these
things by clearing the relevant fields of MCAsmInfo.

This leads to a nice diffstat:
14 files changed, 127 insertions(+), 830 deletions(-)




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93858 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d960947255c0e5d28eab6d76a02222133af1f1f6 19-Jan-2010 Chris Lattner <sabre@nondot.org> hoist handling of external globals and special globals up to common code.
This makes a similar code dead in all the other targets, I'll clean it up
in a bit.

This also moves handling of lcomm up before acquisition of a section,
since lcomm never needs a section.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93851 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
48d64ba9d846229339b2431b298620cb8a01ffc5 19-Jan-2010 Chris Lattner <sabre@nondot.org> hoist handling of external globals and special globals up to common code.
This makes a similar code dead in all the other targets, I'll clean it up
in a bit.

This also moves handling of lcomm up before acquisition of a section,
since lcomm never needs a section.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93851 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2f2fe05fa39eac3b0067ccadd5dd8c985d5a09fe 19-Jan-2010 Chris Lattner <sabre@nondot.org> move production of .reference directives for static ctor/dtor list on
darwin into common code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93849 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
71eae713153e564ec743c5c4162ff258c255de78 19-Jan-2010 Chris Lattner <sabre@nondot.org> move production of .reference directives for static ctor/dtor list on
darwin into common code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93849 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
387e9c184c93de5dbd0afbb450f9cbfb3cbd56f0 19-Jan-2010 Devang Patel <dpatel@apple.com> Revert accident check-in from r93165.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93832 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f54b85237c666e6c473392b0e85aa9724cd0df79 19-Jan-2010 Devang Patel <dpatel@apple.com> Revert accident check-in from r93165.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93832 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
0e073cd755d2582295de65b49ca2a7ead8ad48bf 19-Jan-2010 Dale Johannesen <dalej@apple.com> Revert 93811 per request.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93818 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
f082d7abe1cbba4608b3d79c2e9d16be0f42d1bc 19-Jan-2010 Dale Johannesen <dalej@apple.com> Revert 93811 per request.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93818 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
892c2d9df22f22c6d1e7b6f3d0109344050c1f80 19-Jan-2010 Dale Johannesen <dalej@apple.com> Enable code to emit dbg.declare as DEBUG_VALUE
comments (fast isel, X86). This doesn't seem
to break any functionality, but will introduce
cases where -g affects the generated code. I'll
be fixing that.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93811 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
1b346b7f8fe5913c253106e49cb4c848fac953d5 19-Jan-2010 Dale Johannesen <dalej@apple.com> Enable code to emit dbg.declare as DEBUG_VALUE
comments (fast isel, X86). This doesn't seem
to break any functionality, but will introduce
cases where -g affects the generated code. I'll
be fixing that.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93811 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
029251769c9afbbb1bd066c0ec37347aedf59013 18-Jan-2010 Evan Cheng <evan.cheng@apple.com> Canonicalize -1 - x to ~x.

Instcombine does this but apparently there are situations where this pattern will escape the optimizer and / or created by isel. Here is a case that's seen in JavaScriptCore:
%t1 = sub i32 0, %a
%t2 = add i32 %t1, -1
The dag combiner pattern: ((c1-A)+c2) -> (c1+c2)-A
will fold it to -1 - %a.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93773 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1ad0e8b5769f25ca442f3d77bf374d03469010bc 18-Jan-2010 Evan Cheng <evan.cheng@apple.com> Canonicalize -1 - x to ~x.

Instcombine does this but apparently there are situations where this pattern will escape the optimizer and / or created by isel. Here is a case that's seen in JavaScriptCore:
%t1 = sub i32 0, %a
%t2 = add i32 %t1, -1
The dag combiner pattern: ((c1-A)+c2) -> (c1+c2)-A
will fold it to -1 - %a.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93773 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6442f658e78ec2aecb6aaf7938d6ccadb7f5b140 18-Jan-2010 Bill Wendling <isanbard@gmail.com> - Add a comment to the callback indicating that it's *extremely* not a good
idea, but unfortunately necessary.
- Default to using 4-bytes for the LSDA pointer encoding to agree with the
encoded value in the CIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93753 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
a8c18890da312e810c687b78658dcd4c989b9776 18-Jan-2010 Bill Wendling <isanbard@gmail.com> - Add a comment to the callback indicating that it's *extremely* not a good
idea, but unfortunately necessary.
- Default to using 4-bytes for the LSDA pointer encoding to agree with the
encoded value in the CIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93753 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
1e9a11b57bff0f237a15b2b67eafd71a1e220aa4 18-Jan-2010 Chris Lattner <sabre@nondot.org> remove the MAI argument to MCExpr::print and switch overthing to use << when printing them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93699 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
8cb9a3b13f3226b7e741768b69d26ecd6b5231f1 18-Jan-2010 Chris Lattner <sabre@nondot.org> remove the MAI argument to MCExpr::print and switch overthing to use << when printing them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93699 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
ce40984980d8cc39e903382478c111d967aed337 17-Jan-2010 Chris Lattner <sabre@nondot.org> now that MCSymbol::print doesn't use it's MAI argument, we can
remove it and change all the code that prints MCSymbols to use
<< instead, which is much simpler and cleaner.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93695 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
10b318bcb39218d2ed525e4862c854bc8d1baf63 17-Jan-2010 Chris Lattner <sabre@nondot.org> now that MCSymbol::print doesn't use it's MAI argument, we can
remove it and change all the code that prints MCSymbols to use
<< instead, which is much simpler and cleaner.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93695 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
63ab9bb55ac6e3793357529b7221b8f2afe61baa 17-Jan-2010 Chris Lattner <sabre@nondot.org> now that mangler is in libtarget, it can use MCAsmInfo instead of clients
having to pass various fields from it in. Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93686 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
c0dba723d119adc8c7b49c6d0e97d10eac4428fc 17-Jan-2010 Chris Lattner <sabre@nondot.org> now that mangler is in libtarget, it can use MCAsmInfo instead of clients
having to pass various fields from it in. Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93686 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
0ad2db92a5361a16e1f34704a67429e0c76a0b4d 17-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Switch some functions to take Twines, eliminate uses of StringExtras.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93680 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
1efd4fd56b3bc21b85ab921c6f77807afc02ecb5 17-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Switch some functions to take Twines, eliminate uses of StringExtras.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93680 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
ad16a245544a3387d089e151667c7fab62356d50 17-Jan-2010 Nate Begeman <natebegeman@mac.com> Add a note for the macho streamer and remove a used of the mangler from the soon to be defunct machowriter pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93670 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
6f24a0a603d7edba4995153092ff841703df6824 17-Jan-2010 Nate Begeman <natebegeman@mac.com> Add a note for the macho streamer and remove a used of the mangler from the soon to be defunct machowriter pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93670 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
395885b0c037e6fdce3690c092e22ff1613ae728 17-Jan-2010 Kenneth Uildriks <kennethuil@gmail.com> When checking for sret-demotion, it needs to use legal types. When using the return value of an sret-demoted call, it needs to use possibly illegal types that match the declared Type of the callee.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
93ae407ec3d300805d42a6e2f81ab8c4538eb494 17-Jan-2010 Kenneth Uildriks <kennethuil@gmail.com> When checking for sret-demotion, it needs to use legal types. When using the return value of an sret-demoted call, it needs to use possibly illegal types that match the declared Type of the callee.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
31a54741b82809a2c136239af45bea276d4b85df 16-Jan-2010 Chris Lattner <sabre@nondot.org> move the mangler into libtarget from vmcore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93664 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
LFWriter.cpp
achOWriter.cpp
45111d160cf0910030eeb6a949c69273502e5ad5 16-Jan-2010 Chris Lattner <sabre@nondot.org> move the mangler into libtarget from vmcore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93664 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
LFWriter.cpp
achOWriter.cpp
5214518439740b4feb63e0be500cbc4711becfa5 16-Jan-2010 Chris Lattner <sabre@nondot.org> reapply the mangler gutting patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93656 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
c94c825a4098f2a86589d31b318bbb8836a5df44 16-Jan-2010 Chris Lattner <sabre@nondot.org> reapply the mangler gutting patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93656 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
a418ffbdd0c70adde1e1e92732b76bd8f05213c0 16-Jan-2010 Chris Lattner <sabre@nondot.org> unbreak the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93654 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6dfdad9c0623212d1506c24e20d6a94deeb73980 16-Jan-2010 Chris Lattner <sabre@nondot.org> unbreak the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93654 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2823525038515be92811775241b2c99af9d258ed 16-Jan-2010 Rafael Espindola <rafael.espindola@gmail.com> Revert 93648.
Mangler::getMangledName is used from lto
Mangler::setUseQuotes is used in the AsmPrinter
Mangler::setSymbolsCanStartWithDigit is used in the AsmPrinter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93652 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
0f0c97810c0d35882fdd2160553b0be94332e3fa 16-Jan-2010 Rafael Espindola <rafael.espindola@gmail.com> Revert 93648.
Mangler::getMangledName is used from lto
Mangler::setUseQuotes is used in the AsmPrinter
Mangler::setSymbolsCanStartWithDigit is used in the AsmPrinter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93652 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
608b270506bcf9b1d24f839a9e39683b707bec13 16-Jan-2010 Chris Lattner <sabre@nondot.org> Mangler::getMangledName is now dead, remove it and all the other stuff in Mangler that is now transitively dead. woo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93648 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
848d0f37d2ef3c8418380d5f7f3dd083a132fe48 16-Jan-2010 Chris Lattner <sabre@nondot.org> Mangler::getMangledName is now dead, remove it and all the other stuff in Mangler that is now transitively dead. woo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93648 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
41e330fb461d9e5e70a6b93f47fa83a5004b161f 16-Jan-2010 Chris Lattner <sabre@nondot.org> Change DIEObjectLabel to take an MCSymbol instead of std::string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93647 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
858431d0bc81ddab11363cc0eb2889dbfdc8362b 16-Jan-2010 Chris Lattner <sabre@nondot.org> Change DIEObjectLabel to take an MCSymbol instead of std::string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93647 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
a6f2a103c7713d0184ef7a6c6b1933db3547b3e2 16-Jan-2010 Chris Lattner <sabre@nondot.org> rename GetPrivateGlobalValueSymbolStub -> GetSymbolWithGlobalValueBase,
and add an explicit ForcePrivate argument.

Switch FunctionEHFrameInfo to be MCSymbol based instead of string based.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
7a2ba94d03b43f41b54872dacd7b2250dde4c7bd 16-Jan-2010 Chris Lattner <sabre@nondot.org> rename GetPrivateGlobalValueSymbolStub -> GetSymbolWithGlobalValueBase,
and add an explicit ForcePrivate argument.

Switch FunctionEHFrameInfo to be MCSymbol based instead of string based.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
cbfe406db836132504737fb1722ece75ec142319 16-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate uses of getMangledName from AsmPrinter.cpp, last up is
dwarf emission which is going to be more invasive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93645 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
08ce3b473d06e0f7806df3d44b7b36ac40c58803 16-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate uses of getMangledName from AsmPrinter.cpp, last up is
dwarf emission which is going to be more invasive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93645 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7a1656537780563eb56f6b7f327e705e14194dd2 16-Jan-2010 Devang Patel <dpatel@apple.com> No need to use WeakVH here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93631 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a27f6e4e202b335f38e3f37e052e9eca817e89fe 16-Jan-2010 Devang Patel <dpatel@apple.com> No need to use WeakVH here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93631 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
042945f696010411918fb35b82cf4016da80ae18 16-Jan-2010 Devang Patel <dpatel@apple.com> Replace DebugLocTuple with DILocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93630 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
achineFunction.cpp
achineInstr.cpp
6b61f5816e22ac7f7e009aaf3e11ccce7cfeb085 16-Jan-2010 Devang Patel <dpatel@apple.com> Replace DebugLocTuple with DILocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93630 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
achineFunction.cpp
achineInstr.cpp
47177f7ee693f15ba76c6765cdeedde05280942b 16-Jan-2010 Chris Lattner <sabre@nondot.org> remove a couple of actively incorrect uses of getMangledName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93627 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
0b3735e65af1cc3ff7fb76e2b30e2ffb2604f400 16-Jan-2010 Chris Lattner <sabre@nondot.org> remove a couple of actively incorrect uses of getMangledName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93627 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
e46f64b5ed522333155e37518515a7f656ac4e0c 16-Jan-2010 Bill Wendling <isanbard@gmail.com> Retrying r91337:

The CIE says that the LSDA point in the FDE section is an "sdata4". That's fine,
but we need it to actually be 4-bytes in the FDE for some platforms. Allow
individual platforms to decide for themselves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93616 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
d58e9cb42d7f5cf83c9b982df7e2c822b2e285e9 16-Jan-2010 Bill Wendling <isanbard@gmail.com> Retrying r91337:

The CIE says that the LSDA point in the FDE section is an "sdata4". That's fine,
but we need it to actually be 4-bytes in the FDE for some platforms. Allow
individual platforms to decide for themselves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93616 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
1ff319475a82afe0cea68471ccf96b6f59d879ec 16-Jan-2010 Chris Lattner <sabre@nondot.org> fix inverted conditional


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93614 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
10595490ccf25b4960936638fac7a673eaf82e68 16-Jan-2010 Chris Lattner <sabre@nondot.org> fix inverted conditional


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93614 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ac5a6ad0b05dd5c76fd2f2d05c285d25ef4d4717 16-Jan-2010 Chris Lattner <sabre@nondot.org> CurrentFnName is now dead, remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93612 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
412c3a5bc9e70fe8579551216786e70d323a3dd5 16-Jan-2010 Chris Lattner <sabre@nondot.org> CurrentFnName is now dead, remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93612 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c0c8d7dc3e4b35987631d6a17ca259c614d16f93 16-Jan-2010 Chris Lattner <sabre@nondot.org> remove the string form of printVisibility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93609 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5c40e694dcd679bf26b962189c1d12b32fff07cd 16-Jan-2010 Chris Lattner <sabre@nondot.org> remove the string form of printVisibility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93609 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7ea854b6e40e9c9a5177d2f985026bb45eb6905d 16-Jan-2010 Bob Wilson <bob.wilson@apple.com> Treat indirect branches specially only during pre-regalloc tail duplication,
not during the later post-alloc tail duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93600 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
cb44b28f4d96c059d30c1a77d3b7e406d362d94e 16-Jan-2010 Bob Wilson <bob.wilson@apple.com> Treat indirect branches specially only during pre-regalloc tail duplication,
not during the later post-alloc tail duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93600 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
a9ef6bc5c56ddaad6977f0f7bd5b51087bcef5c9 16-Jan-2010 Bob Wilson <bob.wilson@apple.com> Run the pre-register allocation tail duplication pass by default. Remove
the -pre-regalloc-taildup command-line option, and add a new
-disable-early-taildup option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93597 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
516ab96de3eb0c80ac9c4867cc2076ef4749625e 16-Jan-2010 Bob Wilson <bob.wilson@apple.com> Run the pre-register allocation tail duplication pass by default. Remove
the -pre-regalloc-taildup command-line option, and add a new
-disable-early-taildup option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93597 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
8d656d944275350f1baf0740bdd143e90e172dbb 16-Jan-2010 Chris Lattner <sabre@nondot.org> supplement CurrentFnName with CurrentFnSym, which will eventually
replace it. Upgrade Alpha, Blackfin, and part of CellSPU to not
use mangler anymore. CellSPU needs more invasive surgery.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93589 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d1947ed2f824d2e9f4923fb6efc2aec4a6e3e96d 16-Jan-2010 Chris Lattner <sabre@nondot.org> supplement CurrentFnName with CurrentFnSym, which will eventually
replace it. Upgrade Alpha, Blackfin, and part of CellSPU to not
use mangler anymore. CellSPU needs more invasive surgery.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93589 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
67cce68221c693cd2c80cf2a16b626b6abfc67e6 16-Jan-2010 Chris Lattner <sabre@nondot.org> add a version of AsmPrinter::printVisibility that takes an MCSymbol.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93587 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
53d4d78d9a2c26a67ac8f6e81cc149702103fc2c 16-Jan-2010 Chris Lattner <sabre@nondot.org> add a version of AsmPrinter::printVisibility that takes an MCSymbol.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93587 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f7871d1b5018aae518bed4cd979130d2cf06ad02 16-Jan-2010 Chris Lattner <sabre@nondot.org> add another helper


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93577 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d588b97cc9acf778282ab10efa4f298cead1215a 16-Jan-2010 Chris Lattner <sabre@nondot.org> add another helper


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93577 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2eb781d9dee5c87fd2efac8dac12ae47c4526544 16-Jan-2010 Chris Lattner <sabre@nondot.org> add a AsmPrinter::GetGlobalValueSymbol and GetExternalSymbolSymbol
helper method, use it to simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93575 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6b04edee11c2bb35a48b1c42f867b4ba8cdfff97 16-Jan-2010 Chris Lattner <sabre@nondot.org> add a AsmPrinter::GetGlobalValueSymbol and GetExternalSymbolSymbol
helper method, use it to simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93575 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d45d042da9417316e8b42a299375f0bb7f0e9726 15-Jan-2010 Ted Kremenek <kremenek@apple.com> Update CMake build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93571 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
11f30b013149a2a4cb0b41288488079a24730fe1 15-Jan-2010 Ted Kremenek <kremenek@apple.com> Update CMake build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93571 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
2ae0a44449000e88d1fe99fe9ccfe027a2313224 15-Jan-2010 Devang Patel <dpatel@apple.com> Add FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93562 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
167207a99b34dfc939489ca648a009b4aed13dfd 15-Jan-2010 Devang Patel <dpatel@apple.com> Add FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93562 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e3992c87cf09101a0998be97ea63c2385ed528d1 15-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't make changes to the MBB in MachineBasicBlock::canFallThrough().

This fixes the regression for -pre-regalloc-taildup in
MultiSource/Applications/lambda-0.1.3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93541 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
33cc8d6b55ca5e1275d0984860f5d4f36f84f356 15-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't make changes to the MBB in MachineBasicBlock::canFallThrough().

This fixes the regression for -pre-regalloc-taildup in
MultiSource/Applications/lambda-0.1.3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93541 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
d1cd6acfd850eef54127c88d56f7766990c2da6e 15-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify logic. Any functional change is unintended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93540 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
057d53993c8f5ae3b5d8b5357c8c1ec6cc6d63ee 15-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify logic. Any functional change is unintended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93540 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
2fecfc64c6973de9c1653841108ca7dd99f65780 15-Jan-2010 David Greene <greened@obbligato.org> Add some debug routines to SelectionDAG to dump full DAGs.
print/dumpWithDepth allows one to dump a DAG up to N levels deep.
dump/printWithFullDepth prints the whole DAG, subject to a depth limit
on 100 in the default case (to prevent infinite recursion).

Have CannotYetSelect to a dumpWithFullDepth so it is clearer exactly
what the non-matching DAG looks like.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93538 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
ac931c011fae9392b5d68e763ec64ee25181c267 15-Jan-2010 David Greene <greened@obbligato.org> Add some debug routines to SelectionDAG to dump full DAGs.
print/dumpWithDepth allows one to dump a DAG up to N levels deep.
dump/printWithFullDepth prints the whole DAG, subject to a depth limit
on 100 in the default case (to prevent infinite recursion).

Have CannotYetSelect to a dumpWithFullDepth so it is clearer exactly
what the non-matching DAG looks like.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93538 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
d22820bc0989a6df50b40f65cde66d4218151074 15-Jan-2010 Victor Hernandez <vhernandez@apple.com> Improve llvm.dbg.declare intrinsic by referring directly to the storage in its first argument, via function-local metadata (instead of via a bitcast).
This patch also cleans up code that expects there to be a bitcast in the first argument and testcases that call llvm.dbg.declare.
It also strips old llvm.dbg.declare intrinsics that did not pass metadata as the first argument.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93531 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3a32865d58f015e7058444eab7085195c34da95a 15-Jan-2010 Victor Hernandez <vhernandez@apple.com> Improve llvm.dbg.declare intrinsic by referring directly to the storage in its first argument, via function-local metadata (instead of via a bitcast).
This patch also cleans up code that expects there to be a bitcast in the first argument and testcases that call llvm.dbg.declare.
It also strips old llvm.dbg.declare intrinsics that did not pass metadata as the first argument.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93531 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5694b479aaa0214543571f21b51098015514f1b4 15-Jan-2010 Nate Begeman <natebegeman@mac.com> Hook up llc's -filetype=obj to use MCStreamer if an MCCodeEmitter is available.
Remove most of old Mach-O Writer support, it has been replaced by MCMachOStreamer

Further refactoring to completely remove MachOWriter and drive the object file
writer with the AsmPrinter MCInst/MCSection logic is forthcoming.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93527 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achO.h
achOCodeEmitter.cpp
achOCodeEmitter.h
achOWriter.cpp
achOWriter.h
3fe980b127a61608bd6d44c0939ba716ca21625c 15-Jan-2010 Nate Begeman <natebegeman@mac.com> Hook up llc's -filetype=obj to use MCStreamer if an MCCodeEmitter is available.
Remove most of old Mach-O Writer support, it has been replaced by MCMachOStreamer

Further refactoring to completely remove MachOWriter and drive the object file
writer with the AsmPrinter MCInst/MCSection logic is forthcoming.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93527 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achO.h
achOCodeEmitter.cpp
achOCodeEmitter.h
achOWriter.cpp
achOWriter.h
797ddec380dfcd01f74055185b31d8d3ce33186f 15-Jan-2010 Victor Hernandez <vhernandez@apple.com> Revert r93504 because older uses of llvm.dbg.declare intrinsics need to be auto-upgraded

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93515 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5f03238d629c32bb0bab78d112a42293838558e9 15-Jan-2010 Victor Hernandez <vhernandez@apple.com> Revert r93504 because older uses of llvm.dbg.declare intrinsics need to be auto-upgraded

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93515 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
387170cbbf6508d34cc4edd5e89a3b64bafa0104 15-Jan-2010 Bob Wilson <bob.wilson@apple.com> Change pre-regalloc tail duplication to only duplicate indirect branch blocks.
The pre-regalloc pass caused some regressions in both compile time and
performance of the generated code, and it did not improve performance, except
for indirect branches. I also moved the check for single-block loops to speed
up the common case when running the taildup pass before reg allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93505 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
bfdcf3bd49f50050fe98523f882b2241d2752fb4 15-Jan-2010 Bob Wilson <bob.wilson@apple.com> Change pre-regalloc tail duplication to only duplicate indirect branch blocks.
The pre-regalloc pass caused some regressions in both compile time and
performance of the generated code, and it did not improve performance, except
for indirect branches. I also moved the check for single-block loops to speed
up the common case when running the taildup pass before reg allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93505 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
a2e6f234901138c6fe3fa53b1b0cfa6f9c595e03 15-Jan-2010 Victor Hernandez <vhernandez@apple.com> Improve llvm.dbg.declare intrinsic by referring directly to the storage in its first argument, via function-local metadata (instead of via a bitcast).
This patch also cleans up code that expects there to be a bitcast in the first argument and testcases that call llvm.dbg.declare.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93504 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
283ba2fbb4a40d5f7615aba070f2f7ec161d19ac 15-Jan-2010 Victor Hernandez <vhernandez@apple.com> Improve llvm.dbg.declare intrinsic by referring directly to the storage in its first argument, via function-local metadata (instead of via a bitcast).
This patch also cleans up code that expects there to be a bitcast in the first argument and testcases that call llvm.dbg.declare.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93504 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
dcc0dce792fd568b1858323786e8c88357145c5b 15-Jan-2010 Devang Patel <dpatel@apple.com> Do not use AT_specification die for static variables. It confuses gdb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93494 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c9b16cc10887d270aa2a43a5a8c78e0ed3177dea 15-Jan-2010 Devang Patel <dpatel@apple.com> Do not use AT_specification die for static variables. It confuses gdb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93494 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c5d373ab6892c9210e618ae6e5394cd4f301978d 15-Jan-2010 Jim Grosbach <grosbach@apple.com> fix 80-column violations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93487 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f4549b02a7d9907d06e7fb8afefd129452d1f7c5 15-Jan-2010 Jim Grosbach <grosbach@apple.com> fix 80-column violations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93487 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
10039378078d5ff74227f25ef747784fa0a84202 15-Jan-2010 Jim Grosbach <grosbach@apple.com> Fix 80 column violations and clean up whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93484 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
03825f8401f703ba59ae9ef20d9d4f4303b3d041 15-Jan-2010 Jim Grosbach <grosbach@apple.com> Fix 80 column violations and clean up whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93484 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
69aae43ba76de8dedfac93405953e63a3ca4c500 15-Jan-2010 Devang Patel <dpatel@apple.com> Do not emit multiple AT_container_type attributes.
We need to find a better way to emit this info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93481 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f8b72ca6c80d7fb242d23d9b2aebb1937e6fff60 15-Jan-2010 Devang Patel <dpatel@apple.com> Do not emit multiple AT_container_type attributes.
We need to find a better way to emit this info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93481 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c90c30b900c680852cab24b883ba0edefe50cbde 14-Jan-2010 Dale Johannesen <dalej@apple.com> Fix a comment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93463 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cf0b76649be4eea33aba783d4154ea338b7cbbc2 14-Jan-2010 Dale Johannesen <dalej@apple.com> Fix a comment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93463 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
26cb241d6ab201327d479741c7bf8300b5184263 14-Jan-2010 Jim Grosbach <grosbach@apple.com> Add comment explaining the necessity of r93456

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93459 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
86e69fa901ea0e04bc24ae3d8f757bccc84c10e6 14-Jan-2010 Jim Grosbach <grosbach@apple.com> Add comment explaining the necessity of r93456

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93459 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
663cf2c35b96b853c0a04ff6abf3222b974a3b4e 14-Jan-2010 Jim Grosbach <grosbach@apple.com> Dwarf EH prepare needs to be run after SjLj prepare. Otherwise,
catch info can get misplaced when a selector ends up more than one block
removed from the parent invoke(s). This could happen when a landing pad is
shared by multiple invokes and is also a target of a normal edge from
elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93456 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
9f82da7cbfe0c9f1b2c4bc7d7a9a9b5d35bea488 14-Jan-2010 Jim Grosbach <grosbach@apple.com> Dwarf EH prepare needs to be run after SjLj prepare. Otherwise,
catch info can get misplaced when a selector ends up more than one block
removed from the parent invoke(s). This could happen when a landing pad is
shared by multiple invokes and is also a target of a normal edge from
elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93456 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
4e57a87a7823a9734e67aeba2ce067db7e972ab4 14-Jan-2010 Dan Gohman <gohman@apple.com> Fix a codegen abort seen in 483.xalancbmk.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ff00a555171cac0a77c0434fd85ff5a0ae672ade 14-Jan-2010 Dan Gohman <gohman@apple.com> Fix a codegen abort seen in 483.xalancbmk.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2308d17eb3701702b9fc659e1793940c10b5797d 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Commit some changes I had managed to lose last night while refactoring the code. Avoid change use of PHI instructions because it's not legal to insert any instructions before them.
This fixes PR6027.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93335 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeExts.cpp
eb18812f755b634f3e7554c1912aeb2d7476cb53 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Commit some changes I had managed to lose last night while refactoring the code. Avoid change use of PHI instructions because it's not legal to insert any instructions before them.
This fixes PR6027.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93335 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeExts.cpp
074e5ee642f72bfa5fa53aaebbfa286f76d93156 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Re-enable extension optimization pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93313 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
81d22d87de93f501f90f55b6bbc63f5dd286797a 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Re-enable extension optimization pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93313 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
23554ba8ea748a9d3dd2e946031b4af989b79adf 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Add comment; refactor; avoid pulling in DT if it's not used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93306 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeExts.cpp
d89d5180d12107a2cdffa179c213370db2e088d5 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Add comment; refactor; avoid pulling in DT if it's not used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93306 91177308-0d34-0410-b5e6-96231b3b80d8
ptimizeExts.cpp
6be13f3b6c5b06131458583bc8cb8a0182f04ceb 13-Jan-2010 Chris Lattner <sabre@nondot.org> remove uses of deprecated functions, this generates slightly
different BlockAddress labels, but nothing semantically important.

Add a FIXME that BlockAddress codegen is broken if the LLVM BB has
an empty name (e.g. strip was run).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93303 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2f8cc26be403262703ba00658d45e5adf7bdb514 13-Jan-2010 Chris Lattner <sabre@nondot.org> remove uses of deprecated functions, this generates slightly
different BlockAddress labels, but nothing semantically important.

Add a FIXME that BlockAddress codegen is broken if the LLVM BB has
an empty name (e.g. strip was run).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93303 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cdf8e795ef30ce14c2ad838f5383701403206664 13-Jan-2010 Chris Lattner <sabre@nondot.org> use the new form of getNameWithPrefix, not makeNameProper.
Among other things, this would do very weird things if the
basic block name had (e.g.) a space in it on darwin:
makeNameProper would add quotes, then the mcsymbol would
escape the quotes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93302 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
dfbcb8c38bb1637289801f37bb22cb7065891611 13-Jan-2010 Chris Lattner <sabre@nondot.org> use the new form of getNameWithPrefix, not makeNameProper.
Among other things, this would do very weird things if the
basic block name had (e.g.) a space in it on darwin:
makeNameProper would add quotes, then the mcsymbol would
escape the quotes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93302 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a38b287aec4e06a2aded8bc7809f0f949955ade5 13-Jan-2010 Chris Lattner <sabre@nondot.org> change Mangler::makeNameProper to return its result in a SmallVector
instead of returning it in an std::string. Based on this change:

1. Change TargetLoweringObjectFileCOFF::getCOFFSection to take a StringRef
2. Change a bunch of targets to call makeNameProper with a smallstring,
making several of them *much* more efficient.
3. Rewrite Mangler::makeNameProper to not build names and then prepend
prefixes, not use temporary std::strings, and to avoid other crimes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4813035b726e7f0a3fd17bec437185fc72a50988 13-Jan-2010 Chris Lattner <sabre@nondot.org> change Mangler::makeNameProper to return its result in a SmallVector
instead of returning it in an std::string. Based on this change:

1. Change TargetLoweringObjectFileCOFF::getCOFFSection to take a StringRef
2. Change a bunch of targets to call makeNameProper with a smallstring,
making several of them *much* more efficient.
3. Rewrite Mangler::makeNameProper to not build names and then prepend
prefixes, not use temporary std::strings, and to avoid other crimes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5034031d0da530709726bb3163204ece7f871679 13-Jan-2010 Chris Lattner <sabre@nondot.org> fix assert in AsmPrinter::EmitGlobalConstantLargeInt to match reality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93293 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
38c2b0a99c6a3f5cdf6ef5a46e4a6826b30acbfb 13-Jan-2010 Chris Lattner <sabre@nondot.org> fix assert in AsmPrinter::EmitGlobalConstantLargeInt to match reality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93293 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
98910866249b2098d80c887ce555e195463fb5e0 13-Jan-2010 Chris Lattner <sabre@nondot.org> reduce nesting and code duplication in AsmPrinter::EmitGlobalConstantLargeInt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93292 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5979dfff8ea73c9d728d3a586efba6581be3e672 13-Jan-2010 Chris Lattner <sabre@nondot.org> reduce nesting and code duplication in AsmPrinter::EmitGlobalConstantLargeInt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93292 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9d767d8db074bcb08e0dcd2c27515226b841ca4d 13-Jan-2010 Chris Lattner <sabre@nondot.org> reduce indentation and add a fast-path to EmitGlobalConstant for 8-byte
integers on 64-bit systems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93291 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3cc3a00570e8263369346cf2eef9a72488326952 13-Jan-2010 Chris Lattner <sabre@nondot.org> reduce indentation and add a fast-path to EmitGlobalConstant for 8-byte
integers on 64-bit systems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93291 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
458c8774022dad22ea34ba9d250f7ebef8450038 13-Jan-2010 Chris Lattner <sabre@nondot.org> reduce indentation and use early exits in AsmPrinter::EmitConstantValueOnly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93290 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
fe0e7ed6b077360dbcc6d9f0bc0a4dfeb77c8e9b 13-Jan-2010 Chris Lattner <sabre@nondot.org> reduce indentation and use early exits in AsmPrinter::EmitConstantValueOnly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93290 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
79960dc1e4822a9e4f4368dcdfda53cbee42a5bc 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Disable opt-ext pass to unbreak the build for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93286 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
262a96edb436543227b9b5e49f95a082e1c73b5f 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Disable opt-ext pass to unbreak the build for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93286 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
e4e2d73a8e058f08c6fdf88ed250cda22975638e 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Remove debug option I accidentally left in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93285 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
d9e385f411abc1ec41130d8010a9de4a93dd1042 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Remove debug option I accidentally left in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93285 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
07ad56a9deda44a5b17587632af6b8ced10b854c 13-Jan-2010 Ted Kremenek <kremenek@apple.com> Update CMake file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93283 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
ce3ad1565ac3ff6cc04832ec17ecdc1baa705f9d 13-Jan-2010 Ted Kremenek <kremenek@apple.com> Update CMake file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93283 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
eb485c91b7d901c50ae68334c91e222f1f8cfc3f 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Add a quick pass to optimize sign / zero extension instructions. For targets where the pre-extension values are available in the subreg of the result of the extension, replace the uses of the pre-extension value with the result + extract_subreg.

For now, this pass is fairly conservative. It only perform the replacement when both the pre- and post- extension values are used in the block. It will miss cases where the post-extension values are live, but not used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93278 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ptimizeExts.cpp
7da9ecf9677b751d81515f95168ae3cb2df54160 13-Jan-2010 Evan Cheng <evan.cheng@apple.com> Add a quick pass to optimize sign / zero extension instructions. For targets where the pre-extension values are available in the subreg of the result of the extension, replace the uses of the pre-extension value with the result + extract_subreg.

For now, this pass is fairly conservative. It only perform the replacement when both the pre- and post- extension values are used in the block. It will miss cases where the post-extension values are live, but not used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93278 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ptimizeExts.cpp
698aa7a176eaf8e39cad144e91094249c4615622 13-Jan-2010 Dale Johannesen <dalej@apple.com> Further progration of metadata operands. The
dumper doesn't really do what I want yet, but
at least it doesn't crash now.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93272 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
5f72a5ebc84a1935878b5b2d3166a505c520cdfc 13-Jan-2010 Dale Johannesen <dalej@apple.com> Further progration of metadata operands. The
dumper doesn't really do what I want yet, but
at least it doesn't crash now.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93272 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
c244ae65b53cfbd544b960c4ed1c344f729ea728 12-Jan-2010 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93261 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
86af65552172c9149996600bc3f55bed6f949c8a 12-Jan-2010 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93261 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
62f23d34678c30606705a432f268fadf85aa162b 12-Jan-2010 Dan Gohman <gohman@apple.com> Update a partially obsolete comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
21c14e3649b3e2a70ac36ebb148f17648f10a2a9 12-Jan-2010 Dan Gohman <gohman@apple.com> Update a partially obsolete comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c90588049c6c7577366bdc59364f89cc631a1e6d 12-Jan-2010 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93227 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5c9cf19d1e7d044e786f03331bc3f004966a69d2 12-Jan-2010 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93227 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
1f50af772b65865868f332792dd3150aeaba8660 11-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid adding PHI arguments for a predecessor that has gone away when a BRCOND was constant folded.

This fixes PR5980.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93184 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
dd437ba15e00d1a137e0c6e3ca1ff213ed6a2aa0 11-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid adding PHI arguments for a predecessor that has gone away when a BRCOND was constant folded.

This fixes PR5980.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93184 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
313485a4c25a8eb93e035b3d457c2a0d2069258c 11-Jan-2010 Mon P Wang <wangmp@apple.com> Disable transformation of select of two loads to a select of address and then a load if the
loads are not in the default address space because the transformation discards src value info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fe240b1066badd7a56d9a99637cdc7cd25f8305c 11-Jan-2010 Mon P Wang <wangmp@apple.com> Disable transformation of select of two loads to a select of address and then a load if the
loads are not in the default address space because the transformation discards src value info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b7074b01d29d5a727e8b496664148e3a4e96c7e3 11-Jan-2010 Devang Patel <dpatel@apple.com> s/NextValueNo/NextMDValueNo while processing metadata.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93165 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
23598502efa6a0c2daaa6c6efc519867c8445e8f 11-Jan-2010 Devang Patel <dpatel@apple.com> s/NextValueNo/NextMDValueNo while processing metadata.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93165 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7196cb17f2a16ed5c57325c7eddef90b25ad306b 09-Jan-2010 Dan Gohman <gohman@apple.com> Revert an earlier change to SIGN_EXTEND_INREG for vectors. The VTSDNode
really does need to be a vector type, because
TargetLowering::getOperationAction for SIGN_EXTEND_INREG uses that type,
and it needs to be able to distinguish between vectors and scalars.

Also, fix some more issues with legalization of vector casts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93043 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
d1996360399ad6dbe75ee185b661b16c83146373 09-Jan-2010 Dan Gohman <gohman@apple.com> Revert an earlier change to SIGN_EXTEND_INREG for vectors. The VTSDNode
really does need to be a vector type, because
TargetLowering::getOperationAction for SIGN_EXTEND_INREG uses that type,
and it needs to be able to distinguish between vectors and scalars.

Also, fix some more issues with legalization of vector casts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93043 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
61a04a4863bec3aafeaac93f24cdb99fc9c78fe0 09-Jan-2010 Evan Cheng <evan.cheng@apple.com> Dan pointed out checking whether a node is dead by comparing its opcode to ISD::DELETED_NODE is not safe. Use a DAGUpdateListener to remove dead nodes from work list instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93031 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
54e146b935123d3d325e8eb30c2e1f2eca3377ac 09-Jan-2010 Evan Cheng <evan.cheng@apple.com> Dan pointed out checking whether a node is dead by comparing its opcode to ISD::DELETED_NODE is not safe. Use a DAGUpdateListener to remove dead nodes from work list instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93031 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cadeefe319b2b8b79baa3201754f647b5c08f6c1 08-Jan-2010 Evan Cheng <evan.cheng@apple.com> ReplaceAllUsesOfValueWith may delete other nodes that the one being replaced. Do not delete dead nodes again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92988 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6f279e0bda35a35740cc8c5479d579890bc1d3f7 08-Jan-2010 Evan Cheng <evan.cheng@apple.com> ReplaceAllUsesOfValueWith may delete other nodes that the one being replaced. Do not delete dead nodes again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92988 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
73f59c1f111309e9de59444020bcd0993b054699 07-Jan-2010 Chris Lattner <sabre@nondot.org> Fix rdar://7517201, a regression introduced by r92849.
When folding a and(any_ext(load)) both the any_ext and the
load have to have only a single use.

This removes the anyext-uses.ll testcase which started failing
because it is unreduced and unclear what it is testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92950 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bd1fccfad59f24267b6fa8b898711d63a3574c7d 07-Jan-2010 Chris Lattner <sabre@nondot.org> Fix rdar://7517201, a regression introduced by r92849.
When folding a and(any_ext(load)) both the any_ext and the
load have to have only a single use.

This removes the anyext-uses.ll testcase which started failing
because it is unreduced and unclear what it is testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92950 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4dbb99a59e8afbbf26ca2e2046694317d174e805 07-Jan-2010 Chris Lattner <sabre@nondot.org> factor this code better and reduce nesting at the same
time, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92948 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ef7634ca48c7ed33a88bd80207f3457c07ad85f2 07-Jan-2010 Chris Lattner <sabre@nondot.org> factor this code better and reduce nesting at the same
time, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92948 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
746ff38b996b0a2c8233f4679a543d8cf7dfc8c8 07-Jan-2010 Evan Cheng <evan.cheng@apple.com> APInt'fy TargetLowering::SimplifySetCC to fix PR5963.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92943 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
347a9cb5070be6473a5f881dd29997b46081d23b 07-Jan-2010 Evan Cheng <evan.cheng@apple.com> APInt'fy TargetLowering::SimplifySetCC to fix PR5963.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92943 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e9f7c8f9ad7534f95342b0e0595b596fa02e6b78 07-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Simplify code. No intended functionality/performance change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92938 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
2e0de6f771337c654728a7855a3f47a3458545b3 07-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Simplify code. No intended functionality/performance change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92938 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
631e3e3f6a0b8b6c9a50787d6bd0a09bcfc590bd 07-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Kill dead store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92920 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3d594fd2992fa31aa74f974edaeddc4178206380 07-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Kill dead store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92920 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
650c0fa1be13732cb617e9bc15ed4818b2d94a6b 07-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove dead variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92919 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
e7078aed24d81c0b4bacb41385ea0237d1c0caf0 07-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove dead variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92919 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
947f3a6e79834ed0e7a5310c43eb0ca64fd24b8c 07-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Use pop_back_val instead of back()+pop_back.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92918 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7b1e2a50a51793428a792a15d2777a4c48e0db49 07-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Use pop_back_val instead of back()+pop_back.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92918 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fb68188d0ec8cbda044958d42e8c455de3e29f17 07-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow double defs after tail duplication.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92874 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
541e9ae3ad39f6ebca7649ce0c640ff2c64bfb84 07-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow double defs after tail duplication.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92874 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
d13c6ce32c2de48b62b925999174028150222ce7 07-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add Target hook to duplicate machine instructions.

Some instructions refer to unique labels, and so cannot be trivially cloned
with CloneMachineInstr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92873 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
argetInstrInfoImpl.cpp
30ac0467ced4627a9b84d8a1d3ca5e8706ddad63 07-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add Target hook to duplicate machine instructions.

Some instructions refer to unique labels, and so cannot be trivially cloned
with CloneMachineInstr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92873 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
argetInstrInfoImpl.cpp
a81a67f127633eaeb207c9c7ce010044b38224ca 06-Jan-2010 Jim Grosbach <grosbach@apple.com> Anti-dependency breaking needs to be careful regarding instructions with
multiple register definitions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92864 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
80c2b0d9efc951b23f90a3cf12b9853177994961 06-Jan-2010 Jim Grosbach <grosbach@apple.com> Anti-dependency breaking needs to be careful regarding instructions with
multiple register definitions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92864 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
d917041c2164560446871f451b25580dbe137838 06-Jan-2010 Evan Cheng <evan.cheng@apple.com> Comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92850 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
54eb4c2991796c3014e831fc07e4a6c0a3df10f0 06-Jan-2010 Evan Cheng <evan.cheng@apple.com> Comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92850 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
095dac2acc996c523aa6ec5b44e0c1e0099286e1 06-Jan-2010 Evan Cheng <evan.cheng@apple.com> Teach dag combine to fold the following transformation more aggressively:
(OP (trunc x), (trunc y)) -> (trunc (OP x, y))

Unfortunately this simple change causes dag combine to infinite looping. The problem is the shrink demanded ops optimization tend to canonicalize expressions in the opposite manner. That is badness. This patch disable those optimizations in dag combine but instead it is done as a late pass in sdisel.

This also exposes some deficiencies in dag combine and x86 setcc / brcond lowering. Teach them to look pass ISD::TRUNCATE in various places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92849 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
d40d03e1bd1d51857fc2f9f9230e334c3a32b249 06-Jan-2010 Evan Cheng <evan.cheng@apple.com> Teach dag combine to fold the following transformation more aggressively:
(OP (trunc x), (trunc y)) -> (trunc (OP x, y))

Unfortunately this simple change causes dag combine to infinite looping. The problem is the shrink demanded ops optimization tend to canonicalize expressions in the opposite manner. That is badness. This patch disable those optimizations in dag combine but instead it is done as a late pass in sdisel.

This also exposes some deficiencies in dag combine and x86 setcc / brcond lowering. Teach them to look pass ISD::TRUNCATE in various places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92849 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
bfa08987939a656af8e1436fcc7a8eebb57cfcd1 06-Jan-2010 Jim Grosbach <grosbach@apple.com> 80 column and whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92837 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
2973b57093b017f2e3b5f5edd0be9d4ea180f0e9 06-Jan-2010 Jim Grosbach <grosbach@apple.com> 80 column and whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92837 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
98e6e6d1f930b224338d5faf411dc43621a09fa1 06-Jan-2010 Lang Hames <lhames@gmail.com> Fixed malformed -*- lines in PBQP headers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92830 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/AnnotatedGraph.h
BQP/ExhaustiveSolver.h
BQP/GraphBase.h
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
BQP/PBQPMath.h
BQP/SimpleGraph.h
BQP/Solution.h
BQP/Solver.h
421c0733fdb1780ad6fd23eefba78004528dacd2 06-Jan-2010 Lang Hames <lhames@gmail.com> Fixed malformed -*- lines in PBQP headers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92830 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/AnnotatedGraph.h
BQP/ExhaustiveSolver.h
BQP/GraphBase.h
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
BQP/PBQPMath.h
BQP/SimpleGraph.h
BQP/Solution.h
BQP/Solver.h
00cca85b6ae19c712a2567aac0732ed4c1fec122 06-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add <imp-def> and <imp-kill> operands when replacing virtual sub-register defs and kills.

An instruction like this:

%reg1097:1<def> = VMOVSR %R3<kill>, 14, %reg0

Must be replaced with this when substituting physical registers:

%S0<def> = VMOVSR %R3<kill>, 14, %reg0, %D0<imp-def>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92812 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
irtRegRewriter.cpp
8efadf94b568c08de3ff8ce35fd904a935387406 06-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add <imp-def> and <imp-kill> operands when replacing virtual sub-register defs and kills.

An instruction like this:

%reg1097:1<def> = VMOVSR %R3<kill>, 14, %reg0

Must be replaced with this when substituting physical registers:

%S0<def> = VMOVSR %R3<kill>, 14, %reg0, %D0<imp-def>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92812 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
irtRegRewriter.cpp
036a1980b77b60c8af9c5ce84c7ede5dadf3e96c 06-Jan-2010 Bill Wendling <isanbard@gmail.com> The previous code could potentially cause a cycle. Allow ordering w.r.t. a 0 order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92810 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3f09487404bc46297dc6fd91ca3ac478c3a7fa34 06-Jan-2010 Bill Wendling <isanbard@gmail.com> The previous code could potentially cause a cycle. Allow ordering w.r.t. a 0 order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92810 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
882f79a3e629020bcd5b5059bf6df67764aaaa67 06-Jan-2010 Bill Wendling <isanbard@gmail.com> Only check the ordering if there is an ordering for each nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
cfeea4b92aa5be102e58efea947ca40a95b0c999 06-Jan-2010 Bill Wendling <isanbard@gmail.com> Only check the ordering if there is an ordering for each nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
1da5cacca96a3488451cb9627ec3407d861db35a 06-Jan-2010 Bill Wendling <isanbard@gmail.com> Add a semi-primitive form of scheduling via the "SDNode ordering" to the
bottom-up scheduler. We prefer the lower order number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92806 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
247fb4ebd363323b6642ce2bb08e53db705ca094 06-Jan-2010 Bill Wendling <isanbard@gmail.com> Add a semi-primitive form of scheduling via the "SDNode ordering" to the
bottom-up scheduler. We prefer the lower order number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92806 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f5b856e21b2b84bb43646bd047010472b348c0f6 05-Jan-2010 Bill Wendling <isanbard@gmail.com> Don't assign the shift the same type as the variable being shifted. This could
result in illegal types for the SHL operator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92797 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9f7c5c0dca1e63bca39eb6511e8847b02030cb1f 05-Jan-2010 Bill Wendling <isanbard@gmail.com> Don't assign the shift the same type as the variable being shifted. This could
result in illegal types for the SHL operator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92797 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f45e5d183036079f51ff374e8e1ecb06978b286e 05-Jan-2010 Dan Gohman <gohman@apple.com> Don't use the ISD::NodeType enum for SDNode opcodes, as CodeGen
uses several kinds of opcode values which are not declared within
that enum. This fixes PR5946.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92794 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
7c3ecb6838ef7a2ca306c0f3cd68022f0855ae71 05-Jan-2010 Dan Gohman <gohman@apple.com> Don't use the ISD::NodeType enum for SDNode opcodes, as CodeGen
uses several kinds of opcode values which are not declared within
that enum. This fixes PR5946.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92794 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
e1b383f0ef527eb1cd75e59155290969c12c53ef 05-Jan-2010 Dan Gohman <gohman@apple.com> Restore dump() methods to Loop and MachineLoop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92772 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
dda30cd4af1c5f88fc00fd40b673f8e27c61379d 05-Jan-2010 Dan Gohman <gohman@apple.com> Restore dump() methods to Loop and MachineLoop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92772 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
f0e83d2fd7d71ba3f18fffdb36cf9b70dc1f8490 05-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Move remaining stuff to the isInteger predicate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92771 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
8c65f6e71c1d46d823b9a884819992a9255edd54 05-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Move remaining stuff to the isInteger predicate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92771 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
06294811f8729846df53fd1a0d7576d1e460c046 05-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove livein checks from machine code verifier.

A phi operand that is implicitly defined in a predecessor becomes an undefined
register after phi elimination. This causes a lot of false positives when the
verifier is checking if live-in registers are live-out from all predecessors.

Removing the verifier checks seems like a better solution than insisting on
IMPLICIT_DEF instructions in predecessor blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92769 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
b31defe94caac68561344f78696be3a048413ec9 05-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove livein checks from machine code verifier.

A phi operand that is implicitly defined in a predecessor becomes an undefined
register after phi elimination. This causes a lot of false positives when the
verifier is checking if live-in registers are live-out from all predecessors.

Removing the verifier checks seems like a better solution than insisting on
IMPLICIT_DEF instructions in predecessor blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92769 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
3b620bfd58cf1e1d84563eb6208418858e903a42 05-Jan-2010 Devang Patel <dpatel@apple.com> If a scope has only one instruction then first instruction is also the last instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92736 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ee890edd69044b820d3ba3a3c45ad43288565eac 05-Jan-2010 Devang Patel <dpatel@apple.com> If a scope has only one instruction then first instruction is also the last instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92736 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f2052d5e0eb5028a06f41d2cebb8e22b6876ebc0 05-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Avoid going through the LLVMContext for type equality where it's safe to dereference the type pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92726 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
f012705c7e4ca8cf90b6b734ce1d5355daca5ba5 05-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Avoid going through the LLVMContext for type equality where it's safe to dereference the type pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92726 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
4efb3b2015b855a403ad0963000fe2b125059e6a 05-Jan-2010 Devang Patel <dpatel@apple.com> Delete renaming use of dead dbg intrinsics.

Intrinsic::dbg_stoppoint
Intrinsic::dbg_region_start
Intrinsic::dbg_region_end
Intrinsic::dbg_func_start



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92672 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
614d2ad0afaaee874684c3945afda659d587b7e6 05-Jan-2010 Devang Patel <dpatel@apple.com> Delete renaming use of dead dbg intrinsics.

Intrinsic::dbg_stoppoint
Intrinsic::dbg_region_start
Intrinsic::dbg_region_end
Intrinsic::dbg_func_start



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92672 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
141e1c4e936d3b5249b30ac8d581ee3c6202d56f 05-Jan-2010 Devang Patel <dpatel@apple.com> Use StringRef.startswith().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92671 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
351ca3328452abed9de58723fbcbe42e7a08903e 05-Jan-2010 Devang Patel <dpatel@apple.com> Use StringRef.startswith().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92671 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a0e147ae0b909678c1d4562b7896637ed4542016 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92597 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1a053236f165ac60ee88edca370a732d278aa2c1 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92597 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6ace2dc9caccb852fcc2cc360fe2e9a4a16e41a4 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92596 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
dea8fbcae580f28b3cc52120800e1a7e34b95c9f 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92596 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
3dbc2a7b3cd533fb799cd61b319978ff290d6915 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92595 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
4424817a0d8b6c547c920ec9e6b75ae6c897f17a 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92595 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
2ae85ade82c5023e2769fcf2ade5678f55b55f81 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92594 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
e1b2129471e994cfb7d34cc5134eb99dd1ae39f2 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92594 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
e50d4d1dd61c1c58efc90ccfa5450a44172bf536 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92593 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
c19a9cdfac813360bcedd374df6fcd0a3dc12252 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92593 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
e1741cd24fedad7edf3c7be2a3b32f90d01a629b 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92592 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
32edbd74541a94a67716fe1d529bf87b9a7960fb 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92592 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
58eb862cfd887fa92b4fe7a98aa31ada337b544c 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92591 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
65de504ad226a0b2adc6c675115863a8e583ac1f 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92591 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
14e0f7d22300cee665edf887c3a5569bf5d788c3 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92590 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
0ee5218cb2abafb2db8d3667e7119b47626cdd94 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92590 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
ba718ae48be33977c240a9bdd599d2d38b5c1462 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92589 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
87b0efc86dcc1dac30fcd6b4d1c51110f707a28c 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92589 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
5274c8cb6eb6d043b2ba084f38292319d0d34fd3 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92588 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
4175f58d6d4d7666d1dba4467fed4704aa0342cd 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92588 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
f3a0604edbda319a8a23387b78d78ec0ffb7644f 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92587 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
0080b1accc8de37247835476dba40b72dcb69229 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92587 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
997816499cbf966a1b574b1d34c2c13de4b91b12 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92586 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
309315420669ff5bde9b0ae1213171a88216fad7 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92586 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
13d6387c58215ea4f507be3d0c328ddc605bd1b1 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92585 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
4b134d1661214427834bf89ef1183f458919837e 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92585 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
8e421a9bc01393c4801ccd9db199a2139e87db8d 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92584 91177308-0d34-0410-b5e6-96231b3b80d8
hrinkWrapping.cpp
0d5c06e0b66d31f1488b4f0791d9a135d22cb422 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92584 91177308-0d34-0410-b5e6-96231b3b80d8
hrinkWrapping.cpp
5544fcf0fd5339c29314a09bfd2e8100983d3528 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92583 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
37277762c2a066a4e6e2552c5829ff2948386f4f 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92583 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
2eda50a5ca9653234c45971187959c4337d6f6b9 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92582 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
00dec1bbf9ad44af7b5b7ae669cae78b79a09c56 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92582 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
fffdb84d03d0e1912cefa513d2e6295a70229916 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92581 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
84fa8229bbd3813505b7e8d6555fb2e522104e30 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92581 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
2b40464eef49685fbe83d4267656c246c466a693 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92580 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
33db62ce23790b5db57dad66e77a1a06cccfb06e 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92580 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
1332f4c84eeb009f35d5987342593f9ac9cabe2d 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92579 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
bb22223d5b4eb27d238bcc1b67b033975c43db7b 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92579 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
377b0d9f96ff88cfbf07b81aa65dce1bc4ae16c8 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92578 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f10902981c775828bfdd807c88704c965c47ede1 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92578 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7adcad670c1e89e9167488cba092bb7b794c0086 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92577 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
4b69d9909dfdef1ea54a56e6f0e0640031635a9d 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92577 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
5dc5458c3b0bccd7e914a02f56c5310842d3f270 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92576 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
e492ae13edd83b120d665c0503cf4de2925b5e56 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92576 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
88a0d487622b323fe6a332235406c1c225d68171 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92575 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
993aacedfdc3f156f667b4efa280ee79eab3b898 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92575 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d4d6f27ce5b0d80c6506f8ea8b903dd3b7ed3c3d 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
ad61b129ee283f6399ecf6fa5f64f82760e9a56a 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
07e35180efbd5448db29837423bcd02954e9761a 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92573 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
f0dee89b0224199c8a8799b26867767f20997363 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92573 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
b67509c0d508f21ab06fe141c30dd76861f3423f 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92572 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
9abe0bbd9089c98ae4ad7bae589ea0ebb51bb3f5 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92572 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
2e75f53a6068120c5868b2012cdb4933024bae5d 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
ec2d7fe92473bab113747833d22e73ce35d8e16b 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
953082637ec85149bcbaa6db75ab98936a4e34c2 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92570 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
7419b1806a1c3abdc23b62de76fae737b763fb33 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92570 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
d44636d9ca283f76b764d33f9f926e35051fd4c0 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92569 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
55d146e0f9ed00d4e3934bcc00c4179a88f83353 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92569 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
27ac1087e59d89f46961c015d450b1df92bd654c 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92568 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
d765353da89988e949fd4c021d8860f36ab7c392 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92568 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
edaa30ae2b795b1e73fc9b0eff464d0d1103d195 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92567 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
7530efb49e5b26912933dd1dc62ff0d06a06bf9f 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92567 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
70df7dadecc84c32b3bc34f09d09da1840b3de12 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92566 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
f78829794284afc7c243d9ad0591ae3a87172340 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92566 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
fdf73e346f7bd14afbe0172d30fd5d90fb6bce2e 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92565 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
eb00b18338e9fa509357e04c514c45896e51651c 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92565 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
5f082a7df38fa6d7b53c0d7baeca8d74f097d659 05-Jan-2010 Dan Gohman <gohman@apple.com> Change SelectCode's argument from SDValue to SDNode *, to make it more
clear what information these functions are actually using.

This is also a micro-optimization, as passing a SDNode * around is
simpler than passing a { SDNode *, int } by value or reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92564 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
eeb3a00b84b7767d236ec8cf0619b9217fc247b9 05-Jan-2010 Dan Gohman <gohman@apple.com> Change SelectCode's argument from SDValue to SDNode *, to make it more
clear what information these functions are actually using.

This is also a micro-optimization, as passing a SDNode * around is
simpler than passing a { SDNode *, int } by value or reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92564 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
47883d2163e347600365f47ca1cac9748cb728fa 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92563 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
4c3235595fe7f43bb4e43eefdee308fb961b9300 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92563 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
c688eb17b601d4820bd645ce7d189b3e20af0fab 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92548 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
6bb93ef3bed24aaedfc281fe12b575be53ca5480 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92548 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
b0e37bd5e8a242115a46b305dd399f9f6bedd27d 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92547 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
65a41eb59e37b9e2b8d3ecff56c8fc44ddc9de58 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92547 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
8f4f491593cc2b4da4afaa006bd0ffcae94b2d1f 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92545 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
3b325334102144ec39910563eabebde434504564 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92545 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
869dddf2690a41b067c854054f3694bce6d96844 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92544 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
dc55481841d5ac060c279a61c944f192ad9bb23e 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92544 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
06f43c08a76efbbc20d92b61d377fe18e59f378c 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92542 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
dbdbbd9a67af4ba3dd9bc808ac42a0a5ddf0f0c3 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92542 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
781a082d55f86073cd8200e85308494cfcb3b16f 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92539 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
7d30d62c9e1b87b63ffb7b1a50de84c2ae769576 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92539 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
33e8afe365ffe59a424e9a4da2d7637444dfed39 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92535 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
6d206f8fc90e0e4222fd4f9e93f0ce40197560f3 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92535 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
eccea760a9563d79a5d6924bc6e5c26340507bbc 05-Jan-2010 Devang Patel <dpatel@apple.com> Fix debug_inlined section entries for routines whose names are changed through __asm() extension.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92533 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ba1d8264e65b37146dbc26c71c748b5c7020ae88 05-Jan-2010 Devang Patel <dpatel@apple.com> Fix debug_inlined section entries for routines whose names are changed through __asm() extension.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92533 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
28806ab10cbc1f96a0dfb63b239f579a7eba496d 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92532 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
1d44df6afe6f9e722a8c7be4a0fbcd9163d9a379 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92532 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
48bc1dd95b872cf9a0757700aef983ee690aca48 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92529 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8a34229dcf484739119857988772572ef0cad9f2 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92529 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
23c2392eed45ae0e90168d24abf2fd109ad94b34 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92528 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
5242154b558f0783830938f18153e0a7964fb4fa 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92528 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
98ab2e6a3e648b1810993be180ba737517728a32 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92524 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
2800eb1d30aea4177d6ea42adddd70e01ede8699 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92524 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ad7787098259eeb59cf9efbf796df7cd00c69b79 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92520 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
083b7ffb4dafaec9431e9b620a36b72966efdc25 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92520 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
621d098c544d215404d039227d951c113292739b 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92518 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
cc54c7caa4edae31b3091fa33342e74699789362 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92518 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
dfa2866fc88756178b5c2144c9e9890761b48c51 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92516 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
aba28d1273f7332a6a8c335e99dd5a68af748d4f 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92516 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
5fb66146d72f02c4dc2b597824d92846127740a6 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92515 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
73242dd692c0226073c367c2fe573287a3d63fc1 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92515 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
5a7d25d7dab282dfc0a9ac2d7c8eda3a7e5deab2 04-Jan-2010 Dan Gohman <gohman@apple.com> Use a pointer type rather than MVT::Other for the ExternalSymbol node used
in an inline asm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92512 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f2d7fb3eac30e2c018bad0c8db7f89130da9c89f 04-Jan-2010 Dan Gohman <gohman@apple.com> Use a pointer type rather than MVT::Other for the ExternalSymbol node used
in an inline asm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92512 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
98e77307cc1ea2ef5f0469ea81059eb9170d463b 04-Jan-2010 Devang Patel <dpatel@apple.com> Fix begin and end markers for nested scopes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92505 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
344130e8ab2e706f1392aff27bd8d679d979b65b 04-Jan-2010 Devang Patel <dpatel@apple.com> Fix begin and end markers for nested scopes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92505 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
e328bfe75393402d9bfb9fcefeb1122c6b474da8 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92502 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
6e120a1c7049bb424b37626db61b71bedc6e62a0 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92502 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
b585fdbff6dbc3a58b4a83cff198d271705cbae0 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92498 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
5957c9b8aa1d0585e55ce485da363031da583966 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92498 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
92268e54a1b47aa82966073960cbf5a1d7046330 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92496 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
26045e25bf06a5b6476bd6f2d52a5d49da3c40d2 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92496 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
e446eec49091d277b2fe9c4b74f78b5159f59248 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92490 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
89d6a2426256b56780c7934ddad24e6ecc4f690a 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92490 91177308-0d34-0410-b5e6-96231b3b80d8
riticalAntiDepBreaker.cpp
991876a06d263c5fd22c99648c77a810bc0dea06 03-Jan-2010 Chris Lattner <sabre@nondot.org> fix PR5930, allowing the asmprinter to emit difference between
two labels as a truncate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92455 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d0592d3be68e60a77c0bb98ad4861648e16e467c 03-Jan-2010 Chris Lattner <sabre@nondot.org> fix PR5930, allowing the asmprinter to emit difference between
two labels as a truncate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92455 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
257964986869fc5dc01c473f96f590f070f3f1e6 02-Jan-2010 Chris Lattner <sabre@nondot.org> Teach codegen to handle:
(X != null) | (Y != null) --> (X|Y) != 0
(X == null) & (Y == null) --> (X|Y) == 0

so that instcombine can stop doing this for pointers. This is part of PR3351,
which is a case where instcombine doing this for pointers (inserting ptrtoint)
is pessimizing code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92406 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
133ce871df8bc161928970216ff9b195b1fa3a14 02-Jan-2010 Chris Lattner <sabre@nondot.org> Teach codegen to handle:
(X != null) | (Y != null) --> (X|Y) != 0
(X == null) & (Y == null) --> (X|Y) == 0

so that instcombine can stop doing this for pointers. This is part of PR3351,
which is a case where instcombine doing this for pointers (inserting ptrtoint)
is pessimizing code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92406 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c57dcd5e708420c240dbd5423443c7fb8a59ccbd 02-Jan-2010 Chris Lattner <sabre@nondot.org> whitespace cleanup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92404 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.h
53334ca5acc43500bb2744ed1a44e16442e92d0d 02-Jan-2010 Chris Lattner <sabre@nondot.org> whitespace cleanup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92404 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.h
2cd8f1641e082a41c508c0f3a0fb8fb29d452728 01-Jan-2010 Mikhail Glushenkov <foldr@codedgers.com> Fix a warning on gcc 4.4.

SelectionDAGBuilder.cpp:4294: warning: suggest explicit braces to avoid
ambiguous ‘else’

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92395 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
bfdfea86a1489b7249e52f67fe91a0bf028148a9 01-Jan-2010 Mikhail Glushenkov <foldr@codedgers.com> Fix a warning on gcc 4.4.

SelectionDAGBuilder.cpp:4294: warning: suggest explicit braces to avoid
ambiguous ‘else’

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92395 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
77a6244975d208df2a06bb37232aa7d7c0f8e557 01-Jan-2010 Mikhail Glushenkov <foldr@codedgers.com> Trailing whitespace, 80-col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92394 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b3c0199f6aff85f918bac8748b4b9178f029a7bf 01-Jan-2010 Mikhail Glushenkov <foldr@codedgers.com> Trailing whitespace, 80-col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92394 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
53aa27c8f9e088dd1f4eaab6188dedc0791f6622 01-Jan-2010 Chris Lattner <sabre@nondot.org> Teach codegen to lower llvm.powi to an efficient (but not optimal)
multiply sequence when the power is a constant integer. Before, our
codegen for std::pow(.., int) always turned into a libcall, which was
really inefficient.

This should also make many gfortran programs happier I'd imagine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92388 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
f031e8ad011e9ad95d7c965936da07e3a9c42add 01-Jan-2010 Chris Lattner <sabre@nondot.org> Teach codegen to lower llvm.powi to an efficient (but not optimal)
multiply sequence when the power is a constant integer. Before, our
codegen for std::pow(.., int) always turned into a libcall, which was
really inefficient.

This should also make many gfortran programs happier I'd imagine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92388 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
6d8d8157e6b3996d6c6ebe50909c8bfaabf40a31 29-Dec-2009 Chris Lattner <sabre@nondot.org> remove a bunch of unneeded functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
bf0ca2b477e761e2c81f6c36d6c7bec055933b15 29-Dec-2009 Chris Lattner <sabre@nondot.org> remove a bunch of unneeded functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
a0d451f0c3b152920c0bc50ab6c5fb6b9eef89b4 29-Dec-2009 Chris Lattner <sabre@nondot.org> Final step in the metadata API restructuring: move the
getMDKindID/getMDKindNames methods to LLVMContext (and add
convenience methods to Module), eliminating MetadataContext.
Move the state that it maintains out to LLVMContext.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92259 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
081134741b40b342fb2f85722c9cea5d412489a8 29-Dec-2009 Chris Lattner <sabre@nondot.org> Final step in the metadata API restructuring: move the
getMDKindID/getMDKindNames methods to LLVMContext (and add
convenience methods to Module), eliminating MetadataContext.
Move the state that it maintains out to LLVMContext.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92259 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
dcf0657604692cafafdd6ff729087344271c2ace 29-Dec-2009 Chris Lattner <sabre@nondot.org> This is a major cleanup of the instruction metadata interfaces that
I asked Devang to do back on Sep 27. Instead of going through the
MetadataContext class with methods like getMD() and getMDs(), just
ask the instruction directly for its metadata with getMetadata()
and getAllMetadata().

This includes a variety of other fixes and improvements: previously
all Value*'s were bloated because the HasMetadata bit was thrown into
value, adding a 9th bit to a byte. Now this is properly sunk down to
the Instruction class (the only place where it makes sense) and it
will be folded away somewhere soon.

This also fixes some confusion in getMDs and its clients about
whether the returned list is indexed by the MDID or densely packed.
This is now returned sorted and densely packed and the comments make
this clear.

This introduces a number of fixme's which I'll follow up on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92235 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
3990b121cf4a0b280ed3e54cf13870cbf4259e78 29-Dec-2009 Chris Lattner <sabre@nondot.org> This is a major cleanup of the instruction metadata interfaces that
I asked Devang to do back on Sep 27. Instead of going through the
MetadataContext class with methods like getMD() and getMDs(), just
ask the instruction directly for its metadata with getMetadata()
and getAllMetadata().

This includes a variety of other fixes and improvements: previously
all Value*'s were bloated because the HasMetadata bit was thrown into
value, adding a 9th bit to a byte. Now this is properly sunk down to
the Instruction class (the only place where it makes sense) and it
will be folded away somewhere soon.

This also fixes some confusion in getMDs and its clients about
whether the returned list is indexed by the MDID or densely packed.
This is now returned sorted and densely packed and the comments make
this clear.

This introduces a number of fixme's which I'll follow up on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92235 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
9741b1d2ca9e6fca4cb6ffa33022eb35c446cd8e 28-Dec-2009 Chris Lattner <sabre@nondot.org> rename getMDKind -> getMDKindID, make it autoinsert if an MD Kind
doesn't exist already, eliminate registerMDKind. Tidy up a bunch
of random stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92225 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
0eb419800ae51d6e0e00a656ede0627483755361 28-Dec-2009 Chris Lattner <sabre@nondot.org> rename getMDKind -> getMDKindID, make it autoinsert if an MD Kind
doesn't exist already, eliminate registerMDKind. Tidy up a bunch
of random stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92225 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
03fe75db6e07224d304aacdd621371c2a41ca701 28-Dec-2009 Chris Lattner <sabre@nondot.org> snip one more #include from Metadata.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92214 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
5e9cd434234a36089daeee915f1dc02b96947fba 28-Dec-2009 Chris Lattner <sabre@nondot.org> snip one more #include from Metadata.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92214 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
13bf2e51b9a66af667ad20f4286b2dbaea3d46cc 28-Dec-2009 Chris Lattner <sabre@nondot.org> move these out of their own timer groups into the 'uncategorized' groups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92206 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
0b86a6f049e4d839bd770241571628d10c980887 28-Dec-2009 Chris Lattner <sabre@nondot.org> move these out of their own timer groups into the 'uncategorized' groups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92206 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
1061961da58b9e10f2d5677d620a50c64fe2cf19 28-Dec-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow targets to specify the return type of libcalls that are generated for floating point comparisons, rather than hard-coding them as i32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92199 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/TargetLowering.cpp
8f17a36d3107bdc4ffed53ce782c1724ef6460e7 28-Dec-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow targets to specify the return type of libcalls that are generated for floating point comparisons, rather than hard-coding them as i32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92199 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/TargetLowering.cpp
5204deeef9752b2b7b6b127de709c810341c3f62 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92190 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9882007003b12466df717cdf66824120ede405be 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92190 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4feaae46274e91f5614de5901216a1129eb0f8fb 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92189 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
551aa9979651885ec315cf5b6d32d53dfcdc1720 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92189 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
d949baceb4758e5d3dbb753fe3f0b8fda72c4e57 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92188 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d831181f89e913bb17233b5c753e1683e56f5e05 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92188 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3f40b3d2d9bd57e791c2a762734e9f171e5a93f1 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92187 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
a98add69bd53fcaf896e5632e5b4557d09c748df 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92187 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
53ba77c4965127df0cd5de618be703588f22c988 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
86888887872737f614a66e3e25b896248c29c6c2 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
edae1686b11006fc57eafccac7a2e30e7ed26635 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92179 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
3983fbc112748c39790a9d212bf386d6842dc019 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92179 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
18bdaa57e25cf10bc088cb82c7cb4f7412346086 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92178 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
b17f15b25f101b96981c1e03f1a9295fa764606b 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92178 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
17c68ea17602f5dc37c8d0b6b0ace367a539f9a8 25-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92159 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
164558e59c2a321bf670e31a7bdde0d38d79bb67 25-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92159 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ceebbcd5d8d0528abe14965dc9d4a9cb14f4b49c 25-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store from copy-pasto.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92158 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ad2cf9dd63d15a8bcd7d34a379a1e983fd8c66f7 25-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store from copy-pasto.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92158 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a05064ed33e5bb5e4e1d098dad7dc6bc915bbe1a 25-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92157 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
ebc0c8cc6dc5716c554775fe0514fd3e4a4d3db9 25-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92157 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
64067e8a4daa7ced79978edfeb6c8ed38329efe9 25-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92156 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1a6726f79569bccd4eb0112d9448651ba62b1635 25-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92156 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7f42f87c5eca549b951c85212c511df9b91d9e15 24-Dec-2009 Chris Lattner <sabre@nondot.org> handle equality memcmp of 8 bytes on x86-64 with two unaligned loads and a
compare. On other targets we end up with a call to memcmp because we don't
want 16 individual byte loads. We should be able to use movups as well, but
we're failing to select the generated icmp.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92107 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
04b091a7822c60512285ee66b058f98399bf1cf9 24-Dec-2009 Chris Lattner <sabre@nondot.org> handle equality memcmp of 8 bytes on x86-64 with two unaligned loads and a
compare. On other targets we end up with a call to memcmp because we don't
want 16 individual byte loads. We should be able to use movups as well, but
we're failing to select the generated icmp.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92107 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
cf9b1dccf5126177dd1aead00daf2de215a1ac95 24-Dec-2009 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92099 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
7ed6dd61ac904f6a50318f557ac0f389a4dbf6a9 24-Dec-2009 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92099 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
b600ec7a01408cc8fd4341d25f75ffed5a9686c2 24-Dec-2009 Chris Lattner <sabre@nondot.org> move an optimization for memcmp out of simplifylibcalls and into
SDISel. This optimization was causing simplifylibcalls to
introduce type-unsafe nastiness. This is the first step, I'll be
expanding the memcmp optimizations shortly, covering things that
we really really wouldn't want simplifylibcalls to do.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92098 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
8047d9a6be9c6261c4d3f286786be856d619ed0f 24-Dec-2009 Chris Lattner <sabre@nondot.org> move an optimization for memcmp out of simplifylibcalls and into
SDISel. This optimization was causing simplifylibcalls to
introduce type-unsafe nastiness. This is the first step, I'll be
expanding the memcmp optimizations shortly, covering things that
we really really wouldn't want simplifylibcalls to do.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92098 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
d1071c265f21f31df9c1222d55689bf33699bded 24-Dec-2009 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92097 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
465e2b950d61c870fb3120c80191973e8282a3ef 24-Dec-2009 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92097 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
dbc061394e0838c243fef2d5e37f9b4d70a48cc5 24-Dec-2009 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92096 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f83adbc4c112439d54c7f91eb9524443e729a43e 24-Dec-2009 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92096 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2c45c1e371c8e69a8e1f626eee64326701651e28 24-Dec-2009 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92094 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
0c8b6e6bc540e793c4401580d06f4e5a478d3b6f 24-Dec-2009 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92094 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
c78cb49837a21905c652d4701fe48f1e56dbcda8 24-Dec-2009 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92093 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
5393b2523419af71971be2286f34d3c8e2501898 24-Dec-2009 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92093 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
b28ebcf8a5701004b772a6be27ab098e29acab95 23-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> move a few more symbols to .rodata

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ec9d8b00470b2ddabef4e1b58b4f60d69995d8ce 23-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> move a few more symbols to .rodata

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
abdde47c8044f868bd415b69c54ea722830fcddb 23-Dec-2009 Dale Johannesen <dalej@apple.com> Use more sensible type for flags in asms. PR 5570.
Patch by Sylve`re Teissier (sorry, ASCII only).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91988 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
9949933d6eb406bc74f7df7a0180a11c050a236f 23-Dec-2009 Dale Johannesen <dalej@apple.com> Use more sensible type for flags in asms. PR 5570.
Patch by Sylve`re Teissier (sorry, ASCII only).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91988 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGISel.cpp
94ff09ba5fca224ef3467e96eb30b91ddc100f7e 23-Dec-2009 Eric Christopher <echristo@apple.com> Update objectsize intrinsic and associated dependencies. Fix
lowering code and update testcases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91979 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
d060b2576ab10d463e339186bcc61860500cbce0 23-Dec-2009 Eric Christopher <echristo@apple.com> Update objectsize intrinsic and associated dependencies. Fix
lowering code and update testcases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91979 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
73864c49f649d78d9d59fba71e99181cd0aa1687 23-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove superfluous SDNode ordering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
0d58013c3ff43f077dc5662e6715bb4dd2cb2bc3 23-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove superfluous SDNode ordering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
eae0bc06342d18eb54766946f83d4404398bdfd5 23-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove node ordering from inline asm nodes. It's not needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91961 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
fc67bbe7bc2e0aa09832c232a5fbb1be796deb4c 23-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove node ordering from inline asm nodes. It's not needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91961 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8a45dc832b7b6af0c1985781b400e1207aa6ed32 23-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove node ordering from VA nodes. It's not needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91958 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c1d3c944ab4410b6dc0e3718cef08d166665b68f 23-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove node ordering from VA nodes. It's not needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91958 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
fed365211d2a91d829f2cf3dba77b510a06adf95 23-Dec-2009 Bill Wendling <isanbard@gmail.com> Revert r91949 r91942 and r91936.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91953 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
775db97a50fb56fece6fbd68e1a6f86418e8063a 23-Dec-2009 Bill Wendling <isanbard@gmail.com> Revert r91949 r91942 and r91936.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91953 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5d15bd195e84093744f6e2430251b1e2ff1a3766 23-Dec-2009 Bill Wendling <isanbard@gmail.com> Finish up node ordering in ExpandNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91949 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
122d06de7482dcb39e7dbcbfe302e39cc55627e5 23-Dec-2009 Bill Wendling <isanbard@gmail.com> Finish up node ordering in ExpandNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91949 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
03c4770ae7f37bc09cbb75f77a00eb3056f55337 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Add coalescer asserts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91945 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
4b6677f1c6331046561a4c26ef1df62136f89c12 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Add coalescer asserts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91945 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9c32618579c2579ca4a7f483cceef43a53ff1cbf 23-Dec-2009 Bill Wendling <isanbard@gmail.com> Assign ordering to nodes created in ExpandNode. Only roughly 1/2 of the function
is finished.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91942 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3dbcb55b40e3916d538fb6e21ba1662dc82c8fa6 23-Dec-2009 Bill Wendling <isanbard@gmail.com> Assign ordering to nodes created in ExpandNode. Only roughly 1/2 of the function
is finished.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91942 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d210c4a75a6da94bfb5154d87ed4e3a97755636d 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Assign ordering to SDNodes in PromoteNode. Also fixing a subtle bug where BSWAP
was using "Tmp1" in the first getNode call instead of Node->getOperand(0).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91936 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
167bea71a4bd19329a218f5e1bd8facfd90a0cf9 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Assign ordering to SDNodes in PromoteNode. Also fixing a subtle bug where BSWAP
was using "Tmp1" in the first getNode call instead of Node->getOperand(0).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91936 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
d0b4a1bd4c235aca68a4b3e076f05adb5e18daf0 22-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove minimal CFG sanity checks from verifier.

These checks would often trigger on unreachable statements inserted by
bugpoint, leading it astray.

It would be nice if we could distinguish unreachable blocks from errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91923 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
18ea3a1551214f1ff3f123f2d67443d5f19baea5 22-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove minimal CFG sanity checks from verifier.

These checks would often trigger on unreachable statements inserted by
bugpoint, leading it astray.

It would be nice if we could distinguish unreachable blocks from errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91923 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
ac6f607b0b7369833e01eb0dc77ba4256efa4dad 22-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow explicit %reg0 operands beyond what the .td file describes.

ARM uses these to indicate predicates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91922 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
5711564b091c39188775aee2768ad36a9b9a99b2 22-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow explicit %reg0 operands beyond what the .td file describes.

ARM uses these to indicate predicates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91922 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
c1904271abb2fa89e453a1933623f1faaa5bd67f 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Allow 0 as an order number. Don't assign an order to formal arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91920 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeOrdering.h
electionDAG/SelectionDAGBuilder.cpp
3ea58b6d7a6357018f4f78396b457f86198a7afa 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Allow 0 as an order number. Don't assign an order to formal arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91920 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeOrdering.h
electionDAG/SelectionDAGBuilder.cpp
9ba2a903c7fd3e01bf7ec1aa6e2c45c12908982e 22-Dec-2009 Bob Wilson <bob.wilson@apple.com> Report an error for bad inline assembly, where the value passed for an
"indirect" operand is not a pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91913 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e261b0c90b25b7ce7a68953e7adecf370c87256e 22-Dec-2009 Bob Wilson <bob.wilson@apple.com> Report an error for bad inline assembly, where the value passed for an
"indirect" operand is not a pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91913 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
aa18176a76f0e31db7af3973c7ca6072f1c15318 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Add more plumbing. This time in the LowerArguments and "get" functions which
return partial registers. This affected the back-end lowering code some.

Also patch up some places I missed before in the "get" functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
3ea3c2461932d96d3defa0a9aa93ffaf631bb19d 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Add more plumbing. This time in the LowerArguments and "get" functions which
return partial registers. This affected the back-end lowering code some.

Also patch up some places I missed before in the "get" functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
6168feb2057980c8dbf709b2029c34c3a3389972 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Add SDNode ordering to inlined asm and VA functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91876 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
651ad13d3c0a232de84d8efe02b11f272b3dee3e 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Add SDNode ordering to inlined asm and VA functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91876 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
8ee5e5211b17cf9268f7ba0a182afebfdda05b2f 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Adding more assignment of ordering to SDNodes. This time in the "call" and
generic copy functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
ec72e32fb032cdf367f47ed3a953c3aa2fa93197 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Adding more assignment of ordering to SDNodes. This time in the "call" and
generic copy functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e9869d33ebd51b368e91a633f31a280c07a5fa3c 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Add ordering of SDNodes to LowerCallTo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e80ae836f24604dc309d0fc7a2842d8704f3e5d1 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Add ordering of SDNodes to LowerCallTo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
18eda83684adfce0295bf34d4673aef48bb1fcbf 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Now add ordering to SDNodes created by the massive intrinsic lowering function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91863 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
d0283fa69f81a48ec98643ae155706bd201b897e 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Now add ordering to SDNodes created by the massive intrinsic lowering function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91863 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
1b811d556804786c3abfe51bbc93fefd1a265e0a 22-Dec-2009 Bill Wendling <isanbard@gmail.com> To make things interesting, I added MORE code to set the ordering of
SDNodes. This time in the load/store and limited-precision code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91860 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
856ff41079560697605058ea11d709047a2b00de 22-Dec-2009 Bill Wendling <isanbard@gmail.com> To make things interesting, I added MORE code to set the ordering of
SDNodes. This time in the load/store and limited-precision code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91860 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
c560a2c7243d444b50609d862a0f0c6aca22a923 22-Dec-2009 Lang Hames <lhames@gmail.com> Changed slot index ranges for MachineBasicBlocks to be exclusive of endpoint.
This fixes an in-place update bug where code inserted at the end of basic blocks may not be covered by existing intervals which were live across the entire block. It is also consistent with the way ranges are specified for live intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91859 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
lotIndexes.cpp
piller.cpp
74ab5eeffbd70f2387338e3ee8195be9f73e6dd8 22-Dec-2009 Lang Hames <lhames@gmail.com> Changed slot index ranges for MachineBasicBlocks to be exclusive of endpoint.
This fixes an in-place update bug where code inserted at the end of basic blocks may not be covered by existing intervals which were live across the entire block. It is also consistent with the way ranges are specified for live intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91859 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
lotIndexes.cpp
piller.cpp
1a56f951ebaf80bdd9ff5a71fbd551d254135be5 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Add more plumbing to assign ordering to SDNodes. Have the "getValue" method
assign the ordering when called. Combine some of the ordering assignments to
keep things simple.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91857 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
87710f04e551655c0c98fb7c0bfd9ec58224a804 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Add more plumbing to assign ordering to SDNodes. Have the "getValue" method
assign the ordering when called. Combine some of the ordering assignments to
keep things simple.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91857 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
bb3929eb9298e1a224601d907406a679406ae0b2 22-Dec-2009 Bill Wendling <isanbard@gmail.com> More ordering plumbing. This time for GEP. I need to remember to assign
orderings to values returned by getValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91850 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
e1a9042041b97d223a65179fb26eb03a4fbe723b 22-Dec-2009 Bill Wendling <isanbard@gmail.com> More ordering plumbing. This time for GEP. I need to remember to assign
orderings to values returned by getValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91850 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
71dac16402a187d9e3dbb52e2ae1fe5cbf559723 21-Dec-2009 Bill Wendling <isanbard@gmail.com> Another incremental check-in for assigning ordering to SDNodes. This time for
shuffle and insert vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91847 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b85b6e888225acac6fd6cf4ef005657fe4ee7096 21-Dec-2009 Bill Wendling <isanbard@gmail.com> Another incremental check-in for assigning ordering to SDNodes. This time for
shuffle and insert vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91847 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
470c75ee68c407f2840b485413d3c380ca9e3a67 21-Dec-2009 Bill Wendling <isanbard@gmail.com> Assign ordering to more instructions. Incremental check-in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91846 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
49fcff8a5ded8a0101891ce2ad10cfae54b42c95 21-Dec-2009 Bill Wendling <isanbard@gmail.com> Assign ordering to more instructions. Incremental check-in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91846 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
db23bbba3bc9eb25d9470c03382478701e38bdd6 21-Dec-2009 Bill Wendling <isanbard@gmail.com> - Add a bit more plumbing assigning an order to SDNodes.
- Modify the "dump" method to emit the order of an SDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91845 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
0777e927214c61c5d681e5b7dd5d00665c81133a 21-Dec-2009 Bill Wendling <isanbard@gmail.com> - Add a bit more plumbing assigning an order to SDNodes.
- Modify the "dump" method to emit the order of an SDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91845 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
a9ac9ed4db099399deb500d7c4a79fc1554f9c28 21-Dec-2009 Bill Wendling <isanbard@gmail.com> First wave of plumbing for assigning an ordering to SDNodes. This takes care of
a lot of the branching instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91838 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
3b7a41ce9053b75b7726c0bd56d698e307495de9 21-Dec-2009 Bill Wendling <isanbard@gmail.com> First wave of plumbing for assigning an ordering to SDNodes. This takes care of
a lot of the branching instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91838 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
cb2504ff73c3e9e2aaa1008ba3b83a31c51d819d 21-Dec-2009 Bill Wendling <isanbard@gmail.com> Place SDNodeOrdering.h in the directory it's used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeOrdering.h
electionDAG/SelectionDAG.cpp
e36025ec18a3fcadd121ded6792d82c66498c614 21-Dec-2009 Bill Wendling <isanbard@gmail.com> Place SDNodeOrdering.h in the directory it's used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SDNodeOrdering.h
electionDAG/SelectionDAG.cpp
7669c97ba622ae8752f620bc1b47e385cb264b7a 21-Dec-2009 Eric Christopher <echristo@apple.com> Fix setting and default setting of code model for jit. Do this
by allowing backends to override routines that will default
the JIT and Static code generation to an appropriate code model
for the architecture.

Should fix PR 5773.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91824 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
f4f43cb5011611d44219ffb1caa988f5adf305bf 21-Dec-2009 Eric Christopher <echristo@apple.com> Fix setting and default setting of code model for jit. Do this
by allowing backends to override routines that will default
the JIT and Static code generation to an appropriate code model
for the architecture.

Should fix PR 5773.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91824 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
8cb4138c0eca1101911d01679a35a9013a73fd78 19-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Fix a bunch of little errors that Clang complains about when its being pedantic

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91764 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LF.h
BQP/GraphBase.h
BQP/HeuristicSolver.h
egAllocLinearScan.cpp
impleRegisterCoalescing.h
cabdd7425d30f7eb659ecb0cc5efbc4052dd78a8 19-Dec-2009 Douglas Gregor <dgregor@apple.com> Fix a bunch of little errors that Clang complains about when its being pedantic

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91764 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LF.h
BQP/GraphBase.h
BQP/HeuristicSolver.h
egAllocLinearScan.cpp
impleRegisterCoalescing.h
957d2c3e976da9f11eb43bf54f852012227d30d3 19-Dec-2009 Anton Korobeynikov <asl@math.spbu.ru> Use 4-arg getVTList) variant instead of generic one, when possible

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91744 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
cc62c3c9282d927c6af1a0f4b5d73dbac53ea977 19-Dec-2009 Anton Korobeynikov <asl@math.spbu.ru> Use 4-arg getVTList) variant instead of generic one, when possible

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91744 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
339b153899f19a616db8b73b6813e82bfd917f44 19-Dec-2009 Bill Wendling <isanbard@gmail.com> Changes from review:

- Move DisableScheduling flag into TargetOption.h
- Move SDNodeOrdering into its own header file. Give it a minimal interface that
doesn't conflate construction with storage.
- Move assigning the ordering into the SelectionDAGBuilder.

This isn't used yet, so there should be no functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
b4e6a5df5dada0cd919cc6e2717eb3118db9cc45 19-Dec-2009 Bill Wendling <isanbard@gmail.com> Changes from review:

- Move DisableScheduling flag into TargetOption.h
- Move SDNodeOrdering into its own header file. Give it a minimal interface that
doesn't conflate construction with storage.
- Move assigning the ordering into the SelectionDAGBuilder.

This isn't used yet, so there should be no functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
675aba0501045ffd2a6dc21168892f338fb787ea 18-Dec-2009 Evan Cheng <evan.cheng@apple.com> Increase opportunities to optimize (brcond (srl (and c1), c2)).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91717 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9ab2b98ba586b366ad49ea141d83b9821f91d8f3 18-Dec-2009 Evan Cheng <evan.cheng@apple.com> Increase opportunities to optimize (brcond (srl (and c1), c2)).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91717 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e8df7dd15480646d4fdf56105d23d17eaffaabb0 18-Dec-2009 Dan Gohman <gohman@apple.com> Add Loop contains utility methods for testing whether a loop
contains another loop, or an instruction. The loop form is
substantially more efficient on large loops than the typical
code it replaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91654 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
92329c7fbe572892c17aa2d2542a10e3ea16132f 18-Dec-2009 Dan Gohman <gohman@apple.com> Add Loop contains utility methods for testing whether a loop
contains another loop, or an instruction. The loop form is
substantially more efficient on large loops than the typical
code it replaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91654 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
4a463881df0d3cb915f252f12958eeda9256445d 18-Dec-2009 Bob Wilson <bob.wilson@apple.com> Handle ARM inline asm "w" constraints with 64-bit ("d") registers.
The change in SelectionDAGBuilder is needed to allow using bitcasts to convert
between f64 (the default type for ARM "d" registers) and 64-bit Neon vector
types. Radar 7457110.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91649 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
5afffaed5c0095930020947322633f0d0b02ffed 18-Dec-2009 Bob Wilson <bob.wilson@apple.com> Handle ARM inline asm "w" constraints with 64-bit ("d") registers.
The change in SelectionDAGBuilder is needed to allow using bitcasts to convert
between f64 (the default type for ARM "d" registers) and 64-bit Neon vector
types. Radar 7457110.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91649 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
b73f8ebe8e9869f265fb0cea16d91b837174987f 18-Dec-2009 John McCall <rjmccall@apple.com> Sundry dependent-name fixes flagged by clang++.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91636 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/AnnotatedGraph.h
a6923131032be5e47b5e1155e69b23aa4c5e65ac 18-Dec-2009 John McCall <rjmccall@apple.com> Sundry dependent-name fixes flagged by clang++.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91636 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/AnnotatedGraph.h
8eca275c0f09f24fc6a0305fcec4b15afdc054d7 18-Dec-2009 Bill Wendling <isanbard@gmail.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91635 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
6532ff889cdd671a715ea27cd7fe0e71e4418a91 18-Dec-2009 Bill Wendling <isanbard@gmail.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91635 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
901d4f36908bed8f2f461d2d2ed75696ed50ceee 18-Dec-2009 Bill Wendling <isanbard@gmail.com> Turn off critical edge splitting for landing pads. The introduction of a
non-landing pad basic block as the successor to a block that ends in an
unconditional jump will cause block folding to remove the added block as a
successor. Thus eventually removing it AND the landing pad entirely. Critical
edge splitting is an optimization, so we can safely turn it off when dealing
with landing pads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91634 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
trongPHIElimination.cpp
3de8249078354d25b37b40e0f10b4f88226d3dd4 18-Dec-2009 Bill Wendling <isanbard@gmail.com> Turn off critical edge splitting for landing pads. The introduction of a
non-landing pad basic block as the successor to a block that ends in an
unconditional jump will cause block folding to remove the added block as a
successor. Thus eventually removing it AND the landing pad entirely. Critical
edge splitting is an optimization, so we can safely turn it off when dealing
with landing pads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91634 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
trongPHIElimination.cpp
177caff1efcac9750f5ac50f77e9c459cb825621 17-Dec-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert 91337. It's causing testcase failures.

$ svn merge -c -91337 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91337 into '.':
U lib/CodeGen/AsmPrinter/DwarfException.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91618 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
aeb79aea8f4761f1c46731ac6bd58cbccdcfa097 17-Dec-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert 91337. It's causing testcase failures.

$ svn merge -c -91337 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91337 into '.':
U lib/CodeGen/AsmPrinter/DwarfException.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91618 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
4e92f37dccefd7c215fb38cd830d0b0592852f61 17-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Introduce EVT::getHalfSizedIntegerVT() for use in ExpandUnalignedStore() in
LegalizeDAG.cpp. Unlike the code it replaces, which simply decrements the simple
type by one, getHalfSizedIntegerVT() searches for the smallest simple integer
type that is at least half the size of the type it is called on. This approach
has the advantage that it will continue working if a new value type (such as
i24) is added to MVT.

Also, in preparation for new value types, remove the assertions that
non-power-of-2 8-bit-mutiple types are Extended when legalizing extload and
truncstore operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91614 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bceddbdc919fc2ca7bc8c3911586ba93367686f0 17-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Introduce EVT::getHalfSizedIntegerVT() for use in ExpandUnalignedStore() in
LegalizeDAG.cpp. Unlike the code it replaces, which simply decrements the simple
type by one, getHalfSizedIntegerVT() searches for the smallest simple integer
type that is at least half the size of the type it is called on. This approach
has the advantage that it will continue working if a new value type (such as
i24) is added to MVT.

Also, in preparation for new value types, remove the assertions that
non-power-of-2 8-bit-mutiple types are Extended when legalizing extload and
truncstore operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91614 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
dadc294ca345e4b7555d13c13cebe0f8ef1accd7 17-Dec-2009 Evan Cheng <evan.cheng@apple.com> Remove debugging code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91604 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
2013e2c6bdc2ea5d9f9ddc5f3388c9349fb7e467 17-Dec-2009 Evan Cheng <evan.cheng@apple.com> Remove debugging code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91604 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
38e52386fcf379c1a97c557bf81c345fd1233a04 17-Dec-2009 Evan Cheng <evan.cheng@apple.com> Revert 91280-91283, 91286-91289, 91291, 91293, 91295-91296. It apparently introduced a non-deterministic behavior in the optimizer somewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91598 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
04149f7ffd033773adfe85e4acf3f560e29bd47d 17-Dec-2009 Evan Cheng <evan.cheng@apple.com> Revert 91280-91283, 91286-91289, 91291, 91293, 91295-91296. It apparently introduced a non-deterministic behavior in the optimizer somewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91598 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
3c06eac1ead1ee19d5da7f6244fc1eba2ca17240 17-Dec-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment grammaro.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
266d945fff195c65e46b1226eb7ee95a632b5e58 17-Dec-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment grammaro.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7d8baee6a05ca3383f39a5745c3c93aeb09aa749 17-Dec-2009 Evan Cheng <evan.cheng@apple.com> Revert this dag combine change:
Fold (zext (and x, cst)) -> (and (zext x), cst)

DAG combiner likes to optimize expression in the other way so this would end up cause an infinite looping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4c2b001f1359d10807c89ff0480e8799a1adbe96 17-Dec-2009 Evan Cheng <evan.cheng@apple.com> Revert this dag combine change:
Fold (zext (and x, cst)) -> (and (zext x), cst)

DAG combiner likes to optimize expression in the other way so this would end up cause an infinite looping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b3fc6a97363135cc1bf0f825a2424b1faf53eb26 16-Dec-2009 Daniel Dunbar <daniel@zuster.org> Reapply r91392, it was only unmasking the bug, and since TOT is still broken having it reverted does no good.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91560 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
819309efec6f11ba752bd7cbfe186495745f020b 16-Dec-2009 Daniel Dunbar <daniel@zuster.org> Reapply r91392, it was only unmasking the bug, and since TOT is still broken having it reverted does no good.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91560 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
ef786f2f846f89ff2675dd29e74c517d24db0d24 16-Dec-2009 Jim Grosbach <grosbach@apple.com> Add @earlyclobber TableGen constraint

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91554 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
06801722a43c697eff0acee905de6b50257ce19b 16-Dec-2009 Jim Grosbach <grosbach@apple.com> Add @earlyclobber TableGen constraint

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91554 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
87450c87ff52d57481df9e6263f9a1b68cc8005a 16-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Reuse lowered phi nodes.

Tail duplication produces lots of identical phi nodes in different basic
blocks. Teach PHIElimination to reuse the join registers when lowering a phi
node that is identical to an already lowered node. This saves virtual
registers, and more importantly it avoids creating copies the the coalescer
doesn't know how to eliminate.

Teach LiveIntervalAnalysis about the phi joins with multiple uses.

This patch significantly reduces code size produced by -pre-regalloc-taildup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91549 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
HIElimination.cpp
HIElimination.h
74215fc29fa748e006c0309671555d5873bac56a 16-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Reuse lowered phi nodes.

Tail duplication produces lots of identical phi nodes in different basic
blocks. Teach PHIElimination to reuse the join registers when lowering a phi
node that is identical to an already lowered node. This saves virtual
registers, and more importantly it avoids creating copies the the coalescer
doesn't know how to eliminate.

Teach LiveIntervalAnalysis about the phi joins with multiple uses.

This patch significantly reduces code size produced by -pre-regalloc-taildup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91549 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
HIElimination.cpp
HIElimination.h
e95e6c2b9690abed80c74de593f537d230318a98 16-Dec-2009 Daniel Dunbar <daniel@zuster.org> Revert "Initial work on disabling the scheduler. This is a work in progress, and
this", this broke llvm-gcc bootstrap for release builds on
x86_64-apple-darwin10.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91533 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
222518d0bb2786a14cf3adf6030c55213d5399f8 16-Dec-2009 Daniel Dunbar <daniel@zuster.org> Revert "Initial work on disabling the scheduler. This is a work in progress, and
this", this broke llvm-gcc bootstrap for release builds on
x86_64-apple-darwin10.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91533 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
5d25f9bbd3a3106239e6b957c233b598d36576fe 16-Dec-2009 Dale Johannesen <dalej@apple.com> Do better with physical reg operands (typically, from inline asm)
in local register allocator. If a reg-reg copy has a phys reg
input and a virt reg output, and this is the last use of the phys
reg, assign the phys reg to the virt reg. If a reg-reg copy has
a phys reg output and we need to reload its spilled input, reload
it directly into the phys reg than passing it through another reg.

Following 76208, there is sometimes no dependency between the def of
a phys reg and its use; this creates a window where that phys reg
can be used for spilling (this is true in linear scan also). This
is bad and needs to be fixed a better way, although 76208 works too
well in practice to be reverted. However, there should normally be
no spilling within inline asm blocks. The patch here goes a long way
towards making this actually be true.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91485 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
fc49bd244741fd7923768509759fbfb7198edbec 16-Dec-2009 Dale Johannesen <dalej@apple.com> Do better with physical reg operands (typically, from inline asm)
in local register allocator. If a reg-reg copy has a phys reg
input and a virt reg output, and this is the last use of the phys
reg, assign the phys reg to the virt reg. If a reg-reg copy has
a phys reg output and we need to reload its spilled input, reload
it directly into the phys reg than passing it through another reg.

Following 76208, there is sometimes no dependency between the def of
a phys reg and its use; this creates a window where that phys reg
can be used for spilling (this is true in linear scan also). This
is bad and needs to be fixed a better way, although 76208 works too
well in practice to be reverted. However, there should normally be
no spilling within inline asm blocks. The patch here goes a long way
towards making this actually be true.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91485 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
86dd20e4ab83c6d96b5a526bc95fc0ee6170e4ec 16-Dec-2009 John McCall <rjmccall@apple.com> Explicit template instantiations must happen in the template's immediately
enclosing namespace. Caught by clang++.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91480 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
achineLoopInfo.cpp
f32616e0bd5995e5e8053d4fc2b0a1da22fa68f6 16-Dec-2009 John McCall <rjmccall@apple.com> Explicit template instantiations must happen in the template's immediately
enclosing namespace. Caught by clang++.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91480 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
achineLoopInfo.cpp
bf525e4cf50311df9aa8ed97d0eaf81a49fa6c3d 16-Dec-2009 Bill Wendling <isanbard@gmail.com> Helpful comment added. Some code cleanup. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91479 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
c70d3311513802e01d634d69e550f96a7a96d04a 16-Dec-2009 Bill Wendling <isanbard@gmail.com> Helpful comment added. Some code cleanup. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91479 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
7cb7f462c39ffc68a5fe873078c2bb545c44f086 16-Dec-2009 Bill Wendling <isanbard@gmail.com> Initialize uninitialized variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91477 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fe586b3e3800b397256ca9ee6a2811fc6ce7dce9 16-Dec-2009 Bill Wendling <isanbard@gmail.com> Initialize uninitialized variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91477 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
9d8b6523d77b512dc276857e3e58e1b226856445 16-Dec-2009 Bill Wendling <isanbard@gmail.com> Initialize uninitialized variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91475 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
408e9d166a66c8891637975921de2980c1940c3f 16-Dec-2009 Bill Wendling <isanbard@gmail.com> Initialize uninitialized variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91475 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
8287d66aee7d877aaa80a3fb40cc90580e669493 15-Dec-2009 Devang Patel <dpatel@apple.com> Add support to emit debug info for C++ namespaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91440 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6404e4e7958aa71ff210008b0e5d1cef8d138ff2 15-Dec-2009 Devang Patel <dpatel@apple.com> Add support to emit debug info for C++ namespaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91440 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
169f3a233e90dcdd01e42829b396c823d016fe30 15-Dec-2009 Chris Lattner <sabre@nondot.org> Remove isPod() from DenseMapInfo, splitting it out to its own
isPodLike type trait. This is a generally useful type trait for
more than just DenseMap, and we really care about whether something
acts like a pod, not whether it really is a pod.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91421 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.h
4bbf4ee1491637c247e195e19e3e4a8ee5ad72fa 15-Dec-2009 Chris Lattner <sabre@nondot.org> Remove isPod() from DenseMapInfo, splitting it out to its own
isPodLike type trait. This is a generally useful type trait for
more than just DenseMap, and we really care about whether something
acts like a pod, not whether it really is a pod.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91421 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.h
d629d80a80bfd6094563000bc82ed37b42acfffa 15-Dec-2009 Evan Cheng <evan.cheng@apple.com> Make 91378 more conservative.
1. Only perform (zext (shl (zext x), y)) -> (shl (zext x), y) when y is a constant. This makes sure it remove at least one zest.
2. If the shift is a left shift, make sure the original shift cannot shift out bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9818c043d2ef1be70780de92bb42edd53d1da62a 15-Dec-2009 Evan Cheng <evan.cheng@apple.com> Make 91378 more conservative.
1. Only perform (zext (shl (zext x), y)) -> (shl (zext x), y) when y is a constant. This makes sure it remove at least one zest.
2. If the shift is a left shift, make sure the original shift cannot shift out bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e8aa0b417ca5d0fc33b6079aa11b81cf86667956 15-Dec-2009 Bill Wendling <isanbard@gmail.com> Initial work on disabling the scheduler. This is a work in progress, and this
stuff isn't used just yet.

We want to model the GCC `-fno-schedule-insns' and `-fno-schedule-insns2'
flags. The hypothesis is that the people who use these flags know what they are
doing, and have hand-optimized the C code to reduce latencies and other
conflicts.

The idea behind our scheme to turn off scheduling is to create a map "on the
side" during DAG generation. It will order the nodes by how they appeared in the
code. This map is then used during scheduling to get the ordering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91392 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
614407a9d21d10ee4f6c45295852c72ad86cb029 15-Dec-2009 Bill Wendling <isanbard@gmail.com> Initial work on disabling the scheduler. This is a work in progress, and this
stuff isn't used just yet.

We want to model the GCC `-fno-schedule-insns' and `-fno-schedule-insns2'
flags. The hypothesis is that the people who use these flags know what they are
doing, and have hand-optimized the C code to reduce latencies and other
conflicts.

The idea behind our scheme to turn off scheduling is to create a map "on the
side" during DAG generation. It will order the nodes by how they appeared in the
code. This map is then used during scheduling to get the ordering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91392 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuilder.cpp
3f0f8885c7079d20930ca0336bb879adde51aaaf 15-Dec-2009 Evan Cheng <evan.cheng@apple.com> Tail duplication should zap a copy it inserted for SSA update if the copy is the only use of its source.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91390 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
3466f13f38b2f3e652cca82bd5da8527e72e195d 15-Dec-2009 Evan Cheng <evan.cheng@apple.com> Tail duplication should zap a copy it inserted for SSA update if the copy is the only use of its source.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91390 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
5b6187226b44f590ce7f614b128480b9c2d823ef 15-Dec-2009 Evan Cheng <evan.cheng@apple.com> Fold (zext (and x, cst)) -> (and (zext x), cst).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8acb3100de9cfc02048b7ab23490134ed735b051 15-Dec-2009 Evan Cheng <evan.cheng@apple.com> Fold (zext (and x, cst)) -> (and (zext x), cst).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3ff63ae679cf08e69db6770e7965e4f3d04637b9 15-Dec-2009 Evan Cheng <evan.cheng@apple.com> Propagate zest through logical shift.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
99b653c36f0141f6b9515d688960ac8c2cb857ff 15-Dec-2009 Evan Cheng <evan.cheng@apple.com> Propagate zest through logical shift.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
87426f8cd21507e13f0256a6727a0c27f60705c3 15-Dec-2009 Bill Wendling <isanbard@gmail.com> Revert these. They may have been causing 483_xalancbmk to fail:

$ svn merge -c -91161 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91161 into '.':
U lib/CodeGen/BranchFolding.cpp
U lib/CodeGen/MachineBasicBlock.cpp
$ svn merge -c -91113 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91113 into '.':
G lib/CodeGen/MachineBasicBlock.cpp
$ svn merge -c -91101 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91101 into '.':
U include/llvm/CodeGen/MachineBasicBlock.h
G lib/CodeGen/MachineBasicBlock.cpp
$ svn merge -c -91092 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91092 into '.':
G include/llvm/CodeGen/MachineBasicBlock.h
G lib/CodeGen/MachineBasicBlock.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91376 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineBasicBlock.cpp
43cf6c3939176e8d87719516f0b2e4c6c346f340 15-Dec-2009 Bill Wendling <isanbard@gmail.com> Revert these. They may have been causing 483_xalancbmk to fail:

$ svn merge -c -91161 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91161 into '.':
U lib/CodeGen/BranchFolding.cpp
U lib/CodeGen/MachineBasicBlock.cpp
$ svn merge -c -91113 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91113 into '.':
G lib/CodeGen/MachineBasicBlock.cpp
$ svn merge -c -91101 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91101 into '.':
U include/llvm/CodeGen/MachineBasicBlock.h
G lib/CodeGen/MachineBasicBlock.cpp
$ svn merge -c -91092 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91092 into '.':
G include/llvm/CodeGen/MachineBasicBlock.h
G lib/CodeGen/MachineBasicBlock.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91376 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineBasicBlock.cpp
c6cfdd3f717bfa1b43351c354e39c066dbd167cd 15-Dec-2009 Dan Gohman <gohman@apple.com> Fix integer cast code to handle vector types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91362 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
2e141d744ee1354f49a99d9da49dbd9570e4269d 15-Dec-2009 Dan Gohman <gohman@apple.com> Fix integer cast code to handle vector types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91362 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
a34782d2b71b5fd6b3b32fa4943de1fc89d47115 15-Dec-2009 Dan Gohman <gohman@apple.com> Fix this to properly clear the FastISel debug location. Thanks to
Bill for spotting this!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
688fb80334e1ad7b259a051411bb72e18abea9e7 15-Dec-2009 Dan Gohman <gohman@apple.com> Fix this to properly clear the FastISel debug location. Thanks to
Bill for spotting this!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
32b48e95922e730032f188c313cdd2e50c63cbc9 14-Dec-2009 Bill Wendling <isanbard@gmail.com> The CIE says that the LSDA point in the FDE section is an "sdata4". That's fine,
but we need it to actually be 4-bytes in the FDE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91337 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
f8084fb1e1da226d73f69c8b30179951ca7d80a9 14-Dec-2009 Bill Wendling <isanbard@gmail.com> The CIE says that the LSDA point in the FDE section is an "sdata4". That's fine,
but we need it to actually be 4-bytes in the FDE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91337 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
814a12c5353afed59395f62dc082aca10b93c3dd 14-Dec-2009 Devang Patel <dpatel@apple.com> Use DW_AT_specification to point to DIE describing function declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91278 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
ffe966c15b165bc3b0c2198dc2675057f3285ce1 14-Dec-2009 Devang Patel <dpatel@apple.com> Use DW_AT_specification to point to DIE describing function declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91278 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
76d8399d2044c4af7ef6b723f2905e4ad6cbbbf3 14-Dec-2009 Lang Hames <lhames@gmail.com> Added CalcSpillWeights to CMakeLists.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91275 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
94a4a5eec60b256289315105b225defdcb8f70d6 14-Dec-2009 Lang Hames <lhames@gmail.com> Added CalcSpillWeights to CMakeLists.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91275 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
8233240e96cc3df533f37641d17df9ae2d15af12 14-Dec-2009 Bill Wendling <isanbard@gmail.com> Whitespace changes, comment clarification. No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91274 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
85de1e5bade2f3755e47ed6fd43c92fcf99ff08b 14-Dec-2009 Bill Wendling <isanbard@gmail.com> Whitespace changes, comment clarification. No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91274 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
4f49e0f7a619ff4a98eae831896636e8fa9051a4 14-Dec-2009 Lang Hames <lhames@gmail.com> Moved spill weight calculation out of SimpleRegisterCoalescing and into its own pass: CalculateSpillWeights.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91273 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
a937f220e14826266a8f05b58a541aad669c8912 14-Dec-2009 Lang Hames <lhames@gmail.com> Moved spill weight calculation out of SimpleRegisterCoalescing and into its own pass: CalculateSpillWeights.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91273 91177308-0d34-0410-b5e6-96231b3b80d8
alcSpillWeights.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
7c29ae320a827facfbcc32b91d6d98c6b06e44ea 13-Dec-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix weird typo which leads to unallocated memory access for nodes with 4 results.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91233 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
60283f9bc9da85e032006db5e2ccc364cef89267 13-Dec-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix weird typo which leads to unallocated memory access for nodes with 4 results.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91233 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
552423de4ce3985cee3e44d2b34afc81aef5b5b4 12-Dec-2009 Dan Gohman <gohman@apple.com> Delete an unnecessary line. The VTSDNode on a SIGN_EXTEND_REG is never
a vector type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91181 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a0474a83bfa75757866c9ce361ddb8462a585882 12-Dec-2009 Dan Gohman <gohman@apple.com> Delete an unnecessary line. The VTSDNode on a SIGN_EXTEND_REG is never
a vector type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91181 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3dd8cadf857bd134ef24aebb48aa22278cedaff1 11-Dec-2009 Bill Wendling <isanbard@gmail.com> Don't try to move a MBB into the fall-through position if it's a landing pad or
branches only to a landing pad. Without this check, the compiler would go into
an infinite loop because the branch to a landing pad is an "abnormal" edge which
wasn't being taken into account.

This is the meat of that fix:

if (!PrevBB.canFallThrough() && !MBB->BranchesToLandingPad(MBB)) {

The other stuff is simplification of the "branches to a landing pad" code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91161 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineBasicBlock.cpp
c42a0b75a41144be86d40872b57850ab578969ea 11-Dec-2009 Bill Wendling <isanbard@gmail.com> Don't try to move a MBB into the fall-through position if it's a landing pad or
branches only to a landing pad. Without this check, the compiler would go into
an infinite loop because the branch to a landing pad is an "abnormal" edge which
wasn't being taken into account.

This is the meat of that fix:

if (!PrevBB.canFallThrough() && !MBB->BranchesToLandingPad(MBB)) {

The other stuff is simplification of the "branches to a landing pad" code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91161 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineBasicBlock.cpp
b9f2c6bf74e416fb21026ef9c779c6c4cdbce9d4 11-Dec-2009 Devang Patel <dpatel@apple.com> Construct CompileUnits lazily.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91159 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
d037d7a497caa4d66008723de72fb554ca0ae630 11-Dec-2009 Devang Patel <dpatel@apple.com> Construct CompileUnits lazily.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91159 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9d501bd6024424a0d85836f2e61a5fcd3f717d23 11-Dec-2009 Dan Gohman <gohman@apple.com> Implement vector widening, splitting, and scalarizing for SIGN_EXTEND_INREG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91158 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
87862e77bbf90cf1b68c9eea1f3641ad81435e38 11-Dec-2009 Dan Gohman <gohman@apple.com> Implement vector widening, splitting, and scalarizing for SIGN_EXTEND_INREG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91158 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
2c4c4dc0dc9c48f7ec593798916cab05c68ec44b 11-Dec-2009 Dan Gohman <gohman@apple.com> Fix the result type of SELECT nodes lowered from Select instructions with
aggregate return values. This fixes PR5754.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91145 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
a4f9cc4e55fa12ddff95c2e9d0091077797f0b22 11-Dec-2009 Dan Gohman <gohman@apple.com> Fix the result type of SELECT nodes lowered from Select instructions with
aggregate return values. This fixes PR5754.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91145 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuilder.cpp
7767af5f34dccb5d093cd46004f2f2687095019c 11-Dec-2009 Anton Korobeynikov <asl@math.spbu.ru> Honour setHasCalls() set from isel.
This is used in some weird cases like general dynamic TLS model.
This fixes PR5723

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91144 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
817a46454aa22b80069157a2b02717b7edfd9cbb 11-Dec-2009 Anton Korobeynikov <asl@math.spbu.ru> Honour setHasCalls() set from isel.
This is used in some weird cases like general dynamic TLS model.
This fixes PR5723

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91144 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
624ebdda54ecb7db70ffb105148e68dd34940f8e 11-Dec-2009 Bill Wendling <isanbard@gmail.com> Revert part of r91101 which was causing an infinite loop in the self-hosting
build bots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91113 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
a288b2f43a6b1a87fcd9b10c5fd46f3c65c478a0 11-Dec-2009 Bill Wendling <isanbard@gmail.com> Revert part of r91101 which was causing an infinite loop in the self-hosting
build bots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91113 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
f486334d5c3e5d686f35f5fb9594842a76596496 11-Dec-2009 Evan Cheng <evan.cheng@apple.com> Coalesce insert_subreg undef, x first to avoid phase ordering issue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91103 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
ac94863a1c090f2221ff2e21b7ee5480bd1db594 11-Dec-2009 Evan Cheng <evan.cheng@apple.com> Coalesce insert_subreg undef, x first to avoid phase ordering issue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91103 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
4d2fd87d90f53f74faab9b231809bad929ffdf28 11-Dec-2009 Bill Wendling <isanbard@gmail.com> Address comments on last patch:

- Loosen the restrictions when checking of it branches to a landing pad.
- Make the loop more efficient by checking the '.insert' return value.
- Do cheaper checks first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91101 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
64bdde2093f461f10c095d08d53dc57c6612ce69 11-Dec-2009 Bill Wendling <isanbard@gmail.com> Address comments on last patch:

- Loosen the restrictions when checking of it branches to a landing pad.
- Make the loop more efficient by checking the '.insert' return value.
- Do cheaper checks first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91101 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
573d1d59306f14c74a519b77e1d677e9a6df3a65 11-Dec-2009 Bill Wendling <isanbard@gmail.com> A machine basic block may end in an unconditional branch, however it may have
more than one successor. Normally, these extra successors are dead. However,
some of them may branch to exception handling landing pads. If we remove those
successors, then the landing pads could go away if all predecessors to it are
removed. Before, it was checking if the direct successor was the landing
pad. But it could be the result of jumping through multiple basic blocks to get
to it. If we were to only check for the existence of an EH_LABEL in the basic
block and not remove successors if it's in there, then it could stop actually
dead basic blocks from being removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91092 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
4bde1ab82d4a520dca59db1fd212d77ac667b3a8 11-Dec-2009 Bill Wendling <isanbard@gmail.com> A machine basic block may end in an unconditional branch, however it may have
more than one successor. Normally, these extra successors are dead. However,
some of them may branch to exception handling landing pads. If we remove those
successors, then the landing pads could go away if all predecessors to it are
removed. Before, it was checking if the direct successor was the landing
pad. But it could be the result of jumping through multiple basic blocks to get
to it. If we were to only check for the existence of an EH_LABEL in the basic
block and not remove successors if it's in there, then it could stop actually
dead basic blocks from being removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91092 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
6d47963bc2b99fc828e706072d94b4faab5c6703 11-Dec-2009 Devang Patel <dpatel@apple.com> If VariableDIe is not created (may be because global was optimzed away) then do not try to use the variable die.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91077 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
edb4563ceae52e67f0b5cb2f084e3e8da6eba7d3 11-Dec-2009 Devang Patel <dpatel@apple.com> If VariableDIe is not created (may be because global was optimzed away) then do not try to use the variable die.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91077 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fda100228c44e2ce87a2059d879c3da7f6cf043d 10-Dec-2009 Evan Cheng <evan.cheng@apple.com> It's not safe to coalesce a move where src and dst registers have different subregister indices. e.g.:
%reg16404:1<def> = MOV8rr %reg16412:2<kill>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91061 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
6fd78ec8a216f659ce7c0c9912bb81e29595fed9 10-Dec-2009 Evan Cheng <evan.cheng@apple.com> It's not safe to coalesce a move where src and dst registers have different subregister indices. e.g.:
%reg16404:1<def> = MOV8rr %reg16412:2<kill>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91061 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
1a8f9a8322f0de194328f3ab2cbf941504015f5f 10-Dec-2009 Devang Patel <dpatel@apple.com> Refactor code that finds context for a given die.
Create global variable DIEs after creating subprogram DIEs. This allows function level static variable's to find their context at the time of DIE creation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91055 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c366f83d89d93be557f136f1560d696b4acb6a46 10-Dec-2009 Devang Patel <dpatel@apple.com> Refactor code that finds context for a given die.
Create global variable DIEs after creating subprogram DIEs. This allows function level static variable's to find their context at the time of DIE creation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91055 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
7f139c19245027f4f367bf09db322e16ceca76f5 10-Dec-2009 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91051 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
16ced733f370b64831e40128c9871709311b728d 10-Dec-2009 Devang Patel <dpatel@apple.com> Refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91051 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
a0f793a956a6aeff1386647a714c627102bfdc88 10-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Also attempt trivial coalescing for live intervals that end in a copy.

The coalescer is supposed to clean these up, but when setting up parameters
for a function call, there may be copies to physregs. If the defining
instruction has been LICM'ed far away, the coalescer won't touch it.

The register allocation hint does not always work - when the register
allocator is backtracking, it clears the hints.

This patch is more conservative than r90502, and does not break
483.xalancbmk/i686. It still breaks the PowerPC bootstrap, so it is disabled
by default, and can be enabled with the -trivial-coalesce-ends option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91049 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
cf97036675340bc889cfe04295cda63afe9496e2 10-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Also attempt trivial coalescing for live intervals that end in a copy.

The coalescer is supposed to clean these up, but when setting up parameters
for a function call, there may be copies to physregs. If the defining
instruction has been LICM'ed far away, the coalescer won't touch it.

The register allocation hint does not always work - when the register
allocator is backtracking, it clears the hints.

This patch is more conservative than r90502, and does not break
483.xalancbmk/i686. It still breaks the PowerPC bootstrap, so it is disabled
by default, and can be enabled with the -trivial-coalesce-ends option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91049 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
fe0be137457e5a2fe51000ed2844f888e9e19b64 09-Dec-2009 Devang Patel <dpatel@apple.com> Reapply r90858, a cleanup patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90979 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
8a24114b169376901a0b9e804a5aa7eb4416a985 09-Dec-2009 Devang Patel <dpatel@apple.com> Reapply r90858, a cleanup patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90979 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
9b4ae24a6d11afa1453e2cfce2c702316ad7e093 09-Dec-2009 David Goodwin <david_goodwin@apple.com> <rdar://problem/7453528>. Track only physical registers that are valid for the target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90970 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
riticalAntiDepBreaker.cpp
ostRASchedulerList.cpp
990d2857654cb80e46d207533834be3047494830 09-Dec-2009 David Goodwin <david_goodwin@apple.com> <rdar://problem/7453528>. Track only physical registers that are valid for the target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90970 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
riticalAntiDepBreaker.cpp
ostRASchedulerList.cpp
75730ab628f309e281beab31cb081b7487579f6e 09-Dec-2009 Lang Hames <lhames@gmail.com> Added a new "splitting" spiller.

When a call is placed to spill an interval this spiller will first try to
break the interval up into its component values. Single value intervals and
intervals which have already been split (or are the result of previous splits)
are spilled by the default spiller.

Splitting intervals as described above may improve the performance of generated
code in some circumstances. This work is experimental however, and it still
miscompiles many benchmarks. It's not recommended for general use yet.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90951 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
piller.cpp
piller.h
6194569d22003fddaf1a33acdbb84d5efe76e7d7 09-Dec-2009 Lang Hames <lhames@gmail.com> Added a new "splitting" spiller.

When a call is placed to spill an interval this spiller will first try to
break the interval up into its component values. Single value intervals and
intervals which have already been split (or are the result of previous splits)
are spilled by the default spiller.

Splitting intervals as described above may improve the performance of generated
code in some circumstances. This work is experimental however, and it still
miscompiles many benchmarks. It's not recommended for general use yet.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90951 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
piller.cpp
piller.h
76ebe86e74ce108a129259fb52663edb0483da9d 09-Dec-2009 Evan Cheng <evan.cheng@apple.com> Teach InferPtrAlignment to infer GV+cst alignment and use it to simplify x86 isl lowering code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90925 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7bd6478cd6a1264f884b46f3694af3a68a6fab0a 09-Dec-2009 Evan Cheng <evan.cheng@apple.com> Teach InferPtrAlignment to infer GV+cst alignment and use it to simplify x86 isl lowering code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90925 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1a029cbee8f0bb7d1798aa474bdc46f017ba1871 09-Dec-2009 Evan Cheng <evan.cheng@apple.com> Move isConsecutiveLoad to SelectionDAG. It's not target dependent and it's primary used by selectdag passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
64fa4a9584113f63eccc1a650e7e0cc4ddbab3f6 09-Dec-2009 Evan Cheng <evan.cheng@apple.com> Move isConsecutiveLoad to SelectionDAG. It's not target dependent and it's primary used by selectdag passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
a711e2664a880bc4b941d2690371cf811167bf95 09-Dec-2009 Evan Cheng <evan.cheng@apple.com> Infer alignment for non-fixed stack object.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90919 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
de2ace1758286f8442a13532d9cd7d3c4cce47ef 09-Dec-2009 Evan Cheng <evan.cheng@apple.com> Infer alignment for non-fixed stack object.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90919 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d3caa135e4a12b56cf586dc4d2a3d89d821b2f46 09-Dec-2009 Evan Cheng <evan.cheng@apple.com> Add const qualifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90918 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7ced2e0b304e76ab746c7d9a54ad8d4930445a38 09-Dec-2009 Evan Cheng <evan.cheng@apple.com> Add const qualifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90918 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
684647dabc65cd039ddd73daf25112d1b6a98072 09-Dec-2009 Evan Cheng <evan.cheng@apple.com> Refactor InferAlignment out of DAGCombine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
f2dc5c785dea1816cbc064b58b4b6ea23c4fd7d4 09-Dec-2009 Evan Cheng <evan.cheng@apple.com> Refactor InferAlignment out of DAGCombine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
de2d3688d9711628c15ee2b8410fa3e936ca698c 09-Dec-2009 Devang Patel <dpatel@apple.com> Revert 90858 90875 and 90805 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90898 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0000fadb00cf971cd8ffb4ebe500777a84daf8f5 09-Dec-2009 Devang Patel <dpatel@apple.com> Revert 90858 90875 and 90805 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90898 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
7b294d7538f15995e446a6a2dd17965813133cc0 08-Dec-2009 Devang Patel <dpatel@apple.com> Cleanup.
There is no need to supply ModuleCU to addType() as a parameter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90858 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
a3a60c6c49e457d825bddd1d300230c9d82cc17e 08-Dec-2009 Devang Patel <dpatel@apple.com> Cleanup.
There is no need to supply ModuleCU to addType() as a parameter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90858 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
23a55d34fc5a37cc60122ac3db057177f91e2528 08-Dec-2009 Devang Patel <dpatel@apple.com> Do not try to push dead variable's debug info into namespace info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90857 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
018b66038c73bebc81f8a26b0462b85e7ccedba7 08-Dec-2009 Devang Patel <dpatel@apple.com> Do not try to push dead variable's debug info into namespace info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90857 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9688c52873170b7096ec6f7e13ddea8cb13ca6d8 08-Dec-2009 Evan Cheng <evan.cheng@apple.com> Watch out for duplicated PHI instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90816 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
3a41ddb1b98ba6f8ea8b2b65e9d9d0e53d3d4419 08-Dec-2009 Evan Cheng <evan.cheng@apple.com> Watch out for duplicated PHI instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90816 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
cb900da68f1eef3242a89e4f3f2078bbccb093b3 08-Dec-2009 Evan Cheng <evan.cheng@apple.com> Follow up to 90488. Turn a check into an assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90815 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
d8f079c25e8bcaf4d10bfa9c3f6a38cd5ac84329 08-Dec-2009 Evan Cheng <evan.cheng@apple.com> Follow up to 90488. Turn a check into an assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90815 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
641f820036ddf1823bf6b175f4bab0034749b537 07-Dec-2009 Devang Patel <dpatel@apple.com> Add support to emit debug info for c++ style namespaces.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90805 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
4063f6bcc775bb0429dea2276694c4cdc2d4dca1 07-Dec-2009 Devang Patel <dpatel@apple.com> Add support to emit debug info for c++ style namespaces.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90805 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
03cbedef57d2f8bba7823df2f17ffc29e089ba43 07-Dec-2009 Evan Cheng <evan.cheng@apple.com> Delete code accidentally left behind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90804 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
80564f761aafad4b5630d04dce6eb65499d5a01e 07-Dec-2009 Evan Cheng <evan.cheng@apple.com> Delete code accidentally left behind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90804 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
c02f3dca734ac6709bf51d5768ed7b3f97b4a9e7 07-Dec-2009 Evan Cheng <evan.cheng@apple.com> Pre-regalloc tale duplication. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90759 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
ailDuplication.cpp
75eb53584367098a5625028e22f1ff8e169d0efd 07-Dec-2009 Evan Cheng <evan.cheng@apple.com> Pre-regalloc tale duplication. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90759 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
ailDuplication.cpp
18552eb96f80811caa9f48141219ebeb2eadc5b3 07-Dec-2009 Evan Cheng <evan.cheng@apple.com> If BB is empty, insert PHI before end() instead of front().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90744 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
7e572eb37f1ddb4c9c165354f48692d4cd66affa 07-Dec-2009 Evan Cheng <evan.cheng@apple.com> If BB is empty, insert PHI before end() instead of front().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90744 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
c15c59e7601f48d83728faa47d5bf676ad084383 07-Dec-2009 Anton Korobeynikov <asl@math.spbu.ru> Truncate the arguments of llvm.frameaddress / llvm.returnaddress intrinsics from i32 to platform's largest native type

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90741 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
1c3436a67afcfaee5f972836ff1ffff2985adce1 07-Dec-2009 Anton Korobeynikov <asl@math.spbu.ru> Truncate the arguments of llvm.frameaddress / llvm.returnaddress intrinsics from i32 to platform's largest native type

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90741 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
a182b3f8ba53a7b042461fd206a0807697ae6e85 05-Dec-2009 Dan Gohman <gohman@apple.com> Remove old DBG_LABEL code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90669 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
87bad707ed0fa98a986dc4621648f96da607e81b 05-Dec-2009 Dan Gohman <gohman@apple.com> Remove old DBG_LABEL code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90669 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
955748e8b311172018ee5ab478e84b1f663d6547 05-Dec-2009 Dan Gohman <gohman@apple.com> Remove the unused DisableLegalizeTypes option and related code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90668 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
714efc63d4319b771d89a95aa7a42d400f03d8c9 05-Dec-2009 Dan Gohman <gohman@apple.com> Remove the unused DisableLegalizeTypes option and related code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90668 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
27cae32667e68db30ebfdee6fa4727696895967f 05-Dec-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r90502. It was causing the llvm-gcc bootstrap on PPC to fail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90653 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
dc492e037034e7671e3fb9ab3e041186cdc97508 05-Dec-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r90502. It was causing the llvm-gcc bootstrap on PPC to fail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90653 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
1792bc68d2991042dceaa55f508a1c6c6a43b58a 05-Dec-2009 Dan Gohman <gohman@apple.com> Don't print a space before the : between the file name and line number.
And separate the directory and file name with a '/'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90641 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b3b9821cdeb58a568080c8d49b4f9432b1135905 05-Dec-2009 Dan Gohman <gohman@apple.com> Don't print a space before the : between the file name and line number.
And separate the directory and file name with a '/'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90641 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
cfca6e367887ec0820cf5c664eec4c0714166980 05-Dec-2009 Dan Gohman <gohman@apple.com> Print newlines after printing labels for debug info, so that the output
isn't cluttered with things like "Llabel47:Llabel48: movq (%rsi), %xmm3"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90638 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
eecb9919a41dc11e805370d66cb2e43d8ef2649e 05-Dec-2009 Dan Gohman <gohman@apple.com> Print newlines after printing labels for debug info, so that the output
isn't cluttered with things like "Llabel47:Llabel48: movq (%rsi), %xmm3"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90638 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
c5b50fbff2c7d0f0e5f225da1c2f3f58299b35da 05-Dec-2009 Dan Gohman <gohman@apple.com> Don't blindly set the debug location for PHI node copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90637 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
381ca5572e3c37824e1c5be0fa02f7b5bdd4a1ce 05-Dec-2009 Dan Gohman <gohman@apple.com> Don't blindly set the debug location for PHI node copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90637 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
581cdf90ade3d318dedde0c645d478ffede09e0d 05-Dec-2009 Dan Gohman <gohman@apple.com> Make TargetSelectInstruction protected and called from FastISel.cpp
instead of SelectionDAGISel.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
6e3ff375474c4fd78feb0b8463eb273a23cb4404 05-Dec-2009 Dan Gohman <gohman@apple.com> Make TargetSelectInstruction protected and called from FastISel.cpp
instead of SelectionDAGISel.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
01696988ff3c98744cce105372803d4ed903f988 05-Dec-2009 Dan Gohman <gohman@apple.com> Remove the target hook TargetInstrInfo::BlockHasNoFallThrough in favor of
MachineBasicBlock::canFallThrough(), which is target-independent and more
thorough.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90634 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineVerifier.cpp
864e2efce2cb5d02e376933933d96074723fe77c 05-Dec-2009 Dan Gohman <gohman@apple.com> Remove the target hook TargetInstrInfo::BlockHasNoFallThrough in favor of
MachineBasicBlock::canFallThrough(), which is target-independent and more
thorough.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90634 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineVerifier.cpp
bc18967dc5cbda59461d704cc1543b4fbd57f592 05-Dec-2009 Dan Gohman <gohman@apple.com> Simplify this code: don't call AnalyzeBranch before doing simpler checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90633 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
735985fbbe3a1752b02163af0ec3ab6e6a7f0948 05-Dec-2009 Dan Gohman <gohman@apple.com> Simplify this code: don't call AnalyzeBranch before doing simpler checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90633 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
1ca1ac3967582cd4c02a12054b927adc1e111e52 05-Dec-2009 Dan Gohman <gohman@apple.com> The debug information for an LLVM Instruction applies to that Instruction
and that Instruction only. Implement this by setting the "current debug position"
back to Unknown after processing each instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
07f111e7b746747cade8371eeaf8c613058cb3a0 05-Dec-2009 Dan Gohman <gohman@apple.com> The debug information for an LLVM Instruction applies to that Instruction
and that Instruction only. Implement this by setting the "current debug position"
back to Unknown after processing each instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4698bab134cd68e41ae098168d9fd78e64b69904 05-Dec-2009 Dan Gohman <gohman@apple.com> Fix this code to use DIScope instead of DICompileUnit, as in r90181.
Don't print "SrcLine"; just print the filename and line number, which
is obvious enough and more informative.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90631 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3b9bc04eda3401618b4fa2318f41b4207d72dece 05-Dec-2009 Dan Gohman <gohman@apple.com> Fix this code to use DIScope instead of DICompileUnit, as in r90181.
Don't print "SrcLine"; just print the filename and line number, which
is obvious enough and more informative.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90631 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ef92a646d90a7dc618598e7b836638f96238f245 05-Dec-2009 Dan Gohman <gohman@apple.com> Don't print the debug directory; it's often long and uninteresting. Omit
the column number if it is not known. Handle the case of a missing filename
better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90630 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
4b808b014b0cd25261f93e1885ffdbd0247d8634 05-Dec-2009 Dan Gohman <gohman@apple.com> Don't print the debug directory; it's often long and uninteresting. Omit
the column number if it is not known. Handle the case of a missing filename
better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90630 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e26680ba1f829b15338f0f128855432c5bfd7210 05-Dec-2009 Dan Gohman <gohman@apple.com> Print a space between the comment character and the text.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90621 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
fcafe44f564f61016dd2f9367d93c91dfda74c96 05-Dec-2009 Dan Gohman <gohman@apple.com> Print a space between the comment character and the text.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90621 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d3df6974d831cc29b86026ce3ee3467eb489ea7f 05-Dec-2009 Devang Patel <dpatel@apple.com> In TAG_subrange_type, uppder bound is zero indexed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90617 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d55224c25e674c552df5b73958cfce3bc39e960f 05-Dec-2009 Devang Patel <dpatel@apple.com> In TAG_subrange_type, uppder bound is zero indexed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90617 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
11a046f10f723cac2c598dd0a626383c43aecba2 04-Dec-2009 David Greene <greened@obbligato.org> Use new interfaces to print spill size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90611 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f7ea2a534ba4151e091e270c5b908167ab4bba4d 04-Dec-2009 David Greene <greened@obbligato.org> Use new interfaces to print spill size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90611 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
99298f61d3a280ade30c73faee24fd72e0cdc228 04-Dec-2009 Evan Cheng <evan.cheng@apple.com> Handle recursive PHI's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90575 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
11572babb12d169965c63c47aab9c9fad354e5df 04-Dec-2009 Evan Cheng <evan.cheng@apple.com> Handle recursive PHI's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90575 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
371fcef75743c634263720bcd3a61a1615b90163 04-Dec-2009 Evan Cheng <evan.cheng@apple.com> Add a pre-regalloc tail duplication pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90567 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ailDuplication.cpp
79fc6f44b64f47b8a7d5e298c9f3c596b89fa88d 04-Dec-2009 Evan Cheng <evan.cheng@apple.com> Add a pre-regalloc tail duplication pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90567 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ailDuplication.cpp
6941493d76d1aaaffb2d5d505eef249f9145d07b 04-Dec-2009 Evan Cheng <evan.cheng@apple.com> Don't try to be cute with undef optimization here. Let ProcessImplicitDefs handle it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90566 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
9d0f8bba17201cb26f5d642340eed66dedaec695 04-Dec-2009 Evan Cheng <evan.cheng@apple.com> Don't try to be cute with undef optimization here. Let ProcessImplicitDefs handle it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90566 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
c4c88cfd8ee8bff54a68d0642d671ea778782e6d 04-Dec-2009 Duncan Sands <baldrick@free.fr> Add note about a subtle bug in this code. Does not effect the main
architectures that LLVM targets, because they don't use this code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90564 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
36236b76a45be2a50315d1926c49bd3c63786b49 04-Dec-2009 Duncan Sands <baldrick@free.fr> Add note about a subtle bug in this code. Does not effect the main
architectures that LLVM targets, because they don't use this code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90564 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
88d11c3a214da464deb05eb17922d633e5af77a1 04-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Also attempt trivial coalescing for live intervals that end in a copy.

The coalescer is supposed to clean these up, but when setting up parameters
for a function call, there may be copies to physregs. If the defining
instruction has been LICM'ed far away, the coalescer won't touch it.

The register allocation hint does not always work - when the register
allocator is backtracking, it clears the hints.

This patch takes care of a few more cases that r90163 missed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90502 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
6b74e505be1016223e090a6c806f7caa3165a146 04-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Also attempt trivial coalescing for live intervals that end in a copy.

The coalescer is supposed to clean these up, but when setting up parameters
for a function call, there may be copies to physregs. If the defining
instruction has been LICM'ed far away, the coalescer won't touch it.

The register allocation hint does not always work - when the register
allocator is backtracking, it clears the hints.

This patch takes care of a few more cases that r90163 missed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90502 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
723be602ecdfde30a50c3afe1780575fdf8f0f56 04-Dec-2009 Evan Cheng <evan.cheng@apple.com> - If the reaching definition is an undef and the use is a PHI, add the implicit_def to the end of the source block.
- When reaching value is replaced with another, update the cache as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90501 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
2e65c29ac64e7b36603d1a1de3d01cdfd2e61e23 04-Dec-2009 Evan Cheng <evan.cheng@apple.com> - If the reaching definition is an undef and the use is a PHI, add the implicit_def to the end of the source block.
- When reaching value is replaced with another, update the cache as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90501 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
4285ddbfd5fd218038058a6fdb2366ae3247a99d 04-Dec-2009 Devang Patel <dpatel@apple.com> Insert composite type DIE into the map before processing type fields. This allows fields to find their context DIE from the map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90498 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b3235d22e94c21ef00539d83db4d6d65bada48f5 04-Dec-2009 Devang Patel <dpatel@apple.com> Insert composite type DIE into the map before processing type fields. This allows fields to find their context DIE from the map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90498 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
21d9a013924f79957deaa9dac748d722cc40b40a 03-Dec-2009 Evan Cheng <evan.cheng@apple.com> Handle undef values properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90489 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
01306cad01978823716944cd7517446755a6c72d 03-Dec-2009 Evan Cheng <evan.cheng@apple.com> Handle undef values properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90489 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
886ea36230307f67689a2f318adf47ec80dd8be4 03-Dec-2009 Evan Cheng <evan.cheng@apple.com> Watch out for PHI instruction with no source operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90488 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9aed9396a672f50541dc77a4662bb882a0fb1080 03-Dec-2009 Evan Cheng <evan.cheng@apple.com> Watch out for PHI instruction with no source operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90488 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b956e74994c0d0e41f2862e79d96ec699de782de 03-Dec-2009 Duncan Sands <baldrick@free.fr> Fix ExpandShiftWithUnknownAmountBit, which was completely bogus.
Pointed out by Javier Martinez (who also provided a patch). Since
this logic is not used on (for example) x86, I guess nobody noticed.
Tested by generating SHL, SRL, SRA on various choices of i64 for all
possible shift amounts, and comparing with gcc. Since I did this on
x86-32, I had to force the use of ExpandShiftWithUnknownAmountBit.
What I'm saying here is that I don't have a testcase I can add to the
repository.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
9993b88f06fd54c0be31d35f0970ada70a4c0439 03-Dec-2009 Duncan Sands <baldrick@free.fr> Fix ExpandShiftWithUnknownAmountBit, which was completely bogus.
Pointed out by Javier Martinez (who also provided a patch). Since
this logic is not used on (for example) x86, I guess nobody noticed.
Tested by generating SHL, SRL, SRA on various choices of i64 for all
possible shift amounts, and comparing with gcc. Since I did this on
x86-32, I had to force the use of ExpandShiftWithUnknownAmountBit.
What I'm saying here is that I don't have a testcase I can add to the
repository.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
d0afa909ad8d1b108b4ad6925ca6b3a5de2817e2 03-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up some loop logic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90481 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f4811a96941433fc3828869d76dfeba5ec5decd3 03-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up some loop logic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90481 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
188c85dc4247e23ddaa63e055972253de3901fdb 03-Dec-2009 Devang Patel <dpatel@apple.com> Add support to emit debug info for virtual functions and virtual base classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90474 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
5d11eb0ed54116b7f33507999617661fb2ae99df 03-Dec-2009 Devang Patel <dpatel@apple.com> Add support to emit debug info for virtual functions and virtual base classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90474 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
e83c9b214205978873745b7368df84cf9f117996 03-Dec-2009 Evan Cheng <evan.cheng@apple.com> Teach tail duplication to update SSA form. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90432 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
111e7629cc84dad39d6b546871cdec3740b22781 03-Dec-2009 Evan Cheng <evan.cheng@apple.com> Teach tail duplication to update SSA form. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90432 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
ea5d5940df6894c2efc4c6ac76700922df97d8b2 03-Dec-2009 Nate Begeman <natebegeman@mac.com> Don't pull vector sext through both hands of a logical operation, since doing so prevents the fusion of vector sext and setcc into vsetcc.
Add a testcase for the above transformation.
Fix a bogus use of APInt noticed while tracking this down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90423 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
93e0ed31c54cea6bf3f1f20244bd56a4770b2780 03-Dec-2009 Nate Begeman <natebegeman@mac.com> Don't pull vector sext through both hands of a logical operation, since doing so prevents the fusion of vector sext and setcc into vsetcc.
Add a testcase for the above transformation.
Fix a bogus use of APInt noticed while tracking this down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90423 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1ac6732b47ec36df1b6d990a62d21da02fddee2b 03-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't call getValueType() on a null SDValue

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9f0d4e631d73659e8a94495b9a6d5ecbb6ad68a1 03-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't call getValueType() on a null SDValue

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
615cc8769c570cab6cb910255c0fab10256cf272 03-Dec-2009 Evan Cheng <evan.cheng@apple.com> Fill out codegen SSA updater. It's not yet tested.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90395 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineSSAUpdater.cpp
229694f0ee630ceabe96a8bd48952f6740f928b2 03-Dec-2009 Evan Cheng <evan.cheng@apple.com> Fill out codegen SSA updater. It's not yet tested.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90395 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineSSAUpdater.cpp
26f2fb73faa4634ef52b931f6581f127c79bc2f2 03-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't hang on to pointers or references after vector::push_back.

The MO reference to a MachineOperand can be invalidated by
MachineInstr::addOperand. Don't even use it for debugging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90381 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
15d75d9f11f877bf3716257013b563e67341b0ed 03-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't hang on to pointers or references after vector::push_back.

The MO reference to a MachineOperand can be invalidated by
MachineInstr::addOperand. Don't even use it for debugging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90381 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
c1df879dbd07bb4d63e7cc6358ed73263c631c12 03-Dec-2009 Devang Patel <dpatel@apple.com> Emit method definition DIE at module level (even for methods with inlined functino body at soure level) so that the debugger can invoke it. This fixes many test failures in gdb test suite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90375 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1d5cc1db597a1a0f760b6d600819e4aef5aea26c 03-Dec-2009 Devang Patel <dpatel@apple.com> Emit method definition DIE at module level (even for methods with inlined functino body at soure level) so that the debugger can invoke it. This fixes many test failures in gdb test suite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90375 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
b44b429549bc4c4f950d56d4f6fa0ba486856cc6 03-Dec-2009 Chris Lattner <sabre@nondot.org> improve portability to avoid conflicting with std::next in c++'0x.
Patch by Howard Hinnant!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90365 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
odePlacementOpt.cpp
owerSubregs.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineLoopInfo.cpp
HIElimination.cpp
reAllocSplitting.cpp
rologEpilogInserter.cpp
egisterScavenging.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
piller.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
7896c9f436a4eda5ec15e882a7505ba482a2fcd0 03-Dec-2009 Chris Lattner <sabre@nondot.org> improve portability to avoid conflicting with std::next in c++'0x.
Patch by Howard Hinnant!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90365 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
odePlacementOpt.cpp
owerSubregs.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineLoopInfo.cpp
HIElimination.cpp
reAllocSplitting.cpp
rologEpilogInserter.cpp
egisterScavenging.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
piller.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
33221d9fcccbb6f41d5664fd0b89c9e6f71a0875 02-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Fix CMake makefiles

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90354 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
e731fa2957604b0a5d3964d927130ec58e457abe 02-Dec-2009 Douglas Gregor <dgregor@apple.com> Fix CMake makefiles

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90354 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
023a88ee8ad038b8e7686187cee877299cdefbca 02-Dec-2009 Evan Cheng <evan.cheng@apple.com> Skeleton for MachineInstr level SSA updater.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90353 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
651ea5376c57c061ebe183375974e7333d2e0ec3 02-Dec-2009 Evan Cheng <evan.cheng@apple.com> Skeleton for MachineInstr level SSA updater.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90353 91177308-0d34-0410-b5e6-96231b3b80d8
achineSSAUpdater.cpp
dee452ff502feea9a09247af651d25107748bc0e 02-Dec-2009 Jim Grosbach <grosbach@apple.com> Add MaxStackAlignment.cpp to CMake

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90337 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
b51d3f9c8dc0ed308f3b8743ea2efdf3a3a2c93d 02-Dec-2009 Jim Grosbach <grosbach@apple.com> Add MaxStackAlignment.cpp to CMake

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90337 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
4d20ee6d9a35d9498ad170c55ba714b346237a55 02-Dec-2009 Jim Grosbach <grosbach@apple.com> Factor the stack alignment calculations out into a target independent pass.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90336 91177308-0d34-0410-b5e6-96231b3b80d8
axStackAlignment.cpp
e27d205d5d4d53cceabcd6325533fbdf9c0cee42 02-Dec-2009 Jim Grosbach <grosbach@apple.com> Factor the stack alignment calculations out into a target independent pass.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90336 91177308-0d34-0410-b5e6-96231b3b80d8
axStackAlignment.cpp
5eb5f091ab381b612c271a1683e6e0870394d0c4 02-Dec-2009 Bob Wilson <bob.wilson@apple.com> Don't count PHI instructions toward the limit for tail duplicating a block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90326 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
f1e01dcc94fde6b1e184dc799df7145aed34a18b 02-Dec-2009 Bob Wilson <bob.wilson@apple.com> Don't count PHI instructions toward the limit for tail duplicating a block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90326 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
df0f215750690b1c58f76b72f751d5a5c4da46d8 02-Dec-2009 Devang Patel <dpatel@apple.com> Clarify that DIEString does not keep a copy of the string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90318 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
69f57b1f41c818c5a89c40fd9a4bdca6a76ea934 02-Dec-2009 Devang Patel <dpatel@apple.com> Clarify that DIEString does not keep a copy of the string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90318 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
920ffac27e66522138cddf6aac63f4965c8103dd 02-Dec-2009 Devang Patel <dpatel@apple.com> Reuse existing subprogram DIE.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90281 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7d0750a10fac5c00f00b465d8633d00fe76d9a2c 02-Dec-2009 Devang Patel <dpatel@apple.com> Reuse existing subprogram DIE.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90281 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
578f3231d6c9ba6d6bd8c683033748cf4d68b623 01-Dec-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5391: support early clobber physical register def tied with a use (ewwww)
- A valno should be set HasRedefByEC if there is an early clobber def in the middle of its live ranges. It should not be set if the def of the valno is defined by an early clobber.
- If a physical register def is tied to an use and it's an early clobber, it just means the HasRedefByEC is set since it's still one continuous live range.
- Add a couple of missing checks for HasRedefByEC in the coalescer. In general, it should not coalesce a vr with a physical register if the physical register has a early clobber def somewhere. This is overly conservative but that's the price for using such a nasty inline asm "feature".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90269 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
9836a26da3acc15deec878cd6ba21a6b5f2e753b 01-Dec-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5391: support early clobber physical register def tied with a use (ewwww)
- A valno should be set HasRedefByEC if there is an early clobber def in the middle of its live ranges. It should not be set if the def of the valno is defined by an early clobber.
- If a physical register def is tied to an use and it's an early clobber, it just means the HasRedefByEC is set since it's still one continuous live range.
- Add a couple of missing checks for HasRedefByEC in the coalescer. In general, it should not coalesce a vr with a physical register if the physical register has a early clobber def somewhere. This is overly conservative but that's the price for using such a nasty inline asm "feature".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90269 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
69be7878c045ac40c9c847fe8d04f44e51663c04 01-Dec-2009 Dan Gohman <gohman@apple.com> Add edge source labels to SelectionDAG graphs, now that the graph printing
framework omits differentiated edge sources in the case where the labels
are empty strings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
5b69fe767ca0786ecb50e703f2da8ea09de5da7c 01-Dec-2009 Dan Gohman <gohman@apple.com> Add edge source labels to SelectionDAG graphs, now that the graph printing
framework omits differentiated edge sources in the case where the labels
are empty strings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
8cb3747a8bb51ba03b38cf87e606e2bb33032d6e 01-Dec-2009 Dan Gohman <gohman@apple.com> Minor cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90253 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
0baf2a302fe6e130756bf8b3da831547f0b87190 01-Dec-2009 Dan Gohman <gohman@apple.com> Minor cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90253 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
0bf95848e06bdfa04ec8a28cc22730ae139b9786 01-Dec-2009 Dan Gohman <gohman@apple.com> Trim an unnecessary #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90252 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
241c59578676845143ea32ee6a2e59f5f196b39f 01-Dec-2009 Dan Gohman <gohman@apple.com> Trim an unnecessary #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90252 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
67533ab25e3fd9b66779dee173f5cb3cfb93cb99 01-Dec-2009 Devang Patel <dpatel@apple.com> Clear function specific containers while processing end of a function, even if DW_TAG_subprogram for current function is not found.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90247 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c09ddc1c792b35a20b2aeaa708fd00a76638805c 01-Dec-2009 Devang Patel <dpatel@apple.com> Clear function specific containers while processing end of a function, even if DW_TAG_subprogram for current function is not found.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90247 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9a929cf5ff12aac2838d89389e1a90fceb731437 01-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Move PHIElimination::isLiveOut method to LiveVariables.

We want LiveVariables clients to use methods rather than accessing the
getVarInfo data structure directly. That way it will be possible to change the
LiveVariables representation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90240 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
HIElimination.h
8f72235a77e7ac262471936ea0ad2a3467d18871 01-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Move PHIElimination::isLiveOut method to LiveVariables.

We want LiveVariables clients to use methods rather than accessing the
getVarInfo data structure directly. That way it will be possible to change the
LiveVariables representation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90240 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
HIElimination.h
c79abe2ba9e6bd0909b9a00eddb54a8d500ec11c 01-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Use CFG connectedness as a secondary sort key when deciding the order of copy coalescing.

This means that well connected blocks are copy coalesced before the less connected blocks. Connected blocks are more difficult to
coalesce because intervals are more complicated, so handling them first gives a greater chance of success.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90194 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
579d6d9fe33179f47dec4fb68e82da074a586372 01-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Use CFG connectedness as a secondary sort key when deciding the order of copy coalescing.

This means that well connected blocks are copy coalesced before the less connected blocks. Connected blocks are more difficult to
coalesce because intervals are more complicated, so handling them first gives a greater chance of success.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90194 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
af20e7cfb5d44c7a0caad3a152978fcca1f4b438 01-Dec-2009 Dan Gohman <gohman@apple.com> Devang pointed out that this code should use DIScope instead of
DICompileUnit. This code now prints debug filenames successfully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90181 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
261a7d983d38edd2f1ee6ff2cd0c12a2c2a8b044 01-Dec-2009 Dan Gohman <gohman@apple.com> Devang pointed out that this code should use DIScope instead of
DICompileUnit. This code now prints debug filenames successfully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90181 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1e99614c66e92b4f6c26531b8c84e0f42a35c902 01-Dec-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5614: parts of a physical register def may be killed the rest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90180 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
a4025df42d2393da7041cd11e48a3d44b0ae2bb1 01-Dec-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5614: parts of a physical register def may be killed the rest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90180 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
76b806763b89ea64337bd967614662a72f237191 01-Dec-2009 Devang Patel <dpatel@apple.com> If pointer type has a name then do not ignore the name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90172 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
deea564e53fd1a582f2621ffb07de606f8464881 01-Dec-2009 Devang Patel <dpatel@apple.com> If pointer type has a name then do not ignore the name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90172 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c6e14f94aae2689841a94bc7aa059a8771e53867 30-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> New virtual registers created for spill intervals should inherit allocation hints from the original register.

This helps us avoid silly copies when rematting values that are copied to a physical register:

leaq _.str44(%rip), %rcx
movq %rcx, %rsi
call _strcmp

becomes:

leaq _.str44(%rip), %rsi
call _strcmp

The coalescer will not touch the movq because that would tie down the physical register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90163 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ce7a663140e6e67cf5ef7091e076e8541300c15a 30-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> New virtual registers created for spill intervals should inherit allocation hints from the original register.

This helps us avoid silly copies when rematting values that are copied to a physical register:

leaq _.str44(%rip), %rcx
movq %rcx, %rsi
call _strcmp

becomes:

leaq _.str44(%rip), %rsi
call _strcmp

The coalescer will not touch the movq because that would tie down the physical register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90163 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3d0daa24dde6984c75c7fe1933653429169418f4 30-Nov-2009 Bob Wilson <bob.wilson@apple.com> Reprioritize tests for tail duplication to be aggressive about indirect
branches even when optimizing for code size. Unless we find evidence to the
contrary in the future, the special treatment for indirect branches does not
have a significant effect on code size, and performance still matters with -Os.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90147 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
3858225afc2a7f1027dce34dc72de5686b636c2d 30-Nov-2009 Bob Wilson <bob.wilson@apple.com> Reprioritize tests for tail duplication to be aggressive about indirect
branches even when optimizing for code size. Unless we find evidence to the
contrary in the future, the special treatment for indirect branches does not
have a significant effect on code size, and performance still matters with -Os.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90147 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
90868102bf6144cae08570ddcb96099d9d63c06d 30-Nov-2009 Bob Wilson <bob.wilson@apple.com> Remove isProfitableToDuplicateIndirectBranch target hook. It is profitable
for all the processors where I have tried it, and even when it might not help
performance, the cost is quite low. The opportunities for duplicating
indirect branches are limited by other factors so code size does not change
much due to tail duplicating indirect branches aggressively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90144 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
15217e63bce6c161b355b63d6496c7c327d15817 30-Nov-2009 Bob Wilson <bob.wilson@apple.com> Remove isProfitableToDuplicateIndirectBranch target hook. It is profitable
for all the processors where I have tried it, and even when it might not help
performance, the cost is quite low. The opportunities for duplicating
indirect branches are limited by other factors so code size does not change
much due to tail duplicating indirect branches aggressively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90144 91177308-0d34-0410-b5e6-96231b3b80d8
ailDuplication.cpp
bf4ea99c2887e55d18206e093bccdc43636c9b1b 30-Nov-2009 Tobias Grosser <grosser@fim.uni-passau.de> Fix last DOTGraphTraits problems in CompilationGraph.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90136 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
ab01069fcdb1fed655cf0ca851400a104e4b46d1 30-Nov-2009 Tobias Grosser <grosser@fim.uni-passau.de> Fix last DOTGraphTraits problems in CompilationGraph.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90136 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
810b18c4cc8b022f79f0dd886cc9092a3e4f6d2c 30-Nov-2009 Tobias Grosser <grosser@fim.uni-passau.de> Remove ShortNames from getNodeLabel in DOTGraphTraits

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90134 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGPrinter.cpp
56f4ef3232850e29c4635d0923910acce8887bd0 30-Nov-2009 Tobias Grosser <grosser@fim.uni-passau.de> Remove ShortNames from getNodeLabel in DOTGraphTraits

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90134 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGPrinter.cpp
e2c3aec2cf16ee6ea233d3ec13a83e71e21523b9 30-Nov-2009 Tobias Grosser <grosser@fim.uni-passau.de> Instantiate DefaultDOTGraphTraits

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90133 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGPrinter.cpp
a10d598602308549d87d2c5d9848f5a72fda2b43 30-Nov-2009 Tobias Grosser <grosser@fim.uni-passau.de> Instantiate DefaultDOTGraphTraits

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90133 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGPrinter.cpp
c707f3ff7cdb427155b7ca707a3efd2c8b34bcd1 30-Nov-2009 Mon P Wang <wangmp@apple.com> Added support to allow clients to custom widen. For X86, custom widen vectors for
divide/remainder since these operations can trap by unroll them and adding undefs
for the resulting vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90108 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
cd6e725f21852e2f8cdf5fd0e65eb42c224776f8 30-Nov-2009 Mon P Wang <wangmp@apple.com> Added support to allow clients to custom widen. For X86, custom widen vectors for
divide/remainder since these operations can trap by unroll them and adding undefs
for the resulting vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90108 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
2204a60625dec63703edbdebe4cf5f90460db2e5 26-Nov-2009 Bob Wilson <bob.wilson@apple.com> Rename new TailDuplicationPass to avoid name conflict with the old one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89968 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ailDuplication.cpp
2d521e51acd5f1a0100cbbe4c611a35c978c2456 26-Nov-2009 Bob Wilson <bob.wilson@apple.com> Rename new TailDuplicationPass to avoid name conflict with the old one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89968 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ailDuplication.cpp
1b563ac33aadc7fa11ddc7e28b7e2e067436fa00 26-Nov-2009 Evan Cheng <evan.cheng@apple.com> When all defs of a vr are implicit_def, delete all of the defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89905 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
40ea0e22b2380236c137e5a4b17d2eae38286a5e 26-Nov-2009 Evan Cheng <evan.cheng@apple.com> When all defs of a vr are implicit_def, delete all of the defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89905 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
810ced7daebe78a8d84b94fac07e320a02cecb71 26-Nov-2009 Bob Wilson <bob.wilson@apple.com> Split tail duplication into a separate pass. This is needed to avoid
running tail duplication when doing branch folding for if-conversion, and
we also want to be able to run tail duplication earlier to fix some
reg alloc problems. Move the CanFallThrough function from BranchFolding
to MachineBasicBlock so that it can be shared by TailDuplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89904 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
MakeLists.txt
LVMTargetMachine.cpp
achineBasicBlock.cpp
ailDuplication.cpp
15acadde5f87703da5f36721a19c09a7e3f97f53 26-Nov-2009 Bob Wilson <bob.wilson@apple.com> Split tail duplication into a separate pass. This is needed to avoid
running tail duplication when doing branch folding for if-conversion, and
we also want to be able to run tail duplication earlier to fix some
reg alloc problems. Move the CanFallThrough function from BranchFolding
to MachineBasicBlock so that it can be shared by TailDuplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89904 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
MakeLists.txt
LVMTargetMachine.cpp
achineBasicBlock.cpp
ailDuplication.cpp
ae719525ee29c8611887e5fe0153b81d1f0b56b7 25-Nov-2009 Evan Cheng <evan.cheng@apple.com> ProcessImplicitDefs should watch out for invalidated iterator and extra implicit operands on copies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89880 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
e7c9195706ce17b5016f74005ecab5523519deea 25-Nov-2009 Evan Cheng <evan.cheng@apple.com> ProcessImplicitDefs should watch out for invalidated iterator and extra implicit operands on copies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89880 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
62b818848c2415d32c82957322cba81948b7f409 25-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Avoid some possibly unsafe uses of StringRef::data().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89873 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1c3451fc99feb68dc401049568788547a0b7844d 25-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Avoid some possibly unsafe uses of StringRef::data().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89873 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7f75bbe16505f364edb9e7bc96ed6e44694e8723 25-Nov-2009 Devang Patel <dpatel@apple.com> Use StringRef (again) in DebugInfo interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89866 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
65dbc909f5377947026a41f29420bb8112bdf611 25-Nov-2009 Devang Patel <dpatel@apple.com> Use StringRef (again) in DebugInfo interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89866 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
68722a84a011e2e2a8be3b3c6a09a2bbb477d390 25-Nov-2009 Bob Wilson <bob.wilson@apple.com> Refactor target hook for tail duplication as requested by Chris.
Make tail duplication of indirect branches much more aggressive (for targets
that indicate that it is profitable), based on further experience with
this transformation. I compiled 3 large applications with and without
this more aggressive tail duplication and measured minimal changes in code
size. ("size" on Darwin seems to round the text size up to the nearest
page boundary, so I can only say that any code size increase was less than
one 4k page.) Radar 7421267.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89814 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
f8c4cfb7cc330234112e1378dac6424d9956add0 25-Nov-2009 Bob Wilson <bob.wilson@apple.com> Refactor target hook for tail duplication as requested by Chris.
Make tail duplication of indirect branches much more aggressive (for targets
that indicate that it is profitable), based on further experience with
this transformation. I compiled 3 large applications with and without
this more aggressive tail duplication and measured minimal changes in code
size. ("size" on Darwin seems to round the text size up to the nearest
page boundary, so I can only say that any code size increase was less than
one 4k page.) Radar 7421267.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89814 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
c10337d20080fca89c19acd69ae11f4a28e61cc8 24-Nov-2009 Devang Patel <dpatel@apple.com> Use StringRef instead of std::string in DIEString.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89793 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
e9a059714e3dccd6c870f19c3839f3352ac823ed 24-Nov-2009 Devang Patel <dpatel@apple.com> Use StringRef instead of std::string in DIEString.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89793 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
815c35cdb070cb876d01f3837f56b4d73b87f036 24-Nov-2009 Devang Patel <dpatel@apple.com> Remove DebugLabelFolder pass. It is not used by dwarf writer anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89790 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineModuleInfo.cpp
f5a7a2c84a1951151fee4e7e34d1d94ef0c31fa8 24-Nov-2009 Devang Patel <dpatel@apple.com> Remove DebugLabelFolder pass. It is not used by dwarf writer anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89790 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineModuleInfo.cpp
6f2bdd58f2cee41a5de62fe5515642d0371fecf8 24-Nov-2009 Devang Patel <dpatel@apple.com> Swith to pubtypes section before emitting pub types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89787 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f3a0376a56f7b299804c0b0a3e5d991312cedef1 24-Nov-2009 Devang Patel <dpatel@apple.com> Swith to pubtypes section before emitting pub types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89787 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ec13b4fffb1742d8acd6e07a388b1e54dfd7c1c9 24-Nov-2009 Devang Patel <dpatel@apple.com> Emit pubtypes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89725 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
193f720f118f52eb05de172d936a440f335c1469 24-Nov-2009 Devang Patel <dpatel@apple.com> Emit pubtypes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89725 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
115a53c6df56d2befe8c19e602e31ffc2515b93a 24-Nov-2009 David Goodwin <david_goodwin@apple.com> <rdar://problem/6721894>. Allow multiple registers to be renamed together (super and sub) if necessary to break an anti-dependence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89722 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
2601329106c6a4542175f48b876c3497fb48ed0b 24-Nov-2009 David Goodwin <david_goodwin@apple.com> <rdar://problem/6721894>. Allow multiple registers to be renamed together (super and sub) if necessary to break an anti-dependence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89722 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
c61b56c8b54d3abdf197464c00ea9b3613aa5889 24-Nov-2009 Dan Gohman <gohman@apple.com> Remove ISD::DEBUG_LOC and ISD::DBG_LABEL, which are no longer used.
Note that "hasDotLocAndDotFile"-style debug info was already broken;
people wanting this functionality should implement it in the
AsmPrinter/DwarfWriter code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89711 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
735afe14eea8049bf69210ce8a3512e391fc643f 24-Nov-2009 Dan Gohman <gohman@apple.com> Remove ISD::DEBUG_LOC and ISD::DBG_LABEL, which are no longer used.
Note that "hasDotLocAndDotFile"-style debug info was already broken;
people wanting this functionality should implement it in the
AsmPrinter/DwarfWriter code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89711 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
8d34f97d8b78e04cad93ab4fb27f19963c0b2f70 23-Nov-2009 Dan Gohman <gohman@apple.com> Simplify this code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89702 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
277207e6cbc217a626ef7462487906d5127bf7b0 23-Nov-2009 Dan Gohman <gohman@apple.com> Simplify this code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89702 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3a271d8ee93e2de1277abaa40fe3614c458905be 23-Nov-2009 Dan Gohman <gohman@apple.com> Print the debug info line and column in MachineInstr::print even when there's
no filename. This situation is apparently fairly common right now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89701 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
75ae593a2750f9f7995980c3a03c0d972985e394 23-Nov-2009 Dan Gohman <gohman@apple.com> Print the debug info line and column in MachineInstr::print even when there's
no filename. This situation is apparently fairly common right now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89701 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b125c6e04f2a851b4ed6a361a705816d0374ce4b 23-Nov-2009 Devang Patel <dpatel@apple.com> Revert r89487.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89686 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
05f6fa874e8d187483a836ccb4906bb3807bb305 23-Nov-2009 Devang Patel <dpatel@apple.com> Revert r89487.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89686 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7d3b3e40e16069bbc07c2acb20594cfffe406572 23-Nov-2009 Dan Gohman <gohman@apple.com> Move CopyCatchInfo into FunctionLoweringInfo.cpp too, for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89683 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGISel.cpp
5fca8b1c8dc0b9efb0a9822222a6505d1eea6bdd 23-Nov-2009 Dan Gohman <gohman@apple.com> Move CopyCatchInfo into FunctionLoweringInfo.cpp too, for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89683 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGISel.cpp
7ec2051989d074e3ffef5fe74fed228d61b5f428 23-Nov-2009 Dan Gohman <gohman@apple.com> Rename SelectionDAGLowering to SelectionDAGBuilder, and rename
SelectionDAGBuild.cpp to SelectionDAGBuilder.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89681 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
2048b85c7c2c987874b9423e682ec8e60b60574b 23-Nov-2009 Dan Gohman <gohman@apple.com> Rename SelectionDAGLowering to SelectionDAGBuilder, and rename
SelectionDAGBuild.cpp to SelectionDAGBuilder.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89681 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGBuilder.cpp
electionDAG/SelectionDAGBuilder.h
electionDAG/SelectionDAGISel.cpp
78105759c1482cdea69c13d7bedcd1867c40efad 23-Nov-2009 Dan Gohman <gohman@apple.com> Move RegsForValue to an anonymous namespace, since it is only used
in this file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89675 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f9bd450a1074ad7b08e691b08388f0e39d5b06cc 23-Nov-2009 Dan Gohman <gohman@apple.com> Move RegsForValue to an anonymous namespace, since it is only used
in this file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89675 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
c073abf312a796da1dd5c567aa92affe77f62e1b 23-Nov-2009 Dan Gohman <gohman@apple.com> Move some more code out of SelectionDAGBuild.cpp and into
FunctionLoweringInfo.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89674 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
66336edf823f8d64d77dc5ab2bbefc21ef82f6ec 23-Nov-2009 Dan Gohman <gohman@apple.com> Move some more code out of SelectionDAGBuild.cpp and into
FunctionLoweringInfo.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89674 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
ead611c1b544ed84281bfb255c2677ad58d63494 23-Nov-2009 Ted Kremenek <kremenek@apple.com> Update CMake file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89671 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
9977ed0290b7ca62c05c7ed087ab5b841636bd89 23-Nov-2009 Ted Kremenek <kremenek@apple.com> Update CMake file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89671 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
39a0cdff39ccce6633deb6ca4427a96796fef1b3 23-Nov-2009 Dan Gohman <gohman@apple.com> Move the FunctionLoweringInfo class and some related utility functions out
of SelectionDAGBuild.h/cpp into its own files, to help separate
general lowering logic from SelectionDAG-specific lowering logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
6277eb2bb997a5da0808a8a5a57f18fd9faaf336 23-Nov-2009 Dan Gohman <gohman@apple.com> Move the FunctionLoweringInfo class and some related utility functions out
of SelectionDAGBuild.h/cpp into its own files, to help separate
general lowering logic from SelectionDAG-specific lowering logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FunctionLoweringInfo.cpp
electionDAG/FunctionLoweringInfo.h
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
1df6ea033855b9c8ff66bdfc5f479fe8d2afb272 23-Nov-2009 Nick Lewycky <nicholas@mxc.ca> Pull LLVMContext out of PromoteMemToReg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89645 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ce2c51b6701c06f701efa2871794b7710cb64b41 23-Nov-2009 Nick Lewycky <nicholas@mxc.ca> Pull LLVMContext out of PromoteMemToReg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89645 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
587d488cbfbfdba6a5e9cebff4f6b614856fde58 22-Nov-2009 Jim Grosbach <grosbach@apple.com> Add getFrameIndexReference() to TargetRegisterInfo, which allows targets to
tell debug info which base register to use to reference a frame index on a
per-index basis. This is useful, for example, in the presence of dynamic
stack realignment when local variables are indexed via the stack pointer and
stack-based arguments via the frame pointer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89620 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a2f20b20a8dc7f053599840557405554a0848aec 22-Nov-2009 Jim Grosbach <grosbach@apple.com> Add getFrameIndexReference() to TargetRegisterInfo, which allows targets to
tell debug info which base register to use to reference a frame index on a
per-index basis. This is useful, for example, in the presence of dynamic
stack realignment when local variables are indexed via the stack pointer and
stack-based arguments via the frame pointer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89620 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b23f242b6ee5ec88e39ef0d58f7165eed9df7a8c 22-Nov-2009 Jim Grosbach <grosbach@apple.com> 80-column cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89612 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7ab38dfccbc1473b76a227e73a04c08f7448dc45 22-Nov-2009 Jim Grosbach <grosbach@apple.com> 80-column cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89612 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ed9ebc2d93025f3fed6be267258d1f2abbd7f892 22-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach MachineBasicBlock::updateTerminator() to handle a failing TII->ReverseBranchCondition(Cond) call.

This fixes the MallocBench/cfrac test case regression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89608 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
e0239930ebd69336ca78843e55738a8bf2e4f2bb 22-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach MachineBasicBlock::updateTerminator() to handle a failing TII->ReverseBranchCondition(Cond) call.

This fixes the MallocBench/cfrac test case regression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89608 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
652b7433b68fdc0371902b0211be5030d56056be 22-Nov-2009 Jim Grosbach <grosbach@apple.com> remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89567 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
31ef40e9408ff9b16b9a1755a803f765eaa50b36 22-Nov-2009 Jim Grosbach <grosbach@apple.com> remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89567 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
76fe98917d56fbbc1087c2275d3ab3a8ee4abd2b 21-Nov-2009 Evan Cheng <evan.cheng@apple.com> Allow target to disable if-converting predicable instructions. e.g. NEON instructions under ARM mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89541 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
e54cb16308ad40d0f0b257de47efaa0ee5a47004 21-Nov-2009 Evan Cheng <evan.cheng@apple.com> Allow target to disable if-converting predicable instructions. e.g. NEON instructions under ARM mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89541 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
c50078e7edda4caf0443225ffde587ae36e1a5ad 21-Nov-2009 Devang Patel <dpatel@apple.com> Cosmetic changes, which were long overdue, in DwarfDebug.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89537 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
2c4ceb177be718a7a3697ea63aa254719fc3528f 21-Nov-2009 Devang Patel <dpatel@apple.com> Cosmetic changes, which were long overdue, in DwarfDebug.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89537 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
1432b62b04c33ad89f4249ef73f2e73740db18c7 21-Nov-2009 Devang Patel <dpatel@apple.com> We are not using DBG_STOPPOINT anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89536 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
bef8888a9197655512f156e50b10799da7240252 21-Nov-2009 Devang Patel <dpatel@apple.com> We are not using DBG_STOPPOINT anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89536 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
e79ff41f7b22dc50740c3c87d0e6801e5fae5924 21-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more clever about calculating live variables through new basic blocks.

When splitting a critical edge, the registers live through the edge are:

- Used in a PHI instruction, or
- Live out from the predecessor, and
- Live in to the successor.

This allows the coalescer to eliminate even more phi joins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89530 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
HIElimination.h
323d8c3ed72c9e440c2079e8c1954af69357c7cf 21-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more clever about calculating live variables through new basic blocks.

When splitting a critical edge, the registers live through the edge are:

- Used in a PHI instruction, or
- Live out from the predecessor, and
- Live in to the successor.

This allows the coalescer to eliminate even more phi joins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89530 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
HIElimination.h
76c1a107d9e2fb6eec90a3fffc8a39c11a4b0317 21-Nov-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89522 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9bff5cbae870170f76a30b69d5b4fd4c6dc6e800 21-Nov-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89522 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fa1ce6a3b1b8d9f6ee587449741239c59f2b107e 21-Nov-2009 Dale Johannesen <dalej@apple.com> When generating a vector the really slow way, via loads
and stores, handle the case where the element size is not
a valid target type correctly (PPC).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89521 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5b8bce11d60694a651965cf019b9cb5d84ed3b90 21-Nov-2009 Dale Johannesen <dalej@apple.com> When generating a vector the really slow way, via loads
and stores, handle the case where the element size is not
a valid target type correctly (PPC).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89521 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1233f91cb593d825c7efebcb8b3571a502976f23 21-Nov-2009 Devang Patel <dpatel@apple.com> There is no need to use FoldingSet to unique DIEs.
DIEs are created from MDNode, which are already uniqued. And DwarfDebug already uses ValueMaps to find and use existing DIE for a given MDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89518 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6f01d9c2f0a97b0dccde93a232c88f088877819f 21-Nov-2009 Devang Patel <dpatel@apple.com> There is no need to use FoldingSet to unique DIEs.
DIEs are created from MDNode, which are already uniqued. And DwarfDebug already uses ValueMaps to find and use existing DIE for a given MDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89518 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
2737ee18866f4e52cc1cd1411d2273d76794374a 21-Nov-2009 David Goodwin <david_goodwin@apple.com> Restructure code to allow renaming of multiple-register groups for anti-dep breaking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89511 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
00621efb40edb7fe16bf2af6d4699c9d024a28e7 21-Nov-2009 David Goodwin <david_goodwin@apple.com> Restructure code to allow renaming of multiple-register groups for anti-dep breaking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89511 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
1004f9502ae653e8a4752e606c9136060c218068 21-Nov-2009 Evan Cheng <evan.cheng@apple.com> Enable hoisting load from constant memories.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89510 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
c26abd94877eb1e2e00de8f9f927606e37e479d8 21-Nov-2009 Evan Cheng <evan.cheng@apple.com> Enable hoisting load from constant memories.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89510 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
885793baaed110c848ccfdfb460bbc91774d8981 21-Nov-2009 Dan Gohman <gohman@apple.com> Target-independent support for TargetFlags on BlockAddress operands,
and support for blockaddresses in x86-32 PIC mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89506 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
29cbade25aa094ca9a149a96a8614cf6f3247480 21-Nov-2009 Dan Gohman <gohman@apple.com> Target-independent support for TargetFlags on BlockAddress operands,
and support for blockaddresses in x86-32 PIC mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89506 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
d90672c248edda0cab8f84db6f9b16fe8fe4b281 20-Nov-2009 Devang Patel <dpatel@apple.com> Do not hold on to a map slot while new entries may be inserted into the map.
Use ValueMap, instead of std::map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89490 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
017d121c5934a01922197b207c1cd981edeb2d25 20-Nov-2009 Devang Patel <dpatel@apple.com> Do not hold on to a map slot while new entries may be inserted into the map.
Use ValueMap, instead of std::map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89490 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
197e2fcd5b2b0a4d391208380dbe71dbcee48e04 20-Nov-2009 David Greene <greened@obbligato.org> Cleanups.

Make things a little more efficient as suggested by Evan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89489 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
a96fc2f3ad3b31ffb605c0ace86fcd53260fb903 20-Nov-2009 David Greene <greened@obbligato.org> Cleanups.

Make things a little more efficient as suggested by Evan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89489 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
8268f72bb23ff56e4e72260fa1e6575941f46c15 20-Nov-2009 Devang Patel <dpatel@apple.com> There is no need to emit source location info for DW_TAG_pointer_type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89487 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1f37b5b3afe9eb8f4c05391b13af7b58b021ae36 20-Nov-2009 Devang Patel <dpatel@apple.com> There is no need to emit source location info for DW_TAG_pointer_type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89487 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ffd15dce5570f5c05754fc4dd7962ffe27faaac6 20-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add option -licm-const-load to hoist all loads from constant memory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89477 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
87b75ba75e854773bde482309d6594c25c567e0e 20-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add option -licm-const-load to hoist all loads from constant memory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89477 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
d34903a350e0bb37ab31d6cb8449b419535bfe8a 20-Nov-2009 David Goodwin <david_goodwin@apple.com> Remove some old experimental code that is no longer needed. Remove additional, speculative scheduling pass as its cost did not translate into significant performance improvement. Minor tweaks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89471 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
557bbe6b5d13faaec38f85a266db457c7cb09ff2 20-Nov-2009 David Goodwin <david_goodwin@apple.com> Remove some old experimental code that is no longer needed. Remove additional, speculative scheduling pass as its cost did not translate into significant performance improvement. Minor tweaks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89471 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
ff47428dd421e3fa20990dcb4a26a1b8b287ac3b 20-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> More consistent labelling of basic blocks in debug output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89470 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6cd8103bea5c0bc92f30b8021e9469131a2a408f 20-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> More consistent labelling of basic blocks in debug output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89470 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6888fe797e7b7ee3cd9028cbc8d54aa67a878147 20-Nov-2009 Duncan Sands <baldrick@free.fr> Fix PR5558, which was caused by a wrong fix for PR3393 (see commit 63048),
which was an expensive checks failure due to a bug in the checking. This
patch in essence reverts the original fix for PR3393, and refixes it by a
tweak to the way expensive checking is done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
c088ae8b84bfcdefb57efafb022430312bddf638 20-Nov-2009 Duncan Sands <baldrick@free.fr> Fix PR5558, which was caused by a wrong fix for PR3393 (see commit 63048),
which was an expensive checks failure due to a bug in the checking. This
patch in essence reverts the original fix for PR3393, and refixes it by a
tweak to the way expensive checking is done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
40b0a2e6bb0787bc7c36a8fc79910a33e1a58965 20-Nov-2009 Dan Gohman <gohman@apple.com> Fix fast-isel to avoid selecting the return instruction if a
tail call has been encountered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89444 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b4afb137efbc38462707bab9f5e8bc5c2d07cd2d 20-Nov-2009 Dan Gohman <gohman@apple.com> Fix fast-isel to avoid selecting the return instruction if a
tail call has been encountered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89444 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c0bb0ae7d0154008e836e31d8f8cf77fa2ebb726 20-Nov-2009 Dan Gohman <gohman@apple.com> Add an experimental option to run gep-splitting and no-load GVN
just before codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89439 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
2e7e94826a4cf6715b4c07d779fb84994c0bc47b 20-Nov-2009 Dan Gohman <gohman@apple.com> Add an experimental option to run gep-splitting and no-load GVN
just before codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89439 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
222f68489f8cf17fa316ad1028c285326d830214 20-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineBasicBlock::getName, and use it in place of getBasicBlock()->getName.

Fix debug code that assumes getBasicBlock never returns NULL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89428 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineLICM.cpp
achineVerifier.cpp
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
324da7647cfc3025e0c987176f0a300f9f780e6f 20-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineBasicBlock::getName, and use it in place of getBasicBlock()->getName.

Fix debug code that assumes getBasicBlock never returns NULL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89428 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineLICM.cpp
achineVerifier.cpp
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
d7c28c8c5c1de49d0b0413f6ff4fada2b80c1ec0 20-Nov-2009 Lang Hames <lhames@gmail.com> Removed references to LiveStacks from Spiller.* . They're no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89422 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
piller.cpp
piller.h
8783e401a3ad187dcd0f306153f9339f7270621d 20-Nov-2009 Lang Hames <lhames@gmail.com> Removed references to LiveStacks from Spiller.* . They're no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89422 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
piller.cpp
piller.h
25d6435df004aa2890aee502e67242b158c744e7 20-Nov-2009 David Goodwin <david_goodwin@apple.com> Fix a couple of problems with maintaining liveness information for antidep breaking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89404 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
3e72d301e03de8edcd603a5d3e9486748dfa6887 20-Nov-2009 David Goodwin <david_goodwin@apple.com> Fix a couple of problems with maintaining liveness information for antidep breaking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89404 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
f9cd9bd206387e98c2897c47b29fd4d31df2f223 19-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Place new basic blocks immediately after their predecessor when splitting
critical edges in PHIElimination.

This has a huge impact on regalloc performance, and we recover almost all of
the 10% compile time regression that edge splitting introduced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89381 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
160069d15aef1cd756bae112da9149c98308da68 19-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Place new basic blocks immediately after their predecessor when splitting
critical edges in PHIElimination.

This has a huge impact on regalloc performance, and we recover almost all of
the 10% compile time regression that edge splitting introduced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89381 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
f0e65b8d3493b044f266aa620cead7a1c91b3ccf 19-Nov-2009 Bill Wendling <isanbard@gmail.com> Reverting the EH table patches.

$ svn merge -c -89279 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r89279 into '.':
U lib/CodeGen/AsmPrinter/DwarfException.cpp
U lib/Target/TargetLoweringObjectFile.cpp
$ svn merge -c -89270 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r89270 into '.':
G lib/CodeGen/AsmPrinter/DwarfException.cpp
G lib/Target/TargetLoweringObjectFile.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89379 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
fb7634f1c7a804829fc55e3711ba62c8ade818d0 19-Nov-2009 Bill Wendling <isanbard@gmail.com> Reverting the EH table patches.

$ svn merge -c -89279 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r89279 into '.':
U lib/CodeGen/AsmPrinter/DwarfException.cpp
U lib/Target/TargetLoweringObjectFile.cpp
$ svn merge -c -89270 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r89270 into '.':
G lib/CodeGen/AsmPrinter/DwarfException.cpp
G lib/Target/TargetLoweringObjectFile.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89379 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
af9a21d1a69f3b3ef222674d760309001f4827b7 19-Nov-2009 David Greene <greened@obbligato.org> Fix a small bug.

Fix one case we missed to make sure we reserve registers from
allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89376 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
feb5bfbc6b7c565ad47cf5015482d559b0a7651f 19-Nov-2009 David Greene <greened@obbligato.org> Fix a small bug.

Fix one case we missed to make sure we reserve registers from
allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89376 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
c71d1f03e0c46be0eee00263f6b1609fd84bd235 19-Nov-2009 David Greene <greened@obbligato.org> Add support for spreading register allocation.

Add a -linearscan-skip-count argument (default to 0) that tells the
allocator to remember the last N registers it allocated and skip them
when looking for a register candidate. This tends to spread out
register usage and free up post-allocation scheduling at the cost of
slightly more register pressure. The primary benefit is the ability
to backschedule reloads.

This is turned off by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89356 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
7cfd336af61b860d4ac95851f6b2982285d227be 19-Nov-2009 David Greene <greened@obbligato.org> Add support for spreading register allocation.

Add a -linearscan-skip-count argument (default to 0) that tells the
allocator to remember the last N registers it allocated and skip them
when looking for a register candidate. This tends to spread out
register usage and free up post-allocation scheduling at the cost of
slightly more register pressure. The primary benefit is the ability
to backschedule reloads.

This is turned off by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89356 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
7e105d8389347468aaa57d612d4d20c0168464ec 19-Nov-2009 Lang Hames <lhames@gmail.com> Added a new Spiller implementation which wraps LiveIntervals::addIntervalsForSpills.
All spiller calls in RegAllocLinearScan now go through the new Spiller interface.
The "-new-spill-framework" command line option has been removed. To use the trivial in-place spiller you should now pass "-spiller=trivial -rewriter=trivial".
(Note the trivial spiller/rewriter are only meant to serve as examples of the new in-place modification work. Enabling them will yield terrible, though hopefully functional, code).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89311 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
piller.cpp
piller.h
835ca07991c1b8ec47240b15417e1b2732480094 19-Nov-2009 Lang Hames <lhames@gmail.com> Added a new Spiller implementation which wraps LiveIntervals::addIntervalsForSpills.
All spiller calls in RegAllocLinearScan now go through the new Spiller interface.
The "-new-spill-framework" command line option has been removed. To use the trivial in-place spiller you should now pass "-spiller=trivial -rewriter=trivial".
(Note the trivial spiller/rewriter are only meant to serve as examples of the new in-place modification work. Enabling them will yield terrible, though hopefully functional, code).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89311 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
piller.cpp
piller.h
121e71656e195b7fe04fcc6416b69393cf0ef33e 19-Nov-2009 Bill Wendling <isanbard@gmail.com> The "ReadOnlyWithRel" enum seems to apply more to what Darwin does with the EH
exception table than DataRel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89279 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
01c69374b508bad0ee71cd3c49414a325238e29a 19-Nov-2009 Bill Wendling <isanbard@gmail.com> The "ReadOnlyWithRel" enum seems to apply more to what Darwin does with the EH
exception table than DataRel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89279 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
d7a62cc10ff8a5d40b15d2750b62b1f66e507779 19-Nov-2009 Bob Wilson <bob.wilson@apple.com> There should be no need to keep renumbering blocks during tail duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89275 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fbb6b67df086fa5ed54e2ff27c15e4c087883957 19-Nov-2009 Bob Wilson <bob.wilson@apple.com> There should be no need to keep renumbering blocks during tail duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89275 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
da739ea07a1f130adcc9ad3d51e9c895af374dc6 19-Nov-2009 Bill Wendling <isanbard@gmail.com> Attempt #2:

Place the EH table in the __TEXT section on MachO. It saves space.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89270 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
ec0445855179d2c9fb98a2c8a42e03525762f45f 19-Nov-2009 Bill Wendling <isanbard@gmail.com> Attempt #2:

Place the EH table in the __TEXT section on MachO. It saves space.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89270 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
5a57a12064094766ae271d09fe365c882d48468b 18-Nov-2009 Bob Wilson <bob.wilson@apple.com> Tail duplication still needs to iterate. Duplicating new instructions onto
the tail of a block may make that block a new candidate for duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89264 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
60f34b9fb0323688e93cf347d63b56327d6250f8 18-Nov-2009 Bob Wilson <bob.wilson@apple.com> Tail duplication still needs to iterate. Duplicating new instructions onto
the tail of a block may make that block a new candidate for duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89264 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
7fda037ed8e65b25550b1b439af1153b40df0739 18-Nov-2009 Bob Wilson <bob.wilson@apple.com> Add another statistic to measure code size due to tail duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89254 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
79d621035ebe620261dd8139a0882f62edabbfdb 18-Nov-2009 Bob Wilson <bob.wilson@apple.com> Add another statistic to measure code size due to tail duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89254 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
678387e294c678f1cdc602864e5f590ad6fdf65a 18-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR5300.

When TwoAddressInstructionPass deletes a dead instruction, make sure that all
register kills are accounted for. The 2-addr register does not get special
treatment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89246 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
0b25ae1afb9444f91f728c853c70dd27df43776a 18-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR5300.

When TwoAddressInstructionPass deletes a dead instruction, make sure that all
register kills are accounted for. The 2-addr register does not get special
treatment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89246 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
390afed1012b60baf06eac8904fb72af3ccaedaa 18-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow the machine verifier to be run outside the PassManager.

Verify LiveVariables information when present.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89241 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
8f16e02fc95c9b197d38bcd681f2612d36ed5c11 18-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow the machine verifier to be run outside the PassManager.

Verify LiveVariables information when present.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89241 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
c272c74658d1f521d0a67ccdf8155d4566380f75 18-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the -early-coalescing option

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89240 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1e78aa445c5b5b466cea4478f3f9034d4be7278e 18-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the -early-coalescing option

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89240 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9ec5663bc8a70b50a0b7b5e08140577ee1f3957f 18-Nov-2009 Lang Hames <lhames@gmail.com> Fixed the in-place spiller and trivial rewriter, which had been broken by the recent SlotIndexes work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89238 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
piller.h
irtRegRewriter.cpp
38283e23df5aa748ec3bb5f02f14f1741cf491ce 18-Nov-2009 Lang Hames <lhames@gmail.com> Fixed the in-place spiller and trivial rewriter, which had been broken by the recent SlotIndexes work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89238 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
piller.h
irtRegRewriter.cpp
ec816259573936142fdc922b8c8fa98e77a3c998 18-Nov-2009 Bob Wilson <bob.wilson@apple.com> Add statistics for tail duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89225 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
7cd5d3e05ca9573dbac1a01846813037f901480c 18-Nov-2009 Bob Wilson <bob.wilson@apple.com> Add statistics for tail duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89225 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
f1a48f57d4a251f639165b4fa8f5b25de598e6c2 18-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't require LiveVariables for PHIElimination. Enable critical edge splitting
when LiveVariables is available.

The -split-phi-edges is now gone, and so is the hack to disable it when using
the local register allocator. The PHIElimination pass no longer has
LiveVariables as a prerequisite - that is what broke the local allocator.
Instead we do critical edge splitting when possible - that is when
LiveVariables is available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89213 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
0257dd375d64da978887d0c1e97ab3560d7597ce 18-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't require LiveVariables for PHIElimination. Enable critical edge splitting
when LiveVariables is available.

The -split-phi-edges is now gone, and so is the hack to disable it when using
the local register allocator. The PHIElimination pass no longer has
LiveVariables as a prerequisite - that is what broke the local allocator.
Instead we do critical edge splitting when possible - that is when
LiveVariables is available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89213 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
19194a2f4d58b62e438b2c28f4b42966931cd397 18-Nov-2009 Bob Wilson <bob.wilson@apple.com> Add a target hook to allow changing the tail duplication limit based on the
contents of the block to be duplicated. Use this for ARM Cortex A8/9 to
be more aggressive tail duplicating indirect branches, since it makes it
much more likely that they will be predicted in the branch target buffer.
Testcase coming soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89187 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
834b08af8d3d8fc6c76ac6ca40674565689e8d7f 18-Nov-2009 Bob Wilson <bob.wilson@apple.com> Add a target hook to allow changing the tail duplication limit based on the
contents of the block to be duplicated. Use this for ARM Cortex A8/9 to
be more aggressive tail duplicating indirect branches, since it makes it
much more likely that they will be predicted in the branch target buffer.
Testcase coming soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89187 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
9321a6db532fd0d5437d854e19e8a9fdc1f59290 18-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix inverted test and add testcase from failing self-host.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89167 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
5052c1547ef75f401fd397084831e0bb15311b09 18-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix inverted test and add testcase from failing self-host.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89167 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
05930c4f222e11e44989c1040e7b9912e662ad86 17-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Disable -split-phi-edges to unbreak the buildbots

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89142 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
202344e1240db60afa393198806e75256cde985c 17-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Disable -split-phi-edges to unbreak the buildbots

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89142 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
82ef39981df3f6d75e2ba52517452ff8df4a8415 17-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Never call UpdateTerminator() when AnalyzeBranch would fail.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89139 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
5493acac6fcc06ef6fa8577bf9f720762d78e870 17-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Never call UpdateTerminator() when AnalyzeBranch would fail.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89139 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
18f204f62c038bf35ed4887486bd051d60224825 17-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add a WriteAsOperand for MachineBasicBlock so MachineLoopInfo dump looks sane.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89130 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
2a085c34933a6c76e5a86f2680d93c16b0438801 17-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add a WriteAsOperand for MachineBasicBlock so MachineLoopInfo dump looks sane.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89130 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
71faf6a347d7bc9076951bf2e317058024d80697 17-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89129 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
7adcdc313f8367808a1f43c34ca67a4044595327 17-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89129 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
226f307c9fd011e31a1b9194017941265ce644d9 17-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable -split-phi-edges by default, except when -regalloc=local.

The local register allocator doesn't like it when LiveVariables is run.
We should also disable edge splitting under -O0, but that has to wait a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89125 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
95a2c8f1d0f29ce2a5ec8c41dac8b406aef88c68 17-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable -split-phi-edges by default, except when -regalloc=local.

The local register allocator doesn't like it when LiveVariables is run.
We should also disable edge splitting under -O0, but that has to wait a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89125 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
5da4d89ecae4eb432275e4c186811bbb2116a35b 17-Nov-2009 Bob Wilson <bob.wilson@apple.com> Remove a special case for tail merging that seems to be both broken and
unnecessary. It is broken because the "isIdenticalTo" check should be
negated. If that is fixed, this code causes the CodeGen/X86/tail-opts.ll
test to fail, in the dont_merge_oddly function. And, I confirmed that the
regression is real -- the generated code is worse. As far as I can tell,
that tail-opts.ll test is checking for what this code is supposed to handle
and we're doing the right thing anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89121 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
aa60ddac394e8d79ecd9700e32b595c115585007 17-Nov-2009 Bob Wilson <bob.wilson@apple.com> Remove a special case for tail merging that seems to be both broken and
unnecessary. It is broken because the "isIdenticalTo" check should be
negated. If that is fixed, this code causes the CodeGen/X86/tail-opts.ll
test to fail, in the dont_merge_oddly function. And, I confirmed that the
regression is real -- the generated code is worse. As far as I can tell,
that tail-opts.ll test is checking for what this code is supposed to handle
and we're doing the right thing anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89121 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
4b167eeef90ff3d7c5195ce6f2b1acb4478d522c 17-Nov-2009 Dan Gohman <gohman@apple.com> Set MadeChange instead of MadeChangeThisIteration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89114 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
37d60fd1427386f68faeb0217ac2034d1acfe486 17-Nov-2009 Dan Gohman <gohman@apple.com> Set MadeChange instead of MadeChangeThisIteration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89114 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
c9622b2ee6ee8bf9057d5d17bc4b6dc70d8fa874 17-Nov-2009 Bob Wilson <bob.wilson@apple.com> Update a comment, now that tail duplication happens after other branch
folding optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89109 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
465c8252f282fda26db6962a81948afce7f01cc2 17-Nov-2009 Bob Wilson <bob.wilson@apple.com> Update a comment, now that tail duplication happens after other branch
folding optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89109 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
9cc7b872e96371d21aeff515d9f94e6c11955a07 17-Nov-2009 Bob Wilson <bob.wilson@apple.com> Perform tail duplication only once, after tail merging is complete.
It was too difficult to keep the heuristics for merging and duplication
consistent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89105 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
56ea69c3a251434db3fef489881368e29c95712d 17-Nov-2009 Bob Wilson <bob.wilson@apple.com> Perform tail duplication only once, after tail merging is complete.
It was too difficult to keep the heuristics for merging and duplication
consistent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89105 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
91bbf5ea7a0dd374f65ba1db5a2e868cfa08065c 17-Nov-2009 Evan Cheng <evan.cheng@apple.com> Revert 89021. It's miscompiling llvm-gcc driver driver at -O0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89082 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
9e97f3c2e281b1d5f89da076f37d258e3dec5597 17-Nov-2009 Evan Cheng <evan.cheng@apple.com> Revert 89021. It's miscompiling llvm-gcc driver driver at -O0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89082 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
58e64e179fc32f88dc3b1b447c6a2225ed22e55f 17-Nov-2009 Nick Lewycky <nicholas@mxc.ca> Remove VISIBILITY_HIDDEN from the classes in this directory. Fixes bug 5507.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89075 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.h
381afae68f3edd5cca65835003dacd73aca5da55 17-Nov-2009 Nick Lewycky <nicholas@mxc.ca> Remove VISIBILITY_HIDDEN from the classes in this directory. Fixes bug 5507.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89075 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.h
ee68f45fe77ad7ce3079eb9e8222075dee099f08 17-Nov-2009 Nick Lewycky <nicholas@mxc.ca> Revert r88939.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89066 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5f9843f68fa2941a2c9930aa5cc920c38920f277 17-Nov-2009 Nick Lewycky <nicholas@mxc.ca> Revert r88939.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89066 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a9cc7bfa480cba73c84b03353fd134735d8021d4 17-Nov-2009 Bill Wendling <isanbard@gmail.com> Refactor the code that creates the "dot-label" difference. This may be used in
more than one place. No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89024 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
7378b1bd00033d8be64d388d60a562027cbf953a 17-Nov-2009 Bill Wendling <isanbard@gmail.com> Refactor the code that creates the "dot-label" difference. This may be used in
more than one place. No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89024 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
3bf51602527c76684b69fb21070cdd4ba50edec3 17-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable -split-phi-edges by default

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89021 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
2cbe71cdf0550b4d27b4d9e7d61a26d97ca6debe 17-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable -split-phi-edges by default

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89021 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
7f9c46ffbb2f96175858d78814fa52a3416ee81e 17-Nov-2009 Dan Gohman <gohman@apple.com> Remove the optimizations that convert BRCOND and BR_CC into
unconditional branches or fallthroghes. Instcombine/SimplifyCFG
should be simplifying branches with known conditions.

This fixes some problems caused by these transformations not
updating the MachineBasicBlock CFG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89017 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e0f06c78d3ee56cea4e7195c616aafc200cb0ba2 17-Nov-2009 Dan Gohman <gohman@apple.com> Remove the optimizations that convert BRCOND and BR_CC into
unconditional branches or fallthroghes. Instcombine/SimplifyCFG
should be simplifying branches with known conditions.

This fixes some problems caused by these transformations not
updating the MachineBasicBlock CFG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89017 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
16330ea4da1a4eba625c735d6247450b4afe56cd 16-Nov-2009 Dan Gohman <gohman@apple.com> Initialize the new AsmPrinterFlags field to 0, fixing uses of
uninitialized memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88985 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
834651c94535bfb054449e6c01d5c77ab7a117d3 16-Nov-2009 Dan Gohman <gohman@apple.com> Initialize the new AsmPrinterFlags field to 0, fixing uses of
uninitialized memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88985 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
4cb32c36830adc6833d7e459e3a8a9f784e235bb 16-Nov-2009 Devang Patel <dpatel@apple.com> Revert r88939.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88973 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f76a3d634f85783783d75bf4d8e736b178e4f5e6 16-Nov-2009 Devang Patel <dpatel@apple.com> Revert r88939.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88973 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8450a9090b38c0faf1401326dd7ec95358e995cc 16-Nov-2009 Dan Gohman <gohman@apple.com> Sink a #include <map> to where it's actually needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88956 91177308-0d34-0410-b5e6-96231b3b80d8
ntiDepBreaker.h
6ac0e76ff4b8e46e45720e3422d43d33d73f4aae 16-Nov-2009 Dan Gohman <gohman@apple.com> Sink a #include <map> to where it's actually needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88956 91177308-0d34-0410-b5e6-96231b3b80d8
ntiDepBreaker.h
57d7aeffb1f29269aefed5240d6637436676184b 16-Nov-2009 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88953 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
552c0dff3408424404d1e9639a5710207b862964 16-Nov-2009 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88953 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
dceacb2a529c2bcdfd59ed0585684dff24c9054b 16-Nov-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88940 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
4a504c6ff8c3d82e0e220611fbf53b2c9d9acdfd 16-Nov-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88940 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ac402d8db30d059030a6410a5dbc7bef59c3fa32 16-Nov-2009 Devang Patel <dpatel@apple.com> Add VISIBILITY_HIDDEN marker.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88939 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
270a97430d6ac718d0d327ebea659d78df5e97a8 16-Nov-2009 Devang Patel <dpatel@apple.com> Add VISIBILITY_HIDDEN marker.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88939 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f4ae3216ba93bd253044cdcbfa7e7645677de6d7 16-Nov-2009 Bob Wilson <bob.wilson@apple.com> Fix some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88932 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
c4a0c843e4c58386b263903ccbef2cdb980821b5 16-Nov-2009 Bob Wilson <bob.wilson@apple.com> Fix some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88932 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
c81c2552bd5410dee67cbf3cb220fbac2ed3c2ac 16-Nov-2009 Bob Wilson <bob.wilson@apple.com> Whitespace: be consistent with pointer syntax.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88929 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
d34f5d91bc6fdc55085d3c4d509c778d6bcc5f0a 16-Nov-2009 Bob Wilson <bob.wilson@apple.com> Whitespace: be consistent with pointer syntax.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88929 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
d904455c24c3f96288e950109730e5f3c6e6009f 16-Nov-2009 Bob Wilson <bob.wilson@apple.com> Clean up whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88927 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
3cbc3120873242d93e469b4635c0bbd09fdb6438 16-Nov-2009 Bob Wilson <bob.wilson@apple.com> Clean up whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88927 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
2e7b993b008be1bcca4cec4803092d876b21595a 16-Nov-2009 David Greene <greened@obbligato.org> Support spill comments.

Have the asm printer emit a comment if an instruction is a spill or
reload and have the spiller mark copies it introdues so the asm printer
can also annotate those.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88911 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ddff941357bd836243ed7004ab88db09490176d8 16-Nov-2009 David Greene <greened@obbligato.org> Support spill comments.

Have the asm printer emit a comment if an instruction is a spill or
reload and have the spiller mark copies it introdues so the asm printer
can also annotate those.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88911 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
edf605d92d7e3529548911797e93397b81d1489e 16-Nov-2009 Evan Cheng <evan.cheng@apple.com> Check if subreg index is zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88899 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
39aa7251a27735479305b3e7a9629b9c2a6abcc3 16-Nov-2009 Evan Cheng <evan.cheng@apple.com> Check if subreg index is zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88899 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
8a4ccce190f441cf2a178dbe4b74abdbf92221fa 16-Nov-2009 Evan Cheng <evan.cheng@apple.com> For some targets, a copy can use a register multiple times, e.g. ppc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88895 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
285a7d57dc3c1210eda135fc137928e727175200 16-Nov-2009 Evan Cheng <evan.cheng@apple.com> For some targets, a copy can use a register multiple times, e.g. ppc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88895 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
8d0591c3acd4208faff96f90ddfba096e6c20dc3 16-Nov-2009 Lang Hames <lhames@gmail.com> Fixes the bug exposed by Anton's test case in PR 5495:
Make sure when ProcessImplicitDefs removes a copy which kills its source reg that it
removes the copy from said reg's Kills list.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88881 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
79ac32de3bdaf8da2213945c808f6ec26cf2a7fa 16-Nov-2009 Lang Hames <lhames@gmail.com> Fixes the bug exposed by Anton's test case in PR 5495:
Make sure when ProcessImplicitDefs removes a copy which kills its source reg that it
removes the copy from said reg's Kills list.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88881 91177308-0d34-0410-b5e6-96231b3b80d8
rocessImplicitDefs.cpp
248a854e1e7ba8c2ab6595e24948dabed45c280e 16-Nov-2009 Lang Hames <lhames@gmail.com> Fix for the original bug in PR5495 - Look at uses as well as defs when determining the PHI-copy insert point.

- Patch by Andrew Canis!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88880 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
b126d0530d48890e1689975483b9f923a0fca1da 16-Nov-2009 Lang Hames <lhames@gmail.com> Fix for the original bug in PR5495 - Look at uses as well as defs when determining the PHI-copy insert point.

- Patch by Andrew Canis!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88880 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
ed6d6e7ec31ebd4b2a7cf8117082bd4395e6bd91 15-Nov-2009 Lang Hames <lhames@gmail.com> Added an assert to the PBQP allocator to catch infinite cost solutions which might otherwise lead to miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88829 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
e98b4b0695f727dda44c366f5de906edf06cf7e9 15-Nov-2009 Lang Hames <lhames@gmail.com> Added an assert to the PBQP allocator to catch infinite cost solutions which might otherwise lead to miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88829 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
37957d5ea068c53cda4586c3391a66b355cadddf 14-Nov-2009 Jim Grosbach <grosbach@apple.com> Do not merge jump tables this early. Branch folding will do any necessary
merges, and until then, it's useful to keep the tables separate for ease
of manipulation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88806 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
c04cae9c9b420133ff2fc80c183c3fe0449d2ae1 14-Nov-2009 Jim Grosbach <grosbach@apple.com> Do not merge jump tables this early. Branch folding will do any necessary
merges, and until then, it's useful to keep the tables separate for ease
of manipulation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88806 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
47387c55bcb1613a65de19780f7fe900253f3c6d 14-Nov-2009 Jim Grosbach <grosbach@apple.com> Add function to replace a destination MBB in a single jump table

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88804 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
68bb60f6a4e0902769f72d1badda4e37cd873ffb 14-Nov-2009 Jim Grosbach <grosbach@apple.com> Add function to replace a destination MBB in a single jump table

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88804 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
5461b52004980be0ec9abac2199abb4371dcfb3f 14-Nov-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> revert 88761 as it fails builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88762 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9a501cf19dbf1f56f0782ddba4c1931565af9610 14-Nov-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> revert 88761 as it fails builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88762 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8bd6558bac94a6e57c6ccb051feed72d7124470a 14-Nov-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Fix debug info crashes for PIC16.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88761 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6fb01a7750e3edd73a7fba957e7f55f5956a760d 14-Nov-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Fix debug info crashes for PIC16.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88761 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f177bd4187684d81daae0889083f1a17dbea9616 14-Nov-2009 Evan Cheng <evan.cheng@apple.com> Added getSubRegIndex(A,B) that returns subreg index of A to B. Use it to replace broken code in VirtRegRewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88753 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
fae3e923452b85e72b2c03dd6eacc063f59d81b1 14-Nov-2009 Evan Cheng <evan.cheng@apple.com> Added getSubRegIndex(A,B) that returns subreg index of A to B. Use it to replace broken code in VirtRegRewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88753 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
a88d1acbaefb5416a147dcdd2199bb43ab70983d 14-Nov-2009 Evan Cheng <evan.cheng@apple.com> - Change TargetInstrInfo::reMaterialize to pass in TargetRegisterInfo.
- If destination is a physical register and it has a subreg index, use the
sub-register instead.
This fixes PR5423.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88745 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
d57cdd5683ea926e489067364fb7ffe5fd5d35ee 14-Nov-2009 Evan Cheng <evan.cheng@apple.com> - Change TargetInstrInfo::reMaterialize to pass in TargetRegisterInfo.
- If destination is a physical register and it has a subreg index, use the
sub-register instead.
This fixes PR5423.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88745 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
5da2b872edfc21b7483158f064a9f98636302c78 14-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5412: Fix an inverted check and another missing sub-register check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88738 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
8fdd84cfa74e248394a8f5049e7478bf2535a150 14-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5412: Fix an inverted check and another missing sub-register check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88738 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
c0c961121927e428d6279512dd45c634aafd1593 14-Nov-2009 Dan Gohman <gohman@apple.com> Enable the tail call optimization when the caller returns undef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88737 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ed9bab3b4da0a5c5581fdd477c19c02420dd2fc7 14-Nov-2009 Dan Gohman <gohman@apple.com> Enable the tail call optimization when the caller returns undef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88737 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
257ed14adea832ee52d55613bd9f8ce3d2a8f43d 14-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix bug in -split-phi-edges.

When splitting an edge after a machine basic block with fall-through, we
forgot to insert a jump instruction. Fix this by calling updateTerminator() on
the fall-through block when relevant.

Also be more precise in PHIElimination::isLiveIn.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88728 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
3b6ced15108909de2fab0766fc693fe66c48ab68 14-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix bug in -split-phi-edges.

When splitting an edge after a machine basic block with fall-through, we
forgot to insert a jump instruction. Fix this by calling updateTerminator() on
the fall-through block when relevant.

Also be more precise in PHIElimination::isLiveIn.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88728 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
4e3a74162079124f41f7b17b28d8c2e96ce76a16 14-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Update MachineDominator information

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88727 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
9aebb61daf4d787aa7dcff9e3caa89bac88e11d1 14-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Update MachineDominator information

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88727 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
0f1c0cea5912f6b4297d4557b5d13f5d1d39f522 14-Nov-2009 Lang Hames <lhames@gmail.com> Added an API to the SlotIndexes pass to allow new instructions to be inserted into the numbering.

PreAllocSplitting is now using this API to insert code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88725 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
lotIndexes.cpp
piller.cpp
b3661585c0f87b6045f0d65b5cac16921ae27086 14-Nov-2009 Lang Hames <lhames@gmail.com> Added an API to the SlotIndexes pass to allow new instructions to be inserted into the numbering.

PreAllocSplitting is now using this API to insert code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88725 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
lotIndexes.cpp
piller.cpp
02406c496c6b5242eeb2d3d623d0cf50193f30e7 14-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5411. Bug in UpdateKills. A reg def partially define its super-registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88719 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
1f6a3c820a997fd3c4c08dedff6706f5e045e42d 14-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5411. Bug in UpdateKills. A reg def partially define its super-registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88719 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
abb5622f9edb5b9a82ac2b0b93031a30c5b358e0 13-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PHIElimination optimization that uses MBB->getBasicBlock.

The BasicBlock associated with a MachineBasicBlock does not necessarily
correspond to the code in the MBB.

Don't insert a new IR BasicBlock when splitting critical edges. We are not
supposed to modify the IR during codegen, and we should be able to do just
fine with a NULL BB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88707 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
1222287543a5b5917f8c31aa8c88d740f70222d9 13-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PHIElimination optimization that uses MBB->getBasicBlock.

The BasicBlock associated with a MachineBasicBlock does not necessarily
correspond to the code in the MBB.

Don't insert a new IR BasicBlock when splitting critical edges. We are not
supposed to modify the IR during codegen, and we should be able to do just
fine with a NULL BB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88707 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
9fea16565f83b155fcd7edc5faa8ef7b1a7dfea1 13-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineFunction::verify() to call the machine code verifier directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88706 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
ce727d0da006ca59bbd8c9ddc86e2fa71217d293 13-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineFunction::verify() to call the machine code verifier directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88706 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
14b7fce7a45ed35c18811033e25a200a53ad49e1 13-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix polarity of a CFG check in machine verifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88704 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
1dc0fcbaed01ed6510f067bc408f8bd2efd8ac68 13-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix polarity of a CFG check in machine verifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88704 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
a5d3935ad09cafa5d8fe40f1b65ab398e4e7b0e4 13-Nov-2009 Dan Gohman <gohman@apple.com> Use .data() instead of .c_str() when nul-termination is not needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88703 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
24f8e29b4efe70496474c6d43aa6abfa27c21511 13-Nov-2009 Dan Gohman <gohman@apple.com> Use .data() instead of .c_str() when nul-termination is not needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88703 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ca9b04ba02e321977d03e79a5bbd4c95eb23a0d8 13-Nov-2009 David Greene <greened@obbligato.org> Move DebugInfo checks into EmitComments and remove them from
target-specific AsmPrinters. Not all comments need DebugInfo.

Re-enable the line numbers comment test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88697 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1924aabf996be9335fab34e7ee4fa2aa5911389c 13-Nov-2009 David Greene <greened@obbligato.org> Move DebugInfo checks into EmitComments and remove them from
target-specific AsmPrinters. Not all comments need DebugInfo.

Re-enable the line numbers comment test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88697 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cd6a8e23207f276f915f20cad9f3905a862df5d9 13-Nov-2009 Dan Gohman <gohman@apple.com> When optimizing for size, don't tail-merge unless it's likely to be a
code-size win, and not when it's only likely to be code-size neutral,
such as when only a single instruction would be eliminated and a new
branch would be required.

This fixes rdar://7392894.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88692 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
c4c550c7584b3240bda71d4339ec49c1cf731d55 13-Nov-2009 Dan Gohman <gohman@apple.com> When optimizing for size, don't tail-merge unless it's likely to be a
code-size win, and not when it's only likely to be code-size neutral,
such as when only a single instruction would be eliminated and a new
branch would be required.

This fixes rdar://7392894.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88692 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
5cec5f651fae320adef8d66650851fa86587a88d 13-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5410: LiveVariables lost subreg def:

D0<def,dead> = ...
...
= S0<use, kill>
S0<def> = ...
...
D0<def> =

The first D0 def is correctly marked dead, however, livevariables should have
added an implicit def of S0 or we end up with a use without a def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88690 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
236490d870c2734203ecf26c8f104d0b3283e69e 13-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5410: LiveVariables lost subreg def:

D0<def,dead> = ...
...
= S0<use, kill>
S0<def> = ...
...
D0<def> =

The first D0 def is correctly marked dead, however, livevariables should have
added an implicit def of S0 or we end up with a use without a def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88690 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
e6e30350b685bd4c9eddf4a88cb5dac41ee61eb8 13-Nov-2009 David Goodwin <david_goodwin@apple.com> Allow target to specify regclass for which antideps will only be broken along the critical path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88682 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ostRASchedulerList.cpp
87d21b92fc42f6b3bd8567a83fc5b5191c1205e5 13-Nov-2009 David Goodwin <david_goodwin@apple.com> Allow target to specify regclass for which antideps will only be broken along the critical path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88682 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ostRASchedulerList.cpp
3510e118fbdf09887c4b804f1eba0cb62a2d3493 13-Nov-2009 Dan Gohman <gohman@apple.com> Don't let a noalias difference disrupt the tailcall optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
01205a80f5c789234029813f8c09488891c0b23e 13-Nov-2009 Dan Gohman <gohman@apple.com> Don't let a noalias difference disrupt the tailcall optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ab9a0687312516700d6aae598e894db4560a48b0 13-Nov-2009 Devang Patel <dpatel@apple.com> Ignore nameless variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87069 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3fb6bd690a5919ec78777508e184e3538b6d51b0 13-Nov-2009 Devang Patel <dpatel@apple.com> Ignore nameless variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87069 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
48fd1e4422178b0f4989d6c06fc8abfb5b9fd12d 13-Nov-2009 Dale Johannesen <dalej@apple.com> Adjust isConstantSplat to allow for big-endian targets.
PPC is such a target; make it work.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87060 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1e608819aa26c06b1552521469f2211339e3bfe0 13-Nov-2009 Dale Johannesen <dalej@apple.com> Adjust isConstantSplat to allow for big-endian targets.
PPC is such a target; make it work.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87060 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5b8472da2572659b4ed6b9c4bef4b71ca2d1626f 13-Nov-2009 Bill Wendling <isanbard@gmail.com> Simplify code a bit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87040 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
ecc260e403d09ba04ed87d2d04226ac851c68e5a 13-Nov-2009 Bill Wendling <isanbard@gmail.com> Simplify code a bit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87040 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
7354a3e048bb8ca2281d38778368bfbbfb05c2b6 12-Nov-2009 Bill Wendling <isanbard@gmail.com> Refactor code that checks if it's a call to a "nounwind" function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87036 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
ed060dcb5c7e9cb2fd11ff3b0b98203fb53063e7 12-Nov-2009 Bill Wendling <isanbard@gmail.com> Refactor code that checks if it's a call to a "nounwind" function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87036 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
9b5fbf226159fc889516396ec979f408a182c136 12-Nov-2009 David Greene <greened@obbligato.org> Do some cleanups suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87034 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
b3bc115a2414a922caa40d5536d8a35ca54e40e3 12-Nov-2009 David Greene <greened@obbligato.org> Do some cleanups suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87034 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
0fb68ff9424b68ae0d41d9d58372f9075a35b2c1 12-Nov-2009 David Greene <greened@obbligato.org> Set the ReloadReuse AsmPrinter flag where appropriate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87030 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
6bedb302209b3d57805b7306847b4ca3366d8a26 12-Nov-2009 David Greene <greened@obbligato.org> Set the ReloadReuse AsmPrinter flag where appropriate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87030 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
3824bc8f0c4ba2970f9100e871692e389351fa55 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87024 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
bf4af353edd2da1d7f2ed0b22238a8d2c038f5cf 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87024 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
e32637bcbd717a8233de28566aeaa0b2db1d659b 12-Nov-2009 Bill Wendling <isanbard@gmail.com> If there's more than one function operand to a call instruction, be conservative
and don't assume that the call doesn't throw. It would be nice if there were a
way to determine which is the callee and which is a parameter. In practice, the
architecture we care about normally only have one operand for a call instruction
(x86 and arm).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87023 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
ac18929801f1789d3f735733011541b19a205196 12-Nov-2009 Bill Wendling <isanbard@gmail.com> If there's more than one function operand to a call instruction, be conservative
and don't assume that the call doesn't throw. It would be nice if there were a
way to determine which is the callee and which is a parameter. In practice, the
architecture we care about normally only have one operand for a call instruction
(x86 and arm).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87023 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
6424ab9738972c0a9d5f588c59645f85782cf68c 12-Nov-2009 David Greene <greened@obbligato.org> Add a bool flag to StackObjects telling whether they reference spill
slots. The AsmPrinter will use this information to determine whether to
print a spill/reload comment.

Remove default argument values. It's too easy to pass a wrong argument
value when multiple arguments have default values. Make everything
explicit to trap bugs early.

Update all targets to adhere to the new interfaces..


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87022 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
reAllocSplitting.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
irtRegMap.cpp
3f2bf85d14759cc4b28a86805f566ac805a54d00 12-Nov-2009 David Greene <greened@obbligato.org> Add a bool flag to StackObjects telling whether they reference spill
slots. The AsmPrinter will use this information to determine whether to
print a spill/reload comment.

Remove default argument values. It's too easy to pass a wrong argument
value when multiple arguments have default values. Make everything
explicit to trap bugs early.

Update all targets to adhere to the new interfaces..


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87022 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
reAllocSplitting.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
irtRegMap.cpp
ea862b03de56f3746e10b93b4aaea3f5c781fd21 12-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Add compare_lower and equals_lower methods to StringRef. Switch all users of
StringsEqualNoCase (from StringExtras.h) to it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87020 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
05872ea804cdc9534960b30d28a391928c61481a 12-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Add compare_lower and equals_lower methods to StringRef. Switch all users of
StringsEqualNoCase (from StringExtras.h) to it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87020 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
5b11c7069ffa39e6276b66d9dbf91ecd3844f286 12-Nov-2009 David Greene <greened@obbligato.org> Make FixedStackPseudoSourceValue a first-class PseudoSourceValue by
making it visible to clients and adding LLVM-style cast capability.
This will be used by AsmPrinter to determine when to emit spill comments
for an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87019 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
cf62632d835313b720b68669bd1e5682d4d52d0d 12-Nov-2009 David Greene <greened@obbligato.org> Make FixedStackPseudoSourceValue a first-class PseudoSourceValue by
making it visible to clients and adding LLVM-style cast capability.
This will be used by AsmPrinter to determine when to emit spill comments
for an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87019 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
1f708fd24678e7f44057dd08643f78dd1541aa5a 12-Nov-2009 David Goodwin <david_goodwin@apple.com> Rename registers to break output dependencies in addition to anti-dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87015 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
12dd99dc308150a6beff32aafc824e1d6fec1139 12-Nov-2009 David Goodwin <david_goodwin@apple.com> Rename registers to break output dependencies in addition to anti-dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87015 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
4a7ef8dcbe4c986ba7f4267b56d4779567bc91ff 12-Nov-2009 Devang Patel <dpatel@apple.com> "Attach debug info with llvm instructions" mode was enabled a month ago. Now make it permanent and remove old way of inserting intrinsics to encode debug info for line number and scopes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87014 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
achineModuleInfo.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
70d75ca3107ce05bc30ad3511aa669b9fab5eb90 12-Nov-2009 Devang Patel <dpatel@apple.com> "Attach debug info with llvm instructions" mode was enabled a month ago. Now make it permanent and remove old way of inserting intrinsics to encode debug info for line number and scopes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87014 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
achineModuleInfo.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
cdac8bdcab6df408da67ef9f8a32a6298a8a523c 12-Nov-2009 Evan Cheng <evan.cheng@apple.com> RegScavenger::enterBasicBlock should always reset register state.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86972 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
60f90618203290f628f295510b8962c1bedd74da 12-Nov-2009 Evan Cheng <evan.cheng@apple.com> RegScavenger::enterBasicBlock should always reset register state.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86972 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
04e67d0e2a2d7bcde1028998b06990c935dd95b2 12-Nov-2009 Jim Grosbach <grosbach@apple.com> Move the utility function UpdateTerminator() from CodePlacementOpt() into
MachineBasicBlock so other passes can utilize it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86947 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
achineBasicBlock.cpp
7707a0df5b00c8326a581205639d6b2871f182e9 12-Nov-2009 Jim Grosbach <grosbach@apple.com> Move the utility function UpdateTerminator() from CodePlacementOpt() into
MachineBasicBlock so other passes can utilize it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86947 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
achineBasicBlock.cpp
b53550dee876b4de5472e30c701034694d0e5d24 12-Nov-2009 Dan Gohman <gohman@apple.com> Make the BranchFolderPass class local to BranchFolding.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86928 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
72b2990a7495b9df89e151eb711c1e7abdd5f2e5 12-Nov-2009 Dan Gohman <gohman@apple.com> Make the BranchFolderPass class local to BranchFolding.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86928 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
7f14744c3d06ad94c6a47e1258e73d724b81a2b6 12-Nov-2009 Dan Gohman <gohman@apple.com> Minor code cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86926 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
8520149db158427339a235a74dd2cc19553a7328 12-Nov-2009 Dan Gohman <gohman@apple.com> Minor code cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86926 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
2df5c60d9171a173f7bad2e3d53c8c35c85b96d5 12-Nov-2009 Lang Hames <lhames@gmail.com> Fixed an iteration condition in PreAllocSplitting. This should fix some miscompilations casued by PreAllocSplitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86919 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
f035ce58bcf66c45d7a956668ae950f1eeeb8b20 12-Nov-2009 Lang Hames <lhames@gmail.com> Fixed an iteration condition in PreAllocSplitting. This should fix some miscompilations casued by PreAllocSplitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86919 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
08982a392a0eaba71c37087eb53b071aa29b55e8 12-Nov-2009 Dan Gohman <gohman@apple.com> Tail merge at any size when there are two potentials blocks and one
can be made to fall through into the other.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86909 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ad6af45dc172fe23801771200eabb6a7f764e2cb 12-Nov-2009 Dan Gohman <gohman@apple.com> Tail merge at any size when there are two potentials blocks and one
can be made to fall through into the other.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86909 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
d225fdf94c2b6eeed4f5511a134750cf6970b377 12-Nov-2009 Bill Wendling <isanbard@gmail.com> Don't mark a call as potentially throwing if the function it's calling has the
"nounwind" attribute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86897 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
73b55510585573cd37fca85864c8d7d73e6b4093 12-Nov-2009 Bill Wendling <isanbard@gmail.com> Don't mark a call as potentially throwing if the function it's calling has the
"nounwind" attribute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86897 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
e7bfb8796a10f92b4749d8c2510437693a8722e7 11-Nov-2009 Dan Gohman <gohman@apple.com> Promote MergePotentialsElt and SameTailElt to be regular classes
instead of typedefs for std::pair. This simplifies the type of
SameTails, which previously was std::vector<std::pair<std::vector<std::pair<unsigned, MachineBasicBlock *> >::iterator, MachineBasicBlock::iterator>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86885 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
ffe644ebf4dcc50b314261ddd2d08c841f629349 11-Nov-2009 Dan Gohman <gohman@apple.com> Promote MergePotentialsElt and SameTailElt to be regular classes
instead of typedefs for std::pair. This simplifies the type of
SameTails, which previously was std::vector<std::pair<std::vector<std::pair<unsigned, MachineBasicBlock *> >::iterator, MachineBasicBlock::iterator>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86885 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
cec9c63631255076665e2adec25fc785e6945e34 11-Nov-2009 Kenneth Uildriks <kennethuil@gmail.com> x86 users can now return arbitrary sized structs. Structs too large to fit in return registers will be returned through a hidden sret parameter introduced during SelectionDAG construction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86876 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
c158dde21944f2dc016d8d34b46e301d61243ca2 11-Nov-2009 Kenneth Uildriks <kennethuil@gmail.com> x86 users can now return arbitrary sized structs. Structs too large to fit in return registers will be returned through a hidden sret parameter introduced during SelectionDAG construction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86876 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
36f0ea91aca18d364fde01604ebb6b1de21331b0 11-Nov-2009 Dan Gohman <gohman@apple.com> Revert this line of 86871.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86875 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
7cc253e3b85b27540bbc91b8331e06e7a65fbc4c 11-Nov-2009 Dan Gohman <gohman@apple.com> Revert this line of 86871.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86875 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
1b4d683a5818182cbb69cd3e4b2e7a7585cdefc3 11-Nov-2009 Devang Patel <dpatel@apple.com> If doesSupportDebugInformation() is false then do not try to emit dwarf debug info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86874 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
3380cc530702a0df90e6e287069bd65c28085337 11-Nov-2009 Devang Patel <dpatel@apple.com> If doesSupportDebugInformation() is false then do not try to emit dwarf debug info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86874 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
47faa8df5d82bb3a11b334b589cf957ebc1e43a5 11-Nov-2009 Dan Gohman <gohman@apple.com> Check in the changes to this file too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86873 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.h
412a3b90d1f4f1ad42c6c0e7e4e596f7ab688cb7 11-Nov-2009 Dan Gohman <gohman@apple.com> Check in the changes to this file too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86873 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.h
6638ea7611f1fa8da067372147aa7bbec6d2e562 11-Nov-2009 Dan Gohman <gohman@apple.com> Add support for tail duplication to BranchFolding, and extend
tail merging support to handle more cases.
- Recognize several cases where tail merging is beneficial even when
the tail size is smaller than the generic threshold.
- Make use of MachineInstrDesc::isBarrier to help detect
non-fallthrough blocks.
- Check for and avoid disrupting fall-through edges in more cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86871 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineBasicBlock.cpp
2210c0bea83aa8a8585d793a1f63e8c01b65be38 11-Nov-2009 Dan Gohman <gohman@apple.com> Add support for tail duplication to BranchFolding, and extend
tail merging support to handle more cases.
- Recognize several cases where tail merging is beneficial even when
the tail size is smaller than the generic threshold.
- Make use of MachineInstrDesc::isBarrier to help detect
non-fallthrough blocks.
- Check for and avoid disrupting fall-through edges in more cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86871 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineBasicBlock.cpp
409558d2c4f941068e3d00eed5e0242ddeb90fba 11-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix liveness calculation when splitting critical edges during PHI elimination.

- Edges are split before any phis are eliminated, so the code is SSA.

- Create a proper IR BasicBlock for the split edges.

- LiveVariables::addNewBlock now has same syntax as
MachineDominatorTree::addNewBlock. Algorithm calculates predecessor live-out
set rather than successor live-in set.

This feature still causes some miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86867 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
HIElimination.h
3e20475feebca3bfb29375ac7f3e5acbeb2a95c8 11-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix liveness calculation when splitting critical edges during PHI elimination.

- Edges are split before any phis are eliminated, so the code is SSA.

- Create a proper IR BasicBlock for the split edges.

- LiveVariables::addNewBlock now has same syntax as
MachineDominatorTree::addNewBlock. Algorithm calculates predecessor live-out
set rather than successor live-in set.

This feature still causes some miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86867 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
HIElimination.h
0fc27d2431b70c05018c84432f6bbc13ea28cf91 11-Nov-2009 Dan Gohman <gohman@apple.com> Fix indentation level.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86856 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
cdc06ba5dfdded6cdc48061d36b63b807962ab31 11-Nov-2009 Dan Gohman <gohman@apple.com> Fix indentation level.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86856 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
7a6aa7b82c2ce16ee86ffb5e0ccd3b6007922397 11-Nov-2009 Dan Gohman <gohman@apple.com> Whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86855 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
4e3f125e184f96ae72f2c44d16cafe0d44158283 11-Nov-2009 Dan Gohman <gohman@apple.com> Whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86855 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
aa4f4fa4cae85ae252660d03d9af0b4ebe596169 11-Nov-2009 Dan Gohman <gohman@apple.com> Prefix MBB numbers with "BB#" in debug output to make it clear what
the numbers mean.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86854 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
a127edceae2a0097133e9f032e759f9d15f92b7e 11-Nov-2009 Dan Gohman <gohman@apple.com> Prefix MBB numbers with "BB#" in debug output to make it clear what
the numbers mean.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86854 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
a0045b0723b852027e2a6cf3fe8a0876a7e06280 11-Nov-2009 Dan Gohman <gohman@apple.com> Minor code simplification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86853 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
d194498d2669e28cd8e85b0ceb7c69a7ec66da13 11-Nov-2009 Dan Gohman <gohman@apple.com> Minor code simplification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86853 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
c9f2d2426db8ea833e540eeb26ac3e25f1741e4a 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86794 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c032679d3ef57246a472cd49e2c884d0345e9ff2 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86794 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6c9df2b8d4ebb458bf3bd6088f0b9be26b2abc86 11-Nov-2009 Bill Wendling <isanbard@gmail.com> Make sure that the exception handling data has the same visibility as the
function it's generated for.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86779 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
ee161a68240dfe7e28fdc45d5595380a3ec3b9c8 11-Nov-2009 Bill Wendling <isanbard@gmail.com> Make sure that the exception handling data has the same visibility as the
function it's generated for.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86779 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
ce8986f9627a92ccebb067284b3cf4092d737149 11-Nov-2009 Devang Patel <dpatel@apple.com> Do not assume first function scope seen represents current function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86771 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
39ae3ff6d13ef71d0f0ecc8499b49935355508af 11-Nov-2009 Devang Patel <dpatel@apple.com> Do not assume first function scope seen represents current function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86771 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
53addbf446f848c0f165e5d2cbaca31fff796b36 11-Nov-2009 Devang Patel <dpatel@apple.com> While creating DbgScopes, do not forget parent scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86763 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
2f105c6e18b1cf0507be74dd03779b675d254a30 11-Nov-2009 Devang Patel <dpatel@apple.com> While creating DbgScopes, do not forget parent scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86763 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
bad42264107804ba40844000f12d9e0a23ea563b 11-Nov-2009 Devang Patel <dpatel@apple.com> Ignore variable if scope info is not available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86753 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fb0ee43438d674213490afbeeaccba8052287f31 11-Nov-2009 Devang Patel <dpatel@apple.com> Ignore variable if scope info is not available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86753 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8b8c35b2d8a380c7ce06cce6618bb5875f5c5294 11-Nov-2009 Dale Johannesen <dalej@apple.com> Emit correct code when making a ConstantPool entry for a vector
constant whose component type is not a legal type for the target.
(If the target ConstantPool cannot handle this type either, it has
an opportunity to merge elements. In practice any target with
8-bit bytes must support i8 *as data*). 7320806 (partial).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86751 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9a645cd9d4c0e7d25e4b8836ed31deb5881c8101 11-Nov-2009 Dale Johannesen <dalej@apple.com> Emit correct code when making a ConstantPool entry for a vector
constant whose component type is not a legal type for the target.
(If the target ConstantPool cannot handle this type either, it has
an opportunity to merge elements. In practice any target with
8-bit bytes must support i8 *as data*). 7320806 (partial).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86751 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
90a0fe3bd6043f897285b967b196f6ab26dfdcae 11-Nov-2009 Devang Patel <dpatel@apple.com> Implement support to debug inlined functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86748 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
53bb5c95afe4ff2627cac513221af2e4e7c5d2e3 11-Nov-2009 Devang Patel <dpatel@apple.com> Implement support to debug inlined functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86748 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
be9cdbf981991737b49e4474701e820bc881cbfd 10-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach PHIElimination to split critical edges when -split-phi-edges is enabled.

Critical edges leading to a PHI node are split when the PHI source variable is
live out from the predecessor block. This help the coalescer eliminate more
PHI joins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86725 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
HIElimination.h
f235f13931835b3335f3f2ff2d3060381b93626c 10-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach PHIElimination to split critical edges when -split-phi-edges is enabled.

Critical edges leading to a PHI node are split when the PHI source variable is
live out from the predecessor block. This help the coalescer eliminate more
PHI joins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86725 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
HIElimination.h
4e45f87bcb425c0f18e92f80eac28a2dbc6be555 10-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Refactoring: Extract method PHIElimination::isLiveOut().
Clean up some whitespace.
No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86724 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
e35e3c33dc5533dd1e8ab7d9f4039cc1429d56aa 10-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Refactoring: Extract method PHIElimination::isLiveOut().
Clean up some whitespace.
No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86724 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
bb0ae064da8981a29f17d289d341d6fa981e2976 10-Nov-2009 Duncan Sands <baldrick@free.fr> Codegen support for the llvm.invariant/lifetime.start/end intrinsics:
just throw them away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86678 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuild.cpp
f07c9497b2ad030457c9314db5bfb8b0b204a0da 10-Nov-2009 Duncan Sands <baldrick@free.fr> Codegen support for the llvm.invariant/lifetime.start/end intrinsics:
just throw them away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86678 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuild.cpp
91f5efc47691a931743775b97103f84879d121e5 10-Nov-2009 Dan Gohman <gohman@apple.com> Remove an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86642 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
7071528e4e1879b67d043e6058b758f17ae7ac1b 10-Nov-2009 Dan Gohman <gohman@apple.com> Remove an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86642 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
9b3225207423344cbac9fa367c077055d0cdeaf9 10-Nov-2009 Dan Gohman <gohman@apple.com> Minor code simplification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86641 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
b2e40990c40999804f0f28650685c4af18e4c261 10-Nov-2009 Dan Gohman <gohman@apple.com> Minor code simplification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86641 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
8154d2e023fe3137363f8bbc9dae2dff7188dccb 10-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Fix DenseMap iterator constness.

This patch forbids implicit conversion of DenseMap::const_iterator to
DenseMap::iterator which was possible because DenseMapIterator inherited
(publicly) from DenseMapConstIterator. Conversion the other way around is now
allowed as one may expect.

The template DenseMapConstIterator is removed and the template parameter
IsConst which specifies whether the iterator is constant is added to
DenseMapIterator.

Actually IsConst parameter is not necessary since the constness can be
determined from KeyT but this is not relevant to the fix and can be addressed
later.

Patch by Victor Zverovich!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86636 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
reAllocSplitting.cpp
lotIndexes.cpp
81cf4325698b48b02eddab921ac333c7f25005c3 10-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Fix DenseMap iterator constness.

This patch forbids implicit conversion of DenseMap::const_iterator to
DenseMap::iterator which was possible because DenseMapIterator inherited
(publicly) from DenseMapConstIterator. Conversion the other way around is now
allowed as one may expect.

The template DenseMapConstIterator is removed and the template parameter
IsConst which specifies whether the iterator is constant is added to
DenseMapIterator.

Actually IsConst parameter is not necessary since the constness can be
determined from KeyT but this is not relevant to the fix and can be addressed
later.

Patch by Victor Zverovich!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86636 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
reAllocSplitting.cpp
lotIndexes.cpp
2a0ca3b82e4e78705e37f2b3d9092bc9767b8306 10-Nov-2009 David Goodwin <david_goodwin@apple.com> Fixed to address code review. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86634 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
c2e8a7e8d2ab156afaa8ab0d0317dd9ee3db7d30 10-Nov-2009 David Goodwin <david_goodwin@apple.com> Fixed to address code review. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86634 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
526dd742a7832e90f52ac99c24a4370d3d98d347 10-Nov-2009 David Goodwin <david_goodwin@apple.com> Allow targets to specify register classes whose member registers should not be renamed to break anti-dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86628 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ostRASchedulerList.cpp
0855dee564f80160abf95497475306af38ab7f84 10-Nov-2009 David Goodwin <david_goodwin@apple.com> Allow targets to specify register classes whose member registers should not be renamed to break anti-dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86628 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ostRASchedulerList.cpp
de65e53debdf767545ba31e5bb8f2fd7095f9e8f 09-Nov-2009 Dan Gohman <gohman@apple.com> Remove an unneeded #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86601 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ba565bfc2117b401ecd55631fb3e4e6428a62a5c 09-Nov-2009 Dan Gohman <gohman@apple.com> Remove an unneeded #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86601 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0dd119b2f1709f252b0ba64f6966bc2077f14ac8 09-Nov-2009 Mike Stump <mrs@apple.com> Fix for 64-bit builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86600 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
70e5e6834cb5065186f82c3a459681f3f22cd1e0 09-Nov-2009 Mike Stump <mrs@apple.com> Fix for 64-bit builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86600 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
80164f2cd037e165924e023aa3a8b8b9b533e8f7 09-Nov-2009 Dan Gohman <gohman@apple.com> Print "..." instead of all the uninteresting register clobbers on call
instructions. This makes CodeGen dumps significantly less noisy.

Example before:
BL <ga:@bar>, %R0<imp-def>, %R1<imp-def,dead>, %R2<imp-def,dead>, %R3<imp-def,dead>, %R12<imp-def,dead>, %LR<imp-def,dead>, %D0<imp-def,dead>, %D1<imp-def,dead>, %D2<imp-def,dead>, %D3<imp-def,dead>, %D4<imp-def,dead>, %D5<imp-def,dead>, %D6<imp-def,dead>, %D7<imp-def,dead>, %D16<imp-def,dead>, %D17<imp-def,dead>, %D18<imp-def,dead>, %D19<imp-def,dead>, %D20<imp-def,dead>, %D21<imp-def,dead>, %D22<imp-def,dead>, %D23<imp-def,dead>, %D24<imp-def,dead>, %D25<imp-def,dead>, %D26<imp-def,dead>, %D27<imp-def,dead>, %D28<imp-def,dead>, %D29<imp-def,dead>, %D30<imp-def,dead>, %D31<imp-def,dead>, %CPSR<imp-def,dead>, %FPSCR<imp-def,dead>

Same example after:
BL <ga:@bar>, %R0<imp-def>, %R1<imp-def,dead>, %LR<imp-def,dead>, %CPSR<imp-def,dead>, ...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86583 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
80f6c5898113806130975fd56d24929b06bf54f8 09-Nov-2009 Dan Gohman <gohman@apple.com> Print "..." instead of all the uninteresting register clobbers on call
instructions. This makes CodeGen dumps significantly less noisy.

Example before:
BL <ga:@bar>, %R0<imp-def>, %R1<imp-def,dead>, %R2<imp-def,dead>, %R3<imp-def,dead>, %R12<imp-def,dead>, %LR<imp-def,dead>, %D0<imp-def,dead>, %D1<imp-def,dead>, %D2<imp-def,dead>, %D3<imp-def,dead>, %D4<imp-def,dead>, %D5<imp-def,dead>, %D6<imp-def,dead>, %D7<imp-def,dead>, %D16<imp-def,dead>, %D17<imp-def,dead>, %D18<imp-def,dead>, %D19<imp-def,dead>, %D20<imp-def,dead>, %D21<imp-def,dead>, %D22<imp-def,dead>, %D23<imp-def,dead>, %D24<imp-def,dead>, %D25<imp-def,dead>, %D26<imp-def,dead>, %D27<imp-def,dead>, %D28<imp-def,dead>, %D29<imp-def,dead>, %D30<imp-def,dead>, %D31<imp-def,dead>, %CPSR<imp-def,dead>, %FPSCR<imp-def,dead>

Same example after:
BL <ga:@bar>, %R0<imp-def>, %R1<imp-def,dead>, %LR<imp-def,dead>, %CPSR<imp-def,dead>, ...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86583 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1eb5ad3173bac40e253c4bd8346745a0b9d35217 09-Nov-2009 David Goodwin <david_goodwin@apple.com> Fix dependencies added to model memory aliasing for post-RA scheduling. The dependencies were overly conservative for memory access that are known not to alias.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86580 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
980d494ab6ba3c812194f5cbc14992fa35dcc976 09-Nov-2009 David Goodwin <david_goodwin@apple.com> Fix dependencies added to model memory aliasing for post-RA scheduling. The dependencies were overly conservative for memory access that are known not to alias.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86580 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
a39e7acd54fdc09f0b8b3db176a4fbf53c1679a1 09-Nov-2009 Dan Gohman <gohman@apple.com> Constify MachineFunctionAnalysis' TargetMachine reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86564 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionAnalysis.cpp
28a4c786219861534a0ad321a3a31d2465d769d9 09-Nov-2009 Dan Gohman <gohman@apple.com> Constify MachineFunctionAnalysis' TargetMachine reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86564 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionAnalysis.cpp
48ac7b971f7e6cbd60c4d1c70663cb0d328cacf2 09-Nov-2009 Evan Cheng <evan.cheng@apple.com> Hide a couple of options.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86522 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
electionDAG/SelectionDAGISel.cpp
df8ed024735b651d6e0082262d4e7a00b2fa4d32 09-Nov-2009 Evan Cheng <evan.cheng@apple.com> Hide a couple of options.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86522 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
electionDAG/SelectionDAGISel.cpp
a241af8f12c65c26a4a631c3428cc7daefed4318 09-Nov-2009 Evan Cheng <evan.cheng@apple.com> 80 col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86521 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
63040ce85813f4251af7d7a5660f267366360ece 09-Nov-2009 Evan Cheng <evan.cheng@apple.com> 80 col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86521 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
2a7f8c576a1490e1b2cc6bc04b5c8333435902bd 08-Nov-2009 Lang Hames <lhames@gmail.com> Moved some ManagedStatics out of the SlotIndexes header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86446 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
16dcaf59960d699735a57b1623092d561c18a165 08-Nov-2009 Lang Hames <lhames@gmail.com> Moved some ManagedStatics out of the SlotIndexes header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86446 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
0e459b4d02c73518bf209236d7e406259e56408e 07-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Add 8 bit libcalls and make use of them for msp430

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
8983da729aa1ca99a11a3b98ae6280dfcdbadb39 07-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Add 8 bit libcalls and make use of them for msp430

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
87c965591afc72dca6b805427a322cd5adf40d11 07-Nov-2009 Chris Lattner <sabre@nondot.org> Fix PR5421 by APInt'izing switch lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86354 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
e880efe446f731b73558542c12a6f980b8baa765 07-Nov-2009 Chris Lattner <sabre@nondot.org> Fix PR5421 by APInt'izing switch lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86354 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
a1c6ba05e0a2b1e604f2cae702a60cf8e568d40b 07-Nov-2009 Lang Hames <lhames@gmail.com> Update some globals to use ManagedStatic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86342 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
d6ef7fac1a020c58ec61cad2325e5f6afd0bbee6 07-Nov-2009 Lang Hames <lhames@gmail.com> Update some globals to use ManagedStatic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86342 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
e6f60f14e1adc950bfd1529325db1acedf9cf97e 07-Nov-2009 Mon P Wang <wangmp@apple.com> Fix memoizing of CvtRndSatSDNode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bdea34807aadf7a27ebaf1b7c5b7c199afda3e91 07-Nov-2009 Mon P Wang <wangmp@apple.com> Fix memoizing of CvtRndSatSDNode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
626474d3ddba098f44d1a372314418a63c152540 07-Nov-2009 Evan Cheng <evan.cheng@apple.com> - Add TargetInstrInfo::isIdentical(). It's similar to MachineInstr::isIdentical
except it doesn't care if the definitions' virtual registers differ. This is
used by machine LICM and other MI passes to perform CSE.
- Teach Thumb2InstrInfo::isIdentical() to check two t2LDRpci_pic are identical.
Since pc relative constantpool entries are always different, this requires it
it check if the values can actually the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86328 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
argetInstrInfoImpl.cpp
78e5c1140adc926e7c004748c1c912bfddd875b4 07-Nov-2009 Evan Cheng <evan.cheng@apple.com> - Add TargetInstrInfo::isIdentical(). It's similar to MachineInstr::isIdentical
except it doesn't care if the definitions' virtual registers differ. This is
used by machine LICM and other MI passes to perform CSE.
- Teach Thumb2InstrInfo::isIdentical() to check two t2LDRpci_pic are identical.
Since pc relative constantpool entries are always different, this requires it
it check if the values can actually the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86328 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
argetInstrInfoImpl.cpp
87d0426c569d606dca1d32dc23cae9dee245fc76 07-Nov-2009 Kenneth Uildriks <kennethuil@gmail.com> Add code to check at SelectionDAGISel::LowerArguments time to see if return values can be lowered to registers. Coming soon, code to perform sret-demotion if return values cannot be lowered to registers

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86324 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/SelectionDAGBuild.cpp
b4997aeab74934ffa6fc0409afc4d8704245e372 07-Nov-2009 Kenneth Uildriks <kennethuil@gmail.com> Add code to check at SelectionDAGISel::LowerArguments time to see if return values can be lowered to registers. Coming soon, code to perform sret-demotion if return values cannot be lowered to registers

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86324 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/SelectionDAGBuild.cpp
d1332dcf1421bd9a7b2e9527056cb1934aea041c 07-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix inverted conflict test in -early-coalesce.

A non-identity copy cannot be coalesced when the phi join destination register
is live at the copy site.

Also verify the condition that the PHI join source register is only used in
the PHI join. Otherwise the coalescing is invalid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86322 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3de23e6f6cf337451a0934159da494d645b93133 07-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix inverted conflict test in -early-coalesce.

A non-identity copy cannot be coalesced when the phi join destination register
is live at the copy site.

Also verify the condition that the PHI join source register is only used in
the PHI join. Otherwise the coalescing is invalid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86322 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cda028f643df712e635d48b9f19af6e5dad2cd54 06-Nov-2009 Bob Wilson <bob.wilson@apple.com> Fix comment typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86295 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c0ef244499a97ba4f411456fe5d65deb79d51ba7 06-Nov-2009 Bob Wilson <bob.wilson@apple.com> Fix comment typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86295 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
400718724c2abc7eab43ccf09a4e970a23846017 06-Nov-2009 Dan Gohman <gohman@apple.com> Use WriteAsOperand to print GlobalAddress MachineOperands. This
prints them with the leading '@'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86261 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
8d4e3b5b48b245ed65259270a53fcaf0bf91d9f7 06-Nov-2009 Dan Gohman <gohman@apple.com> Use WriteAsOperand to print GlobalAddress MachineOperands. This
prints them with the leading '@'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86261 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
83e42c7163cc29cf8afd36082164ffb8a2e4b454 06-Nov-2009 Devang Patel <dpatel@apple.com> Do not bother to emit debug info for nameless global variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86259 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
84c73e9b8234287c4521e6d7e27c15e77843489e 06-Nov-2009 Devang Patel <dpatel@apple.com> Do not bother to emit debug info for nameless global variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86259 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fabc47c0671013d23e636704db0fb6a34e106615 06-Nov-2009 Devang Patel <dpatel@apple.com> Do not try to emit debug info entry for dead global variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86212 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
465c3bed165dc76452606ea10a34ae2ef6033e8a 06-Nov-2009 Devang Patel <dpatel@apple.com> Do not try to emit debug info entry for dead global variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86212 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
bbc43963b76f8e54e6cee47defde4868586665fd 06-Nov-2009 Dan Gohman <gohman@apple.com> Factor out the printing of the leading tab into printInlineAsm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86199 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
40c57860dad429d3c938ed5f918c2c66f3b5fa72 06-Nov-2009 Dan Gohman <gohman@apple.com> Factor out the printing of the leading tab into printInlineAsm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86199 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ff592eced3d70159de10c5a3837e0d0fee7edb8f 06-Nov-2009 Dan Gohman <gohman@apple.com> Fix the label name generation for address-taken labels to avoid potential
problems with name collisions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86189 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
568a3be545dd1ad256af69549d9b95df474bfd8f 06-Nov-2009 Dan Gohman <gohman@apple.com> Fix the label name generation for address-taken labels to avoid potential
problems with name collisions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86189 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0d1cb01d2bfeba381f2df9e1295403c8f44527d6 05-Nov-2009 Lang Hames <lhames@gmail.com> Added support for renumbering existing index list elements. Removed some junk from the initial numbering code in runOnMachineFunction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86184 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
fbb8fa247ec13067d9ad3f0c426e2029d15222b2 05-Nov-2009 Lang Hames <lhames@gmail.com> Added support for renumbering existing index list elements. Removed some junk from the initial numbering code in runOnMachineFunction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86184 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
6c41ba177e160a4c26c6c9c7c49d27cbecf1a94b 05-Nov-2009 David Goodwin <david_goodwin@apple.com> Fix bug in aggressive antidep breaking; liveness was not updated correctly for regions that do not have antidep candidates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86172 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
7040d6e2f5d503e9948b9caff940a66238a0c605 05-Nov-2009 David Goodwin <david_goodwin@apple.com> Fix bug in aggressive antidep breaking; liveness was not updated correctly for regions that do not have antidep candidates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86172 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
63e2b7e7ea21976b0922a76e4cd10ebf3a2591ea 05-Nov-2009 Dan Gohman <gohman@apple.com> Avoid printing a redundant space in SDNode->dump().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86151 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c5600c89d61e25f0662847a81af8afbf264caee4 05-Nov-2009 Dan Gohman <gohman@apple.com> Avoid printing a redundant space in SDNode->dump().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86151 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
38e9090bf172f4eb48f6ec53f5895160515b84a9 05-Nov-2009 David Goodwin <david_goodwin@apple.com> Replace std::map.at() with std::map[].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86102 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
98f2f1aff8dae1917497b090720c5f5a906ac40b 05-Nov-2009 David Goodwin <david_goodwin@apple.com> Replace std::map.at() with std::map[].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86102 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
36005a2ab57baffb80e841d6d3334c41aa8ddc86 05-Nov-2009 David Goodwin <david_goodwin@apple.com> Break anti-dependencies using free registers in a round-robin manner to avoid introducing new anti-dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86098 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ostRASchedulerList.cpp
54097836f31660bd5e84c34ee8c92d237844315f 05-Nov-2009 David Goodwin <david_goodwin@apple.com> Break anti-dependencies using free registers in a round-robin manner to avoid introducing new anti-dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86098 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ostRASchedulerList.cpp
a192bc05ae6122d9b2921cbbb0337db8972961ea 05-Nov-2009 Evan Cheng <evan.cheng@apple.com> Now that code placement optimization pass is run for JIT, make sure it's before pre-emit passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86092 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
517e2556e39973ae65f58fad9865eef3a5a0966b 05-Nov-2009 Evan Cheng <evan.cheng@apple.com> Now that code placement optimization pass is run for JIT, make sure it's before pre-emit passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86092 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
10aae1b683ac3f55b0f49787927e385cfe2cd706 05-Nov-2009 Evan Cheng <evan.cheng@apple.com> Code refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86085 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
9fb744e16945390d6ff0a631d4ad7637fec5b7b1 05-Nov-2009 Evan Cheng <evan.cheng@apple.com> Code refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86085 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
c466871dfda63d07da52ca2d87279c33a1db2eca 05-Nov-2009 David Goodwin <david_goodwin@apple.com> Correctly add chain dependencies around calls and unknown-side-effect instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86080 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
5be870add97c52862285eddaf950c806a3fa076b 05-Nov-2009 David Goodwin <david_goodwin@apple.com> Correctly add chain dependencies around calls and unknown-side-effect instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86080 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
71842a96a0af9476bb92a29534509e04f02a835d 05-Nov-2009 Devang Patel <dpatel@apple.com> While calculating original type size for a derived type, handle type variants encoded as DIDerivedType appropriately.
This improves bitfield support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86073 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
61ecbd196c0128abb8c588aebc456ed96cdf1d63 05-Nov-2009 Devang Patel <dpatel@apple.com> While calculating original type size for a derived type, handle type variants encoded as DIDerivedType appropriately.
This improves bitfield support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86073 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7d9fe58ac9c54287f9894c61e361af13e6690300 04-Nov-2009 Devang Patel <dpatel@apple.com> Fix DW_AT_data_member_location for bit-fields. It points to the location of annonymous field that covers respective field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86054 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
33db5082836bfe6257f9a36e16aecb062076837d 04-Nov-2009 Devang Patel <dpatel@apple.com> Fix DW_AT_data_member_location for bit-fields. It points to the location of annonymous field that covers respective field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86054 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
13d4167715408b029b52ca88437321f306b057df 04-Nov-2009 Lang Hames <lhames@gmail.com> Handle empty/tombstone keys for LiveIndex more cleanly. Check for index sanity when constructing index list entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86049 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
0368e500eb7f5f03313e1a7af5b8fa48465c0560 04-Nov-2009 Lang Hames <lhames@gmail.com> Handle empty/tombstone keys for LiveIndex more cleanly. Check for index sanity when constructing index list entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86049 91177308-0d34-0410-b5e6-96231b3b80d8
lotIndexes.cpp
4fc72f071d1541bcc6f6a5d276b728167d53359c 04-Nov-2009 Eric Christopher <echristo@apple.com> Add some options to disable various code gen optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86044 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
522c01ac6585604d53172daa970443d1fcaca3b1 04-Nov-2009 Eric Christopher <echristo@apple.com> Add some options to disable various code gen optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86044 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
1ff19cf6b084b54e4f04b72f080926a4a37d953c 04-Nov-2009 Devang Patel <dpatel@apple.com> Array element size does not match array size but array is not a bitfield.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86043 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c416d3b25df0a2bc7fb431914abe55260d330e48 04-Nov-2009 Devang Patel <dpatel@apple.com> Array element size does not match array size but array is not a bitfield.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86043 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7f251671d1a905be12347721af468b8e31ad9d6e 04-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out an informative comment for KILL instructions.

The KILL pseudo-instruction may survive to the asm printer pass, just like the IMPLICIT_DEF. Print the KILL as a comment instead of just leaving a blank line in the output.

With -asm-verbose=0, a blank line is printed, like IMPLICIT?DEF.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86041 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ad68264f590f05db3731a452fc91dc22bc75167d 04-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out an informative comment for KILL instructions.

The KILL pseudo-instruction may survive to the asm printer pass, just like the IMPLICIT_DEF. Print the KILL as a comment instead of just leaving a blank line in the output.

With -asm-verbose=0, a blank line is printed, like IMPLICIT?DEF.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86041 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a39f127c957d42f0ce408b00fb5c597fb9f766d1 04-Nov-2009 Evan Cheng <evan.cheng@apple.com> RangeIsDefinedByCopyFromReg() should check for subreg_to_reg, insert_subreg,
and extract_subreg as a "copy" that defines a valno.
Also fixes a typo. These two issues prevent a simple subreg coalescing from
happening before.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86022 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
50608bac2fe1d3eb4753b6acdac06292eae7b980 04-Nov-2009 Evan Cheng <evan.cheng@apple.com> RangeIsDefinedByCopyFromReg() should check for subreg_to_reg, insert_subreg,
and extract_subreg as a "copy" that defines a valno.
Also fixes a typo. These two issues prevent a simple subreg coalescing from
happening before.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86022 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c527ba8dbb651bc60d2ea16990283d8e96e249ed 04-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Fix CMake makefiles

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85994 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
dece1e217a65268806f63ab95b53fd28b605c0af 04-Nov-2009 Douglas Gregor <dgregor@apple.com> Fix CMake makefiles

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85994 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
d6a717cba117dae9a90a373698f691d9452c9c49 04-Nov-2009 Lang Hames <lhames@gmail.com> The Indexes Patch.

This introduces a new pass, SlotIndexes, which is responsible for numbering
instructions for register allocation (and other clients). SlotIndexes numbering
is designed to match the existing scheme, so this patch should not cause any
changes in the generated code.

For consistency, and to avoid naming confusion, LiveIndex has been renamed
SlotIndex.

The processImplicitDefs method of the LiveIntervals analysis has been moved
into its own pass so that it can be run prior to SlotIndexes. This was
necessary to match the existing numbering scheme.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85979 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
reAllocSplitting.cpp
rocessImplicitDefs.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
lotIndexes.cpp
piller.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
irtRegMap.cpp
irtRegMap.h
233a60ec40b41027ff429e2f2c27fa2be762f2e9 04-Nov-2009 Lang Hames <lhames@gmail.com> The Indexes Patch.

This introduces a new pass, SlotIndexes, which is responsible for numbering
instructions for register allocation (and other clients). SlotIndexes numbering
is designed to match the existing scheme, so this patch should not cause any
changes in the generated code.

For consistency, and to avoid naming confusion, LiveIndex has been renamed
SlotIndex.

The processImplicitDefs method of the LiveIntervals analysis has been moved
into its own pass so that it can be run prior to SlotIndexes. This was
necessary to match the existing numbering scheme.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85979 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
reAllocSplitting.cpp
rocessImplicitDefs.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
lotIndexes.cpp
piller.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
irtRegMap.cpp
irtRegMap.h
24a1825a08acd458d350140f0706f3cbc5bf6a2e 04-Nov-2009 Bob Wilson <bob.wilson@apple.com> Fix branch folding bug for indirect branches: for a block containing only
an unconditional branch (possibly from tail merging), this code is
trying to redirect all of its predecessors to go directly to the branch
target, but that isn't feasible for indirect branches. The other
predecessors (that don't end with indirect branches) could theoretically
still be handled, but that is not easily done right now.

The AnalyzeBranch interface doesn't currently let us distinguish jump table
branches from indirect branches, and this code is currently handling
jump tables. To avoid punting on address-taken blocks, we would have to give
up handling jump tables. That seems like a bad tradeoff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85975 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
888acc35a3e271d092f9b1efc7c32b94ff17fbf7 04-Nov-2009 Bob Wilson <bob.wilson@apple.com> Fix branch folding bug for indirect branches: for a block containing only
an unconditional branch (possibly from tail merging), this code is
trying to redirect all of its predecessors to go directly to the branch
target, but that isn't feasible for indirect branches. The other
predecessors (that don't end with indirect branches) could theoretically
still be handled, but that is not easily done right now.

The AnalyzeBranch interface doesn't currently let us distinguish jump table
branches from indirect branches, and this code is currently handling
jump tables. To avoid punting on address-taken blocks, we would have to give
up handling jump tables. That seems like a bad tradeoff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85975 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
d6cb4521300b5d215e1363b82cdc2fd443c67088 03-Nov-2009 Evan Cheng <evan.cheng@apple.com> Re-apply 85799. It turns out my code isn't buggy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85947 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
777c6b7caa9bbefe14085bf51e91a0bf21b0b3c0 03-Nov-2009 Evan Cheng <evan.cheng@apple.com> Re-apply 85799. It turns out my code isn't buggy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85947 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
996892b9ed838e797c1a870e9839dfcd236a5014 03-Nov-2009 David Goodwin <david_goodwin@apple.com> Do a scheduling pass ignoring anti-dependencies to identify candidate registers that should be renamed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85939 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
xactHazardRecognizer.cpp
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
4de099d8ca651e00fa5fac22bace4f4dba2d0292 03-Nov-2009 David Goodwin <david_goodwin@apple.com> Do a scheduling pass ignoring anti-dependencies to identify candidate registers that should be renamed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85939 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
ntiDepBreaker.h
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
xactHazardRecognizer.cpp
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
d078dfc911400195d7d2fc6961f5e684dbb1413c 03-Nov-2009 David Goodwin <david_goodwin@apple.com> <rdar://problem/7352605>. When building schedule graph use mayAlias information to avoid chaining loads/stores of spill slots with non-aliased memory ops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85934 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
a9e610768bad77f400bc763a0011e77aee19053e 03-Nov-2009 David Goodwin <david_goodwin@apple.com> <rdar://problem/7352605>. When building schedule graph use mayAlias information to avoid chaining loads/stores of spill slots with non-aliased memory ops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85934 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
11ac7e7b5d9a4c1ede1e3485ad38eb4ca889918c 03-Nov-2009 Devang Patel <dpatel@apple.com> Ignore unnamed variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85909 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1b845976d0662b64bc06a52824ef9a5540486a1e 03-Nov-2009 Devang Patel <dpatel@apple.com> Ignore unnamed variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85909 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8ea4690298176786e7a20f69755e5dadaa4f5e98 03-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Fix a funky "declared with greater visibility than the type of its field"
warning from gcc by removing VISIBILITY_HIDDEN attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85873 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
36d52bf4df4f5c86f2aad1131195b0f47e481836 03-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Fix a funky "declared with greater visibility than the type of its field"
warning from gcc by removing VISIBILITY_HIDDEN attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85873 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
da8a1abb3dc7f1fde5759ccb0fc0820c4198d94d 02-Nov-2009 Evan Cheng <evan.cheng@apple.com> Revert 85799 for now. It might be breaking llvm-gcc driver.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85827 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
454ac8961b243afa7c46fce9c28fb4c01650bb3e 02-Nov-2009 Evan Cheng <evan.cheng@apple.com> Revert 85799 for now. It might be breaking llvm-gcc driver.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85827 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
9374f78f5230bcd68f2e8b24d0b975cb86527e76 02-Nov-2009 David Goodwin <david_goodwin@apple.com> Chain dependencies used to enforce memory order should have latency of 0 (except for true dependency of Store followed by aliased Load... we estimate that case with a single cycle of latency assuming the hardware will bypass)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85807 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
7c9b1ac5073a4988a9ed39aed6cd5a22e6a1c24f 02-Nov-2009 David Goodwin <david_goodwin@apple.com> Chain dependencies used to enforce memory order should have latency of 0 (except for true dependency of Store followed by aliased Load... we estimate that case with a single cycle of latency assuming the hardware will bypass)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85807 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
9a615773ca6289058893e18267c9ce4095cb3656 02-Nov-2009 Evan Cheng <evan.cheng@apple.com> Initilize the machine LICM CSE map upon the first time an instruction is hoisted to
the loop preheader. Add instructions which are already in the preheader block that
may be common expressions of those that are hoisted out. These does get a few more
instructions CSE'ed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85799 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
72ed88feacb989831581f2c71176a68fcdba4b67 02-Nov-2009 Evan Cheng <evan.cheng@apple.com> Initilize the machine LICM CSE map upon the first time an instruction is hoisted to
the loop preheader. Add instructions which are already in the preheader block that
may be common expressions of those that are hoisted out. These does get a few more
instructions CSE'ed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85799 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
87e4592785576c12930d0ffd65b33c7b7d889fc5 02-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add PseudoSourceValue::mayAlias. It returns true if the object can ever alias any LLVM IR value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85762 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
f57b1baa441e3bbce7f264d8bb5054e50fe8ee1c 02-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add PseudoSourceValue::mayAlias. It returns true if the object can ever alias any LLVM IR value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85762 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
70337f0e084c54af2348a7a8aee72a2823c0e5b8 31-Oct-2009 Dan Gohman <gohman@apple.com> Fix a missing newline in the dwarf output code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b953c944b6da99dfbdbc11a8b021c386ad37c332 31-Oct-2009 Dan Gohman <gohman@apple.com> Fix a missing newline in the dwarf output code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
57b31659358cd7ae9cd045ec2ce3019b5adc234a 31-Oct-2009 Dan Gohman <gohman@apple.com> Make -print-machineinstrs more readable.
- Be consistent when referring to MachineBasicBlocks: BB#0.
- Be consistent when referring to virtual registers: %reg1024.
- Be consistent when referring to unknown physical registers: %physreg10.
- Be consistent when referring to known physical registers: %RAX
- Be consistent when referring to register 0: %reg0
- Be consistent when printing alignments: align=16
- Print jump table contents.
- Don't print host addresses, in general.
- and various other cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85682 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
achineVerifier.cpp
ostRASchedulerList.cpp
electionDAG/SelectionDAG.cpp
0ba90f3e34b826b039bdfece1415ef032c4ad3f5 31-Oct-2009 Dan Gohman <gohman@apple.com> Make -print-machineinstrs more readable.
- Be consistent when referring to MachineBasicBlocks: BB#0.
- Be consistent when referring to virtual registers: %reg1024.
- Be consistent when referring to unknown physical registers: %physreg10.
- Be consistent when referring to known physical registers: %RAX
- Be consistent when referring to register 0: %reg0
- Be consistent when printing alignments: align=16
- Print jump table contents.
- Don't print host addresses, in general.
- and various other cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85682 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
achineVerifier.cpp
ostRASchedulerList.cpp
electionDAG/SelectionDAG.cpp
de4f1504bec844ec60a29d3946ff7257da0c3c50 31-Oct-2009 Dan Gohman <gohman@apple.com> Factor out more code into addCommonCodeGenPasses. The JIT wasn't
previously running CodePlacementOpt. Also print headers before
each dump in -print-machineinstrs mode, so that it's clear which
dump is which.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85681 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
499a9377a3dcce85f39f04b2ab39c3dffa3025ef 31-Oct-2009 Dan Gohman <gohman@apple.com> Factor out more code into addCommonCodeGenPasses. The JIT wasn't
previously running CodePlacementOpt. Also print headers before
each dump in -print-machineinstrs mode, so that it's clear which
dump is which.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85681 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
6d54b9847f98e0dfb58e9c7d13af4cb86a5b0812 31-Oct-2009 Dan Gohman <gohman@apple.com> Remove CodeGenLICM. It's largely obsoleted by MachineLICM's new ability
to unfold loop-invariant loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85657 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
9f476e3179713a1e93bbf634855b85a93f8653cd 31-Oct-2009 Dan Gohman <gohman@apple.com> Remove CodeGenLICM. It's largely obsoleted by MachineLICM's new ability
to unfold loop-invariant loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85657 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
9c98ce3d0b7bca679abebf6c6e2e9f6de6bbb02e 31-Oct-2009 Dan Gohman <gohman@apple.com> When discarding SrcValue information, discard all of it so that code
that uses this information knows to behave conservatively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85654 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
75832d7d4f23e5151affd167662f0b2c80d0e90d 31-Oct-2009 Dan Gohman <gohman@apple.com> When discarding SrcValue information, discard all of it so that code
that uses this information knows to behave conservatively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85654 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
509fccf21830e93d117e482fdc5a6b18e183bd3e 31-Oct-2009 Dan Gohman <gohman@apple.com> Fix 80-column violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85653 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
60d686df5471f7156a6b8afa5859346272216c56 31-Oct-2009 Dan Gohman <gohman@apple.com> Fix 80-column violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85653 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
6de661ad137c60e288bd4626f5817e39fc695e51 31-Oct-2009 Eric Christopher <echristo@apple.com> Fix warning with gcc-4.0 and signed/unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85648 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
cdfa666c309ddb3dc655f805fb3d47205c4182d0 31-Oct-2009 Eric Christopher <echristo@apple.com> Fix warning with gcc-4.0 and signed/unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85648 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
61b16fbdaeb7617b779fd0df62b32b40cf68a12c 31-Oct-2009 Dan Gohman <gohman@apple.com> Add assertion checks here to turn silent miscompiles into aborts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85639 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGEmit.cpp
1410b7620ac43f236c40d6b6d35034dd357866d4 31-Oct-2009 Dan Gohman <gohman@apple.com> Add assertion checks here to turn silent miscompiles into aborts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85639 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGEmit.cpp
c00047af5603cf63b34c76c740d4a29fd22ff60a 31-Oct-2009 Dan Gohman <gohman@apple.com> Don't mark registers dead here when processing nodes with MVT::Flag
results. This works around a problem affecting targets which rely on
MVT::Flag to handle physical register defs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85638 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
4cddfd9b6f2b770c0dce66792b79ac9d18bb0ca3 31-Oct-2009 Dan Gohman <gohman@apple.com> Don't mark registers dead here when processing nodes with MVT::Flag
results. This works around a problem affecting targets which rely on
MVT::Flag to handle physical register defs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85638 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
f011658a243d918c31627fddaf7ae351f2f19eb6 30-Oct-2009 Dan Gohman <gohman@apple.com> Fix MachineLICM to use the correct virtual register class when
unfolding loads for hoisting. getOpcodeAfterMemoryUnfold returns the
opcode of the original operation without the load, not the load
itself, MachineLICM needs to know the operand index in order to get
the correct register class. Extend getOpcodeAfterMemoryUnfold to
return this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85622 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
0115e164bad632572e2cfbaf72f0f0882d5319de 30-Oct-2009 Dan Gohman <gohman@apple.com> Fix MachineLICM to use the correct virtual register class when
unfolding loads for hoisting. getOpcodeAfterMemoryUnfold returns the
opcode of the original operation without the load, not the load
itself, MachineLICM needs to know the operand index in order to get
the correct register class. Extend getOpcodeAfterMemoryUnfold to
return this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85622 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
56c480af03aad91c507eed011fd3977e81225e70 30-Oct-2009 Lang Hames <lhames@gmail.com> Stop the iterator in ValueLiveAt from potentially running off the end of the interval.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85599 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
788fa17af87dba8836fca691c9028c57ef8fc4fe 30-Oct-2009 Lang Hames <lhames@gmail.com> Stop the iterator in ValueLiveAt from potentially running off the end of the interval.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85599 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
21d49aa0bac191a9c3dc3b7a6fba8805209d1dff 30-Oct-2009 Dan Gohman <gohman@apple.com> Don't delete blocks which have their address taken.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85572 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ab918103d284b91105831c6b198ad2ab760b907d 30-Oct-2009 Dan Gohman <gohman@apple.com> Don't delete blocks which have their address taken.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85572 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
8f38bef9785b0d126ffac7a6dbe9050daff1a786 30-Oct-2009 Dan Gohman <gohman@apple.com> Mention if a block has its address taken in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85571 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
dfbbf6e0232315b79805f13baab06828de24e558 30-Oct-2009 Dan Gohman <gohman@apple.com> Mention if a block has its address taken in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85571 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
1995be14a415ae124e42dec505a9c5fa6f83a8d1 30-Oct-2009 Dan Gohman <gohman@apple.com> Add support for BlockAddress static initializers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85562 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6a55e62996e1f7223ecab0f26216a2f32e8ae7e4 30-Oct-2009 Dan Gohman <gohman@apple.com> Add support for BlockAddress static initializers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85562 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d8e273feafff0c64aac1587298390f0a91f147af 30-Oct-2009 Dan Gohman <gohman@apple.com> Add a FIXME comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85559 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6ae5b32e487c24f723f262eb989475a2e12eb951 30-Oct-2009 Dan Gohman <gohman@apple.com> Add a FIXME comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85559 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
65e3b3e189325686c5cb6b38e9cf6446d5fb9952 30-Oct-2009 Dan Gohman <gohman@apple.com> Add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85558 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b1cac33856687715bf8db3860ff55ad2f6ca94b5 30-Oct-2009 Dan Gohman <gohman@apple.com> Add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85558 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9105751c7ce64082e5769142e14b0c65cd06bb0a 30-Oct-2009 Dan Gohman <gohman@apple.com> Initial target-independent CodeGen support for BlockAddresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85556 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineBasicBlock.cpp
achineInstr.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
8c2b52552c90f39e4b2fed43e309e599e742b6ac 30-Oct-2009 Dan Gohman <gohman@apple.com> Initial target-independent CodeGen support for BlockAddresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85556 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineBasicBlock.cpp
achineInstr.cpp
electionDAG/InstrEmitter.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
fffff4408557f721ab7ff680bcdcca2c2534aaae 30-Oct-2009 David Goodwin <david_goodwin@apple.com> Between scheduling regions, correctly maintain anti-dep breaking state so that we don't incorrectly rename registers that span these regions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85537 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
5b3c308970f9fe1f6a2e0df265dcd40ea8ad50a8 30-Oct-2009 David Goodwin <david_goodwin@apple.com> Between scheduling regions, correctly maintain anti-dep breaking state so that we don't incorrectly rename registers that span these regions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85537 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
438d4105eeb47c5bc1c5e5464b47a3df46ff2bbd 30-Oct-2009 Dan Gohman <gohman@apple.com> Remove some unnecessary spaces in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85536 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6c1de1830b233e61f6f122923ba5bcf3c81dc288 30-Oct-2009 Dan Gohman <gohman@apple.com> Remove some unnecessary spaces in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85536 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b65e3acb4a07cbc809bc22fbc67675c7233d0f79 29-Oct-2009 Dan Gohman <gohman@apple.com> Move some code from being emitted as boilerplate duplicated in every
*ISelDAGToDAG.cpp to being regular code in SelectionDAGISel.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85530 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e1f188fe27050ec812e5b64cc996e6bb93300392 29-Oct-2009 Dan Gohman <gohman@apple.com> Move some code from being emitted as boilerplate duplicated in every
*ISelDAGToDAG.cpp to being regular code in SelectionDAGISel.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85530 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e2471f2abaa8edb55f5d8252cab8fe08ef09618f 29-Oct-2009 David Goodwin <david_goodwin@apple.com> Fix a couple of bugs in aggressive anti-dep breaking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85522 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
67a8a7b3bd5afefc8057e365bd5f5c7330b3dd1a 29-Oct-2009 David Goodwin <david_goodwin@apple.com> Fix a couple of bugs in aggressive anti-dep breaking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85522 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
4b7a76d7d57c0140e80d5e3f74d929fc909aa8b5 29-Oct-2009 Bob Wilson <bob.wilson@apple.com> Refactor complicated predicate into a separate function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85519 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
7b888b8ad07cccec099634bc838eed5da3f336b1 29-Oct-2009 Bob Wilson <bob.wilson@apple.com> Refactor complicated predicate into a separate function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85519 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
30afe01e7ef78e1d2c01c924161ebe53bf02a3de 29-Oct-2009 Dan Gohman <gohman@apple.com> Rename usesCustomDAGSchedInserter to usesCustomInserter, and update a
bunch of associated comments, because it doesn't have anything to do
with DAGs or scheduling. This is another step in decoupling MachineInstr
emitting from scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85517 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGISel.cpp
533297b58da8c74bec65551e1aface9801fc2259 29-Oct-2009 Dan Gohman <gohman@apple.com> Rename usesCustomDAGSchedInserter to usesCustomInserter, and update a
bunch of associated comments, because it doesn't have anything to do
with DAGs or scheduling. This is another step in decoupling MachineInstr
emitting from scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85517 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
electionDAG/SelectionDAGISel.cpp
5e0e60ac697c23819629d0fb2cc8a04bcfe1cf75 29-Oct-2009 Dan Gohman <gohman@apple.com> Refactor the code for unfolding a load into a separate function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85515 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
5c95230f25a51835375ebaae77b841c6d2c57889 29-Oct-2009 Dan Gohman <gohman@apple.com> Refactor the code for unfolding a load into a separate function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85515 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
3c91dd9cb7e0acb0b92309cbf8b3c75a469ff18b 29-Oct-2009 Bill Wendling <isanbard@gmail.com> Reapply r85338.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85514 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
a33ac6a4c18b51888bc8fd8c36b7d5cbe561161f 29-Oct-2009 Bill Wendling <isanbard@gmail.com> Reapply r85338.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85514 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
1ba150df4bd9907b5820fb1d805aa8e4e6a0a0b0 29-Oct-2009 Jim Grosbach <grosbach@apple.com> When the function is doing dynamic stack realignment, the spill slot will be
indexed via the stack pointer, even if a frame pointer is present. Update the
heuristic to place it nearest the stack pointer in that case, rather than
nearest the frame pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85474 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
f2ce516828ed6b04bad5132a13c8e228d9a0b117 29-Oct-2009 Jim Grosbach <grosbach@apple.com> When the function is doing dynamic stack realignment, the spill slot will be
indexed via the stack pointer, even if a frame pointer is present. Update the
heuristic to place it nearest the stack pointer in that case, rather than
nearest the frame pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85474 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
12d5a3225f1a26113673727170f9552622525325 29-Oct-2009 Dale Johannesen <dalej@apple.com> When there is a 2-instruction spill sequence, record
the second (store) instruction in SpillSlotToUsesMap
consistently. I don't think this matters functionally,
but it's cleaner and Evan wants it this way.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85463 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
78c5cdaf2a24c9d2b5c89fdb5d66fd6ca3b5654b 29-Oct-2009 Dale Johannesen <dalej@apple.com> When there is a 2-instruction spill sequence, record
the second (store) instruction in SpillSlotToUsesMap
consistently. I don't think this matters functionally,
but it's cleaner and Evan wants it this way.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85463 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
ef486b10571f71e53fe3281aec3abdb3446c5245 29-Oct-2009 Bill Wendling <isanbard@gmail.com> Don't put in these EH changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85460 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
LVMTargetMachine.cpp
8bedf97f683bd5edb9308799a5e525de137d635c 29-Oct-2009 Bill Wendling <isanbard@gmail.com> Don't put in these EH changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85460 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
LVMTargetMachine.cpp
6577d404c19a0a80b13e358dd72b0c1b022b06c1 29-Oct-2009 Bill Wendling <isanbard@gmail.com> Reverting r85338 for now. It's causing a bootstrap failure on PPC darwin9.

--- Reverse-merging r85338 into '.':
U lib/CodeGen/SimpleRegisterCoalescing.cpp
U lib/CodeGen/SimpleRegisterCoalescing.h



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85454 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
LVMTargetMachine.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
f58898fd41a61d8f02657c3ecddb085c39c0d773 29-Oct-2009 Bill Wendling <isanbard@gmail.com> Reverting r85338 for now. It's causing a bootstrap failure on PPC darwin9.

--- Reverse-merging r85338 into '.':
U lib/CodeGen/SimpleRegisterCoalescing.cpp
U lib/CodeGen/SimpleRegisterCoalescing.h



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85454 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
LVMTargetMachine.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
e84c212b3cf2616caf6284d522b5fccdd95cbc8e 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Reimplement BranchFolding change to avoid tail merging for a 1 instruction
common tail, except when the OptimizeForSize function attribute is present.
Radar 7338114.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85441 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
2c04dae715b05017d7d2c19ab4f8cb37c1e650ae 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Reimplement BranchFolding change to avoid tail merging for a 1 instruction
common tail, except when the OptimizeForSize function attribute is present.
Radar 7338114.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85441 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
eaa6891fe4fe26bc3a8842ed01be52746a752393 28-Oct-2009 Dale Johannesen <dalej@apple.com> When we generate spill code, then decide we don't need
to spill after all, we weren't handling 2-instruction
spill sequences correctly (PPC Altivec). We need to
remove the store in this case. Removing the other
instruction(s) would be goodness but is not needed for
correctness, and isn't done here. 7331562.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85437 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
e841d2f8679f603ec453fe56a3bf9bea97aef303 28-Oct-2009 Dale Johannesen <dalej@apple.com> When we generate spill code, then decide we don't need
to spill after all, we weren't handling 2-instruction
spill sequences correctly (PPC Altivec). We need to
remove the store in this case. Removing the other
instruction(s) would be goodness but is not needed for
correctness, and isn't done here. 7331562.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85437 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
220daf6b5c39b425ef06192ce461538f29efabd6 28-Oct-2009 Eric Christopher <echristo@apple.com> Make sure we return the right sized type here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
7e5d2ff20fb4ca86b27f28fc5fb9d589bc0752fd 28-Oct-2009 Eric Christopher <echristo@apple.com> Make sure we return the right sized type here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
93ab5617a1e187a411418c1ea38b312b6aacf850 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revert r85346 change to control tail merging by CodeGenOpt::Level.
I'm going to redo this using the OptimizeForSize function attribute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85426 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
fConversion.cpp
LVMTargetMachine.cpp
a597103c328e29fb763e7a4864bd7c29a588fc9d 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revert r85346 change to control tail merging by CodeGenOpt::Level.
I'm going to redo this using the OptimizeForSize function attribute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85426 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
fConversion.cpp
LVMTargetMachine.cpp
4a8676e226cc62766c4638cb3dcd128f02e9d128 28-Oct-2009 David Goodwin <david_goodwin@apple.com> Make AntiDepReg.h internal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85412 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.h
ntiDepBreaker.h
riticalAntiDepBreaker.h
ostRASchedulerList.cpp
82c7248518a8b759a567fbb4b3176542ad2cf414 28-Oct-2009 David Goodwin <david_goodwin@apple.com> Make AntiDepReg.h internal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85412 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.h
ntiDepBreaker.h
riticalAntiDepBreaker.h
ostRASchedulerList.cpp
927dcecba16c04d82b567cbe00479256465bd5c2 28-Oct-2009 Dan Gohman <gohman@apple.com> Don't call SDNode::isPredecessorOf when it isn't necessary. If the load's
chains have no users, they can't be predecessors of the condition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85394 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1507cd03a64679f6999f51218a3a0180d51ab673 28-Oct-2009 Dan Gohman <gohman@apple.com> Don't call SDNode::isPredecessorOf when it isn't necessary. If the load's
chains have no users, they can't be predecessors of the condition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85394 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
92ebb1fa248a671b76301809137a445f7e9dbb9c 28-Oct-2009 Dan Gohman <gohman@apple.com> Simplify this code: if the unfolded load can't be hoisted, just delete
the new instructions and leave the old one in place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85393 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
b8457a1a29c659638af9e260a14aa12836ca128f 28-Oct-2009 Dan Gohman <gohman@apple.com> Simplify this code: if the unfolded load can't be hoisted, just delete
the new instructions and leave the old one in place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85393 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
ed7cc32565a72f3a40d03cfc7e313515bca7b9e2 28-Oct-2009 Dan Gohman <gohman@apple.com> Rewrite SelectionDAG::isPredecessorOf to be iterative instead of
recursive to avoid consuming extraordinary amounts of stack space
when processing tall graphs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85369 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6688d617978b338f96d27c6d73a396fbd2bf8e9c 28-Oct-2009 Dan Gohman <gohman@apple.com> Rewrite SelectionDAG::isPredecessorOf to be iterative instead of
recursive to avoid consuming extraordinary amounts of stack space
when processing tall graphs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85369 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6efe35213b3fca4fd9df6a35848aadf2e31923c5 28-Oct-2009 Dan Gohman <gohman@apple.com> Teach MachineLICM to unfold loads from constant memory from
otherwise unhoistable instructions in order to allow the loads
to be hoisted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85364 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
589f1f5a4321eeee2856baa5c8ab1139d6e0351e 28-Oct-2009 Dan Gohman <gohman@apple.com> Teach MachineLICM to unfold loads from constant memory from
otherwise unhoistable instructions in order to allow the loads
to be hoisted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85364 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
a0e6778c5f1e124bc15fceeca0c875614a082c79 28-Oct-2009 Evan Cheng <evan.cheng@apple.com> Add a second ValueType argument to isFPImmLegal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a1eaa3c52b75d4fe2bcd4f7c52e56c405ee91d3c 28-Oct-2009 Evan Cheng <evan.cheng@apple.com> Add a second ValueType argument to isFPImmLegal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
48c10d1e1fdd6f7d2f1ce5a9e2380b281dbe3006 28-Oct-2009 Dan Gohman <gohman@apple.com> Mark dead physregdefs dead immediately. This helps MachineSink and
MachineLICM and other things which run before LiveVariables is run.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85360 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
a104d1eab279a39ebf0481269426c2e2de8f5587 28-Oct-2009 Dan Gohman <gohman@apple.com> Mark dead physregdefs dead immediately. This helps MachineSink and
MachineLICM and other things which run before LiveVariables is run.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85360 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/InstrEmitter.cpp
114924db349324f455170178d8b1a8d34da8f4c6 28-Oct-2009 Dan Gohman <gohman@apple.com> Allow constants of different types to share constant pool entries
if they have compatible encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85359 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
83f6120c9a1fe758b2502b060cd7ae9a981ecc39 28-Oct-2009 Dan Gohman <gohman@apple.com> Allow constants of different types to share constant pool entries
if they have compatible encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85359 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
4c3800f0172e2fdc0b3b2e78dbaf89b150f4e04f 28-Oct-2009 Chris Lattner <sabre@nondot.org> rename indbr -> indirectbr to appease the residents of #llvm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85351 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
ab21db79ef1d2530880ad11f21f0b87ffca02dd4 28-Oct-2009 Chris Lattner <sabre@nondot.org> rename indbr -> indirectbr to appease the residents of #llvm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85351 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
afe63293c930f39f6f6d4ac6e76da0d3546dfca4 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Record CodeGen optimization level in the BranchFolding pass so that we can
use it to control tail merging when there is a tradeoff between performance
and code size. When there is only 1 instruction in the common tail, we have
been merging. That can be good for code size but is a definite loss for
performance. Now we will avoid tail merging in that case when the
optimization level is "Aggressive", i.e., "-O3". Radar 7338114.

Since the IfConversion pass invokes BranchFolding, it too needs to know
the optimization level. Note that I removed the RegisterPass instantiation
for IfConversion because it required a default constructor. If someone
wants to keep that for some reason, we can add a default constructor with
a hard-wired optimization level.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85346 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
fConversion.cpp
LVMTargetMachine.cpp
cd4f04d6bcb7aefa24d92582fbadfe17519f4756 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Record CodeGen optimization level in the BranchFolding pass so that we can
use it to control tail merging when there is a tradeoff between performance
and code size. When there is only 1 instruction in the common tail, we have
been merging. That can be good for code size but is a definite loss for
performance. Now we will avoid tail merging in that case when the
optimization level is "Aggressive", i.e., "-O3". Radar 7338114.

Since the IfConversion pass invokes BranchFolding, it too needs to know
the optimization level. Note that I removed the RegisterPass instantiation
for IfConversion because it required a default constructor. If someone
wants to keep that for some reason, we can add a default constructor with
a hard-wired optimization level.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85346 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
fConversion.cpp
LVMTargetMachine.cpp
472ebdd60175b884d8ea2f1e77a73bcbe5a9136c 28-Oct-2009 Lang Hames <lhames@gmail.com> Fixed a bug in the coalescer where intervals were occasionally merged despite a real interference. This fixes rdar://problem/7157961.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85338 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
1239c9656bdcc0d86a2a4f89759acd5962e19ff6 28-Oct-2009 Lang Hames <lhames@gmail.com> Fixed a bug in the coalescer where intervals were occasionally merged despite a real interference. This fixes rdar://problem/7157961.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85338 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
b34bcfc17c7c84a3b9be34a99b40f7596c2174cd 27-Oct-2009 Dan Gohman <gohman@apple.com> Update the MachineBasicBlock CFG for an indirect branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85325 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
eef55dc3fdebf915128e5d3848f372c7db6c38e8 27-Oct-2009 Dan Gohman <gohman@apple.com> Update the MachineBasicBlock CFG for an indirect branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85325 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
2b87f2ae510bb5298482aba49c63c49840b0db7d 27-Oct-2009 Dan Gohman <gohman@apple.com> Add CodeGen support for indirect branches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85323 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
64825153a219b40bcdb79861fb6ac4fd8eadd616 27-Oct-2009 Dan Gohman <gohman@apple.com> Add CodeGen support for indirect branches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85323 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f5278f228d564351a3f0df98a74fad48a892debc 27-Oct-2009 Devang Patel <dpatel@apple.com> Do not held on to DenseMap slot accross map insertion. The insertion may cause the map to grow rending the slot invalid.
Use this opportunity to use ValueMap instead of DenseMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
bdf45cbe1526e33c17a17acd7467cb65d32b6a4f 27-Oct-2009 Devang Patel <dpatel@apple.com> Do not held on to DenseMap slot accross map insertion. The insertion may cause the map to grow rending the slot invalid.
Use this opportunity to use ValueMap instead of DenseMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
dab00f86c61d0de362877671ffb2c835e59b84a1 27-Oct-2009 Chris Lattner <sabre@nondot.org> don't use stdio


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85296 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
98eef869aeee2edcba7a212060b6002339abffbf 27-Oct-2009 Chris Lattner <sabre@nondot.org> don't use stdio


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85296 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
6337b551d01bc8239f0bd6440ac82bce2b313f4c 27-Oct-2009 Evan Cheng <evan.cheng@apple.com> Do away with addLegalFPImmediate. Add a target hook isFPImmLegal which returns true if the fp immediate can be natively codegened by target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85281 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
eb2f969a4ddfb0bc8fdcb5bce3b52e53abff321d 27-Oct-2009 Evan Cheng <evan.cheng@apple.com> Do away with addLegalFPImmediate. Add a target hook isFPImmLegal which returns true if the fp immediate can be natively codegened by target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85281 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
e0787286429c486909bd3b01b5dfedacbc2d7394 27-Oct-2009 Chris Lattner <sabre@nondot.org> add enough support for indirect branch for the feature test to pass
(assembler,asmprinter, bc reader+writer) and document it. Codegen
currently aborts on it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85274 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
f9be95f867745b6754b2402b9b72f9eaeabd637f 27-Oct-2009 Chris Lattner <sabre@nondot.org> add enough support for indirect branch for the feature test to pass
(assembler,asmprinter, bc reader+writer) and document it. Codegen
currently aborts on it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85274 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
6d15db7cb3b93b99d16ff5d7c0b87ceb0bf02f21 27-Oct-2009 Chris Lattner <sabre@nondot.org> pseudosourcevalue is also still using getGlobalContext(), so it isn't
thread safe either.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85253 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
electionDAG/SelectionDAGISel.cpp
75c478a96a542dc386152e00518441e63d22058d 27-Oct-2009 Chris Lattner <sabre@nondot.org> pseudosourcevalue is also still using getGlobalContext(), so it isn't
thread safe either.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85253 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
electionDAG/SelectionDAGISel.cpp
37115cc04ea3dc2516d34a1b0f8dc262652fbb63 27-Oct-2009 Eric Christopher <echristo@apple.com> Add objectsize intrinsic and hook it up through codegen. Doesn't
do anything than return "I don't know" at the moment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85189 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
7b5e61707a128a222e5e7ab20eb8154ca81001cb 27-Oct-2009 Eric Christopher <echristo@apple.com> Add objectsize intrinsic and hook it up through codegen. Doesn't
do anything than return "I don't know" at the moment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85189 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f9a7a33126ed4def13851a4d77a442db55ffe307 27-Oct-2009 Victor Hernandez <vhernandez@apple.com> Remove FreeInst.
Remove LowerAllocations pass.
Update some more passes to treate free calls just like they were treating FreeInst.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85176 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
046e78ce55a7c3d82b7b6758d2d77f2d99f970bf 27-Oct-2009 Victor Hernandez <vhernandez@apple.com> Remove FreeInst.
Remove LowerAllocations pass.
Update some more passes to treate free calls just like they were treating FreeInst.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85176 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
aa644ea6cd8b6c4fa5d0442c91267cdfdab43eab 26-Oct-2009 David Goodwin <david_goodwin@apple.com> Allow the aggressive anti-dep breaker to process the same region multiple times. This is necessary because new anti-dependencies are exposed when "current" ones are broken.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85166 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
riticalAntiDepBreaker.h
ostRASchedulerList.cpp
e10deca33e74a7c70ab585f78eee3fb52937f668 26-Oct-2009 David Goodwin <david_goodwin@apple.com> Allow the aggressive anti-dep breaker to process the same region multiple times. This is necessary because new anti-dependencies are exposed when "current" ones are broken.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85166 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
riticalAntiDepBreaker.h
ostRASchedulerList.cpp
64948f805fbd7e5d69066d85f8dee30c9d84bf1f 26-Oct-2009 David Goodwin <david_goodwin@apple.com> Define virtual destructor in *.cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85146 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
ada0ef86d98df4ac36808e4a0f0098250bf1a842 26-Oct-2009 David Goodwin <david_goodwin@apple.com> Define virtual destructor in *.cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85146 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
a8b859600a76b46db61dd5fe6609f66897fe9c07 26-Oct-2009 David Goodwin <david_goodwin@apple.com> Add aggressive anti-dependence breaker. Currently it is not the default for any target. Enable with -break-anti-dependencies=all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85145 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
MakeLists.txt
ostRASchedulerList.cpp
348777110a960f0e017025dd5141cb29472c3984 26-Oct-2009 David Goodwin <david_goodwin@apple.com> Add aggressive anti-dependence breaker. Currently it is not the default for any target. Enable with -break-anti-dependencies=all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85145 91177308-0d34-0410-b5e6-96231b3b80d8
ggressiveAntiDepBreaker.cpp
ggressiveAntiDepBreaker.h
MakeLists.txt
ostRASchedulerList.cpp
7080dc09b5ff61334f9a13c1eec1e0eb9c195556 26-Oct-2009 Dan Gohman <gohman@apple.com> When checking whether a def of an aliased register is dead, ask the
machineinstr whether the aliased register is dead, rather than the original
register is dead. This allows it to get the correct answer when examining
an instruction like this:
CALLpcrel32 <ga:foo>, %AL<imp-def>, %EAX<imp-def,dead>
where EAX is dead but a subregister of it is still live. This fixes PR5294.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85135 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
91203cf87b8a72227c78a9eeae8bb744dfcc4ef0 26-Oct-2009 Dan Gohman <gohman@apple.com> When checking whether a def of an aliased register is dead, ask the
machineinstr whether the aliased register is dead, rather than the original
register is dead. This allows it to get the correct answer when examining
an instruction like this:
CALLpcrel32 <ga:foo>, %AL<imp-def>, %EAX<imp-def,dead>
where EAX is dead but a subregister of it is still live. This fixes PR5294.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85135 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
ad5789c4fd62e77a8d27c43db98384ed9762dfe7 26-Oct-2009 David Goodwin <david_goodwin@apple.com> Break anti-dependence breaking out into its own class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85127 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
ostRASchedulerList.cpp
2e7be612d5d0eb42ee3ae08194dbb03b750cc6bf 26-Oct-2009 David Goodwin <david_goodwin@apple.com> Break anti-dependence breaking out into its own class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85127 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
riticalAntiDepBreaker.cpp
riticalAntiDepBreaker.h
ostRASchedulerList.cpp
9919ed02cbeac5498b21825ae4924b140784be08 26-Oct-2009 Evan Cheng <evan.cheng@apple.com> - Revert some changes from 85044, 85045, and 85047 that broke x86_64 tests and
bootstrapping. It's not safe to leave identity subreg_to_reg and insert_subreg
around.
- Relax register scavenging to allow use of partially "not-live" registers. It's
common for targets to operate on registers where the top bits are undef. e.g.
s0 =
d0 = insert_subreg d0<undef>, s0, 1
...
= d0
When the insert_subreg is eliminated by the coalescer, the scavenger used to
complain. The previous fix was to keep to insert_subreg around. But that's
brittle and it's overly conservative when we want to use the scavenger to
allocate registers. It's actually legal and desirable for other instructions
to use the "undef" part of d0. e.g.
s0 =
d0 = insert_subreg d0<undef>, s0, 1
...
s1 =
= s1
= d0
We probably need add a "partial-undef" marker on machine operand so the
machine verifier would not complain.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85091 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
a5dc45e3c8fa26e62b187284a240adf3879b56e2 26-Oct-2009 Evan Cheng <evan.cheng@apple.com> - Revert some changes from 85044, 85045, and 85047 that broke x86_64 tests and
bootstrapping. It's not safe to leave identity subreg_to_reg and insert_subreg
around.
- Relax register scavenging to allow use of partially "not-live" registers. It's
common for targets to operate on registers where the top bits are undef. e.g.
s0 =
d0 = insert_subreg d0<undef>, s0, 1
...
= d0
When the insert_subreg is eliminated by the coalescer, the scavenger used to
complain. The previous fix was to keep to insert_subreg around. But that's
brittle and it's overly conservative when we want to use the scavenger to
allocate registers. It's actually legal and desirable for other instructions
to use the "undef" part of d0. e.g.
s0 =
d0 = insert_subreg d0<undef>, s0, 1
...
s1 =
= s1
= d0
We probably need add a "partial-undef" marker on machine operand so the
machine verifier would not complain.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85091 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
1ec7df14990f3bdf92f8e55dcdeeca03d6802602 26-Oct-2009 Chandler Carruth <chandlerc@gmail.com> Move DataTypes.h to include/llvm/System, update all users. This breaks the last
direct inclusion edge from System to Support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85086 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
8b67f774e9c38b7718b2b300b628388f966df4e0 26-Oct-2009 Chandler Carruth <chandlerc@gmail.com> Move DataTypes.h to include/llvm/System, update all users. This breaks the last
direct inclusion edge from System to Support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85086 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
899830995d35fa6878fd6204fce742c90b9d554b 25-Oct-2009 Evan Cheng <evan.cheng@apple.com> Use isIdentityCopy. Fix a bozo bug (flipped condition) in InvalidateRegDef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85047 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
427c3ba97a09778bfb1596356028b02497578906 25-Oct-2009 Evan Cheng <evan.cheng@apple.com> Use isIdentityCopy. Fix a bozo bug (flipped condition) in InvalidateRegDef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85047 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
381f09782a49e19f142866145947405531b8d2cd 25-Oct-2009 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85046 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
d98e30f618266a50219990e9a76a024a0fa90436 25-Oct-2009 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85046 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
c319538252bef8bab51638c1cb6ac9beab6e0bf5 25-Oct-2009 Evan Cheng <evan.cheng@apple.com> Do not delete identity insert_subreg even if dest is virtual. Let later passes delete them. This avoids register scavenger complain.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85045 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d66f0015addb5646364877e6ca57fba6ff59632c 25-Oct-2009 Evan Cheng <evan.cheng@apple.com> Do not delete identity insert_subreg even if dest is virtual. Let later passes delete them. This avoids register scavenger complain.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85045 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5a44ef9fd5f7c3964ad79b94778261175dea5c33 25-Oct-2009 Nick Lewycky <nicholas@mxc.ca> Remove includes of Support/Compiler.h that are no longer needed after the
VISIBILITY_HIDDEN removal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85043 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
CMetadata.cpp
CStrategy.cpp
owerSubregs.cpp
achineFunction.cpp
achineLICM.cpp
achineSink.cpp
achineVerifier.cpp
camlGC.cpp
ostRASchedulerList.cpp
seudoSourceValue.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegRewriter.cpp
f5a86f45e75ec744c203270ffa03659eb0a220c1 25-Oct-2009 Nick Lewycky <nicholas@mxc.ca> Remove includes of Support/Compiler.h that are no longer needed after the
VISIBILITY_HIDDEN removal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85043 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
CMetadata.cpp
CStrategy.cpp
owerSubregs.cpp
achineFunction.cpp
achineLICM.cpp
achineSink.cpp
achineVerifier.cpp
camlGC.cpp
ostRASchedulerList.cpp
seudoSourceValue.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegRewriter.cpp
492d06efde44a4e38a6ed321ada4af5a75494df6 25-Oct-2009 Nick Lewycky <nicholas@mxc.ca> Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85042 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
owerSubregs.cpp
achineFunction.cpp
achineLICM.cpp
achineSink.cpp
achineVerifier.cpp
camlGC.cpp
ostRASchedulerList.cpp
reAllocSplitting.cpp
seudoSourceValue.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegRewriter.cpp
6726b6d75a8b679068a58cb954ba97cf9d1690ba 25-Oct-2009 Nick Lewycky <nicholas@mxc.ca> Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85042 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
eadMachineInstructionElim.cpp
warfEHPrepare.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
owerSubregs.cpp
achineFunction.cpp
achineLICM.cpp
achineSink.cpp
achineVerifier.cpp
camlGC.cpp
ostRASchedulerList.cpp
reAllocSplitting.cpp
seudoSourceValue.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
tackProtector.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegRewriter.cpp
9ef97dcce4891c64bef5ce217341053224a57dc5 25-Oct-2009 Jim Grosbach <grosbach@apple.com> When the scavenger is looking for a good candidate location to restore from a
spill, it should avoid doing so inside the live range of a virtual register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85026 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
07d4964d1fc10a404f9bafd7c30b46322fe9293f 25-Oct-2009 Jim Grosbach <grosbach@apple.com> When the scavenger is looking for a good candidate location to restore from a
spill, it should avoid doing so inside the live range of a virtual register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85026 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
3a175215245c62bf37aaa117703882fcc271e72d 25-Oct-2009 Dan Gohman <gohman@apple.com> Rename isLoopExit to isLoopExiting, for consistency with the wording
used elsewhere - an exit block is a block outside the loop branched to
from within the loop. An exiting block is a block inside the loop that
branches out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85019 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
32663b719b4996b3a735f22bba80d771d50f96e7 25-Oct-2009 Dan Gohman <gohman@apple.com> Rename isLoopExit to isLoopExiting, for consistency with the wording
used elsewhere - an exit block is a block outside the loop branched to
from within the loop. An exiting block is a block inside the loop that
branches out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85019 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
8e4c4276b78da64a7b505a83d6d0b107ade85f0e 24-Oct-2009 Anton Korobeynikov <asl@math.spbu.ru> Add some asserts to catch copyRegToReg() fails early

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84983 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
efcd89a5f66826430d077476564afe41109290cb 24-Oct-2009 Anton Korobeynikov <asl@math.spbu.ru> Add some asserts to catch copyRegToReg() fails early

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84983 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
8940d798e7ceec957f1dc2a2862105d4180f3bda 24-Oct-2009 Evan Cheng <evan.cheng@apple.com> Identity copies should not contribute to spill weight.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84978 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c9dfeb1be841045427d71b85e95ac7355b64e8b1 24-Oct-2009 Evan Cheng <evan.cheng@apple.com> Identity copies should not contribute to spill weight.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84978 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
6530ae50de6d78e90f499b67ee9db01da894ff4a 23-Oct-2009 Dan Gohman <gohman@apple.com> APInt-ify the gep scaling code, so that it correctly handles the case where
the scale overflows pointer-sized arithmetic. This fixes PR5281.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84954 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
7abbd04e90489c087bfae03ad25c3a99aafbaded 23-Oct-2009 Dan Gohman <gohman@apple.com> APInt-ify the gep scaling code, so that it correctly handles the case where
the scale overflows pointer-sized arithmetic. This fixes PR5281.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84954 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
68e0213cf4b9f944a356cf578050cc17f19d1257 23-Oct-2009 Bill Wendling <isanbard@gmail.com> Neuter stack protectors by only checking character arrays. This is what GCC
does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84916 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
dfd85c142f184ba3ce5562f0eed32a908c59c076 23-Oct-2009 Bill Wendling <isanbard@gmail.com> Neuter stack protectors by only checking character arrays. This is what GCC
does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84916 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
e56e4a63f19ea3b7e40d84704d9b066698722db6 23-Oct-2009 David Goodwin <david_goodwin@apple.com> Allow the target to select the level of anti-dependence breaking that should be performed by the post-RA scheduler. The default is none.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84911 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
4c3715c2e5e17d7216a96ac2baf9720630f04408 23-Oct-2009 David Goodwin <david_goodwin@apple.com> Allow the target to select the level of anti-dependence breaking that should be performed by the post-RA scheduler. The default is none.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84911 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
9f6aeb72926b953e115d6fac3cbe138f569fb9a5 22-Oct-2009 Bill Wendling <isanbard@gmail.com> Tidying up some code and comments. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84894 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
48dc29ef911a223a52b099604d0ccb499ecbf703 22-Oct-2009 Bill Wendling <isanbard@gmail.com> Tidying up some code and comments. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84894 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
fcfa3114e0922e6a127cd9e63dce10d98fb77757 22-Oct-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix null pointer dereference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84806 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
443b2153e3c1c039f5fbf229bd2df2da179f3875 22-Oct-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix null pointer dereference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84806 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
52a7362292fcc0cf59c3d38ce8955b709b8e00e6 22-Oct-2009 Dan Gohman <gohman@apple.com> Revert the main portion of r31856. It was causing BranchFolding
to break up CFG diamonds by banishing one of the blocks to the end of
the function, which is bad for code density and branch size.

This does pessimize MultiSource/Benchmarks/Ptrdist/yacr2, the
benchmark cited as the reason for the change, however I've examined
the code and it looks more like a case of gaming a particular
branch than of being generally applicable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84803 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
6d31268a7dc9854fa5a5cb9227ba9a15c5898414 22-Oct-2009 Dan Gohman <gohman@apple.com> Revert the main portion of r31856. It was causing BranchFolding
to break up CFG diamonds by banishing one of the blocks to the end of
the function, which is bad for code density and branch size.

This does pessimize MultiSource/Benchmarks/Ptrdist/yacr2, the
benchmark cited as the reason for the change, however I've examined
the code and it looks more like a case of gaming a particular
branch than of being generally applicable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84803 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
3def926d532e753cab49cc1bacf660f49d626864 22-Oct-2009 Jim Grosbach <grosbach@apple.com> The spill restore needs to be resolved to the SP/FP just like the spill

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84792 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
29bed1c8bb491a5fe609d58c5e560929117a859e 22-Oct-2009 Jim Grosbach <grosbach@apple.com> The spill restore needs to be resolved to the SP/FP just like the spill

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84792 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
154f22e8e4bafc4013c1f6a516b7a8102669012d 21-Oct-2009 Jim Grosbach <grosbach@apple.com> Cleanup of frame index scavenging. Better code flow and more accurately
handles T2 and ARM use cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84761 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
332553768242e82383df61d9161d1a665bfb3122 21-Oct-2009 Jim Grosbach <grosbach@apple.com> Cleanup of frame index scavenging. Better code flow and more accurately
handles T2 and ARM use cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84761 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
8c56cfc79c02c68bef1c8bc37f8ee7a47c5e2e32 21-Oct-2009 Evan Cheng <evan.cheng@apple.com> Need a comma after imp-use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84749 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
5affca0763836e15ca15e78ed3a0fd56ef6b2e92 21-Oct-2009 Evan Cheng <evan.cheng@apple.com> Need a comma after imp-use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84749 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
fb035b45cbad41ccbc6190fdcc6b888528075bc5 21-Oct-2009 Dan Gohman <gohman@apple.com> Revert r84658 and r84691. They were causing llvm-gcc bootstrap to fail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84727 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
c1ae8c9b8f426b74215abf0f7e46bffecc6f52d9 21-Oct-2009 Dan Gohman <gohman@apple.com> Revert r84658 and r84691. They were causing llvm-gcc bootstrap to fail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84727 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
38e5be5da7a72d9318370359b20992765ce73152 21-Oct-2009 David Goodwin <david_goodwin@apple.com> Respect src register allocation requirements when breaking anti-dependencies. Remove some dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84691 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
7441d14873cca4af68a0347d41676c476e0ab1f5 21-Oct-2009 David Goodwin <david_goodwin@apple.com> Respect src register allocation requirements when breaking anti-dependencies. Remove some dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84691 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
672de0aa03c5943cfdd1e49206326d1955c8b3a1 20-Oct-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix invalid for vector types fneg(bitconvert(x)) => bitconvert(x ^ sign)
transform.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84683 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2bcf60a9cc435658ca8a02ee692af225599cf9e4 20-Oct-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix invalid for vector types fneg(bitconvert(x)) => bitconvert(x ^ sign)
transform.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84683 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d4a322f88c5a91a151fc42f6d829e11c90ee38ce 20-Oct-2009 Lang Hames <lhames@gmail.com> Oops. Backing out 84681 - needs to wait for the indexing patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84682 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
3fd7a68ba97fd946f92c35dc9e8f5d8d567f33d1 20-Oct-2009 Lang Hames <lhames@gmail.com> Oops. Backing out 84681 - needs to wait for the indexing patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84682 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
38f4d15c5884940ea775494bb1e64d5b4b3e9e87 20-Oct-2009 Lang Hames <lhames@gmail.com> Added some debugging output to pre-alloc splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84681 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
67f25669db3c0f18c47f7baea33a6b5e9b5c5e4c 20-Oct-2009 Lang Hames <lhames@gmail.com> Added some debugging output to pre-alloc splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84681 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
11eb3a6c0dc019c8e69c7853e2d3678940714d30 20-Oct-2009 David Goodwin <david_goodwin@apple.com> Checkpoint more aggressive anti-dependency breaking for post-ra scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84658 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
480c529e026942f28e1a792d2cec6d6b5bc0edba 20-Oct-2009 David Goodwin <david_goodwin@apple.com> Checkpoint more aggressive anti-dependency breaking for post-ra scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84658 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
a10c4a8a085bff9a71ee666c2ac214c00dfee9a8 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Better handle instructions that re-def a scratch register

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84657 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
03d02d4faa6cf8ae1337f64bc83dcbd9de570372 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Better handle instructions that re-def a scratch register

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84657 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
6caa53a1305c77e42d5099722ea05ab79ea0ab97 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Register re-use for scavenged frame indices must check for re-deginition
of the register in the instruction which kills the scavenged value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84641 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
f7a0c0de6d73df8f24438234485b7950323b3d44 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Register re-use for scavenged frame indices must check for re-deginition
of the register in the instruction which kills the scavenged value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84641 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
b457c89c5998fb359323bf27c43fa326c1016124 20-Oct-2009 Dan Gohman <gohman@apple.com> Re-apply r84295, with fixes to how the loop "top" and "bottom" blocks are
tracked. Instead of trying to manually keep track of these locations
while doing complex modifications, just recompute them when they're needed.
This fixes a bug in which the TopMBB and BotMBB were not correctly updated,
leading to invalid transformations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84598 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
07adb85cb7f97968b3b9a102e5fa504a5f6ac682 20-Oct-2009 Dan Gohman <gohman@apple.com> Re-apply r84295, with fixes to how the loop "top" and "bottom" blocks are
tracked. Instead of trying to manually keep track of these locations
while doing complex modifications, just recompute them when they're needed.
This fixes a bug in which the TopMBB and BotMBB were not correctly updated,
leading to invalid transformations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84598 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
2894c9052cf5b91ff9d422c31c5aa68eebb869e2 20-Oct-2009 Evan Cheng <evan.cheng@apple.com> Trim unnecessary includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84597 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cheduleDAGPrinter.cpp
5f4fb86d5853a433815501739584624d296b57a3 20-Oct-2009 Evan Cheng <evan.cheng@apple.com> Trim unnecessary includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84597 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cheduleDAGPrinter.cpp
7e3f3cec672df37935f6c651d1135657fdfe5cdd 20-Oct-2009 Dan Gohman <gohman@apple.com> Add getTopBlock and getBottomBlock member functions to MachineLoopInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84596 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
81b16a3558514481c61e7c68d19f84d7a69352cb 20-Oct-2009 Dan Gohman <gohman@apple.com> Add getTopBlock and getBottomBlock member functions to MachineLoopInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84596 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
2f576c1745fb305f8db1f583022e7e4e93706841 20-Oct-2009 Evan Cheng <evan.cheng@apple.com> If the physical register being spilled does not have an interval, spill its sub-registers instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84586 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
0222a8cfb8f8f3f67e4a07164eb1ecf9c44e6f64 20-Oct-2009 Evan Cheng <evan.cheng@apple.com> If the physical register being spilled does not have an interval, spill its sub-registers instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84586 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
81d33cdd24ad12950350365eb634134292e357e1 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Enable post-pass frame index register scavenging for ARM and Thumb2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84585 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
7e831db1d4f5dc51ca6526739cf41e59895c5c20 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Enable post-pass frame index register scavenging for ARM and Thumb2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84585 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
976a864c9995dced48ffaca18ff68921f0a4d5df 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Adjust the scavenge register spilling to allow the target to choose an
appropriate restore location for the spill as well as perform the actual
save and restore.

The Thumb1 target uses this to make sure R12 is not clobbered while a spilled
scavenger register is live there.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84554 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
d482f55af135081aee7f7ab972bb8973f189c88f 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Adjust the scavenge register spilling to allow the target to choose an
appropriate restore location for the spill as well as perform the actual
save and restore.

The Thumb1 target uses this to make sure R12 is not clobbered while a spilled
scavenger register is live there.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84554 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
2e1e52272a4d8168ae18689877ae1fe7737ced4f 19-Oct-2009 Anton Korobeynikov <asl@math.spbu.ru> Revert r84295, this unbreaks llvm-gcc bootstrap on x86-64/linux

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84516 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
766fc1db1640499c6affce80e7337d8c22dc8cb1 19-Oct-2009 Anton Korobeynikov <asl@math.spbu.ru> Revert r84295, this unbreaks llvm-gcc bootstrap on x86-64/linux

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84516 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
d20dd8f42feee188300b2f59ea4a9c0ab4809690 19-Oct-2009 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84504 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
dfffba6a83b7f79c8853e1412a93442b7a9b825d 19-Oct-2009 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84504 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
988308e1aa1aa43502e9dd353cf50bc409ca5f96 19-Oct-2009 Dan Gohman <gohman@apple.com> Change a few instance variables to be local variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84503 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
4e9785ed8ad34f01ccb459796d85a56600ed592b 19-Oct-2009 Dan Gohman <gohman@apple.com> Change a few instance variables to be local variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84503 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
c91317828c58e9780e7d6b6c127dc87cf61fa1f5 18-Oct-2009 Evan Cheng <evan.cheng@apple.com> Spill slots cannot alias.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84432 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
38bdfc69cbe370ce5f623df4449afa32cda97422 18-Oct-2009 Evan Cheng <evan.cheng@apple.com> Spill slots cannot alias.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84432 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
174e2cf99df2011a0d56e96dcdb32c1ccaf4f464 18-Oct-2009 Evan Cheng <evan.cheng@apple.com> -Revert parts of 84326 and 84411. Distinquishing between fixed and non-fixed
stack slots and giving them different PseudoSourceValue's did not fix the
problem of post-alloc scheduling miscompiling llvm itself.
- Apply Dan's conservative workaround by assuming any non fixed stack slots can
alias other memory locations. This means a load from spill slot #1 cannot
move above a store of spill slot #2.
- Enable post-alloc scheduling for x86 at optimization leverl Default and above.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84424 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
cheduleDAGInstrs.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
ff89dcb06fbd103373436e2d0ae85f252fae2254 18-Oct-2009 Evan Cheng <evan.cheng@apple.com> -Revert parts of 84326 and 84411. Distinquishing between fixed and non-fixed
stack slots and giving them different PseudoSourceValue's did not fix the
problem of post-alloc scheduling miscompiling llvm itself.
- Apply Dan's conservative workaround by assuming any non fixed stack slots can
alias other memory locations. This means a load from spill slot #1 cannot
move above a store of spill slot #2.
- Enable post-alloc scheduling for x86 at optimization leverl Default and above.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84424 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
cheduleDAGInstrs.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
3820341c59acd9a1d0a664a2ce86745015d8fccb 18-Oct-2009 Evan Cheng <evan.cheng@apple.com> Only fixed stack objects and spill slots should be get FixedStack PseudoSourceValue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84411 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
20270c909357e5e501cac1f5393430dfacfc57d8 18-Oct-2009 Evan Cheng <evan.cheng@apple.com> Only fixed stack objects and spill slots should be get FixedStack PseudoSourceValue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84411 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
844797e20c5a78cdefd967a979a19415398ddd2c 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> Fix my -Asserts warning fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84372 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
c499e32b371faf02cbd17e03bad2a42b93ade82a 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> Fix my -Asserts warning fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84372 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
aa127ee919bdff5f6363818a10fe7db8d70e0780 17-Oct-2009 Daniel Dunbar <daniel@zuster.org> Suppress -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84327 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
afc158780089a3d9c1bfe78de77855dfdd901bd0 17-Oct-2009 Daniel Dunbar <daniel@zuster.org> Suppress -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84327 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
5505bc1c26d335e9a0f22f2c55fcf7544037b2d9 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> Distinquish stack slots from other stack objects. They (and fixed objects) get FixedStack PseudoSourceValues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84326 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
irtRegMap.cpp
491f54f1fd700204db0a19efde0cc2627641d711 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> Distinquish stack slots from other stack objects. They (and fixed objects) get FixedStack PseudoSourceValues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84326 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
irtRegMap.cpp
1f99657b2abd791d220018261e21d9f4008708b4 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> Revert 84315 for now. Re-thinking the patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84321 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
6553155172a2e74feff1253837daa608123de54a 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> Revert 84315 for now. Re-thinking the patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84321 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
77e61b46fce5e165ecfedb5666c43b3d2c1dc971 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> Rename getFixedStack to getStackObject. The stack objects represented are not
necessarily fixed. Only those will negative frame indices are "fixed."


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84315 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
bf125583f8bd8196a34921276add7f304b7c1433 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> Rename getFixedStack to getStackObject. The stack objects represented are not
necessarily fixed. Only those will negative frame indices are "fixed."


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84315 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
1adc252eb5e951fc26ff19d06854d7828f9c5f48 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
cac25a9452c75b24e33fffe3390de8b2b8983e92 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
bb39ea144fef229366341ab9636934e73de09b43 17-Oct-2009 Dan Gohman <gohman@apple.com> Delete an obsolete comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f77fc92b03efe455008474894d217282e2a03cad 17-Oct-2009 Dan Gohman <gohman@apple.com> Delete an obsolete comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
37f513df87ceb54e873adc113a1fcf4af9556833 17-Oct-2009 Victor Hernandez <vhernandez@apple.com> Remove MallocInst from LLVM Instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84299 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
a276c603b82a11b0bf0b59f0517a69e4b63adeab 17-Oct-2009 Victor Hernandez <vhernandez@apple.com> Remove MallocInst from LLVM Instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84299 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
e2996ee5c9a9e0c05141675726ba67d5484c541e 17-Oct-2009 Dan Gohman <gohman@apple.com> Enhance CodePlacementOpt's unconditional intra-loop branch elimination logic
to be more general and understand more varieties of loops.

Teach CodePlacementOpt to reorganize the basic blocks of a loop so that
they are contiguous. This also includes a fair amount of logic for preserving
fall-through edges while doing so. This fixes a BranchFolding-ism where blocks
which can't be made to use a fall-through edge and don't conveniently fit
anywhere nearby get tossed out to the end of the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84295 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
3bdd8de2806e47f34369c1e6ce6e6b44a135bd29 17-Oct-2009 Dan Gohman <gohman@apple.com> Enhance CodePlacementOpt's unconditional intra-loop branch elimination logic
to be more general and understand more varieties of loops.

Teach CodePlacementOpt to reorganize the basic blocks of a loop so that
they are contiguous. This also includes a fair amount of logic for preserving
fall-through edges while doing so. This fixes a BranchFolding-ism where blocks
which can't be made to use a fall-through edge and don't conveniently fit
anywhere nearby get tossed out to the end of the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84295 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
e50ac8f2f5743922862162859c658dfb3ca4ab14 17-Oct-2009 Mon P Wang <wangmp@apple.com> Allow widening of extract subvector


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
3b7ee20d58f526c3904dc6e068c55e9e07b54c90 17-Oct-2009 Mon P Wang <wangmp@apple.com> Allow widening of extract subvector


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
18a7d1c9020268e07643101f0944fe4c4febef25 16-Oct-2009 Devang Patel <dpatel@apple.com> Do not emit name entry for a pointer type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84276 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
808b82664f146f8ddda0582ffd755a484cbac609 16-Oct-2009 Devang Patel <dpatel@apple.com> Do not emit name entry for a pointer type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84276 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
86e24b01e3cfdd1d2f533df99be1824515b677c5 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> Change createPostRAScheduler so it can be turned off at llc -O1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84273 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ostRASchedulerList.cpp
fa16354e0370fe884830286923352268b036737d 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> Change createPostRAScheduler so it can be turned off at llc -O1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84273 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ostRASchedulerList.cpp
a6871afa41a2f40b6c1c3d8ef087c474d999ffc7 16-Oct-2009 Devang Patel <dpatel@apple.com> If there is not any llvm instruction associated with each lexical scope encoded in debug info then create such scope on demand for variable info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84262 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
149aa7cce368a879e3ad20b2a6ec777e9441cdab 16-Oct-2009 Devang Patel <dpatel@apple.com> If there is not any llvm instruction associated with each lexical scope encoded in debug info then create such scope on demand for variable info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84262 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
57796906e96fa68af19262323496e4b9c038a516 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> If post-alloc scheduler is not enabled, it should return false, not true.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84248 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
c83da2f9e389332b9cf8eae9d823f745be5624b8 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> If post-alloc scheduler is not enabled, it should return false, not true.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84248 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
722d96604ba2eed55fc01e166566935979f4739b 16-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Indent code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84247 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
931424a7d8b8b15ddda7308d6c5b08277d8bdc0e 16-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Indent code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84247 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e7a6705ab48692b1c34be80322bc4846bd3c2a74 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> 80 column violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84244 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
449c25baa0e61f3bd99706fb073878e81a5e857e 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> 80 column violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84244 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
75dbdd10525ae7cb7c2f16ecc7092a667b69556f 15-Oct-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Report errors correctly for unselected target intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84193 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
11ee508d7bd37f2b007da735fbd2c1497ed51848 15-Oct-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Report errors correctly for unselected target intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84193 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
cebc72ccbc6215b71808c2be76779ecfee77f0ee 15-Oct-2009 Dan Gohman <gohman@apple.com> Make CodePlacementOpt align loops, rather than loop headers. The
header is just the entry block to the loop, and it needn't be at
the top of the loop in the code layout.

Remove the code that suppressed loop alignment for outer loops,
so that outer loops are aligned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84158 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
cd2ae14ce3f16f0cef162aa85707f32295c4ee3d 15-Oct-2009 Dan Gohman <gohman@apple.com> Make CodePlacementOpt align loops, rather than loop headers. The
header is just the entry block to the loop, and it needn't be at
the top of the loop in the code layout.

Remove the code that suppressed loop alignment for outer loops,
so that outer loops are aligned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84158 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
d94b8ee12edef4928c7fc762e3c8a4bf7075bdd8 15-Oct-2009 Evan Cheng <evan.cheng@apple.com> When LiveVariables is adding implicit-def to model "partial dead", add the earlyclobber marker if the superreg def has it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84153 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
a2f80471345960c971825a053d22ec886a2ab514 15-Oct-2009 Evan Cheng <evan.cheng@apple.com> When LiveVariables is adding implicit-def to model "partial dead", add the earlyclobber marker if the superreg def has it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84153 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
b71c46ced3b6452d2d96e06b5fde59910541ccb5 15-Oct-2009 Evan Cheng <evan.cheng@apple.com> Print earlyclobber for implicit-defs as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84152 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
0789707c49135bba69e0e308d0fbc41bb7cbe78a 15-Oct-2009 Evan Cheng <evan.cheng@apple.com> Print earlyclobber for implicit-defs as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84152 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
c2febcd7aeb104f4afd876aa1526195459159f31 14-Oct-2009 Jim Grosbach <grosbach@apple.com> Make loop not recalc getNumOperands() each time around

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84138 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
33524c3b26e3b709488d84094493d9a6098c0155 14-Oct-2009 Jim Grosbach <grosbach@apple.com> Make loop not recalc getNumOperands() each time around

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84138 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
dd7bb43d6a6e61569368046b33fbe2d700d5bc68 14-Oct-2009 Devang Patel <dpatel@apple.com> Add support to record DbgScope as inlined scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84134 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
c90aefe95ec5fd028782788620ab7d6fd73593f3 14-Oct-2009 Devang Patel <dpatel@apple.com> Add support to record DbgScope as inlined scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84134 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1ce93edf8e13e59909f6b87e8532c3961fd2c80d 14-Oct-2009 Jim Grosbach <grosbach@apple.com> quiet compiler warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84133 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
d0c38327547d6f864bec2e0b88042b1c97b89131 14-Oct-2009 Jim Grosbach <grosbach@apple.com> quiet compiler warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84133 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
4205cfe3fe4c86814b91248d25f0cf01ecf642b4 14-Oct-2009 Duncan Sands <baldrick@free.fr> I don't see any point in having both eh.selector.i32 and eh.selector.i64,
so get rid of eh.selector.i64 and rename eh.selector.i32 to eh.selector.
Likewise for eh.typeid.for. This aligns us with gcc, which always uses a
32 bit value for the selector on all platforms. My understanding is that
the register allocator used to assert if the selector intrinsic size didn't
match the pointer size, and this was the reason for introducing the two
variants. However my testing shows that this is no longer the case (I
fixed some bugs in selector lowering yesterday, and some more today in the
fastisel path; these might have caused the original problems).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84106 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
jLjEHPrepare.cpp
b01bbdcc1af27bd90b552bb1b62b48916e0d4be3 14-Oct-2009 Duncan Sands <baldrick@free.fr> I don't see any point in having both eh.selector.i32 and eh.selector.i64,
so get rid of eh.selector.i64 and rename eh.selector.i32 to eh.selector.
Likewise for eh.typeid.for. This aligns us with gcc, which always uses a
32 bit value for the selector on all platforms. My understanding is that
the register allocator used to assert if the selector intrinsic size didn't
match the pointer size, and this was the reason for introducing the two
variants. However my testing shows that this is no longer the case (I
fixed some bugs in selector lowering yesterday, and some more today in the
fastisel path; these might have caused the original problems).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84106 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
jLjEHPrepare.cpp
d32578ed8fc15abf79d37b9b1f62f0c8fa7ce01d 14-Oct-2009 Dan Gohman <gohman@apple.com> This remat entry is basically done. There are hooks to allow targets
to remat non-load instructions as loads, and the remat code now uses
the UnmodeledSideEffects flags, MachineMemOperands, and similar things
to decide which instructions are valid for rematerialization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84060 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
9ba0e2ba87a5af3b863d9a5f6f620c9b7583d0f4 14-Oct-2009 Dan Gohman <gohman@apple.com> This remat entry is basically done. There are hooks to allow targets
to remat non-load instructions as loads, and the remat code now uses
the UnmodeledSideEffects flags, MachineMemOperands, and similar things
to decide which instructions are valid for rematerialization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84060 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
60547e8e863ea6b31029e1d2875cd947a320f9d0 14-Oct-2009 Dan Gohman <gohman@apple.com> Add a few README.txt items.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84059 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
363bbc011045a9f5710569cc191c520ec25b2907 14-Oct-2009 Dan Gohman <gohman@apple.com> Add a few README.txt items.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84059 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
fc1df34dea6dae98d823f9cf95afbb364201ec97 14-Oct-2009 Devang Patel <dpatel@apple.com> s/DebugLoc.CompileUnit/DebugLoc.Scope/g
s/DebugLoc.InlinedLoc/DebugLoc.InlinedAtLoc/g



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84054 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
achineInstr.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
1619dc3b9ee2573c481591764c2d26d5ff16b483 14-Oct-2009 Devang Patel <dpatel@apple.com> s/DebugLoc.CompileUnit/DebugLoc.Scope/g
s/DebugLoc.InlinedLoc/DebugLoc.InlinedAtLoc/g



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84054 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
achineInstr.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
dd7bd93b11d18bc0bcb64e8ee5261c5724b25614 13-Oct-2009 Duncan Sands <baldrick@free.fr> Introduce new convenience methods for sign extending or
truncating an SDValue (depending on whether the target
type is bigger or smaller than the value's type); or zero
extending or truncating it. Use it in a few places (this
seems to be a popular operation, but I only modified cases
of it in SelectionDAGBuild). In particular, the eh_selector
lowering was doing this wrong due to a repeated rather than
inverted test, fixed with this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84027 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
3a66a68b0cc81193abfc074b1d360a4950151d38 13-Oct-2009 Duncan Sands <baldrick@free.fr> Introduce new convenience methods for sign extending or
truncating an SDValue (depending on whether the target
type is bigger or smaller than the value's type); or zero
extending or truncating it. Use it in a few places (this
seems to be a popular operation, but I only modified cases
of it in SelectionDAGBuild). In particular, the eh_selector
lowering was doing this wrong due to a repeated rather than
inverted test, fixed with this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84027 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
958921a663e7b11ad8dcb246924864548d4810e7 13-Oct-2009 David Goodwin <david_goodwin@apple.com> Add debugging output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84011 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
d452ea6a6417e4ce7e110249c5e74bcc6ab1ae49 13-Oct-2009 David Goodwin <david_goodwin@apple.com> Add debugging output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84011 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
c74255d3943b40a2dc36226750cfedf6f4482c72 13-Oct-2009 Daniel Dunbar <daniel@zuster.org> Fix a -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83950 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6e4bdfc229cbbe5ba549e45f55bda4bb989b159d 13-Oct-2009 Daniel Dunbar <daniel@zuster.org> Fix a -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83950 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6096157c93259c3484c250b3541e9851dfc55da4 13-Oct-2009 Devang Patel <dpatel@apple.com> Find enclosing subprogram info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83922 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6ef75173142f782b281909125e846f3b6828de98 13-Oct-2009 Devang Patel <dpatel@apple.com> Find enclosing subprogram info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83922 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9cd02c5e750dea8637fe300b27a0bf14a53e22bd 13-Oct-2009 Devang Patel <dpatel@apple.com> Set default location for a function if it is not set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83921 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1f03471a2dfb02fa39f7168244bb8c0891a56ab9 13-Oct-2009 Devang Patel <dpatel@apple.com> Set default location for a function if it is not set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83921 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f215bb209351a7fa2244cc691ef214b6beaa757e 12-Oct-2009 Dale Johannesen <dalej@apple.com> Revert the kludge in 76703. I got a clean
bootstrap of FSF-style PPC, so there is some
reason to believe the original bug (which was
never analyzed) has been fixed, probably by
82266.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83871 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
irtRegRewriter.cpp
3a6b9eb868f579b945aa8ec8fadf65e4dd913555 12-Oct-2009 Dale Johannesen <dalej@apple.com> Revert the kludge in 76703. I got a clean
bootstrap of FSF-style PPC, so there is some
reason to believe the original bug (which was
never analyzed) has been fixed, probably by
82266.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83871 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
irtRegRewriter.cpp
69a9b168a959772b096ef8f7ad53992ec2c663d9 12-Oct-2009 Dan Gohman <gohman@apple.com> Remove a redundant member variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83857 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
7fa50ede618f96821a8e5d8e8a5dd374097b2bde 12-Oct-2009 Dan Gohman <gohman@apple.com> Remove a redundant member variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83857 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.h
e4e67c4d7b48ad44a7647ae33fac429025963387 12-Oct-2009 Nate Begeman <natebegeman@mac.com> More heuristics for Combiner-AA. Still catches all important cases, but
compile time penalty on gnugo, the worst case in MultiSource, is down to
about 2.5% from 30%


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
677c89d8bfaf17587076703816730c75c68c894b 12-Oct-2009 Nate Begeman <natebegeman@mac.com> More heuristics for Combiner-AA. Still catches all important cases, but
compile time penalty on gnugo, the worst case in MultiSource, is down to
about 2.5% from 30%


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8935700747e6774fc1732c2608c80e533690a0f8 12-Oct-2009 Chris Lattner <sabre@nondot.org> Fix PR5087, patch by Jakub Staszak!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83822 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionAnalysis.cpp
f5e16139f28d650536024280a16dcf73513baf46 12-Oct-2009 Chris Lattner <sabre@nondot.org> Fix PR5087, patch by Jakub Staszak!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83822 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionAnalysis.cpp
f5ee5165329daef7db0c6a8a0abc23d344e9e6f9 10-Oct-2009 Dan Gohman <gohman@apple.com> Create a new InstrEmitter class for translating SelectionDAG nodes
into MachineInstrs. This is mostly just moving the code from
ScheduleDAGSDNodesEmit.cpp into a new class. This decouples MachineInstr
emitting from scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83699 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
bcea859fc1dd1af9ac66ec93ea04ce9a19c8451c 10-Oct-2009 Dan Gohman <gohman@apple.com> Create a new InstrEmitter class for translating SelectionDAG nodes
into MachineInstrs. This is mostly just moving the code from
ScheduleDAGSDNodesEmit.cpp into a new class. This decouples MachineInstr
emitting from scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83699 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
electionDAG/InstrEmitter.cpp
electionDAG/InstrEmitter.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
e1c0b3bed2a6e94779604ba226ee8721496f20e7 10-Oct-2009 Dan Gohman <gohman@apple.com> Make getMachineNode return a MachineSDNode* instead of a generic SDNode*
since it won't do any folding. This will help avoid some inconvenient
casting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83698 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c81b783e2777b70f4533a4750489d058b6b74ad9 10-Oct-2009 Dan Gohman <gohman@apple.com> Make getMachineNode return a MachineSDNode* instead of a generic SDNode*
since it won't do any folding. This will help avoid some inconvenient
casting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83698 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
101611d6083ca81b9bcf86d51be4717fbe1edc5a 10-Oct-2009 Dan Gohman <gohman@apple.com> Fix a missing initialization of PostRAScheduler's AA member.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83695 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
5bf7c2a34679b6afe46ba4f605f1921da950a66b 10-Oct-2009 Dan Gohman <gohman@apple.com> Fix a missing initialization of PostRAScheduler's AA member.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83695 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
04e1b1d338e24537ab7c42bd0a1f0bf544732080 10-Oct-2009 Dan Gohman <gohman@apple.com> The ScheduleDAG framework now requires an AliasAnalysis argument, though
it isn't needed in the ScheduleDAGSDNodes schedulers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83691 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
98976e4dcd18adbbe676048c0069e67346eb4ade 10-Oct-2009 Dan Gohman <gohman@apple.com> The ScheduleDAG framework now requires an AliasAnalysis argument, though
it isn't needed in the ScheduleDAGSDNodes schedulers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83691 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
0a4c09e724bd3ab7c9a1d3a1615894e7bf209179 10-Oct-2009 Dan Gohman <gohman@apple.com> Factor out LiveIntervalAnalysis' code to determine whether an instruction
is trivially rematerializable and integrate it into
TargetInstrInfo::isTriviallyReMaterializable. This way, all places that
need to know whether an instruction is rematerializable will get the
same answer.

This enables the useful parts of the aggressive-remat option by
default -- using AliasAnalysis to determine whether a memory location
is invariant, and removes the questionable parts -- rematting operations
with virtual register inputs that may not be live everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83687 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
iveIntervalAnalysis.cpp
achineInstr.cpp
achineLICM.cpp
achineSink.cpp
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
a70dca156fa76d452f54829b5c5f962ddfd94ef2 10-Oct-2009 Dan Gohman <gohman@apple.com> Factor out LiveIntervalAnalysis' code to determine whether an instruction
is trivially rematerializable and integrate it into
TargetInstrInfo::isTriviallyReMaterializable. This way, all places that
need to know whether an instruction is rematerializable will get the
same answer.

This enables the useful parts of the aggressive-remat option by
default -- using AliasAnalysis to determine whether a memory location
is invariant, and removes the questionable parts -- rematting operations
with virtual register inputs that may not be live everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83687 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
iveIntervalAnalysis.cpp
achineInstr.cpp
achineLICM.cpp
achineSink.cpp
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
40c80212c1c0be155e7a561f0a18a94856d7eb2f 10-Oct-2009 Devang Patel <dpatel@apple.com> Extract scope information from the variable itself, instead of relying on alloca or llvm.dbg.declare location.

While recording beginning of a function, use scope info from the first location entry instead of just relying on first location entry itself.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
ac1ceb3dd33cb79ecb0dbd64b6abafa7ce067c5f 10-Oct-2009 Devang Patel <dpatel@apple.com> Extract scope information from the variable itself, instead of relying on alloca or llvm.dbg.declare location.

While recording beginning of a function, use scope info from the first location entry instead of just relying on first location entry itself.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
e5496f6ba52d5603eb26d72b421c2d8731f4ac24 09-Oct-2009 Dan Gohman <gohman@apple.com> isTriviallyReMaterializable checks the
TargetInstrDesc::isRematerializable flag, so it isn't necessary to do
this check in its callers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83671 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
achineLICM.cpp
impleRegisterCoalescing.cpp
599a87aca0194edb46f0bee141c3de8281bf22b9 09-Oct-2009 Dan Gohman <gohman@apple.com> isTriviallyReMaterializable checks the
TargetInstrDesc::isRematerializable flag, so it isn't necessary to do
this check in its callers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83671 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
achineLICM.cpp
impleRegisterCoalescing.cpp
c7973eb023472b13237076954240d915c30c2c69 09-Oct-2009 Dan Gohman <gohman@apple.com> Add basic infrastructure and x86 support for preserving MachineMemOperand
information when unfolding memory references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83656 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
91e69c37153eb7d8cd149d9c2484c3115027b90f 09-Oct-2009 Dan Gohman <gohman@apple.com> Add basic infrastructure and x86 support for preserving MachineMemOperand
information when unfolding memory references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83656 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
fb8127571e3f12f3c71b90f92b561ba34b4c0582 09-Oct-2009 Devang Patel <dpatel@apple.com> Check invalid debug info for enums. This may happen when underlyng enum is optimized away. Eventually DwarfChecker will clean this up during llvm verification stage.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83655 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c525472828823b47c8aa90b901f61d5236de890a 09-Oct-2009 Devang Patel <dpatel@apple.com> Check invalid debug info for enums. This may happen when underlyng enum is optimized away. Eventually DwarfChecker will clean this up during llvm verification stage.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83655 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
66037312be7232178d30cfcab772f4e8e330ff5c 09-Oct-2009 Jim Grosbach <grosbach@apple.com> when previous scratch register is killed, flag the value as no longer tracking

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83653 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
71c8dc9b20536e89afdae1b82075806761a57c89 09-Oct-2009 Jim Grosbach <grosbach@apple.com> when previous scratch register is killed, flag the value as no longer tracking

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83653 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
d1aa3e5f0fe657b868ff72e8bab8db7359e1bc98 09-Oct-2009 Evan Cheng <evan.cheng@apple.com> Give Dan and my recent changes, machine LICM is now code size neutral.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83624 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
64efb555ceb67aa5dc6554140cc2b4ebc0eab23a 09-Oct-2009 Evan Cheng <evan.cheng@apple.com> Give Dan and my recent changes, machine LICM is now code size neutral.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83624 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
3dd21c11a02af6dede438855f9b433be3dfb1abc 09-Oct-2009 Evan Cheng <evan.cheng@apple.com> Fix a logic error that caused non-rematable loop invariants loads to be licm'ed out of loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83622 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
3dc326ba83c8fc9a47f1cb9968ff15ba73913ce8 09-Oct-2009 Evan Cheng <evan.cheng@apple.com> Fix a logic error that caused non-rematable loop invariants loads to be licm'ed out of loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83622 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
9b4ac5427138629eb3cf8419fcf059b1b8848f91 09-Oct-2009 Evan Cheng <evan.cheng@apple.com> Reset kill markers after live interval is reconstructed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83608 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
35ca9203f299bea3fac5abb78d7b43bbec2ffcbe 09-Oct-2009 Evan Cheng <evan.cheng@apple.com> Reset kill markers after live interval is reconstructed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83608 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
9e95fbdc67767a5b924b05be00174db40a0cce57 09-Oct-2009 Evan Cheng <evan.cheng@apple.com> Remove code that makes no sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83589 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
9c8068078b843ee126372bddd605466988a1cb27 09-Oct-2009 Evan Cheng <evan.cheng@apple.com> Remove code that makes no sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83589 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
f57e106e4ef58a165435aef6683db98b559f594b 08-Oct-2009 Devang Patel <dpatel@apple.com> Clear variable debug info map at the end of the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83571 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
85d29e2de30cf49956558e45246b998f6d9ed985 08-Oct-2009 Devang Patel <dpatel@apple.com> Clear variable debug info map at the end of the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83571 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
fcaa4cff1b4f3a5b7a731c6e591f345ce5fcdbc1 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a SelectionDAG getTargetInsertSubreg convenience function,
similar to getTargetExtractSubreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83564 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5fcbf0d26ecb99d54c182f542bf8db43ff048d6d 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a SelectionDAG getTargetInsertSubreg convenience function,
similar to getTargetExtractSubreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83564 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6882dff7faafcef6f4099c22fcb8f1720b021720 08-Oct-2009 Devang Patel <dpatel@apple.com> Do not record line number to implicitly mark start of function if function has arguments. Extra line number entries trip gdb in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83563 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
eda312193dfc56cb9a5d1d3e7cf3c89dce07124a 08-Oct-2009 Devang Patel <dpatel@apple.com> Do not record line number to implicitly mark start of function if function has arguments. Extra line number entries trip gdb in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83563 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
130a245ddcec93d0105d56a5490bf15261fc5775 08-Oct-2009 Dan Gohman <gohman@apple.com> Add a form of addPreserved which takes a string argument, to allow passes
to declare that they preserve other passes without needing to pull in
additional header file or library dependencies. Convert MachineFunctionPass
and CodeGenLICM to make use of this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83555 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionPass.cpp
8a261e44f71a433b7d9af373c3e3dfa6fea67146 08-Oct-2009 Dan Gohman <gohman@apple.com> Add a form of addPreserved which takes a string argument, to allow passes
to declare that they preserve other passes without needing to pull in
additional header file or library dependencies. Convert MachineFunctionPass
and CodeGenLICM to make use of this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83555 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionPass.cpp
4820d98aaad1442bfb4efb104a2ac91b64bc3a36 08-Oct-2009 Jim Grosbach <grosbach@apple.com> Re-enable register scavenging in Thumb1 by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83521 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
65c58daa8b8985d2116216043103009815a55e77 08-Oct-2009 Jim Grosbach <grosbach@apple.com> Re-enable register scavenging in Thumb1 by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83521 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
51d82f19af9992ec249e8494031365864defd035 08-Oct-2009 Jim Grosbach <grosbach@apple.com> bugfix. The target may use virtual registers that aren't tracked for re-use but are allocated by the scavenger. The re-use algorithm needs to watch for that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83519 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
e40bf5f9f40a4672cd55bfa51c64a4bb6f4b2f8f 08-Oct-2009 Jim Grosbach <grosbach@apple.com> bugfix. The target may use virtual registers that aren't tracked for re-use but are allocated by the scavenger. The re-use algorithm needs to watch for that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83519 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
c7d2c5396f2876ed2ac8e5c3b65291a769a90767 08-Oct-2009 Jim Grosbach <grosbach@apple.com> reverting thumb1 scavenging default due to test failure while I figure out what's up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83501 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
9f3a559dff691bc1ed85089cb0870cf30a4a2d96 08-Oct-2009 Jim Grosbach <grosbach@apple.com> reverting thumb1 scavenging default due to test failure while I figure out what's up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83501 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
bcd68c3cde6340d81b205a97d9855c55c131150b 08-Oct-2009 Chris Lattner <sabre@nondot.org> second half of lazy liveness removal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83500 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
831a2bba04f0ccb9a2754ef4b0fca0a410f48ac2 08-Oct-2009 Chris Lattner <sabre@nondot.org> second half of lazy liveness removal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83500 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
ce7bfc50779b980e76e470733c72c25c82a5c0bf 08-Oct-2009 Jim Grosbach <grosbach@apple.com> Enable thumb1 register scavenging by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83496 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
bafa3d9f6aaf24d721476ded7b1211ad57dd46c3 08-Oct-2009 Jim Grosbach <grosbach@apple.com> Enable thumb1 register scavenging by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83496 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
a3330a871867e32033b8e0ea4134517d0ff62b9d 07-Oct-2009 Jim Grosbach <grosbach@apple.com> grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83483 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
b8452b80f4b24bed1efe0bace9e925c2ec01122e 07-Oct-2009 Jim Grosbach <grosbach@apple.com> grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83483 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
b1355fe89fe28726ead6203e1b1f6e43f3292a81 07-Oct-2009 Jim Grosbach <grosbach@apple.com> add initializers for clarity. Add missing assignment of PrevLastUseOp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83481 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
391e1704c2e6934bae2ef5df07fc9690c26dbb62 07-Oct-2009 Jim Grosbach <grosbach@apple.com> add initializers for clarity. Add missing assignment of PrevLastUseOp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83481 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
fd4a856fb7ad8ccf886eebd9a1575be404ada2f9 07-Oct-2009 Owen Anderson <resistor@mac.com> Remove LazyLiveness from the tree. It doesn't work right now, and I'm not going to have the time
to finish it any time soon. If someone's interested it, they can resurrect it from SVN history.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83480 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
c024df648ebb326af719933c188edb6bf4b4d0fe 07-Oct-2009 Owen Anderson <resistor@mac.com> Remove LazyLiveness from the tree. It doesn't work right now, and I'm not going to have the time
to finish it any time soon. If someone's interested it, they can resurrect it from SVN history.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83480 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
9c1b793895e57d2696e6c84215f63bfd699e222e 07-Oct-2009 Dan Gohman <gohman@apple.com> Replace some code for aggressive-remat with MachineInstr::isInvariantLoad, and
teach it how to recognize invariant physical registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83476 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
2627e08e05d8e7521f7c03496ede45868144d426 07-Oct-2009 Dan Gohman <gohman@apple.com> Replace some code for aggressive-remat with MachineInstr::isInvariantLoad, and
teach it how to recognize invariant physical registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83476 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
eef78170dfb5ee4137742e94dbb0253cdda451f8 07-Oct-2009 Dan Gohman <gohman@apple.com> Replace TargetInstrInfo::isInvariantLoad and its target-specific
implementations with a new MachineInstr::isInvariantLoad, which uses
MachineMemOperands and is target-independent. This brings MachineLICM
and other functionality to targets which previously lacked an
isInvariantLoad implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83475 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineLICM.cpp
achineSink.cpp
cheduleDAGInstrs.cpp
e33f44cfc547359bc28526e4c5e1852b600b4448 07-Oct-2009 Dan Gohman <gohman@apple.com> Replace TargetInstrInfo::isInvariantLoad and its target-specific
implementations with a new MachineInstr::isInvariantLoad, which uses
MachineMemOperands and is target-independent. This brings MachineLICM
and other functionality to targets which previously lacked an
isInvariantLoad implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83475 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineLICM.cpp
achineSink.cpp
cheduleDAGInstrs.cpp
d5ce7033ba2445d8fd13504e422afeeffb61c3d3 07-Oct-2009 Dan Gohman <gohman@apple.com> Add a few simple MachineVerifier checks for MachineMemOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83474 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
2dbc4c84f6de55deeea6631201c5df943d5327c0 07-Oct-2009 Dan Gohman <gohman@apple.com> Add a few simple MachineVerifier checks for MachineMemOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83474 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
b67fb2b7be5c577e88578d240998a7ed3bf210db 07-Oct-2009 Jim Grosbach <grosbach@apple.com> Add register-reuse to frame-index register scavenging. When a target uses
a virtual register to eliminate a frame index, it can return that register
and the constant stored there to PEI to track. When scavenging to allocate
for those registers, PEI then tracks the last-used register and value, and
if it is still available and matches the value for the next index, reuses
the existing value rather and removes the re-materialization instructions.
Fancier tracking and adjustment of scavenger allocations to keep more
values live for longer is possible, but not yet implemented and would likely
be better done via a different, less special-purpose, approach to the
problem.

eliminateFrameIndex() is modified so the target implementations can return
the registers they wish to be tracked for reuse.

ARM Thumb1 implements and utilizes the new mechanism. All other targets are
simply modified to adjust for the changed eliminateFrameIndex() prototype.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83467 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
egisterScavenging.cpp
b58f498f7502e7e1833decbbbb4df771367c7341 07-Oct-2009 Jim Grosbach <grosbach@apple.com> Add register-reuse to frame-index register scavenging. When a target uses
a virtual register to eliminate a frame index, it can return that register
and the constant stored there to PEI to track. When scavenging to allocate
for those registers, PEI then tracks the last-used register and value, and
if it is still available and matches the value for the next index, reuses
the existing value rather and removes the re-materialization instructions.
Fancier tracking and adjustment of scavenger allocations to keep more
values live for longer is possible, but not yet implemented and would likely
be better done via a different, less special-purpose, approach to the
problem.

eliminateFrameIndex() is modified so the target implementations can return
the registers they wish to be tracked for reuse.

ARM Thumb1 implements and utilizes the new mechanism. All other targets are
simply modified to adjust for the changed eliminateFrameIndex() prototype.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83467 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
egisterScavenging.cpp
e725a19617ce125a02ad9c96279a68fbb0459240 07-Oct-2009 Dan Gohman <gohman@apple.com> Fix this comment. The loop header is the loop entry point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83437 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
bd31b173d276cb488b5fa72de8d42ae192cbfc97 07-Oct-2009 Dan Gohman <gohman@apple.com> Fix this comment. The loop header is the loop entry point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83437 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
0feae424692b07197998bd7a451d8da44fd0ac9a 06-Oct-2009 Devang Patel <dpatel@apple.com> Add support to handle debug info attached to an instruction.
This is not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83400 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
60b35bd8ecb2c3358b80d8441873cfffa0d27851 06-Oct-2009 Devang Patel <dpatel@apple.com> Add support to handle debug info attached to an instruction.
This is not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83400 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
5fda434b0d4932d63b21ce3b5dd72c18e855da26 06-Oct-2009 Dan Gohman <gohman@apple.com> Instead of printing unnecessary basic block labels as labels in
verbose-asm mode, print comments instead. This eliminates a non-comment
difference between verbose-asm mode and non-verbose-asm mode.

Also, factor out the relevant code out of all the targets and into
target-independent code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83392 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e3cc3f3c84abfdf8eb3bd19dfa806ceea49f15d6 06-Oct-2009 Dan Gohman <gohman@apple.com> Instead of printing unnecessary basic block labels as labels in
verbose-asm mode, print comments instead. This eliminates a non-comment
difference between verbose-asm mode and non-verbose-asm mode.

Also, factor out the relevant code out of all the targets and into
target-independent code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83392 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f2519d6193d736ee7f2b9cc24e0143cfa933f79e 06-Oct-2009 Duncan Sands <baldrick@free.fr> Introduce and use convenience methods for getting pointer types
where the element is of a basic builtin type. For example, to get
an i8* use getInt8PtrTy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83379 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ntrinsicLowering.cpp
seudoSourceValue.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
ac53a0b272452013124bfc70480aea5e41b60f40 06-Oct-2009 Duncan Sands <baldrick@free.fr> Introduce and use convenience methods for getting pointer types
where the element is of a basic builtin type. For example, to get
an i8* use getInt8PtrTy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83379 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ntrinsicLowering.cpp
seudoSourceValue.cpp
hadowStackGC.cpp
jLjEHPrepare.cpp
33b6450f08ca9ef6306adbd8cdb24145bf9a2202 06-Oct-2009 Jim Grosbach <grosbach@apple.com> grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83378 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
6e214805b1163c0e3cd218963c9e66ea244956b2 06-Oct-2009 Jim Grosbach <grosbach@apple.com> grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83378 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
f434889fb46c722f22c99a827ccc026f6271e3cd 06-Oct-2009 Devang Patel <dpatel@apple.com> Fix cut-n-pasto.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83367 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8a4087ddc79945383d01cf9846d906215dfab3c7 06-Oct-2009 Devang Patel <dpatel@apple.com> Fix cut-n-pasto.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83367 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5450fc15cb5de674d4e5203ab9ace59d3d6c38e5 06-Oct-2009 Devang Patel <dpatel@apple.com> Update processDebugLoc() so that it can be used to process debug info before and after printing an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83363 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
af0e2726835e096e32c30c1b88cc7a6232a6ef69 06-Oct-2009 Devang Patel <dpatel@apple.com> Update processDebugLoc() so that it can be used to process debug info before and after printing an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83363 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ac35dcf9887f9e7883745876525c2a7dc39bf8d4 06-Oct-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83362 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
89703cf838c5d875875faf58b746a78fc33c2499 06-Oct-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83362 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
393a46deb66be6885fd064a38e650bed859af5a1 06-Oct-2009 Devang Patel <dpatel@apple.com> Add utility routine to set begin and end labels for DbgScopes.
This will be used by processDebugLoc().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83361 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0d20ac8d175575fbad1ed410c9fe610cf7255af3 06-Oct-2009 Devang Patel <dpatel@apple.com> Add utility routine to set begin and end labels for DbgScopes.
This will be used by processDebugLoc().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83361 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
77354f12a0fd1882f4ec787e0a4309c2aaeae819 06-Oct-2009 Devang Patel <dpatel@apple.com> Remove unintentional function decl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83356 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
b39566d719b3a39035cbb15bd98c33f31ae245b2 06-Oct-2009 Devang Patel <dpatel@apple.com> Remove unintentional function decl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83356 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.h
8413999c15ade93fff73f9e43738f1dfd885ba70 06-Oct-2009 Devang Patel <dpatel@apple.com> Add utility routine to collect variable debug info. This is not yet used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83355 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
e717faa467538a6e86c3f651382af3ec2759d43a 06-Oct-2009 Devang Patel <dpatel@apple.com> Add utility routine to collect variable debug info. This is not yet used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83355 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
93d2e89b3e82de8ab53b252b5f86de4e3b6980b6 06-Oct-2009 Devang Patel <dpatel@apple.com> Set default location for the function if it is not already set.
This code is not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
454e957979727bd29d75ec70623e50795f5824d9 06-Oct-2009 Devang Patel <dpatel@apple.com> Set default location for the function if it is not already set.
This code is not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
95d477eff9aa5b68b022546565f0a41eee38cb89 06-Oct-2009 Devang Patel <dpatel@apple.com> Existence of a compile unit for input source file is a good indicator to check debug info's presence in a module.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83348 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6f3dc920b013df98be2d56c2f2628041477d75ee 06-Oct-2009 Devang Patel <dpatel@apple.com> Existence of a compile unit for input source file is a good indicator to check debug info's presence in a module.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83348 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
186ee5cfbdf8c08394250e41d4bd6493999d56a1 06-Oct-2009 Devang Patel <dpatel@apple.com> If subprogram die is not available then construct new one.
This can happen if debug info is processed lazily.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83347 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ffd9c3dd4a0f9b5c341b27862540c1ed165b22a7 06-Oct-2009 Devang Patel <dpatel@apple.com> If subprogram die is not available then construct new one.
This can happen if debug info is processed lazily.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83347 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
695c8b08cab0e2844ddc14e3e7f87916fd90fdc6 06-Oct-2009 Devang Patel <dpatel@apple.com> Adjust context for the global variables that are not at file scope, e.g.
void foo() { static int bar = 42; }
Here, foo's DIE is parent of bar's DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83344 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
fd07cf56cdaf730036c1d59bf0f9372dae8900df 06-Oct-2009 Devang Patel <dpatel@apple.com> Adjust context for the global variables that are not at file scope, e.g.
void foo() { static int bar = 42; }
Here, foo's DIE is parent of bar's DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83344 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6bd5cc8a280aee4124ba96c146ea9672ae8a9712 06-Oct-2009 Devang Patel <dpatel@apple.com> Set address while constructing DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83343 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b71a16d10dd47f70947386064783eeac2abe29b2 06-Oct-2009 Devang Patel <dpatel@apple.com> Set address while constructing DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83343 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
adf4cf604eeca26d6a854945893fa6c264e02900 06-Oct-2009 Jim Grosbach <grosbach@apple.com> In Thumb1, the register scavenger is not always able to use an emergency
spill slot. When frame references are via the frame pointer, they will be
negative, but Thumb1 load/store instructions only allow positive immediate
offsets. Instead, Thumb1 will spill to R12.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83336 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
540b05d227a79443b2a7b07d5152a35cb6392abf 06-Oct-2009 Jim Grosbach <grosbach@apple.com> In Thumb1, the register scavenger is not always able to use an emergency
spill slot. When frame references are via the frame pointer, they will be
negative, but Thumb1 load/store instructions only allow positive immediate
offsets. Instead, Thumb1 will spill to R12.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83336 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
946d0aef89afb5752d65e1900532c2afdc0cd700 05-Oct-2009 Devang Patel <dpatel@apple.com> Gracefully handle various scopes while recording source line info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83317 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f84548db63ca5ceea0381a7bfc9e924cddc1cc3f 05-Oct-2009 Devang Patel <dpatel@apple.com> Gracefully handle various scopes while recording source line info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83317 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
82cdc06a6626e9a9fae300fafaeae9702ffb3808 05-Oct-2009 Chris Lattner <sabre@nondot.org> strength reduce a ton of type equality tests to check the typeid (Through
the new predicates I added) instead of going through a context and doing a
pointer comparison. Besides being cheaper, this allows a smart compiler
to turn the if sequence into a switch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83297 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
achineInstr.cpp
cf0fe8d813727383d630055bb9d1cde21b00b7e7 05-Oct-2009 Chris Lattner <sabre@nondot.org> strength reduce a ton of type equality tests to check the typeid (Through
the new predicates I added) instead of going through a context and doing a
pointer comparison. Besides being cheaper, this allows a smart compiler
to turn the if sequence into a switch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83297 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
achineInstr.cpp
d511acce19f3f29ab933a90e0f1972d31685fd40 05-Oct-2009 Chris Lattner <sabre@nondot.org> stop MachineFunctionPass from claiming that it preserves LoopDependence info,
which causes dependence info to be linked into lli.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83289 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionPass.cpp
92bef66c100cd7515b81473de8e8579b142f0c66 05-Oct-2009 Chris Lattner <sabre@nondot.org> stop MachineFunctionPass from claiming that it preserves LoopDependence info,
which causes dependence info to be linked into lli.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83289 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionPass.cpp
cc0aeb29f77c1d84341f2843edf6c0f78642f125 04-Oct-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Whitespace and formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83285 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
b44fad7f95b9c0c65d5c772f6ed5084cf46283e9 04-Oct-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Whitespace and formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83285 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
ead9d35fa9885422f4d1168f9261c63e194b21ff 03-Oct-2009 Lang Hames <lhames@gmail.com> Oops. Renamed remaining MachineInstrIndex references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83255 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
piller.cpp
trongPHIElimination.cpp
6cc91e39c04c0c00756e7667f623f787c4851439 03-Oct-2009 Lang Hames <lhames@gmail.com> Oops. Renamed remaining MachineInstrIndex references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83255 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
piller.cpp
trongPHIElimination.cpp
0a6f4525040fd90996d1391cef8b24284b817ed3 03-Oct-2009 Lang Hames <lhames@gmail.com> Renamed MachineInstrIndex to LiveIndex.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83254 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
piller.cpp
trongPHIElimination.cpp
irtRegMap.h
cc3b0650f1feec45d1a2890b20c05c4b325f1788 03-Oct-2009 Lang Hames <lhames@gmail.com> Renamed MachineInstrIndex to LiveIndex.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83254 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
piller.cpp
trongPHIElimination.cpp
irtRegMap.h
e3901ce4809ad26b8173855549cc5adbe7b29b56 02-Oct-2009 Benjamin Kramer <benny.kra@googlemail.com> Fix a use-after-free in post-ra-scheduling.

MI->addOperand invalidates references to it's operands, avoid touching
the operand after a new one was added.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83249 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
8bff4af61219031345e7dae0c1840315e6bfab7f 02-Oct-2009 Benjamin Kramer <benny.kra@googlemail.com> Fix a use-after-free in post-ra-scheduling.

MI->addOperand invalidates references to it's operands, avoid touching
the operand after a new one was added.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83249 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
db397e1ea09a961e2b3f16d7ee85eae5f19f8771 02-Oct-2009 David Goodwin <david_goodwin@apple.com> All callee-saved registers are live-out of a return block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83223 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
63bcbb72f75c92e3eff4d994eb1e8cb6d64c6e9b 02-Oct-2009 David Goodwin <david_goodwin@apple.com> All callee-saved registers are live-out of a return block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83223 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
736fed9ff71ae677a7c947ac80ebb42a527de0dc 02-Oct-2009 David Goodwin <david_goodwin@apple.com> Remove neonfp attribute and instead set default based on CPU string. Add -arm-use-neon-fp to override the default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83218 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
9843a93e830e76f96e9a997b3002624a28ca5aa6 02-Oct-2009 David Goodwin <david_goodwin@apple.com> Remove neonfp attribute and instead set default based on CPU string. Add -arm-use-neon-fp to override the default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83218 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
089aa85274d26ebec4989ac1ceeefba7fca5e5ea 01-Oct-2009 David Goodwin <david_goodwin@apple.com> Restore the -post-RA-scheduler flag as an override for the target specification. Remove -mattr for setting PostRAScheduler enable and instead use CPU string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83215 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
471850ab84301dd47cab2bf8d694fcb5766c1169 01-Oct-2009 David Goodwin <david_goodwin@apple.com> Restore the -post-RA-scheduler flag as an override for the target specification. Remove -mattr for setting PostRAScheduler enable and instead use CPU string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83215 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
6a26010c218cd8979439036cc90d3bea93b3996b 01-Oct-2009 Devang Patel <dpatel@apple.com> Add support to extract lexical scope information from DebugLoc attached with an machine instruction.
This is not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83210 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
af9e84701b42856051d87c5641652b796936df11 01-Oct-2009 Devang Patel <dpatel@apple.com> Add support to extract lexical scope information from DebugLoc attached with an machine instruction.
This is not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83210 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
cdb56fcef112775875904583d3cc07a262a28af3 01-Oct-2009 David Goodwin <david_goodwin@apple.com> Use MachineFrameInfo.getPristineRegs() to determine which callee-saved registers are available for anti-dependency breaking. Some cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83208 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
c7951f8e09a65e07626e7b9a272ce9911b249472 01-Oct-2009 David Goodwin <david_goodwin@apple.com> Use MachineFrameInfo.getPristineRegs() to determine which callee-saved registers are available for anti-dependency breaking. Some cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83208 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
90ecd198e2f605f8a613ce0861aeea7e16a56575 01-Oct-2009 Devang Patel <dpatel@apple.com> Record first and last instruction of a scope in DbgScope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83207 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d38dd11e120d1f1b1e73c6050458430a2e7d75f3 01-Oct-2009 Devang Patel <dpatel@apple.com> Record first and last instruction of a scope in DbgScope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83207 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
04be082a4a304483410133a89dbd0f1dfe902c9a 01-Oct-2009 Evan Cheng <evan.cheng@apple.com> Observe hasExtraSrcRegAllocReq and hasExtraDefRegAllocReq. Do not change
operands of instructions with these properties while breaking anti-dep.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83198 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
714e8bc1fc415050e557272326a75b50ac54d2bb 01-Oct-2009 Evan Cheng <evan.cheng@apple.com> Observe hasExtraSrcRegAllocReq and hasExtraDefRegAllocReq. Do not change
operands of instructions with these properties while breaking anti-dep.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83198 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
f736728788cddfb56d44fb826cb5d91dfdbfe294 01-Oct-2009 Devang Patel <dpatel@apple.com> Add another MDNode into DebugLocTuple. This will be used to keep track of inlined functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83190 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a1434045c32eb6818354a607b84d99353af759b0 01-Oct-2009 Devang Patel <dpatel@apple.com> Add another MDNode into DebugLocTuple. This will be used to keep track of inlined functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83190 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
539f434334ae6cc5becba8b3099eb20ab7fe48dc 01-Oct-2009 Devang Patel <dpatel@apple.com> If location info is attached with an instruction then keep track of alloca slots used by a variable. This info will be used by AsmPrinter to emit debug info for variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83189 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
75549f4444cbb14e73c8f10ab90ec36c60413e8e 01-Oct-2009 Devang Patel <dpatel@apple.com> If location info is attached with an instruction then keep track of alloca slots used by a variable. This info will be used by AsmPrinter to emit debug info for variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83189 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
86049dcedaba49929bf6e4c1cd84f9d85cadb987 01-Oct-2009 Devang Patel <dpatel@apple.com> Use MachineInstr as an processDebugLoc() argument.
This will allow processDebugLoc() to handle scopes for DWARF debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83183 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b0fdedb3fd123a47e7deca75d1e6f7d64218b07a 01-Oct-2009 Devang Patel <dpatel@apple.com> Use MachineInstr as an processDebugLoc() argument.
This will allow processDebugLoc() to handle scopes for DWARF debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83183 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4d23d84af58fc21b50dce528a8a26a30a62db355 01-Oct-2009 Devang Patel <dpatel@apple.com> Use MDNode * directly as an RecordSourceLine() argument.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83182 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
electionDAG/LegalizeDAG.cpp
3d910835fc5da1ccddefd7cc5978ffe8c903cbf0 01-Oct-2009 Devang Patel <dpatel@apple.com> Use MDNode * directly as an RecordSourceLine() argument.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83182 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
electionDAG/LegalizeDAG.cpp
16030402039c222229fe0e64cbc8307964480e31 01-Oct-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83181 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
a63710124a4c0d248ab32f82b76b3c7ec670d1e0 01-Oct-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83181 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
b5f835ee6e48aedbffb804a6bf5308465867e67b 01-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a new virtual EmitStartOfAsmFile method to the AsmPrinter and use this
to emit target-specific things at the beginning of the asm output. This
fixes a problem for PPC, where the text sections are not being kept together
as expected. The base class doInitialization code calls DW->BeginModule()
which emits a bunch of DWARF section directives. The PPC doInitialization
code then emits all the TEXT section directives, with the intention that they
will be kept together. But as I understand it, the Darwin assembler treats
the default TEXT section as a special case and moves it to the beginning of
the file, which means that all those DWARF sections are in the middle of
the text. With this change, the EmitStartOfAsmFile hook is called before
the DWARF section directives are emitted, so that all the PPC text section
directives come out right at the beginning of the file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83176 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
812209a58c5520c604bc9279aa069e5ae066e860 01-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a new virtual EmitStartOfAsmFile method to the AsmPrinter and use this
to emit target-specific things at the beginning of the asm output. This
fixes a problem for PPC, where the text sections are not being kept together
as expected. The base class doInitialization code calls DW->BeginModule()
which emits a bunch of DWARF section directives. The PPC doInitialization
code then emits all the TEXT section directives, with the intention that they
will be kept together. But as I understand it, the Darwin assembler treats
the default TEXT section as a special case and moves it to the beginning of
the file, which means that all those DWARF sections are in the middle of
the text. With this change, the EmitStartOfAsmFile hook is called before
the DWARF section directives are emitted, so that all the PPC text section
directives come out right at the beginning of the file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83176 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6ed4b620633aff7001447bf3ddd86924f8fd7d10 30-Sep-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83171 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
bc9506f5eec2ff5f05f66b03e13a5fd678fd9134 30-Sep-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83171 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
64ccb3919aa594caf4c2196eed9e72cc9797fe57 30-Sep-2009 Reid Kleckner <reid@kleckner.net> Silence comparison always false warning in -Asserts mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3a90c9b8edb53ea1ea57d94f7ab256608b5b30c6 30-Sep-2009 Reid Kleckner <reid@kleckner.net> Silence comparison always false warning in -Asserts mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
af24317c91a2383560a6707d35ae41f770c05a14 30-Sep-2009 Jim Grosbach <grosbach@apple.com> Add additional assert() to verify no extraneous use of a scavenged register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83163 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
32030fe021ee614df6fdd77a2228e0e265049f3d 30-Sep-2009 Jim Grosbach <grosbach@apple.com> Add additional assert() to verify no extraneous use of a scavenged register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83163 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
e9b95fd1ebb1f046d17afd0123d7c3afcd4ddef0 30-Sep-2009 Reid Kleckner <reid@kleckner.net> Fix integer overflow in instruction scheduling. This can happen if we have
basic blocks that are so long that their size overflows a short.

Also assert that overflow does not happen in the future, as requested by Evan.

This fixes PR4401.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83159 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
c277ab08a24d2dbe9b4ff1a9154ea6115ed6a4e3 30-Sep-2009 Reid Kleckner <reid@kleckner.net> Fix integer overflow in instruction scheduling. This can happen if we have
basic blocks that are so long that their size overflows a short.

Also assert that overflow does not happen in the future, as requested by Evan.

This fixes PR4401.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83159 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
caa654136388c6b3b1909149a5d9002159983ee1 30-Sep-2009 Evan Cheng <evan.cheng@apple.com> Add a target hook to add pre- post-regalloc scheduling passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83144 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
629adde69953fa53362d20ddb7b4e67ed78b8ae3 30-Sep-2009 Evan Cheng <evan.cheng@apple.com> Add a target hook to add pre- post-regalloc scheduling passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83144 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
a0e180ac4672e4a304f93a2d0207428c83de155e 30-Sep-2009 Jim Grosbach <grosbach@apple.com> replace TRI->isVirtualRegister() with TargetRegisterInfo::isVirtualRegister()
per customary usage

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83137 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
366e021fb2cb0efb8e727ef5e40bd55cef974c7a 30-Sep-2009 Jim Grosbach <grosbach@apple.com> replace TRI->isVirtualRegister() with TargetRegisterInfo::isVirtualRegister()
per customary usage

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83137 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
25e34f9b00ed6c3b69f77fbec6173ca9071ac793 30-Sep-2009 Jim Grosbach <grosbach@apple.com> fix compiler warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83132 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
0a13e566abcfacc3e07f509437060eee294dbfee 30-Sep-2009 Jim Grosbach <grosbach@apple.com> fix compiler warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83132 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
48e8d7af49d3f3e2cd279c13b8897fcade1801a5 30-Sep-2009 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83123 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
fdc826f6e834a2da80965a34f2ffb5d869fd8c64 30-Sep-2009 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83123 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
cf89a609bc2c368e2c5c970131edc40c08175893 30-Sep-2009 David Goodwin <david_goodwin@apple.com> Remove -post-RA-schedule flag and add a TargetSubtarget method to enable post-register-allocation scheduling. By default it is off. For ARM, enable/disable with -mattr=+/-postrasched. Enable by default for cortex-a8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83122 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ostRASchedulerList.cpp
0dad89fa94536284d51f60868326294b725a0c61 30-Sep-2009 David Goodwin <david_goodwin@apple.com> Remove -post-RA-schedule flag and add a TargetSubtarget method to enable post-register-allocation scheduling. By default it is off. For ARM, enable/disable with -mattr=+/-postrasched. Enable by default for cortex-a8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83122 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ostRASchedulerList.cpp
b22cd0ff4c6c3ba4a39b8b11afb21ddf40e79f74 30-Sep-2009 Mike Stump <mrs@apple.com> Add a way for a frontend to generate more complex dwarf location
information. This allows arbitrary code involving DW_OP_plus_uconst
and DW_OP_deref. The scheme allows for easy extention to include,
any, or all of the DW_OP_ opcodes. I thought about just exposing all
of them, but, wasn't sure if people wanted the dwarf opcodes exposed
in the api. Is that a layering violation?

With this scheme, the entire existing block scheme used by llvm-gcc
can be switched over to the new scheme. I think that would be
cleaner, as then the compiler specific bits are not present in llvm
proper. Before the old code can be yanked however, similar code in
clang would have to be removed.

Next up, more testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83120 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
3e4c9bdb67db9b6d65b17d474e3268b520a93514 30-Sep-2009 Mike Stump <mrs@apple.com> Add a way for a frontend to generate more complex dwarf location
information. This allows arbitrary code involving DW_OP_plus_uconst
and DW_OP_deref. The scheme allows for easy extention to include,
any, or all of the DW_OP_ opcodes. I thought about just exposing all
of them, but, wasn't sure if people wanted the dwarf opcodes exposed
in the api. Is that a layering violation?

With this scheme, the entire existing block scheme used by llvm-gcc
can be switched over to the new scheme. I think that would be
cleaner, as then the compiler specific bits are not present in llvm
proper. Before the old code can be yanked however, similar code in
clang would have to be removed.

Next up, more testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83120 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1f2144540eebd8dfd6161f7f1e350f7f0cf8fc89 29-Sep-2009 Jim Grosbach <grosbach@apple.com> Additional check for regno==0

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83103 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
a9a9c95f6789946d5df34185725fc28cebad8b16 29-Sep-2009 Jim Grosbach <grosbach@apple.com> Additional check for regno==0

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83103 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
50ffdfb9df7dceaba43fd40a1053d22787257fd6 29-Sep-2009 Devang Patel <dpatel@apple.com> Remove unnecessary cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83100 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9dddf9748025cb65a951e6807bc156cf5bcd046d 29-Sep-2009 Devang Patel <dpatel@apple.com> Remove unnecessary cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83100 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
aaf012ebb492482ba3626e4129140713cd7836b7 29-Sep-2009 Devang Patel <dpatel@apple.com> Remove std::string uses from DebugInfo interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83083 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
achineInstr.cpp
5ccdd10b1a0ee1ce35b6e5a18eb0fcfd6f5131d3 29-Sep-2009 Devang Patel <dpatel@apple.com> Remove std::string uses from DebugInfo interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83083 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
achineInstr.cpp
428fa81b068032e70a4df96a9bf95aea8647bae7 29-Sep-2009 Jim Grosbach <grosbach@apple.com> Simplify the tracking of virtual frame index registers. Ranges cannot overlap,
so a simple "current register" will suffice. Also add some additional
sanity-checking assertions to make sure things are as we expect.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83081 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
9a0b6e6ded68db772631c2938c7a07905e28144f 29-Sep-2009 Jim Grosbach <grosbach@apple.com> Simplify the tracking of virtual frame index registers. Ranges cannot overlap,
so a simple "current register" will suffice. Also add some additional
sanity-checking assertions to make sure things are as we expect.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83081 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
1261bc74142b823bf80824e5f7e20697cb136747 29-Sep-2009 Jim Grosbach <grosbach@apple.com> Moving register scavenging to a post pass results in virtual registers in
the instruction we're scavenging for. The scavenger needs to know to avoid
them when analyzing register usage.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83077 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
9ab2238df9f921970554cae8e7f6f7ad23d6c626 29-Sep-2009 Jim Grosbach <grosbach@apple.com> Moving register scavenging to a post pass results in virtual registers in
the instruction we're scavenging for. The scavenger needs to know to avoid
them when analyzing register usage.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83077 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
6de78e26bd0bb682ac466ae1b46a8a29c9d6ae9c 28-Sep-2009 Devang Patel <dpatel@apple.com> s/class Metadata/class MetadataContext/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83019 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e30e678865b8dc1b69ef1c26e7567ffd1300553c 28-Sep-2009 Devang Patel <dpatel@apple.com> s/class Metadata/class MetadataContext/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83019 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b5896160216cae66e3a06cb58c3c38ba09f6969e 28-Sep-2009 Devang Patel <dpatel@apple.com> Do not use global typedef for MDKindID.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83016 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a2148402ce39fb3aad09e98a32078d3853a01ae9 28-Sep-2009 Devang Patel <dpatel@apple.com> Do not use global typedef for MDKindID.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83016 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1b17870ccf5ae6abd45044f2788825fa0db381e5 28-Sep-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Use KILL instead of IMPLICIT_DEF in LowerSubregs pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83007 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
ostRASchedulerList.cpp
544df3651e15f31ae2c14588c1272fd870560250 28-Sep-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Use KILL instead of IMPLICIT_DEF in LowerSubregs pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83007 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
ostRASchedulerList.cpp
c7d0e9d24270f52cdc47b94ebaad316d4fcc2b44 28-Sep-2009 Dan Gohman <gohman@apple.com> Use VerifySchedule instead of doing the work manually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
937d2d86242339c17e77a6016b96999f439a1714 28-Sep-2009 Dan Gohman <gohman@apple.com> Use VerifySchedule instead of doing the work manually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
58cb38c09d1b7e0e8c27d56ac94a524552ef436c 28-Sep-2009 Evan Cheng <evan.cheng@apple.com> Coalescer should not delete extract_subreg, insert_subreg, and subreg_to_reg of
physical registers. This is especially critical for the later two since they
start the live interval of a super-register. e.g.
%DO<def> = INSERT_SUBREG %D0<undef>, %S0<kill>, 1
If this instruction is eliminated, the register scavenger will not be happy as
D0 is not defined previously.
This fixes PR5055.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82968 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0e6b590b91fcf6d49d2c25196f5053ce285e17f5 28-Sep-2009 Evan Cheng <evan.cheng@apple.com> Coalescer should not delete extract_subreg, insert_subreg, and subreg_to_reg of
physical registers. This is especially critical for the later two since they
start the live interval of a super-register. e.g.
%DO<def> = INSERT_SUBREG %D0<undef>, %S0<kill>, 1
If this instruction is eliminated, the register scavenger will not be happy as
D0 is not defined previously.
This fixes PR5055.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82968 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
4c2770bd33b6ce5587a1226d52a77a2ad5a3f345 27-Sep-2009 Tilmann Scheller <tilmann.scheller@googlemail.com> Use explicit structs instead of std::pair to map callee saved regs to spill slots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82909 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
8ff95de83cbe85d939535d2f4fb5f9b2b721081a 27-Sep-2009 Tilmann Scheller <tilmann.scheller@googlemail.com> Use explicit structs instead of std::pair to map callee saved regs to spill slots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82909 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
2221f5657297e8c645617e7304d360aceda1b409 26-Sep-2009 Dan Gohman <gohman@apple.com> Convert comparisons like (x == infinity) to (x >= infinity) on targets
where FCMP_OEQ is not legal and FCMP_OGE is, such as x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82861 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
11eab02b770086c119a18aae0fe214fbe5eed0d0 26-Sep-2009 Dan Gohman <gohman@apple.com> Convert comparisons like (x == infinity) to (x >= infinity) on targets
where FCMP_OEQ is not legal and FCMP_OGE is, such as x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82861 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7da0592edfecaac630500ce491f7e339d416be60 26-Sep-2009 Dan Gohman <gohman@apple.com> Don't hoist or sink instructions with physreg uses if the physreg is
allocatable. Even if it doesn't appear to have any defs, it may latter
on after register allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82834 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
achineSink.cpp
45094e34bcbb133aa0bbe55710e25369df0e02ed 26-Sep-2009 Dan Gohman <gohman@apple.com> Don't hoist or sink instructions with physreg uses if the physreg is
allocatable. Even if it doesn't appear to have any defs, it may latter
on after register allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82834 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
achineSink.cpp
13b1ad6276483958045c11cb589586e0fb0959ed 26-Sep-2009 Dan Gohman <gohman@apple.com> Unbreak MachineLICM for instructions that reference RIP on x86-64 too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82825 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
a8fb336c2e7b8beb00d96a0992c41d38f0310a8f 26-Sep-2009 Dan Gohman <gohman@apple.com> Unbreak MachineLICM for instructions that reference RIP on x86-64 too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82825 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
232e4448242ec67d6a7b48906002ab7c3f7af96c 26-Sep-2009 Dan Gohman <gohman@apple.com> Move MachineMemOperand::getAlignment out of line, to avoid needing
MathExtras.h in MachineMemOperand.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82822 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
4b2ebc19288491cb068f268c311d9fef0ec6a29f 26-Sep-2009 Dan Gohman <gohman@apple.com> Move MachineMemOperand::getAlignment out of line, to avoid needing
MathExtras.h in MachineMemOperand.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82822 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
75b79e54a4fd0ea94c2bc91ab7ac3c6248d1af5c 26-Sep-2009 Daniel Dunbar <daniel@zuster.org> Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82821 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
295a8089cd76079d3e2798c6a44ee249852cab12 26-Sep-2009 Daniel Dunbar <daniel@zuster.org> Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82821 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5dedd5c716f4c2741afd8ac264d5e4e09adbcf1b 26-Sep-2009 Dan Gohman <gohman@apple.com> Fix MachineSink to be able to sink instructions that use physical registers
which have no defs anywhere in the function. In particular, this fixes sinking
of instructions that reference RIP on x86-64, which is currently being modeled
as a register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82815 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
19778e7558bc161b87920c5be9cc01bb84a08de2 26-Sep-2009 Dan Gohman <gohman@apple.com> Fix MachineSink to be able to sink instructions that use physical registers
which have no defs anywhere in the function. In particular, this fixes sinking
of instructions that reference RIP on x86-64, which is currently being modeled
as a register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82815 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
04abe740fc7391473a417d498535eed8fd834a4b 26-Sep-2009 Dan Gohman <gohman@apple.com> Simplify a few more uses of reg_iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82812 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineRegisterInfo.cpp
egAllocLinearScan.cpp
2bf0649e053d1589689d2e4cf32c7bf1e5e6ae12 26-Sep-2009 Dan Gohman <gohman@apple.com> Simplify a few more uses of reg_iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82812 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineRegisterInfo.cpp
egAllocLinearScan.cpp
282a4ab6f595a493b5fe6cdd36ff9673454e1f16 26-Sep-2009 Dan Gohman <gohman@apple.com> Simplify this code by using use_iterator instead of reg_iterator
and skipping the defs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82811 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
29438d13e036cb454b2089b8e175fc93f62bbba2 26-Sep-2009 Dan Gohman <gohman@apple.com> Simplify this code by using use_iterator instead of reg_iterator
and skipping the defs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82811 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
c9122db8146cea80861ecaac6566ae8f75ed2497 25-Sep-2009 Evan Cheng <evan.cheng@apple.com> Flip -disable-post-RA-scheduler to -post-RA-scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82803 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
483011018efec3972fb2b003d6e8b6a095e4d9e5 25-Sep-2009 Evan Cheng <evan.cheng@apple.com> Flip -disable-post-RA-scheduler to -post-RA-scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82803 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
4e3bb1bc735783b73f2dcca82c86b7faca1a87e8 25-Sep-2009 Dan Gohman <gohman@apple.com> Improve MachineMemOperand handling.
- Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
This eliminates MachineInstr's std::list member and allows the data to be
created by isel and live for the remainder of codegen, avoiding a lot of
copying and unnecessary translation. This also shrinks MemSDNode.
- Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
fields for MachineMemOperands.
- Change MemSDNode to have a MachineMemOperand member instead of its own
fields with the same information. This introduces some redundancy, but
it's more consistent with what MachineInstr will eventually want.
- Ignore alignment when searching for redundant loads for CSE, but remember
the greatest alignment.

Target-specific code which previously used MemOperandSDNodes with generic
SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
so that the SelectionDAG framework knows that MachineMemOperand information
is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82794 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineFunction.cpp
achineInstr.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAG.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
c76909abfec876c6b751d693ebd3df07df686aa0 25-Sep-2009 Dan Gohman <gohman@apple.com> Improve MachineMemOperand handling.
- Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
This eliminates MachineInstr's std::list member and allows the data to be
created by isel and live for the remainder of codegen, avoiding a lot of
copying and unnecessary translation. This also shrinks MemSDNode.
- Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
fields for MachineMemOperands.
- Change MemSDNode to have a MachineMemOperand member instead of its own
fields with the same information. This introduces some redundancy, but
it's more consistent with what MachineInstr will eventually want.
- Ignore alignment when searching for redundant loads for CSE, but remember
the greatest alignment.

Target-specific code which previously used MemOperandSDNodes with generic
SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
so that the SelectionDAG framework knows that MachineMemOperand information
is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82794 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineFunction.cpp
achineInstr.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAG.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
61fda0d889b3578fe435455679182c231a649aac 25-Sep-2009 Dan Gohman <gohman@apple.com> Rename getTargetNode to getMachineNode, for consistency with the
naming scheme used in SelectionDAG, where there are multiple kinds
of "target" nodes, but "machine" nodes are nodes which represent
a MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82790 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
602b0c8c17f458d2c80f2deb3c8e554d516ee316 25-Sep-2009 Dan Gohman <gohman@apple.com> Rename getTargetNode to getMachineNode, for consistency with the
naming scheme used in SelectionDAG, where there are multiple kinds
of "target" nodes, but "machine" nodes are nodes which represent
a MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82790 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bccd219ac7eb590d369f9bda03ade6467aa49e24 25-Sep-2009 Dale Johannesen <dalej@apple.com> Make sure sin, cos, sqrt calls are marked readonly
before producing FSIN, FCOS, FSQRT. If they aren't
so marked we have to assume they might set errno.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82781 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
a45bfd31de14321262dd5f5123d04fc953a79ff1 25-Sep-2009 Dale Johannesen <dalej@apple.com> Make sure sin, cos, sqrt calls are marked readonly
before producing FSIN, FCOS, FSQRT. If they aren't
so marked we have to assume they might set errno.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82781 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
8891e4478909879ca4f4e745312b542cc8aca7e6 25-Sep-2009 Dale Johannesen <dalej@apple.com> Generate FSQRT from calls to the sqrt function, which
allows appropriate backends to generate a sqrt instruction.

On x86, this isn't done at -O0 because we go through
FastISel instead. This is a behavior change from before
this series of sqrt patches started. I think this is OK
considering that compile speed is most important at -O0, but
could be convinced otherwise.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82778 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
52fb79b7f9792999b18c1230b5ababaa48df9c85 25-Sep-2009 Dale Johannesen <dalej@apple.com> Generate FSQRT from calls to the sqrt function, which
allows appropriate backends to generate a sqrt instruction.

On x86, this isn't done at -O0 because we go through
FastISel instead. This is a behavior change from before
this series of sqrt patches started. I think this is OK
considering that compile speed is most important at -O0, but
could be convinced otherwise.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82778 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
c1c8b5e19b33c8b5e52c4b516669181f18feb98e 25-Sep-2009 Bob Wilson <bob.wilson@apple.com> pr4926: ARM requires the stack pointer to be aligned, even for leaf functions.
For the AAPCS ABI, SP must always be 4-byte aligned, and at any "public
interface" it must be 8-byte aligned. For the older ARM APCS ABI, the stack
alignment is just always 4 bytes. For X86, we currently align SP at
entry to a function (e.g., to 16 bytes for Darwin), but no stack alignment
is needed at other times, such as for a leaf function.

After discussing this with Dan, I decided to go with the approach of adding
a new "TransientStackAlignment" field to TargetFrameInfo. This value
specifies the stack alignment that must be maintained even in between calls.
It defaults to 1 except for ARM, where it is 4. (Some other targets may
also want to set this if they have similar stack requirements. It's not
currently required for PPC because it sets targetHandlesStackFrameRounding
and handles the alignment in target-specific code.) The existing StackAlignment
value specifies the alignment upon entry to a function, which is how we've
been using it anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82767 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
0035f9c3b9982eeef098b608fceb7572df969b3e 25-Sep-2009 Bob Wilson <bob.wilson@apple.com> pr4926: ARM requires the stack pointer to be aligned, even for leaf functions.
For the AAPCS ABI, SP must always be 4-byte aligned, and at any "public
interface" it must be 8-byte aligned. For the older ARM APCS ABI, the stack
alignment is just always 4 bytes. For X86, we currently align SP at
entry to a function (e.g., to 16 bytes for Darwin), but no stack alignment
is needed at other times, such as for a leaf function.

After discussing this with Dan, I decided to go with the approach of adding
a new "TransientStackAlignment" field to TargetFrameInfo. This value
specifies the stack alignment that must be maintained even in between calls.
It defaults to 1 except for ARM, where it is 4. (Some other targets may
also want to set this if they have similar stack requirements. It's not
currently required for PPC because it sets targetHandlesStackFrameRounding
and handles the alignment in target-specific code.) The existing StackAlignment
value specifies the alignment upon entry to a function, which is how we've
been using it anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82767 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
aec69ee8287d0ac26b45fb20240af79e5497ef01 25-Sep-2009 Nate Begeman <natebegeman@mac.com> Fix combiner-aa issue with bases which are different, but can alias.
Previously, it treated GV+28 GV+0 as different bases, and assumed they could
not alias.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82753 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cc66cdd79c7500e8184a837418debdfae4407b5f 25-Sep-2009 Nate Begeman <natebegeman@mac.com> Fix combiner-aa issue with bases which are different, but can alias.
Previously, it treated GV+28 GV+0 as different bases, and assumed they could
not alias.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82753 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
594bb86a065af025a8fd90ef486d9f54fb869f95 25-Sep-2009 Dan Gohman <gohman@apple.com> Add a version of dumpr() that has a SelectionDAG* argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8fc13cb4f7a2997f993ffdfe6e488046ec6c834e 25-Sep-2009 Dan Gohman <gohman@apple.com> Add a version of dumpr() that has a SelectionDAG* argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
abd0e3ddaf34e1589bae68eecb9fcfb7f14ac297 25-Sep-2009 Jim Grosbach <grosbach@apple.com> Start of revamping the register scavenging in PEI. ARM Thumb1 is the driving
interest for this, as it currently reserves a register rather than using
the scavenger for matierializing constants as needed.

Instead of scavenging registers on the fly while eliminating frame indices,
new virtual registers are created, and then a scavenged collectively in a
post-pass over the function. This isolates the bits that need to interact
with the scavenger, and sets the stage for more intelligent use, and reuse,
of scavenged registers.

For the time being, this is disabled by default. Once the bugs are worked out,
the current scavenging calls in replaceFrameIndices() will be removed and
the post-pass scavenging will be the default. Until then,
-enable-frame-index-scavenging enables the new code. Currently, only the
Thumb1 back end is set up to use it.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82734 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
3d6cb88a64fe67064de206405951eb326d86fc0c 25-Sep-2009 Jim Grosbach <grosbach@apple.com> Start of revamping the register scavenging in PEI. ARM Thumb1 is the driving
interest for this, as it currently reserves a register rather than using
the scavenger for matierializing constants as needed.

Instead of scavenging registers on the fly while eliminating frame indices,
new virtual registers are created, and then a scavenged collectively in a
post-pass over the function. This isolates the bits that need to interact
with the scavenger, and sets the stage for more intelligent use, and reuse,
of scavenged registers.

For the time being, this is disabled by default. Once the bugs are worked out,
the current scavenging calls in replaceFrameIndices() will be removed and
the post-pass scavenging will be the default. Until then,
-enable-frame-index-scavenging enables the new code. Currently, only the
Thumb1 back end is set up to use it.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82734 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
2fd84e281e90d309c22639a7ba9585871050e777 25-Sep-2009 Mike Stump <mrs@apple.com> Delete space after function name, before (, reflow a comment and
delete a few blank lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82729 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
7e3720da38834a192da2257fc4cb0829db7c1b40 25-Sep-2009 Mike Stump <mrs@apple.com> Delete space after function name, before (, reflow a comment and
delete a few blank lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82729 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
cf991836d66fafd16a28b20a04bbff143c99e700 25-Sep-2009 Mike Stump <mrs@apple.com> Fix spacing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82727 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ee4b8a7781b3398be82851cec9f098ebda7b5c2f 25-Sep-2009 Mike Stump <mrs@apple.com> Fix spacing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82727 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
ed17499ee7446c5da5638f6c4c34eea660808a3d 24-Sep-2009 David Goodwin <david_goodwin@apple.com> Make the end-of-itinerary mark explicit. Some cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82709 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
1f528956921561f277a8c697e0202ac1e9a9c1d5 24-Sep-2009 David Goodwin <david_goodwin@apple.com> Make the end-of-itinerary mark explicit. Some cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82709 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
92244901c3c0101b8114ffa52c1dcf0e9cda72a1 24-Sep-2009 Bob Wilson <bob.wilson@apple.com> Fix a hypothetical problem for targets with StackGrowsUp and a non-zero
LocalAreaOffset. (We don't have any of those right now.)
PEI::calculateFrameObjectOffsets includes the absolute value of the
LocalAreaOffset in the cumulative offset value used to calculate the
stack frame size. It then adds the raw value of the LocalAreaOffset
to the stack size. For a StackGrowsDown target, that raw value is negative
and has the effect of cancelling out the absolute value that was added
earlier, but that obviously won't work for a StackGrowsUp target. Change
to subtract the absolute value of the LocalAreaOffset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82693 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c34666ee1871d47dfa4865c7138902dd1b770101 24-Sep-2009 Bob Wilson <bob.wilson@apple.com> Fix a hypothetical problem for targets with StackGrowsUp and a non-zero
LocalAreaOffset. (We don't have any of those right now.)
PEI::calculateFrameObjectOffsets includes the absolute value of the
LocalAreaOffset in the cumulative offset value used to calculate the
stack frame size. It then adds the raw value of the LocalAreaOffset
to the stack size. For a StackGrowsDown target, that raw value is negative
and has the effect of cancelling out the absolute value that was added
earlier, but that obviously won't work for a StackGrowsUp target. Change
to subtract the absolute value of the LocalAreaOffset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82693 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c73e8ebf88f2c21b857296951b4babc6bd404426 24-Sep-2009 Chris Lattner <sabre@nondot.org> unconditionally compute MMI even if the target doesn't support EH or Debug info, because the target may use it for other things, this fixes PR5036


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b55e068e53fccc609b7d9cd198ed9818c188a196 24-Sep-2009 Chris Lattner <sabre@nondot.org> unconditionally compute MMI even if the target doesn't support EH or Debug info, because the target may use it for other things, this fixes PR5036


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f33cdc3f423b26e209fd058d50acea55966adb00 24-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5024 with a big hammer: disable the double-def assertion in the scavenger.

LiveVariables add implicit kills to correctly track partial register kills. This works well enough and is fairly accurate. But coalescer can make it impossible to maintain these markers. e.g.

BL <ga:sss1>, %R0<kill,undef>, %S0<kill>, %R0<imp-def>, %R1<imp-def,dead>, %R2<imp-def,dead>, %R3<imp-def,dead>, %R12<imp-def,dead>, %LR<imp-def,dead>, %D0<imp-def>, ...
...
%reg1031<def> = FLDS <cp#1>, 0, 14, %reg0, Mem:LD4[ConstantPool]
...
%S0<def> = FCPYS %reg1031<kill>, 14, %reg0, %D0<imp-use,kill>

When reg1031 and S0 are coalesced, the copy (FCPYS) will be eliminated the the implicit-kill of D0 is lost. In this case it's possible to move the marker to the FLDS. But in many cases, this is not possible. Suppose

%reg1031<def> = FOO <cp#1>, %D0<imp-def>
...
%S0<def> = FCPYS %reg1031<kill>, 14, %reg0, %D0<imp-use,kill>

When FCPYS goes away, the definition of S0 is the "FOO" instruction. However, transferring the D0 implicit-kill to FOO doesn't work since it is the def of D0 itself. We need to fix this in another time by introducing a "kill" pseudo instruction to track liveness.

Disabling the assertion is not ideal, but machine verifier is doing that job now. It's important to know double-def is not a miscomputation since it means a register should be free but it's not tracked as free. It's a performance issue instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82677 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
393e277ecd02f52443633f6bfacdd1d4c6981212 24-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5024 with a big hammer: disable the double-def assertion in the scavenger.

LiveVariables add implicit kills to correctly track partial register kills. This works well enough and is fairly accurate. But coalescer can make it impossible to maintain these markers. e.g.

BL <ga:sss1>, %R0<kill,undef>, %S0<kill>, %R0<imp-def>, %R1<imp-def,dead>, %R2<imp-def,dead>, %R3<imp-def,dead>, %R12<imp-def,dead>, %LR<imp-def,dead>, %D0<imp-def>, ...
...
%reg1031<def> = FLDS <cp#1>, 0, 14, %reg0, Mem:LD4[ConstantPool]
...
%S0<def> = FCPYS %reg1031<kill>, 14, %reg0, %D0<imp-use,kill>

When reg1031 and S0 are coalesced, the copy (FCPYS) will be eliminated the the implicit-kill of D0 is lost. In this case it's possible to move the marker to the FLDS. But in many cases, this is not possible. Suppose

%reg1031<def> = FOO <cp#1>, %D0<imp-def>
...
%S0<def> = FCPYS %reg1031<kill>, 14, %reg0, %D0<imp-use,kill>

When FCPYS goes away, the definition of S0 is the "FOO" instruction. However, transferring the D0 implicit-kill to FOO doesn't work since it is the def of D0 itself. We need to fix this in another time by introducing a "kill" pseudo instruction to track liveness.

Disabling the assertion is not ideal, but machine verifier is doing that job now. It's important to know double-def is not a miscomputation since it means a register should be free but it's not tracked as free. It's a performance issue instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82677 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
04f3d1de138c7ebffc1d37a273e5a8675b6a933d 24-Sep-2009 Evan Cheng <evan.cheng@apple.com> Clean up LiveVariables and change how it deals with partial updates and kills. This also eliminate the horrible check which scan forward to the end of the basic block. It should be faster and more accurate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82676 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
impleRegisterCoalescing.cpp
ad934b821c78d39e73a213c62cd57288f8605a0c 24-Sep-2009 Evan Cheng <evan.cheng@apple.com> Clean up LiveVariables and change how it deals with partial updates and kills. This also eliminate the horrible check which scan forward to the end of the basic block. It should be faster and more accurate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82676 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
impleRegisterCoalescing.cpp
ad4880332c61c808014c202255dce5f8fafe581e 23-Sep-2009 Dan Gohman <gohman@apple.com> Use getStoreSize() instead of getStoreSizeInBits()/8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82656 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
4e918b2c8ca81edd63f6708e08835b2c14648615 23-Sep-2009 Dan Gohman <gohman@apple.com> Use getStoreSize() instead of getStoreSizeInBits()/8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82656 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
3bab1f776cf32aadd62d490f54cec968ef38eec7 23-Sep-2009 Dan Gohman <gohman@apple.com> Rename several variables from EVT to more descriptive names, now that EVT
is also the name of their type, as declarations like "EVT EVT" look
really odd.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82654 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
8a55ce4a392f07ac1f3c183100ac591b7ad7c693 23-Sep-2009 Dan Gohman <gohman@apple.com> Rename several variables from EVT to more descriptive names, now that EVT
is also the name of their type, as declarations like "EVT EVT" look
really odd.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82654 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
ef0853ae5ef4ef4dac82362ecb914ad2b3df1ae0 23-Sep-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix verification of explicit operands.

The machine code verifier did not check for explicit operands correctly. It
used MachineInstr::getNumExplicitOperands, but that method may cheat and use
the declared count in the TargetInstrDesc.

Now we check the explicit operands one at a time in visitMachineOperand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82652 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
39523e2cfb625d90aa122252b041e2311a9a8ca5 23-Sep-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix verification of explicit operands.

The machine code verifier did not check for explicit operands correctly. It
used MachineInstr::getNumExplicitOperands, but that method may cheat and use
the declared count in the TargetInstrDesc.

Now we check the explicit operands one at a time in visitMachineOperand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82652 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
a9b57edff7a7dbf11ba9fe787349d21f7e3e80f6 23-Sep-2009 Bob Wilson <bob.wilson@apple.com> Edit a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82641 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
94188d4e67cf1c570ad87dbabf198931033d628e 23-Sep-2009 Bob Wilson <bob.wilson@apple.com> Edit a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82641 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
83b6ace01ffb5d8d495a4b70c7406d06f0dd2067 23-Sep-2009 David Goodwin <david_goodwin@apple.com> Fix bug in kill flag updating for post-register-allocation scheduling. When the kill flag of a superreg needs to be cleared because there are one or more subregs live, we instead add implicit-defs of those subregs and leave the kill flag on the superreg. This allows us to end the live-range of the superreg without ending the live-ranges of the subregs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82629 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
8f909345bcabd0cbcb99d01d23f1d77b8b1518ec 23-Sep-2009 David Goodwin <david_goodwin@apple.com> Fix bug in kill flag updating for post-register-allocation scheduling. When the kill flag of a superreg needs to be cleared because there are one or more subregs live, we instead add implicit-defs of those subregs and leave the kill flag on the superreg. This allows us to end the live-range of the superreg without ending the live-ranges of the subregs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82629 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
d062bf740651c35ed3ee80b66b02d8363fd14a3a 23-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5024. LiveVariables physical register defs should *commit* only after all
of the defs are processed.
Also fix a implicit_def propagation bug: a implicit_def of a physical register
should be applied to uses of the sub-registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82616 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
296925dc169b45e7535abdccc8dc143a8bec7f0a 23-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5024. LiveVariables physical register defs should *commit* only after all
of the defs are processed.
Also fix a implicit_def propagation bug: a implicit_def of a physical register
should be applied to uses of the sub-registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82616 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
29a1c10040effaa8c0968a3899b053b6b591a73a 23-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix a obvious logic error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82610 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f7cd853071a02392d17ac544f69c14481e5400d0 23-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix a obvious logic error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82610 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
915d872b7a05774ea93ba7fbb25f0944d62e10fb 23-Sep-2009 Dan Gohman <gohman@apple.com> Give MachineMemOperand an operator<<, factoring out code from
two different places for printing MachineMemOperands.

Drop the virtual from Value::dump and instead give Value a
protected virtual hook that can be overridden by subclasses
to implement custom printing. This lets printing be more
consistent, and simplifies printing of PseudoSourceValue
values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82599 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
seudoSourceValue.cpp
electionDAG/SelectionDAG.cpp
cd26ec5f3c089b3b24f80ff200e94e681eb9e1ee 23-Sep-2009 Dan Gohman <gohman@apple.com> Give MachineMemOperand an operator<<, factoring out code from
two different places for printing MachineMemOperands.

Drop the virtual from Value::dump and instead give Value a
protected virtual hook that can be overridden by subclasses
to implement custom printing. This lets printing be more
consistent, and simplifies printing of PseudoSourceValue
values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82599 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
seudoSourceValue.cpp
electionDAG/SelectionDAG.cpp
069f1c9642c471d827cfaaca98f31aef707464ee 23-Sep-2009 Mike Stump <mrs@apple.com> This is overly constraining with respect to clang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82591 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d75e9aad24723cf816d3b3cf658bbd23da144f90 23-Sep-2009 Mike Stump <mrs@apple.com> This is overly constraining with respect to clang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82591 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
cc74792c99e085a14bdd6db9edea362b465406da 22-Sep-2009 David Goodwin <david_goodwin@apple.com> Use early returns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82554 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
047ae2f2ad2161d37996c26a5e5ac2b79f09eee5 22-Sep-2009 David Goodwin <david_goodwin@apple.com> Use early returns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82554 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
cd216d523e696749d681faca9f3bda92b13cd695 22-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5024. LiveVariables::FindLastPartialDef should return a set of sub-registers that were defined by the last partial def, not just a single sub-register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82535 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
60c7df2c9311fc35ab02f1600419e91d55d5b133 22-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5024. LiveVariables::FindLastPartialDef should return a set of sub-registers that were defined by the last partial def, not just a single sub-register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82535 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
b6d716f620ad28e540c2a262504ebaeff6461b3f 22-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix a pasto. Also simplify for Bill's benefit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82505 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
014d624a2864605b10d3b14fd9cda3163c41f6bf 22-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix a pasto. Also simplify for Bill's benefit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82505 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
eb21e377d210da64284a7e52ca694e0f42b5062d 22-Sep-2009 Evan Cheng <evan.cheng@apple.com> Minor bug fix. LowerSubregs should translate
%S0<def> = EXTRACT_SUBREG %Q0<kill>, 1
to
%S0<def> = IMPLICIT_DEF %Q0<imp-use,kill>

Implicit_def does not *read* any register so the operand should be marked "implicit". The missing "implicit" marker on the operand is wrong, but it doesn't actually break anything.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82503 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
1c17c1bc54335564e86bdb7c5e87383feddbc729 22-Sep-2009 Evan Cheng <evan.cheng@apple.com> Minor bug fix. LowerSubregs should translate
%S0<def> = EXTRACT_SUBREG %Q0<kill>, 1
to
%S0<def> = IMPLICIT_DEF %Q0<imp-use,kill>

Implicit_def does not *read* any register so the operand should be marked "implicit". The missing "implicit" marker on the operand is wrong, but it doesn't actually break anything.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82503 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
b9bbb5795a133c6cca6a5ac4e5ab110016d4e7c1 21-Sep-2009 Evan Cheng <evan.cheng@apple.com> Clean up spill weight computation. Also some changes to give loop induction
variable increment / decrement slighter high priority.

This has major impact on some micro-benchmarks. On MultiSource/Applications
and spec tests, it's a minor win. It also reduce 256.bzip instruction count
by 8%, 55 on 164.gzip on i386 / Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82485 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
cf985a95454c935d8662ef5200c79ca0553b3da7 21-Sep-2009 Evan Cheng <evan.cheng@apple.com> Clean up spill weight computation. Also some changes to give loop induction
variable increment / decrement slighter high priority.

This has major impact on some micro-benchmarks. On MultiSource/Applications
and spec tests, it's a minor win. It also reduce 256.bzip instruction count
by 8%, 55 on 164.gzip on i386 / Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82485 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
169948d4180417313f5332b85d2572520592de3c 21-Sep-2009 Dan Gohman <gohman@apple.com> Change MachineMemOperand's alignment value to be the alignment of
the base pointer, without the offset. This matches MemSDNode's
new alignment behavior, and holds more interesting information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82473 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/SelectionDAG.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
28f02fdd76f4efc05d14649e0eec90ce8e71e17e 21-Sep-2009 Dan Gohman <gohman@apple.com> Change MachineMemOperand's alignment value to be the alignment of
the base pointer, without the offset. This matches MemSDNode's
new alignment behavior, and holds more interesting information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82473 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/SelectionDAG.cpp
tackSlotColoring.cpp
argetInstrInfoImpl.cpp
30a8d480ddd031f85b3386db7ccfe11e027b525c 21-Sep-2009 Dan Gohman <gohman@apple.com> Fix this assertion string to mention subreg_to_reg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82455 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
a079ff38052729cb9e22eb71bce7b402d079d42c 21-Sep-2009 Dan Gohman <gohman@apple.com> Fix this assertion string to mention subreg_to_reg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82455 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
8314a42c92bd21ecfa700da8cbe60b6818caba33 21-Sep-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that phi instructions refer to MBBs in the CFG.

The machine code verifier no longer tolerates phi instructions with noop
operands. All MBBs on a phi instruction must be in the CFG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82448 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
a5ba07c3d14ffdf288af2513d4ab39464fb7e20d 21-Sep-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that phi instructions refer to MBBs in the CFG.

The machine code verifier no longer tolerates phi instructions with noop
operands. All MBBs on a phi instruction must be in the CFG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82448 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
a32393f6bbe778ea5f6960bc67c34176ce769198 21-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4986. "r1024 = insert_subreg r1024, undef, 2" cannot be turned in an implicit_def. Instead, it's an identity copy so it should be eliminated. Also make sure to update livevariable kill information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82436 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b0f5973bee566269f41d1cc21b7a1d3bede1d837 21-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4986. "r1024 = insert_subreg r1024, undef, 2" cannot be turned in an implicit_def. Instead, it's an identity copy so it should be eliminated. Also make sure to update livevariable kill information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82436 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
738b4f2a7d37600af45fc6a5515d5a5be175d19e 21-Sep-2009 Reid Kleckner <reid@kleckner.net> Implement the JIT side of the GDB JIT debugging interface. To enable this
feature, either build the JIT in debug mode to enable it by default or pass
-jit-emit-debug to lli.

Right now, the only debug information that this communicates to GDB is call
frame information, since it's already being generated to support exceptions in
the JIT. Eventually, when DWARF generation isn't tied so tightly to AsmPrinter,
it will be easy to push that information to GDB through this interface.

Here's a step-by-step breakdown of how the feature works:

- The JIT generates the machine code and DWARF call frame info
(.eh_frame/.debug_frame) for a function into memory.
- The JIT copies that info into an in-memory ELF file with a symbol for the
function.
- The JIT creates a code entry pointing to the ELF buffer and adds it to a
linked list hanging off of a global descriptor at a special symbol that GDB
knows about.
- The JIT calls a function marked noinline that GDB knows about and has put an
internal breakpoint in.
- GDB catches the breakpoint and reads the global descriptor to look for new
code.
- When sees there is new code, it reads the ELF from the inferior's memory and
adds it to itself as an object file.
- The JIT continues, and the next time we stop the program, we are able to
produce a proper backtrace.

Consider running the following program through the JIT:

#include <stdio.h>
void baz(short z) {
long w = z + 1;
printf("%d, %x\n", w, *((int*)NULL)); // SEGFAULT here
}
void bar(short y) {
int z = y + 1;
baz(z);
}
void foo(char x) {
short y = x + 1;
bar(y);
}
int main(int argc, char** argv) {
char x = 1;
foo(x);
}

Here is a backtrace before this patch:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x2aaaabdfbd10 (LWP 25476)]
0x00002aaaabe7d1a8 in ?? ()
(gdb) bt
#0 0x00002aaaabe7d1a8 in ?? ()
#1 0x0000000000000003 in ?? ()
#2 0x0000000000000004 in ?? ()
#3 0x00032aaaabe7cfd0 in ?? ()
#4 0x00002aaaabe7d12c in ?? ()
#5 0x00022aaa00000003 in ?? ()
#6 0x00002aaaabe7d0aa in ?? ()
#7 0x01000002abe7cff0 in ?? ()
#8 0x00002aaaabe7d02c in ?? ()
#9 0x0100000000000001 in ?? ()
#10 0x00000000014388e0 in ?? ()
#11 0x00007fff00000001 in ?? ()
#12 0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70,
F=0x14024e0, ArgValues=@0x7fffffffe050)
at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395
#13 0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain
(this=0x1405b70, Fn=0x14024e0, argv=@0x13f06f8, envp=0x7fffffffe3b0)
at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377
#14 0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe398,
envp=0x7fffffffe3b0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208

And a backtrace after this patch:
Program received signal SIGSEGV, Segmentation fault.
0x00002aaaabe7d1a8 in baz ()
(gdb) bt
#0 0x00002aaaabe7d1a8 in baz ()
#1 0x00002aaaabe7d12c in bar ()
#2 0x00002aaaabe7d0aa in foo ()
#3 0x00002aaaabe7d02c in main ()
#4 0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70,
F=0x14024e0, ArgValues=...)
at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395
#5 0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain
(this=0x1405b70, Fn=0x14024e0, argv=..., envp=0x7fffffffe3c0)
at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377
#6 0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe3a8,
envp=0x7fffffffe3c0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82418 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.h
2763217fbd2f1c54a7a25fd3ae9e997ea6ece0cb 21-Sep-2009 Reid Kleckner <reid@kleckner.net> Implement the JIT side of the GDB JIT debugging interface. To enable this
feature, either build the JIT in debug mode to enable it by default or pass
-jit-emit-debug to lli.

Right now, the only debug information that this communicates to GDB is call
frame information, since it's already being generated to support exceptions in
the JIT. Eventually, when DWARF generation isn't tied so tightly to AsmPrinter,
it will be easy to push that information to GDB through this interface.

Here's a step-by-step breakdown of how the feature works:

- The JIT generates the machine code and DWARF call frame info
(.eh_frame/.debug_frame) for a function into memory.
- The JIT copies that info into an in-memory ELF file with a symbol for the
function.
- The JIT creates a code entry pointing to the ELF buffer and adds it to a
linked list hanging off of a global descriptor at a special symbol that GDB
knows about.
- The JIT calls a function marked noinline that GDB knows about and has put an
internal breakpoint in.
- GDB catches the breakpoint and reads the global descriptor to look for new
code.
- When sees there is new code, it reads the ELF from the inferior's memory and
adds it to itself as an object file.
- The JIT continues, and the next time we stop the program, we are able to
produce a proper backtrace.

Consider running the following program through the JIT:

#include <stdio.h>
void baz(short z) {
long w = z + 1;
printf("%d, %x\n", w, *((int*)NULL)); // SEGFAULT here
}
void bar(short y) {
int z = y + 1;
baz(z);
}
void foo(char x) {
short y = x + 1;
bar(y);
}
int main(int argc, char** argv) {
char x = 1;
foo(x);
}

Here is a backtrace before this patch:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x2aaaabdfbd10 (LWP 25476)]
0x00002aaaabe7d1a8 in ?? ()
(gdb) bt
#0 0x00002aaaabe7d1a8 in ?? ()
#1 0x0000000000000003 in ?? ()
#2 0x0000000000000004 in ?? ()
#3 0x00032aaaabe7cfd0 in ?? ()
#4 0x00002aaaabe7d12c in ?? ()
#5 0x00022aaa00000003 in ?? ()
#6 0x00002aaaabe7d0aa in ?? ()
#7 0x01000002abe7cff0 in ?? ()
#8 0x00002aaaabe7d02c in ?? ()
#9 0x0100000000000001 in ?? ()
#10 0x00000000014388e0 in ?? ()
#11 0x00007fff00000001 in ?? ()
#12 0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70,
F=0x14024e0, ArgValues=@0x7fffffffe050)
at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395
#13 0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain
(this=0x1405b70, Fn=0x14024e0, argv=@0x13f06f8, envp=0x7fffffffe3b0)
at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377
#14 0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe398,
envp=0x7fffffffe3b0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208

And a backtrace after this patch:
Program received signal SIGSEGV, Segmentation fault.
0x00002aaaabe7d1a8 in baz ()
(gdb) bt
#0 0x00002aaaabe7d1a8 in baz ()
#1 0x00002aaaabe7d12c in bar ()
#2 0x00002aaaabe7d0aa in foo ()
#3 0x00002aaaabe7d02c in main ()
#4 0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70,
F=0x14024e0, ArgValues=...)
at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395
#5 0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain
(this=0x1405b70, Fn=0x14024e0, argv=..., envp=0x7fffffffe3c0)
at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377
#6 0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe3a8,
envp=0x7fffffffe3c0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82418 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.h
9c220f60be3a50de7fd2a5c491ccfa63c5d3a342 20-Sep-2009 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82397 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7453f8a68f506837d332056733c14001b828d6e1 20-Sep-2009 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82397 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
dac97dab11fffaae623be1d4bd2a0c2e249a5c54 20-Sep-2009 Bill Wendling <isanbard@gmail.com> --- Reverse-merging r82282 into '.':
U lib/CodeGen/AsmPrinter/DwarfException.cpp
U lib/CodeGen/AsmPrinter/DwarfException.h

--- Reverse-merging r82274 into '.':
U lib/Target/TargetLoweringObjectFile.cpp
G lib/CodeGen/AsmPrinter/DwarfException.cpp

These revisions were breaking everything.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82396 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
711bb91574db242ba34a86caea719819b0ecef43 20-Sep-2009 Bill Wendling <isanbard@gmail.com> --- Reverse-merging r82282 into '.':
U lib/CodeGen/AsmPrinter/DwarfException.cpp
U lib/CodeGen/AsmPrinter/DwarfException.h

--- Reverse-merging r82274 into '.':
U lib/Target/TargetLoweringObjectFile.cpp
G lib/CodeGen/AsmPrinter/DwarfException.cpp

These revisions were breaking everything.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82396 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
3be44e69724c80460d2ef5abab22d802f78615cc 20-Sep-2009 Daniel Dunbar <daniel@zuster.org> Tabs -> spaces, and remove trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82355 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
egAllocPBQP.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
a279bc3da55691784064cb47200a1c584408b8ab 20-Sep-2009 Daniel Dunbar <daniel@zuster.org> Tabs -> spaces, and remove trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82355 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
egAllocPBQP.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
ab2f66670c4c8ecc8e62d989f9d9d9c6f62dc07b 20-Sep-2009 Bill Wendling <isanbard@gmail.com> Here's fun! It turns out that these filter functions can be internal. If they're
internal, they shouldn't use the indirect pointer stuff. In the case of
throw_rethrow_test, it was marked as 'internal' and calculated its own offset to
its contents.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82354 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
5511ffd763c6de8264de7bdf318564fee2bbfc99 20-Sep-2009 Bill Wendling <isanbard@gmail.com> Here's fun! It turns out that these filter functions can be internal. If they're
internal, they shouldn't use the indirect pointer stuff. In the case of
throw_rethrow_test, it was marked as 'internal' and calculated its own offset to
its contents.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82354 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
13c4b63b5151f9f9c434341c2ea43f4f34c2243b 20-Sep-2009 Dale Johannesen <dalej@apple.com> When computing live intervals for earlyclobber operands,
we pushed the beginning of the interval back 1, so the
interval would overlap with inputs that die. We were
also pushing the end of the interval back 1, though,
which means the earlyclobber didn't overlap with other
output operands. Don't do this. PR 4964.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82342 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
39faac2531268b8555475796c6071556670dc290 20-Sep-2009 Dale Johannesen <dalej@apple.com> When computing live intervals for earlyclobber operands,
we pushed the beginning of the interval back 1, so the
interval would overlap with inputs that die. We were
also pushing the end of the interval back 1, though,
which means the earlyclobber didn't overlap with other
output operands. Don't do this. PR 4964.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82342 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
19f1d447f73de5807acb64281df5d7acaa23ceeb 19-Sep-2009 Daniel Dunbar <daniel@zuster.org> Fix indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82333 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
00564995496df04c76fc0e4e57b77372d0fe86d5 19-Sep-2009 Daniel Dunbar <daniel@zuster.org> Fix indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82333 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
41716328c597656692f2189f47c7cc56120d2aa5 19-Sep-2009 Daniel Dunbar <daniel@zuster.org> Strip trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82332 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f612ff6cfbf3a59842732f0280807c0714ab9025 19-Sep-2009 Daniel Dunbar <daniel@zuster.org> Strip trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82332 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9229fdb0d591d22ad962dfb97d98d12ef56b5833 19-Sep-2009 Nick Lewycky <nicholas@mxc.ca> Remove the default value for ConstantStruct::get's isPacked parameter and
update the code which was broken by this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82327 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
c332fba8285e35a5a11463c34795af84f3960759 19-Sep-2009 Nick Lewycky <nicholas@mxc.ca> Remove the default value for ConstantStruct::get's isPacked parameter and
update the code which was broken by this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82327 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
5f3a54090af5d61d35de2158542ff76fc9ef053f 19-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4926. When target hook EmitInstrWithCustomInserter() insert new basic blocks and update CFG, it should also inform sdisel of the changes so the phi source operands will come from the right basic blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ce31910eae5bd4896fa6c27798e7b26885691d3b 19-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4926. When target hook EmitInstrWithCustomInserter() insert new basic blocks and update CFG, it should also inform sdisel of the changes so the phi source operands will come from the right basic blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1d8662c4dfa69ff87d42037794cf6e6774c2c512 18-Sep-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment typo and some whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82285 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
e31e4e51a9305b623eec819ceb6b71f20b259864 18-Sep-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment typo and some whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82285 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
98c415caf6f8e0eac9b9247fb782d6718430e288 18-Sep-2009 Bill Wendling <isanbard@gmail.com> Factor out label difference creation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82282 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
f41b6e5d0624c1610d155c19c7744ef30ad1f372 18-Sep-2009 Bill Wendling <isanbard@gmail.com> Factor out label difference creation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82282 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
8c065b334c41ba54d98ad45a6c5b4fdd60c06d2c 18-Sep-2009 Bill Wendling <isanbard@gmail.com> It's inefficient to have place the exception tables (which contain the LSDA)
into the __DATA section. At launch time, dyld has to update most of the section
to fix up the type info pointers. It's better to place it into the __TEXT
section and use pc-rel indirect pointer encodings. Similar to the personality
routine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82274 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
296ab7e5445f0402d0aae3814c38f964d6f547fb 18-Sep-2009 Bill Wendling <isanbard@gmail.com> It's inefficient to have place the exception tables (which contain the LSDA)
into the __DATA section. At launch time, dyld has to update most of the section
to fix up the type info pointers. It's better to place it into the __TEXT
section and use pc-rel indirect pointer encodings. Similar to the personality
routine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82274 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
d7dc983029cf293dd67637c27b92c04c0baf968b 18-Sep-2009 Evan Cheng <evan.cheng@apple.com> Enhance EmitInstrWithCustomInserter() so target can specify CFG changes that sdisel will use to properly complete phi nodes.
Not functionality change yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82273 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
fb2e752e4175920d0531f2afc93a23d0cdf4db14 18-Sep-2009 Evan Cheng <evan.cheng@apple.com> Enhance EmitInstrWithCustomInserter() so target can specify CFG changes that sdisel will use to properly complete phi nodes.
Not functionality change yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82273 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
b611307c9730ae90448fcacfd8ee9d0d208cc3ee 18-Sep-2009 Chris Lattner <sabre@nondot.org> add a new hook to allow targets to splat stuff at the end of the file.
Overriding doFinalization is pretty lame.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82268 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
bd23d5fda85e38c88dfa668a99777cd05c524822 18-Sep-2009 Chris Lattner <sabre@nondot.org> add a new hook to allow targets to splat stuff at the end of the file.
Overriding doFinalization is pretty lame.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82268 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
600abb363005c6b5abc9385b35c37720cb2eacbf 18-Sep-2009 Chris Lattner <sabre@nondot.org> duncan points out the EH selector values are signed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82245 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
6ba2e87061bad9a24c75db69ab9b80bb6e16d96b 18-Sep-2009 Chris Lattner <sabre@nondot.org> duncan points out the EH selector values are signed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82245 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
3789f872b0ac8f9d22d99696164e04b664af90f6 18-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Allow symbols to start from the digit if target requests it. This allows, e.g. pinning
variables to specified absolute address. Make use of this feature for MSP430.
This unbreaks PR4776.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82227 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c6f729ed5519cdf398ca4039dbdbea4f81433ec0 18-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Allow symbols to start from the digit if target requests it. This allows, e.g. pinning
variables to specified absolute address. Make use of this feature for MSP430.
This unbreaks PR4776.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82227 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f3233f2b427e9abfbe1633a91e8e84e7bbb19b43 18-Sep-2009 Evan Cheng <evan.cheng@apple.com> Revert r82214. It broke 403.gcc on x86_64 / Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82215 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8be58a11868ae081c195c107cd39a07f1f523877 18-Sep-2009 Evan Cheng <evan.cheng@apple.com> Revert r82214. It broke 403.gcc on x86_64 / Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82215 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ac00d566d4070167ca5aa1cb48f83fa55b1535b9 18-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix a bug in sdisel switch lowering code. When it updates the phi nodes in switch successor blocks, it can introduce multiple phi operands of the same value from different blocks (and may not be on the predecessor list).

This can be seen on CodeGen/Generic/2006-09-06-SwitchLowering.ll. But it's not known to cause any real regression (but I have added an assertion for it now).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82214 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f8a56255a54bf60d0cfa6b20d10dad969cce9f81 18-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix a bug in sdisel switch lowering code. When it updates the phi nodes in switch successor blocks, it can introduce multiple phi operands of the same value from different blocks (and may not be on the predecessor list).

This can be seen on CodeGen/Generic/2006-09-06-SwitchLowering.ll. But it's not known to cause any real regression (but I have added an assertion for it now).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82214 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b51aa3322dc54cc149250513132c30574b2e003c 18-Sep-2009 Chris Lattner <sabre@nondot.org> tolerate llvm.eh.selector.i64 on 32-bit systems and llvm.eh.selector.i32 on
64-bit systems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
3a5815f90feb1eb791f6383acd62e6c5ed75cada 18-Sep-2009 Chris Lattner <sabre@nondot.org> tolerate llvm.eh.selector.i64 on 32-bit systems and llvm.eh.selector.i32 on
64-bit systems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ee62b0424d8c75617484b2d4a9383565044eb5aa 17-Sep-2009 Chris Lattner <sabre@nondot.org> pass machinemoduleinfo down into getSymbolForDwarfGlobalReference,
currently unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82157 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
8609c7c931c0213d6d29f665df2110cf3c709e4c 17-Sep-2009 Chris Lattner <sabre@nondot.org> pass machinemoduleinfo down into getSymbolForDwarfGlobalReference,
currently unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82157 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
47472be0fc842626bbc7103ca8c2d724c213d67e 17-Sep-2009 Jim Grosbach <grosbach@apple.com> grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82150 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f9ca50e3dce88b2f9e2f2f0cac2d3ed78afda841 17-Sep-2009 Jim Grosbach <grosbach@apple.com> grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82150 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b21f415e57b24dbb1a962ddab5fd21ebaebc7d0d 17-Sep-2009 Evan Cheng <evan.cheng@apple.com> Remove simple regalloc. It has bit rotted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82127 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
egAllocSimple.cpp
f436463dbd35ea816163a053b304d9fef9e0cf25 17-Sep-2009 Evan Cheng <evan.cheng@apple.com> Remove simple regalloc. It has bit rotted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82127 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
egAllocSimple.cpp
f7f012381f5d47bb4f8a5a4663311daee8692cbf 17-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4910: Broken logic in coalescer means when a physical register liveness is being shortened, the sub-registers were not. The symptom is the register allocator could not find a free register for this particular test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82108 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5cf732e3b143df35fe2e956c73b60685fd5f0aeb 17-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4910: Broken logic in coalescer means when a physical register liveness is being shortened, the sub-registers were not. The symptom is the register allocator could not find a free register for this particular test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82108 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
3f7aeddf89537d10eebd50196576e3ec91d066e9 16-Sep-2009 Devang Patel <dpatel@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82080 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
713f043c16220b746804f668a72f4e0344cbe4d1 16-Sep-2009 Devang Patel <dpatel@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82080 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a0fbb00ae6d27128232f1c11550b70bddb6fa76d 16-Sep-2009 Devang Patel <dpatel@apple.com> At iSel time, update DebugLoc based on debug info attached with an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82077 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
123eaa71b50f5ac2ea2233685baedddbb72f387b 16-Sep-2009 Devang Patel <dpatel@apple.com> At iSel time, update DebugLoc based on debug info attached with an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82077 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a653f3541148079687b4c8b95e2dff2e1c91ad77 16-Sep-2009 Dan Gohman <gohman@apple.com> Add a new pass for doing late hoisting of floating-point and vector
constants out of loops. These aren't covered by the regular LICM
pass, because in LLVM IR constants don't require separate
instructions. They're not always covered by the MachineLICM pass
either, because it doesn't know how to unfold folded constant-pool
loads. This is somewhat experimental at this point, and off by
default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82076 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
6f65d79750154c92c3e184c8cf3233a66c411c87 16-Sep-2009 Dan Gohman <gohman@apple.com> Add a new pass for doing late hoisting of floating-point and vector
constants out of loops. These aren't covered by the regular LICM
pass, because in LLVM IR constants don't require separate
instructions. They're not always covered by the MachineLICM pass
either, because it doesn't know how to unfold folded constant-pool
loads. This is somewhat experimental at this point, and off by
default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82076 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
9ccaf3f7c56c9f3e7e3359165f387895a1cd5ffa 16-Sep-2009 Benjamin Kramer <benny.kra@googlemail.com> Don't sort the vector when it is empty. This should fix some expensive checking
failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82040 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfoImpls.cpp
f4f1b266fd83c819ea2cf7cbd9bcd377d95c4eb6 16-Sep-2009 Benjamin Kramer <benny.kra@googlemail.com> Don't sort the vector when it is empty. This should fix some expensive checking
failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82040 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfoImpls.cpp
9f16e4059d7e325248642d3a8051d83bec4c7404 16-Sep-2009 Xerxes Ranby <xerxes@zafena.se> updated lib/CodeGen/CMakeLists.txt to unbreak cmake build after r82018


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82038 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
3314091792cad1732750434b527e173c518c72cf 16-Sep-2009 Xerxes Ranby <xerxes@zafena.se> updated lib/CodeGen/CMakeLists.txt to unbreak cmake build after r82018


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82038 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
f8a575424917e1f0e6921529c7be86d8825f7778 16-Sep-2009 Chris Lattner <sabre@nondot.org> add a new MachineModuleInfoMachO class, which is the per-module
stuff common across all macho targets.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82018 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfoImpls.cpp
686cb3df6a7c88f2c6f29b02064e6f7dc8658d3f 16-Sep-2009 Chris Lattner <sabre@nondot.org> add a new MachineModuleInfoMachO class, which is the per-module
stuff common across all macho targets.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82018 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfoImpls.cpp
16fcdf9d05d09acde6146d531067fab0bf24f822 16-Sep-2009 Chris Lattner <sabre@nondot.org> the pointer MMI keeps will start out with object-file format specific stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82012 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
f18545550e1cfbe3f47afb6a9a58405416258e3b 16-Sep-2009 Chris Lattner <sabre@nondot.org> the pointer MMI keeps will start out with object-file format specific stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82012 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
500fba8363dccdd3dd29495831e5d689ddc50c49 16-Sep-2009 Chris Lattner <sabre@nondot.org> remove the AsmPrinter::printMCInst hook hack now that
we have MCInstPrinter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82006 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4edd187ddddc38540dd020c5cadef70bc5934b1e 16-Sep-2009 Chris Lattner <sabre@nondot.org> remove the AsmPrinter::printMCInst hook hack now that
we have MCInstPrinter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82006 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8886dc29cd311a78fd1f672904fd9a3af51c883c 16-Sep-2009 Chris Lattner <sabre@nondot.org> Big change #1 for personality function references:
Eliminate the PersonalityPrefix/Suffix & NeedsIndirectEncoding
fields from MAI: they aren't part of the asm syntax, they are
related to the structure of the object file.

To replace their functionality, add a new
TLOF::getSymbolForDwarfGlobalReference method which asks targets
to decide how to reference a global from EH in a pc-relative way.

The default implementation just returns the symbol. The default
darwin implementation references the symbol through an indirect
$non_lazy_ptr stub. The bizarro x86-64 darwin specialization
handles the weird "foo@GOTPCREL+4" hack.

DwarfException.cpp now uses this to emit the reference to the
symbol in the right way, and this also eliminates another
horrible hack from DwarfException.cpp:

- if (strcmp(MAI->getPersonalitySuffix(), "+4@GOTPCREL"))
- O << "-" << MAI->getPCSymbol();



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
8c6ed05157e9c97ff8f3ccb211dd797e53228da1 16-Sep-2009 Chris Lattner <sabre@nondot.org> Big change #1 for personality function references:
Eliminate the PersonalityPrefix/Suffix & NeedsIndirectEncoding
fields from MAI: they aren't part of the asm syntax, they are
related to the structure of the object file.

To replace their functionality, add a new
TLOF::getSymbolForDwarfGlobalReference method which asks targets
to decide how to reference a global from EH in a pc-relative way.

The default implementation just returns the symbol. The default
darwin implementation references the symbol through an indirect
$non_lazy_ptr stub. The bizarro x86-64 darwin specialization
handles the weird "foo@GOTPCREL+4" hack.

DwarfException.cpp now uses this to emit the reference to the
symbol in the right way, and this also eliminates another
horrible hack from DwarfException.cpp:

- if (strcmp(MAI->getPersonalitySuffix(), "+4@GOTPCREL"))
- O << "-" << MAI->getPCSymbol();



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
57c76b5eea6a1b4202941a0c3e7d06f0a00c8485 16-Sep-2009 Chris Lattner <sabre@nondot.org> inline AsmPrinter::getCurrentFunctionEHName into its only caller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81970 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
25d812bd7d1f58f2ba1b598b1425a2e146e27381 16-Sep-2009 Chris Lattner <sabre@nondot.org> inline AsmPrinter::getCurrentFunctionEHName into its only caller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81970 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
c54a0890ddc80c1d7efa21695fb3159ef1b57cf8 16-Sep-2009 Chris Lattner <sabre@nondot.org> Eliminate AsmPrinter::EmitExternalGlobal, inlining its (now)
one implementation into its one caller. This eliminates a totally
awesome and gratuitous hack where we casted a Function* to
GlobalVariable*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81967 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
1c90c6f1c530e22aea5be055004b2517e77a0f02 16-Sep-2009 Chris Lattner <sabre@nondot.org> Eliminate AsmPrinter::EmitExternalGlobal, inlining its (now)
one implementation into its one caller. This eliminates a totally
awesome and gratuitous hack where we casted a Function* to
GlobalVariable*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81967 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
5632fabd0a6e1f30e9cbbd6c2b6d3dce6dcc656a 16-Sep-2009 Chris Lattner <sabre@nondot.org> eliminate the horrid AsmPrinter::getGlobalLinkName method, inlining
it into all of its call sites and simplifying them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81962 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
334fd1f259b3e8aaf83cf0d40f74af5b209770e6 16-Sep-2009 Chris Lattner <sabre@nondot.org> eliminate the horrid AsmPrinter::getGlobalLinkName method, inlining
it into all of its call sites and simplifying them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81962 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
36d0329a368bc31e7129c92b2e1c38559793a48d 16-Sep-2009 Chris Lattner <sabre@nondot.org> remove some horrible MAI hooks which fortunately turn out to be always empty.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81946 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
bfd1e50c4f51e5f22ba68f28172b0ed9ab66a61a 16-Sep-2009 Chris Lattner <sabre@nondot.org> remove some horrible MAI hooks which fortunately turn out to be always empty.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81946 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
451e8e6330161627a231f22d167d49dd0c374db8 16-Sep-2009 Chris Lattner <sabre@nondot.org> strength reduce a call to PrintRelDirective(true).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81942 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
f60d3eb186c2821f65d85b40665d602eb7d051f4 16-Sep-2009 Chris Lattner <sabre@nondot.org> strength reduce a call to PrintRelDirective(true).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81942 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
72ba67246b322935e03e118480c6b8c235669b35 16-Sep-2009 Chris Lattner <sabre@nondot.org> add hooks to hang target-specific goop off MachineModuleInfo,
move MachineFunctionInfo virtual method out of line to give it
a home.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81940 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineModuleInfo.cpp
a70e2e3d4831b8a39ea6bae5c62df29fa82a86f3 16-Sep-2009 Chris Lattner <sabre@nondot.org> add hooks to hang target-specific goop off MachineModuleInfo,
move MachineFunctionInfo virtual method out of line to give it
a home.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81940 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineModuleInfo.cpp
4c9a0d70e34e1cc679f71bc5ca8e9554255b18d6 16-Sep-2009 Nate Begeman <natebegeman@mac.com> Do not add the SVOffset to the Node CSE ID. The same pointer argument cannot have different
SVOffsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81937 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
40fe16fadaccb86d9bff13ebe1c9a0cb20b2251b 16-Sep-2009 Nate Begeman <natebegeman@mac.com> Do not add the SVOffset to the Node CSE ID. The same pointer argument cannot have different
SVOffsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81937 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1482ed20fd413149c26101b5e3741e6ffe7ecf4e 15-Sep-2009 Eric Christopher <echristo@apple.com> Expand on comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81928 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ec26bf7d44def6fa9e989bcd69564f35b2273fad 15-Sep-2009 Eric Christopher <echristo@apple.com> Expand on comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81928 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ef65e0c69530a1832ba84028c8a25096b41e5f04 15-Sep-2009 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81909 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
504f9a61e61ee274fe50d8300825bdc2e5adb9b0 15-Sep-2009 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81909 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
2494777a2cb2e6e78713b12c0658523856b44ecb 15-Sep-2009 Nate Begeman <natebegeman@mac.com> Better solution for tracking both the original alignment of the access, and the current alignment based
on the source value offset. This avoids increasing the size of mem nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81897 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
101b25c028706c61c7dd9fb92d0b3c1541cb12b6 15-Sep-2009 Nate Begeman <natebegeman@mac.com> Better solution for tracking both the original alignment of the access, and the current alignment based
on the source value offset. This avoids increasing the size of mem nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81897 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
6a48b00dc985aaf83b11bf1c6b31ccd4ba49ede6 15-Sep-2009 Evan Cheng <evan.cheng@apple.com> Another try at early partial coalescing. Identity phi source copies (their sources are defined by phi join def) are coalesced. And the phi join copy is backward copy propagated into the other copies.

Still miscompiling some tests. :-(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81849 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3f85549f4dab19f9dde2c766151bf01e688f83b7 15-Sep-2009 Evan Cheng <evan.cheng@apple.com> Another try at early partial coalescing. Identity phi source copies (their sources are defined by phi join def) are coalesced. And the phi join copy is backward copy propagated into the other copies.

Still miscompiling some tests. :-(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81849 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6647b934fcb19a24d6eb7a07750ce292d79205c3 15-Sep-2009 Nate Begeman <natebegeman@mac.com> Remove incorrect CSE code from r81813.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81819 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
71524d716ad7da8f5a8e75085f9739aa6b772f9d 15-Sep-2009 Nate Begeman <natebegeman@mac.com> Remove incorrect CSE code from r81813.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81819 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
722f41892d746e32e0456a8e90640be7b93b4175 15-Sep-2009 Nate Begeman <natebegeman@mac.com> Substantially speed up combiner-aa in the following ways:

1. Switch from an std::set to a SmallPtrSet for visited chain nodes.
2. Do not force the recursive flattening of token factor nodes, regardless of
use count.
3. Immediately process newly created TokenFactor nodes.

Also, improve combiner-aa by teaching it that loads to non-overlapping offsets
of relatively aligned objects cannot alias.

These changes result in a >5x speedup for combiner-aa on most testcases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81816 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b6aef5c86736accefb1c61cacaf1bd29e9b25ecd 15-Sep-2009 Nate Begeman <natebegeman@mac.com> Substantially speed up combiner-aa in the following ways:

1. Switch from an std::set to a SmallPtrSet for visited chain nodes.
2. Do not force the recursive flattening of token factor nodes, regardless of
use count.
3. Immediately process newly created TokenFactor nodes.

Also, improve combiner-aa by teaching it that loads to non-overlapping offsets
of relatively aligned objects cannot alias.

These changes result in a >5x speedup for combiner-aa on most testcases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81816 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9e1b9b6fc8c9553b28a676fda614db3d057aa368 15-Sep-2009 Nate Begeman <natebegeman@mac.com> Teach the legalizer to propagate the original alignment of loads and store when
it splits them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81815 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
9cae7053c0381e5ba8c9e758231bfc9a1ccf57de 15-Sep-2009 Nate Begeman <natebegeman@mac.com> Teach the legalizer to propagate the original alignment of loads and store when
it splits them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81815 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
e22356dcb8d97062576619c5419a1140c76059dd 15-Sep-2009 Nate Begeman <natebegeman@mac.com> Add an "original alignment" field to load and store nodes. This enables the
DAG Combiner to disambiguate chains for loads and stores of types which are
broken up by the Legalizer into smaller pieces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81813 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
e6798372ea38e5ea24c26282a0d69aa6e3829854 15-Sep-2009 Nate Begeman <natebegeman@mac.com> Add an "original alignment" field to load and store nodes. This enables the
DAG Combiner to disambiguate chains for loads and stores of types which are
broken up by the Legalizer into smaller pieces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81813 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
95320818705e1a8a2ec6e0eaf009695c7b36630e 14-Sep-2009 Evan Cheng <evan.cheng@apple.com> Add early coalescing to liveintervals. This is work in progress and is known to miscompute some tests. Read it at your own rish, I have aged 10 year while writing this.

The gist of this is if source of some of the copies that feed into a phi join is defined by the phi join, we'd like to eliminate them. However, if any of the non-identity source overlaps the live interval of the phi join then the coalescer won't be able to coalesce them. The early coalescer's job is to eliminate the identity copies by partially-coalescing the two live intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81796 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
752195e3c662c6b5db042cf897c984624720f3b8 14-Sep-2009 Evan Cheng <evan.cheng@apple.com> Add early coalescing to liveintervals. This is work in progress and is known to miscompute some tests. Read it at your own rish, I have aged 10 year while writing this.

The gist of this is if source of some of the copies that feed into a phi join is defined by the phi join, we'd like to eliminate them. However, if any of the non-identity source overlaps the live interval of the phi join then the coalescer won't be able to coalesce them. The early coalescer's job is to eliminate the identity copies by partially-coalescing the two live intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81796 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3380dd66fb6f3cedf9fe83f56c8680802bfaf4cb 14-Sep-2009 Bill Wendling <isanbard@gmail.com> Pull the creation of the "RewindFunction" function out of the loop. It's only
created once, so shouldn't be stuck in the middle of the loop. Also early exit
if there are no uses of UnwindInst in the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81785 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
43488710a8dc76b39f9f3b628c2fdd5d34aa0dbb 14-Sep-2009 Bill Wendling <isanbard@gmail.com> Pull the creation of the "RewindFunction" function out of the loop. It's only
created once, so shouldn't be stuck in the middle of the loop. Also early exit
if there are no uses of UnwindInst in the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81785 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
da5fb6d704adbe833dcf16d12398a87a5af8d01e 14-Sep-2009 Chris Lattner <sabre@nondot.org> PIC16 does allow colon after MBB labels, simplify EmitBasicBlockStart.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81755 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
662316c997e4eb8c3fdec6999b3e9da03620847a 14-Sep-2009 Chris Lattner <sabre@nondot.org> PIC16 does allow colon after MBB labels, simplify EmitBasicBlockStart.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81755 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a835afd084f0e1c9ce65902b24eac79921547c79 14-Sep-2009 Chris Lattner <sabre@nondot.org> Change MCAsmStreamer to take an MCInstPrinter instead of a
full AsmPrinter, and change TargetRegistry to keep track
of registered MCInstPrinters.

llvm-mc is still linking in the entire
target foo to get the code emitter stuff, but this is an
important step in the right direction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81754 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
90edac0e8b35f766599362b6301863229f0ddcdb 14-Sep-2009 Chris Lattner <sabre@nondot.org> Change MCAsmStreamer to take an MCInstPrinter instead of a
full AsmPrinter, and change TargetRegistry to keep track
of registered MCInstPrinters.

llvm-mc is still linking in the entire
target foo to get the code emitter stuff, but this is an
important step in the right direction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81754 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
00512f63d4d10e60ae18c8b46392ce49e663f0bd 14-Sep-2009 Chris Lattner <sabre@nondot.org> kill off the last use of TRI::AsmName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6a6570a312d4757d2a6555d40dd83c203e43d644 14-Sep-2009 Chris Lattner <sabre@nondot.org> kill off the last use of TRI::AsmName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
28f7e3506ee1779753939d87c2ce4e1a2f19e9c0 13-Sep-2009 Chris Lattner <sabre@nondot.org> eliminate an extraneous use of TRI::getAsmName in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81705 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f806c23a9a297e0b6d19d82ed23c6c5921d6ecd9 13-Sep-2009 Chris Lattner <sabre@nondot.org> eliminate an extraneous use of TRI::getAsmName in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81705 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
149495f84e67c353295dd54c4ca92ccd0fd3c1ef 13-Sep-2009 Chris Lattner <sabre@nondot.org> remove MAI::JumpTableSpecialLabelPrefix now that MAI
has real information about linker private linkage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81695 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7c30191393c99c9ba804f1a01942a9e130c53904 13-Sep-2009 Chris Lattner <sabre@nondot.org> remove MAI::JumpTableSpecialLabelPrefix now that MAI
has real information about linker private linkage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81695 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2faa4ef57551d45e7b58b1827ae8156cea221637 13-Sep-2009 Chris Lattner <sabre@nondot.org> replace printBasicBlockLabel with EmitBasicBlockStart,
now that printBasicBlockLabel is only used for starting
a MBB. This allows elimination of a bunch of arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
70a54c07a0807bf89d1a8b4414e53298c376eb61 13-Sep-2009 Chris Lattner <sabre@nondot.org> replace printBasicBlockLabel with EmitBasicBlockStart,
now that printBasicBlockLabel is only used for starting
a MBB. This allows elimination of a bunch of arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c6f802dd7f346ac5a44bbdc57d264ed928fe1e7c 13-Sep-2009 Chris Lattner <sabre@nondot.org> convert some uses of printBasicBlockLabel to use GetMBBSymbol
instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81677 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
325d3dcfe4d5efc91db0f59b20a72a11dea024ed 13-Sep-2009 Chris Lattner <sabre@nondot.org> convert some uses of printBasicBlockLabel to use GetMBBSymbol
instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81677 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
08c9708a8aed7028c5e3126d2d680ee1ffb4af9f 13-Sep-2009 Chris Lattner <sabre@nondot.org> devirtualize AsmPrinter::printBasicBlockLabel since it is never overridden.
Move GetMBBSymbol up to AsmPrinter and make printBasicBlockLabel use it so that
we only have one place that decides what to name bb labels. Hopefully various
clients of printBasicBlockLabel can start using GetMBBSymbol instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81652 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7cb384dcca3f1ccfc993182ee4b972f7fffc8ffa 13-Sep-2009 Chris Lattner <sabre@nondot.org> devirtualize AsmPrinter::printBasicBlockLabel since it is never overridden.
Move GetMBBSymbol up to AsmPrinter and make printBasicBlockLabel use it so that
we only have one place that decides what to name bb labels. Hopefully various
clients of printBasicBlockLabel can start using GetMBBSymbol instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81652 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2a7b3b261e96625d4fff876dbb859dec67e4c04e 12-Sep-2009 Lang Hames <lhames@gmail.com> Moved some more index operations over to LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81605 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
35f291d2c5f80e8e713704190230064311bbbbbe 12-Sep-2009 Lang Hames <lhames@gmail.com> Moved some more index operations over to LiveIntervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81605 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
d0d3ee158facc0f354906b1e5559b73ce0fd20e7 12-Sep-2009 Evan Cheng <evan.cheng@apple.com> Remove -new-coalescer-heuristic. It's not useful.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81600 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
b24222cd7d223b10c2e01e02f535f30453c6e4ca 12-Sep-2009 Evan Cheng <evan.cheng@apple.com> Remove -new-coalescer-heuristic. It's not useful.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81600 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
16c2f62b7c53316702d1ad99d7c33a08f5f5ced7 12-Sep-2009 Evan Cheng <evan.cheng@apple.com> 80 col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81598 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
217311130d83f04c05d4248c557cef4bc8994e50 12-Sep-2009 Evan Cheng <evan.cheng@apple.com> 80 col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81598 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9da96d8044dc814a45010e9f78af212c189cc447 11-Sep-2009 Caroline Tice <ctice@apple.com> Don't generate Dwarf line table entries for source line 0.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81542 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c6f9d62eae02e11fbfe772e8e2c2e4d5ee5e4b13 11-Sep-2009 Caroline Tice <ctice@apple.com> Don't generate Dwarf line table entries for source line 0.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81542 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a24946acb21bffc40e9054f7ac25eb9319b406d8 11-Sep-2009 Duncan Sands <baldrick@free.fr> Fix PR4948 (and a leak): by not destroying the DwarfException
object, the timer it creates was not being deleted. Since the
timer belonged to a static timer group, the timer group would
be destroyed on shutdown, and would notice and complain that
not all timers it contained were destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81533 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
597f9797fd12bfede377de73ab89620842278105 11-Sep-2009 Duncan Sands <baldrick@free.fr> Fix PR4948 (and a leak): by not destroying the DwarfException
object, the timer it creates was not being deleted. Since the
timer belonged to a static timer group, the timer group would
be destroyed on shutdown, and would notice and complain that
not all timers it contained were destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81533 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
8c5f55f3e68092a732e6d3fa0dac6de724461a44 11-Sep-2009 Dan Gohman <gohman@apple.com> Make fast-isel try ISD::FNEG before resorting to bitcasts and xors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81493 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
4a215a13c3035a8818254b61267be77def4a2a37 11-Sep-2009 Dan Gohman <gohman@apple.com> Make fast-isel try ISD::FNEG before resorting to bitcasts and xors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81493 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
b144a5210c2df1b248b0c92fbf18f0cb1f9f9f91 11-Sep-2009 Dan Gohman <gohman@apple.com> Reapply r81171 with a fix: don't try to use i64 when it
isn't legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81492 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5e5abb77fe9eeb92a55f119fdb721bca4508094a 11-Sep-2009 Dan Gohman <gohman@apple.com> Reapply r81171 with a fix: don't try to use i64 when it
isn't legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81492 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
bdebfa961d5a71ebab1e0e622dd2abb463fff8aa 11-Sep-2009 Bob Wilson <bob.wilson@apple.com> Don't swap the operands of a subtraction when trying to create a
post-decrement load/store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
92ad363f58681df785933a75a9b9955f13885e7d 11-Sep-2009 Bob Wilson <bob.wilson@apple.com> Don't swap the operands of a subtraction when trying to create a
post-decrement load/store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f2c39f52d692834fd39bfb37e942840188554463 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Exit early if exception handling isn't supported.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81454 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
73c5a6172508e957d0b1a46170cb070dce6cac4f 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Exit early if exception handling isn't supported.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81454 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
7bb50b4935836725b83eefeb1e90d0a659ef15a5 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Comment and whitespace cleanups. No intentional functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81436 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
28275fdf02885587156da5cb20388b22d5b96557 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Comment and whitespace cleanups. No intentional functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81436 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
74446ffeba3226ae63f9a437230fe0f407a308d4 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Revert part of my r81424 patch. I removed what looked like superfluous padding
from the exception tables. However, Duncan explained why it's a can of worms to
do it the GCC way. I went back to doing it the LLVM way and added Duncan's
explanation so that I don't do this again in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81434 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
a2f6449a57fcce73beacc30158aafe39b5349947 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Revert part of my r81424 patch. I removed what looked like superfluous padding
from the exception tables. However, Duncan explained why it's a can of worms to
do it the GCC way. I went back to doing it the LLVM way and added Duncan's
explanation so that I don't do this again in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81434 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
5c6e5ae3c8ec8cc5df9f82b4c51d67105e941e5f 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Don't hardcode the TType format size. In fact, rework the code so that it's more
like what GCC outputs. The mysterious code to insert padding wasn't in GCC at
all. I modified the TType base offset code to calculate the offset like GCC
does, though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81424 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
fe220285b5ef1e4480ddd7f7c8bb182b88a33b16 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Don't hardcode the TType format size. In fact, rework the code so that it's more
like what GCC outputs. The mysterious code to insert padding wasn't in GCC at
all. I modified the TType base offset code to calculate the offset like GCC
does, though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81424 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
630d3b5c3e116554239d4c50032d2c1b9a01738d 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Remove the "#if 0" that Noone loved. It wasn't really necessary, because the
code within it was the same inside and out. There's still a problem of the
TypeInfoSize should be the size of the TType format encoding (at least that's
what GCC thinks it should be).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81417 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
43e484fbcf6a40a70d9a5c7ea142f37416ef1e68 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Remove the "#if 0" that Noone loved. It wasn't really necessary, because the
code within it was the same inside and out. There's still a problem of the
TypeInfoSize should be the size of the TType format encoding (at least that's
what GCC thinks it should be).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81417 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
9aadf0b01025e9a91a285fe87cf58353cc8aa61e 10-Sep-2009 Bob Wilson <bob.wilson@apple.com> Revert r81171 which was causing pr4927.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
2a16e6b22c558f9ba0b25096dfe0697488e51c8e 10-Sep-2009 Bob Wilson <bob.wilson@apple.com> Revert r81171 which was causing pr4927.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d832f2cd021588a797c00175a894f63d652b3755 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Pull check for SJLJ EH into a boolean and use that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81409 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
d1a5b37a62e829e56b6225e0934a01d9f8823387 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Pull check for SJLJ EH into a boolean and use that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81409 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
1961846a4701a5cd43a8d7f2624138da0f745e1f 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Use the SizeOfEncodedValue function instead of magic variables for the
sizeof(DW_EH_PE_udata4).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81408 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
40121bccbee44d387ab5d6a5194c5fc27c542e12 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Use the SizeOfEncodedValue function instead of magic variables for the
sizeof(DW_EH_PE_udata4).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81408 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
f551420260bd4eb5e4ca6307eb9ae4d411154061 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Add helpful comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81406 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
bb3e29932d14cc012149a1ab452b88e6f6f5bb49 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Add helpful comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81406 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
e99c6d49ea0f6f3b562af85580bdf18bd278b933 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Believe it or not, this is a simplification. :-)

Basically, this patch is working towards removing the hard-coded values that are
output for the CIE. In particular, the CIE augmentation and the CIE augmentation
size. Both of these should be calculated. In the process, I was able to make a
bunch of code simpler.

The encodings for the personality, LSDA, and FDE in the CIE are still not
correct. They should be generated either from target-specific callbacks (blech!)
or grokked from first-principles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81404 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
52783c63a13d384582997684384553e6545852d3 10-Sep-2009 Bill Wendling <isanbard@gmail.com> Believe it or not, this is a simplification. :-)

Basically, this patch is working towards removing the hard-coded values that are
output for the CIE. In particular, the CIE augmentation and the CIE augmentation
size. Both of these should be calculated. In the process, I was able to make a
bunch of code simpler.

The encodings for the personality, LSDA, and FDE in the CIE are still not
correct. They should be generated either from target-specific callbacks (blech!)
or grokked from first-principles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81404 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
32d4cc74e1075b6d9f77c75ff6099784ad4f15b2 10-Sep-2009 Chris Lattner <sabre@nondot.org> remove DebugLoc from MCInst and eliminate "Comment printing" from
the MCInst path of the asmprinter. Instead, pull comment printing
out of the autogenerated asmprinter into each target that uses the
autogenerated asmprinter. This causes code duplication into each
target, but in a way that will be easier to clean up later when more
asmprinter stuff is commonized into the base AsmPrinter class.

This also fixes an xcore strangeness where it inserted two tabs
before every instruction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81396 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
c5ea263a23f4f15587e35c9cb07cf72a9fba7613 10-Sep-2009 Chris Lattner <sabre@nondot.org> remove DebugLoc from MCInst and eliminate "Comment printing" from
the MCInst path of the asmprinter. Instead, pull comment printing
out of the autogenerated asmprinter into each target that uses the
autogenerated asmprinter. This causes code duplication into each
target, but in a way that will be easier to clean up later when more
asmprinter stuff is commonized into the base AsmPrinter class.

This also fixes an xcore strangeness where it inserted two tabs
before every instruction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81396 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
be23fd415c91d6b17149b67497316d9593305e05 09-Sep-2009 Bill Wendling <isanbard@gmail.com> Use the EOL that takes the encoding and translates it into DWARF-English.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81382 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
0734d35044c304dd072f20e49840bcbea427db9c 09-Sep-2009 Bill Wendling <isanbard@gmail.com> Use the EOL that takes the encoding and translates it into DWARF-English.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81382 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
c38ebcb176943ab2d8c5e0aa458f3f18990f15b8 09-Sep-2009 Bill Wendling <isanbard@gmail.com> Early exit from function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81381 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
7b09a6c62215e5ed30443b0d2b2a5ae18b89b94f 09-Sep-2009 Bill Wendling <isanbard@gmail.com> Early exit from function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81381 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
cb3105b639197e0e15486fa17beeee74682a608c 09-Sep-2009 Bill Wendling <isanbard@gmail.com> Small amount of code clean-up: Don't use ".size()" when not necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81380 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
b4049fe8cbb38416522f7b214f028ef0b7693d21 09-Sep-2009 Bill Wendling <isanbard@gmail.com> Small amount of code clean-up: Don't use ".size()" when not necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81380 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
a46d337b041e98c716269c600e3097cc5cca64ae 09-Sep-2009 Lang Hames <lhames@gmail.com> Removed static qualifier from a few index related methods. These methods may require a LiveIntervals instance in future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81374 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
trongPHIElimination.cpp
9647994e097840d8ea7bd3ed7014934034f38763 09-Sep-2009 Lang Hames <lhames@gmail.com> Removed static qualifier from a few index related methods. These methods may require a LiveIntervals instance in future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81374 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
trongPHIElimination.cpp
f193e18b174a8fe51242aabb07f3c0a4f39415af 09-Sep-2009 Andreas Neustifter <astifter@gmx.at> Preserve ProfileInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81360 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
ff5dfdff56dc2355a6c4740623dddd5fab40d885 09-Sep-2009 Andreas Neustifter <astifter-llvm@gmx.at> Preserve ProfileInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81360 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
da58ebcc2659fad293f11e4cd48f9d92b7fc594b 09-Sep-2009 Dan Gohman <gohman@apple.com> When widening a vector load, use the correct chain. This fixes PR4891.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81343 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
607a0508ba5732716809b926a271a9152bdcec12 09-Sep-2009 Dan Gohman <gohman@apple.com> When widening a vector load, use the correct chain. This fixes PR4891.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81343 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
0ac501ab8363823363bb62cba3f3bde409d8c5b5 09-Sep-2009 Chris Lattner <sabre@nondot.org> change selectiondag to add the sign extended versions of immediate operands
to instructions instead of zero extended ones. This makes the asmprinter
print signed values more consistently. This apparently only really affects
the X86 backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81265 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
d842962e27b10b6831c2421fa257e3fd58a85b18 09-Sep-2009 Chris Lattner <sabre@nondot.org> change selectiondag to add the sign extended versions of immediate operands
to instructions instead of zero extended ones. This makes the asmprinter
print signed values more consistently. This apparently only really affects
the X86 backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81265 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
99c816857be050d35719a3425f46a4ac1b1057e7 08-Sep-2009 Nicolas Geoffray <nicolas.geoffray@lip6.fr> When emitting a label for a PostCall safe point, the machine
instruction to insert before can be end(). getDebugLoc on
end() returns an invalid value, therefore use the debug
loc of the call instruction, and give it to InsertLabel.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81207 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
22f35ace4599f28f50159cf0e19436e755669340 08-Sep-2009 Nicolas Geoffray <nicolas.geoffray@lip6.fr> When emitting a label for a PostCall safe point, the machine
instruction to insert before can be end(). getDebugLoc on
end() returns an invalid value, therefore use the debug
loc of the call instruction, and give it to InsertLabel.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81207 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
4f6c7da13e517fa7aacc7514bbff034365823970 08-Sep-2009 Evan Cheng <evan.cheng@apple.com> When remat'ing and destination virtual register has a sub-register index. Make sure the sub-register class matches the register class of the remat'ed instruction definition register class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81204 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
8bdb0de2bd3124bdf7cc6e781d7fb54af68d5c80 08-Sep-2009 Evan Cheng <evan.cheng@apple.com> When remat'ing and destination virtual register has a sub-register index. Make sure the sub-register class matches the register class of the remat'ed instruction definition register class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81204 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
1b9f83a3e87d2b6cbcf1af525f0b1796c17fd571 08-Sep-2009 Dan Gohman <gohman@apple.com> Fix an abort on a store of an empty struct member. getValue returns
null in the case of an empty struct, so don't try to call getNumValues
on it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ed48caf5e703c8ee088a8ffa7fb77ebd1b25e97b 08-Sep-2009 Dan Gohman <gohman@apple.com> Fix an abort on a store of an empty struct member. getValue returns
null in the case of an empty struct, so don't try to call getNumValues
on it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
c4d34a74cd602a2a0438efade40a536d67ed38a3 08-Sep-2009 Dan Gohman <gohman@apple.com> Fix a thinko: When lowering fneg with xor, bitcast the operands
from floating-point to integer first, and bitcast the result
back to floating-point. Previously, this test was passing by
falling back to SelectionDAG lowering. The resulting code isn't
as nice, but it's correct and CodeGen now stays on the fast path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
fd06aa7c076f397b307ddd638a2666f4090ee2b1 08-Sep-2009 Dan Gohman <gohman@apple.com> Fix a thinko: When lowering fneg with xor, bitcast the operands
from floating-point to integer first, and bitcast the result
back to floating-point. Previously, this test was passing by
falling back to SelectionDAG lowering. The resulting code isn't
as nice, but it's correct and CodeGen now stays on the fast path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
950b9861ba3a7964bc911df9b97fa8d136e0bcd5 06-Sep-2009 Duncan Sands <baldrick@free.fr> Simplify. Testing shows that this is not equivalent to BBI = CR.CaseBB + 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
514985297520dbe79441a7af743a5941422a1b69 06-Sep-2009 Duncan Sands <baldrick@free.fr> Simplify. Testing shows that this is not equivalent to BBI = CR.CaseBB + 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
dc94fb91bc0e3dba99c31b3b7f3b8e5048b0e137 06-Sep-2009 Duncan Sands <baldrick@free.fr> Mark more constants unsigned, as warned about by icc (#68).
Patch by Erick Tryzelaar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81116 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/Heuristics/Briggs.h
18f13c66bfb9cb2116be0f339fa955949dd60dd1 06-Sep-2009 Duncan Sands <baldrick@free.fr> Mark more constants unsigned, as warned about by icc (#68).
Patch by Erick Tryzelaar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81116 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/Heuristics/Briggs.h
05db668fe21feee223e19fe50ddeb6456ddebafb 06-Sep-2009 Duncan Sands <baldrick@free.fr> Remove some not-really-used variables, as warned
about by icc (#593, partial). Patch by Erick Tryzelaar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81115 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAGBuild.cpp
tackSlotColoring.cpp
c2d98bc0d682419f09659d94afefd6a6266dd6ee 06-Sep-2009 Duncan Sands <baldrick@free.fr> Remove some not-really-used variables, as warned
about by icc (#593, partial). Patch by Erick Tryzelaar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81115 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAGBuild.cpp
tackSlotColoring.cpp
0db71af6ee5f1ed8495222226db9e4c85eef4805 06-Sep-2009 Benjamin Kramer <benny.kra@googlemail.com> It's a bool, so treat it like one. Fixes a MSVC warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81112 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
be441c0f348a1c02a3632718832f6e2d42c4f8f0 06-Sep-2009 Benjamin Kramer <benny.kra@googlemail.com> It's a bool, so treat it like one. Fixes a MSVC warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81112 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
5c3f915679bede35de38a5702359ab5befc38b95 06-Sep-2009 Duncan Sands <baldrick@free.fr> Remove some unused variables and methods warned about by
icc (#177, partial). Patch by Erick Tryzelaar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81106 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
irtRegRewriter.cpp
b7c5bdf843419e4222770475c27932c4c8e5c303 06-Sep-2009 Duncan Sands <baldrick@free.fr> Remove some unused variables and methods warned about by
icc (#177, partial). Patch by Erick Tryzelaar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81106 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
irtRegRewriter.cpp
5290ac201f2bd669d8e09cfc45f98b6f39784324 05-Sep-2009 Devang Patel <dpatel@apple.com> Detect VLAs.
Do not use DenseMap operator[] because it inserts new entry if lookup fails. Use find() to check an entry in a DenseMap first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81058 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
bd1d6a8ce1197de640df52e1da2e63e8ce8d8705 05-Sep-2009 Devang Patel <dpatel@apple.com> Detect VLAs.
Do not use DenseMap operator[] because it inserts new entry if lookup fails. Use find() to check an entry in a DenseMap first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81058 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
0c03f0626103c650db38940c5edf806648f6895d 05-Sep-2009 Devang Patel <dpatel@apple.com> Ignore malformed global variable debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81055 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
905cf5e0bd4feaec00c45f44893afbbd1f02a149 05-Sep-2009 Devang Patel <dpatel@apple.com> Ignore malformed global variable debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81055 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d8f309943c6c05daa9e23f7bcb08cf5c18eb4a26 04-Sep-2009 Lang Hames <lhames@gmail.com> Replaces uses of unsigned for indexes in LiveInterval and VNInfo with
a new class, MachineInstrIndex, which hides arithmetic details from
most clients. This is a step towards allowing the register allocator
to update/insert code during allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81040 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
piller.cpp
trongPHIElimination.cpp
irtRegMap.h
8651125d2885f74546b6e2a556082111d5b75da3 04-Sep-2009 Lang Hames <lhames@gmail.com> Replaces uses of unsigned for indexes in LiveInterval and VNInfo with
a new class, MachineInstrIndex, which hides arithmetic details from
most clients. This is a step towards allowing the register allocator
to update/insert code during allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81040 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
piller.cpp
trongPHIElimination.cpp
irtRegMap.h
680c2a0652497c5b9b550a147c96e506facb854b 04-Sep-2009 Duncan Sands <baldrick@free.fr> Use delete[] to match new[] (found by valgrind).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80997 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
70327dabb4cbe7a95b65ea787716170508ac3068 04-Sep-2009 Duncan Sands <baldrick@free.fr> Use delete[] to match new[] (found by valgrind).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80997 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
9dcb760ccdb1e1418afe31c42e6b26d663b00cbf 04-Sep-2009 Evan Cheng <evan.cheng@apple.com> Run branch folding if if-converter make some transformations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80994 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
fConversion.cpp
030a0a0cdb38924e55773a8e0b5fe7347aa664aa 04-Sep-2009 Evan Cheng <evan.cheng@apple.com> Run branch folding if if-converter make some transformations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80994 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ranchFolding.h
fConversion.cpp
368ddcb5b8995476324018aed319e36085de3411 04-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix comment for consistency sake.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80993 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.h
e93909185fb61ae1b2fd045572d7d51209a39d1c 04-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix comment for consistency sake.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80993 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.h
24fd31656faf1f70c5e4ade5b6462b2e66465748 04-Sep-2009 Eric Christopher <echristo@apple.com> If there's a calling convention attach it to the rewind function call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80976 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
82f149d794dcb705a05e9e260402cbf3f36f1957 04-Sep-2009 Eric Christopher <echristo@apple.com> If there's a calling convention attach it to the rewind function call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80976 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
fe0a279423e23454b9f41d59d2a86340fdceb8a8 04-Sep-2009 Evan Cheng <evan.cheng@apple.com> Funky indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80971 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
b3c27428969b3cc52ab8493e91b5dd1465325fed 04-Sep-2009 Evan Cheng <evan.cheng@apple.com> Funky indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80971 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
f154271b8e81b6fc65137b7fda7c935b9fe93203 04-Sep-2009 Dan Gohman <gohman@apple.com> LLVM currently represents floating-point negation as -0.0 - x. Fix
FastISel to recognize this pattern and emit a floating-point
negation using xor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3d45a853db014fdddcdb79424e663dfed5eccbc7 04-Sep-2009 Dan Gohman <gohman@apple.com> LLVM currently represents floating-point negation as -0.0 - x. Fix
FastISel to recognize this pattern and emit a floating-point
negation using xor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
598ea31a7440ad0fae45e9fd4d7d640c431ef030 04-Sep-2009 David Goodwin <david_goodwin@apple.com> Don't crash when target has no itineraries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80962 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
4f7228f851bc48fe6a729a9d526a0b8de60e48d0 04-Sep-2009 David Goodwin <david_goodwin@apple.com> Don't crash when target has no itineraries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80962 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
856b38c3e9341ed6667788eb3c923be358ac5b71 04-Sep-2009 David Goodwin <david_goodwin@apple.com> Create our own block initializer for kill fixups as the scheduling one wasn't doing the right thing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80958 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
5e41178a6ee9a0faa2c031811d32543d7e9d0aff 04-Sep-2009 David Goodwin <david_goodwin@apple.com> Create our own block initializer for kill fixups as the scheduling one wasn't doing the right thing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80958 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
fa196cc6a40c2f1146f336ee904688ab37d9ac0e 03-Sep-2009 Bob Wilson <bob.wilson@apple.com> Overhaul the TwoAddressInstructionPass to simplify the logic, especially
for the complicated case where one register is tied to multiple destinations.
This avoids the extra scan of instruction operands that was introduced by
my recent change. I also pulled some code out into a separate
TryInstructionTransform method, added more comments, and renamed some
variables.

Besides all those changes, this takes care of a FIXME in the code regarding
an assumption about there being a single tied use of a register when
converting to a 3-address form. I'm not aware of cases where that assumption
is violated, but the code now only attempts to transform an instruction,
either by commuting its operands or by converting to a 3-address form,
for the simple case where there is a single pair of tied operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80945 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
cc80df92c18c125ab31a273f1490ab99eb25f0d1 03-Sep-2009 Bob Wilson <bob.wilson@apple.com> Overhaul the TwoAddressInstructionPass to simplify the logic, especially
for the complicated case where one register is tied to multiple destinations.
This avoids the extra scan of instruction operands that was introduced by
my recent change. I also pulled some code out into a separate
TryInstructionTransform method, added more comments, and renamed some
variables.

Besides all those changes, this takes care of a FIXME in the code regarding
an assumption about there being a single tied use of a register when
converting to a 3-address form. I'm not aware of cases where that assumption
is violated, but the code now only attempts to transform an instruction,
either by commuting its operands or by converting to a 3-address form,
for the simple case where there is a single pair of tied operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80945 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
41b3f4abc695b3ce178e1db7610b34d3745ed22d 03-Sep-2009 Dan Gohman <gohman@apple.com> Recognize more opportunities to use SSE min and max instructions,
swapping the operands if necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80940 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8d44b28bc6f615b9ad79b066987d53b1ea2a2942 03-Sep-2009 Dan Gohman <gohman@apple.com> Recognize more opportunities to use SSE min and max instructions,
swapping the operands if necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80940 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e86b0df8fc92fdeb05d03897afe4802ee5108dae 03-Sep-2009 Lang Hames <lhames@gmail.com> Fixed a test that ensures the LocalRewriter does not attempt to
avoid reloads by reusing clobbered registers.

This was causing issues in 256.bzip2 when compiled with PIC for
a while (starting at r78217), though the problem has since been masked.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80872 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
irtRegRewriter.cpp
3f2f3f5341374c85955cfaffa71886724999762d 03-Sep-2009 Lang Hames <lhames@gmail.com> Fixed a test that ensures the LocalRewriter does not attempt to
avoid reloads by reusing clobbered registers.

This was causing issues in 256.bzip2 when compiled with PIC for
a while (starting at r78217), though the problem has since been masked.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80872 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
irtRegRewriter.cpp
fa2d3271d5e771007cf55840bb4eae119c02818c 02-Sep-2009 Bob Wilson <bob.wilson@apple.com> Rearrange code to eliminate redundancy and avoid gotos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80798 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
d163917fd834376aee17d5c37f6d47cafed09087 02-Sep-2009 Bob Wilson <bob.wilson@apple.com> Rearrange code to eliminate redundancy and avoid gotos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80798 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
5838baa4a8aedfd453a5b0663425979c77e4e285 02-Sep-2009 Sandeep Patel <deeppatel1987@gmail.com> Retype from unsigned to CallingConv::ID accordingly. Approved by Bob Wilson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80773 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/SelectionDAGBuild.cpp
65c3c8f323198b99b88b109654194540cf9b3fa5 02-Sep-2009 Sandeep Patel <deeppatel1987@gmail.com> Retype from unsigned to CallingConv::ID accordingly. Approved by Bob Wilson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80773 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/SelectionDAGBuild.cpp
2a073840a9863f7fde14aba104621ce546f35510 02-Sep-2009 Bob Wilson <bob.wilson@apple.com> Avoid calling removeVirtualRegisterKilled which iterates over the operands
to find the kill, since we already have the operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80736 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
86f7cd786eecc74e0480c0f8ab6a4234bb72bfbb 02-Sep-2009 Bob Wilson <bob.wilson@apple.com> Avoid calling removeVirtualRegisterKilled which iterates over the operands
to find the kill, since we already have the operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80736 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4868b2482d56166b836de78a4b35607a799f7958 02-Sep-2009 Bob Wilson <bob.wilson@apple.com> Refactor some code into separate functions. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80733 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
326f43812ca28b2b4bb5eb8e5191deab6ba621f3 02-Sep-2009 Bob Wilson <bob.wilson@apple.com> Refactor some code into separate functions. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80733 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
432d176192c6a1707a9f714ea00ea500f1d9a6ee 02-Sep-2009 Bob Wilson <bob.wilson@apple.com> Move use of LV inside condition that guards for null LV.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80731 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
c08f5fe882d6d2f2f94606b4f4ea8a1209cb1e24 02-Sep-2009 Bob Wilson <bob.wilson@apple.com> Move use of LV inside condition that guards for null LV.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80731 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
9f086b93c3bb001b72590024114ac8c19f5abdaa 02-Sep-2009 Daniel Dunbar <daniel@zuster.org> Remove Offset from ExternalSybmol MachineOperands, this is unused (and at least partly unsupported, in X86 encoding at least).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80726 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
31e2c7b4c13c2f31774614b1124533628958d0cd 02-Sep-2009 Daniel Dunbar <daniel@zuster.org> Remove Offset from ExternalSybmol MachineOperands, this is unused (and at least partly unsupported, in X86 encoding at least).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80726 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
0c971ca2967e9dd20f26d8d68cacb131dd2fb7ca 01-Sep-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix ELF Writter related memory leaks

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80717 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
0bb83860f9e105f451beee16fe3cf0fe28d65a81 01-Sep-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix ELF Writter related memory leaks

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80717 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
d5496d944b0095cfd0d1cc93386a3c569b7f06d5 01-Sep-2009 Jim Grosbach <grosbach@apple.com> reduce size of SmallString to something more reasonable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80710 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
ee793a6c197b2cccfee96c6da1bbe6a2048830cc 01-Sep-2009 Jim Grosbach <grosbach@apple.com> reduce size of SmallString to something more reasonable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80710 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
1e58780928c42ba7c34deb7bbb35c17391b3d36e 01-Sep-2009 Jim Grosbach <grosbach@apple.com> Use raw_ostream instead of sstream

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80704 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
c40d9f9bae70c83947bf8fa5f9ee97adbf1bb0c0 01-Sep-2009 Jim Grosbach <grosbach@apple.com> Use raw_ostream instead of sstream

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80704 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
4b023dd6936966cce0cfea28c5148168f7a5b40e 01-Sep-2009 David Goodwin <david_goodwin@apple.com> Add hidden flags to allow binary search of post-RA scheduling errors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80702 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
1f1522839838a33e69d68656a423a244e19dffb8 01-Sep-2009 David Goodwin <david_goodwin@apple.com> Add hidden flags to allow binary search of post-RA scheduling errors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80702 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
598082b1dd506ca0d6540f2bcaded867bfbf77af 01-Sep-2009 Jim Grosbach <grosbach@apple.com> revert inadvertant change from previous commit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80689 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
33668c0f1a7e374d4c3c53df34efbdf570e0987b 01-Sep-2009 Jim Grosbach <grosbach@apple.com> revert inadvertant change from previous commit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80689 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
90cc01b4e49618f75a3cb899cefaa0abe9ca7066 01-Sep-2009 Jim Grosbach <grosbach@apple.com> Simply LSDA lable emission to use a direct special-case output instead of
EmitLabel()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80677 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
a01d34676fa45ab341d18cf9ec1e39cc5979898f 01-Sep-2009 Jim Grosbach <grosbach@apple.com> Simply LSDA lable emission to use a direct special-case output instead of
EmitLabel()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80677 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
13099514dad37eb4e6f270fc84fb749c3eaeb487 01-Sep-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4843: When an instruction has multiple destination registers that are
tied to different source registers, the TwoAddressInstructionPass needs to
be smarter. Change it to check before replacing a source register whether
that source register is tied to a different destination register, and if so,
defer handling it until a subsequent iteration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80654 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
71124f698befddb89309758f4aa171e11b9beff3 01-Sep-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4843: When an instruction has multiple destination registers that are
tied to different source registers, the TwoAddressInstructionPass needs to
be smarter. Change it to check before replacing a source register whether
that source register is tied to a different destination register, and if so,
defer handling it until a subsequent iteration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80654 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
5e0257f9b7567c8c285ee3115c10d552c7c037fb 01-Sep-2009 Jim Grosbach <grosbach@apple.com> Clean up LSDA name generation and use for SJLJ exception handling. This
makes an eggregious hack somewhat more palatable. Bringing the LSDA forward
and making it a GV available for reference would be even better, but is
beyond the scope of what I'm looking to solve at this point.

Objective C++ code could generate function names that broke the previous
scheme. This fixes that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80649 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
3fb2b1ede30193b59a651328a946174196b20610 01-Sep-2009 Jim Grosbach <grosbach@apple.com> Clean up LSDA name generation and use for SJLJ exception handling. This
makes an eggregious hack somewhat more palatable. Bringing the LSDA forward
and making it a GV available for reference would be even better, but is
beyond the scope of what I'm looking to solve at this point.

Objective C++ code could generate function names that broke the previous
scheme. This fixes that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80649 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
318d70da84dd9c3371774284695e2f96613d68a9 01-Sep-2009 Devang Patel <dpatel@apple.com> Subprogram is a scope. Derive DISubprogram from DIScope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80637 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
82dfc0cd8c3c2bf780a13cc35c1a8df7ad137477 01-Sep-2009 Devang Patel <dpatel@apple.com> Subprogram is a scope. Derive DISubprogram from DIScope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80637 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
a53768e1e514ec9184b3e17c465b19f9334c1e5c 01-Sep-2009 Devang Patel <dpatel@apple.com> Rename DIBlock as DILexicalBlock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80633 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5e005d814f13f1796cf9e32c7525a5241fface1a 01-Sep-2009 Devang Patel <dpatel@apple.com> Rename DIBlock as DILexicalBlock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80633 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
acce6ef067e3e784306ea3e13c30913722a2207c 31-Aug-2009 Bob Wilson <bob.wilson@apple.com> Use early exit and reduce indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80631 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4344979ba9de3564d5f59f7947a6aec421d79288 31-Aug-2009 Bob Wilson <bob.wilson@apple.com> Use early exit and reduce indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80631 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
ce99fa7903584a25dd332004f3dcf639bbba91f6 31-Aug-2009 Bob Wilson <bob.wilson@apple.com> If the tied registers are already the same, there is no need to change
them. Move the code to make that change inside the conditional.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80630 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
d4034b2825a2a030893593327d67ca12b4e8a249 31-Aug-2009 Bob Wilson <bob.wilson@apple.com> If the tied registers are already the same, there is no need to change
them. Move the code to make that change inside the conditional.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80630 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
248d5579576fdfb0f1dca59bc3c6cebb8a6976fc 31-Aug-2009 Caroline Tice <ctice@apple.com> Add flag to mark structs for Apple Block "byref" variables; also add code to
modify the type and location debug information for these variables to match the
programmer's expectations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80625 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
dc8f6049d11ee73835c7b7e9b7c6d0b9e6a2c9b1 31-Aug-2009 Caroline Tice <ctice@apple.com> Add flag to mark structs for Apple Block "byref" variables; also add code to
modify the type and location debug information for these variables to match the
programmer's expectations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80625 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
864c4b83472a97397039240f7d5e9c6e269174b1 31-Aug-2009 David Goodwin <david_goodwin@apple.com> Don't mark a register live at an undef use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80621 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
a3251db21a474affaca945e3fc53f22d30d20f00 31-Aug-2009 David Goodwin <david_goodwin@apple.com> Don't mark a register live at an undef use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80621 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
56843af6f90e5bdf7d79a271d2406f57e6674122 31-Aug-2009 Devang Patel <dpatel@apple.com> Simplify isDerivedType() and other predicate interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80602 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6ceea33c5e5c00069453e48740aaef5fe1c0953b 31-Aug-2009 Devang Patel <dpatel@apple.com> Simplify isDerivedType() and other predicate interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80602 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4cfaf41d499ce05b11ecb62746c3e86b04440f62 31-Aug-2009 Bill Wendling <isanbard@gmail.com> Output a hex value, because all of the others are hex.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80601 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
049e98d641f90e90e8312d76cbf4c68908fb9d1d 31-Aug-2009 Bill Wendling <isanbard@gmail.com> Output a hex value, because all of the others are hex.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80601 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
752d366fe7a9d0f68258465ce554cdf40af2918e 31-Aug-2009 Duncan Sands <baldrick@free.fr> Revert commit 80428. It completely broke exception
handling on x86-32 linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80592 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
c69d74a5d41a6c5e92f9d947f2fa181f48626ca5 31-Aug-2009 Duncan Sands <baldrick@free.fr> Revert commit 80428. It completely broke exception
handling on x86-32 linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80592 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
54b6adfbb882f2f9b96c241fb87d0128ce840960 31-Aug-2009 Jim Grosbach <grosbach@apple.com> PR4747

Shared landing pads run into trouble with SJLJ, as the dispatch table is
mapped to call sites, and merging the pads will throw that off. There needs
to be a one-to-one mapping of landing pad exception table entries to invoke
call points.

Detecting the shared pad during lowering of SJLJ info insn't sufficient, as
the dispatch function may still need separate destinations to properly
handle phi-nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80530 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
jLjEHPrepare.cpp
0bb61c56bcad7a738d50f705b5966be446ef06c1 31-Aug-2009 Jim Grosbach <grosbach@apple.com> PR4747

Shared landing pads run into trouble with SJLJ, as the dispatch table is
mapped to call sites, and merging the pads will throw that off. There needs
to be a one-to-one mapping of landing pad exception table entries to invoke
call points.

Detecting the shared pad during lowering of SJLJ info insn't sufficient, as
the dispatch function may still need separate destinations to properly
handle phi-nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80530 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
jLjEHPrepare.cpp
09880947395319ff0df656549ddf0b080b7af385 30-Aug-2009 Bill Wendling <isanbard@gmail.com> Nuke moribund "std::string" version of EOL(..., Encoding).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80466 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8ed211406a68d036c044829807e45eefc17f5aa8 30-Aug-2009 Bill Wendling <isanbard@gmail.com> Nuke moribund "std::string" version of EOL(..., Encoding).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80466 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b4ac493684cdeb2147000a6816a563269fcf3c70 29-Aug-2009 Bill Wendling <isanbard@gmail.com> - Add target lowering methods to get the preferred format for the FDE and LSDA
encodings.
- Make some of the values emitted by the FDEs dependent upon the pointer
size. This is in line with how GCC does things. And it has the benefit of
working for Darwin in 64-bit mode now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80428 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
9b35a09e7e5b1aa26588e3852fe00a42b4f383ba 29-Aug-2009 Bill Wendling <isanbard@gmail.com> - Add target lowering methods to get the preferred format for the FDE and LSDA
encodings.
- Make some of the values emitted by the FDEs dependent upon the pointer
size. This is in line with how GCC does things. And it has the benefit of
working for Darwin in 64-bit mode now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80428 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
946b521498866b3d83c4447c9c0ece6095a56874 29-Aug-2009 Bill Wendling <isanbard@gmail.com> Add a form of EOL which emits the text version of a DWARF format encoding. This
doesn't handle all values of the formatting. Those can be added as needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80427 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b5abecded7573de0747f9f529a52561741bed0a2 29-Aug-2009 Bill Wendling <isanbard@gmail.com> Add a form of EOL which emits the text version of a DWARF format encoding. This
doesn't handle all values of the formatting. Those can be added as needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80427 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0ac7faa993d472be4a23e0e58fa6e9372960cfe8 29-Aug-2009 Eric Christopher <echristo@apple.com> Make the augmentation size and next set of bytes agree on size,
and make the reference pointer size as it should be.

Fixes an abort on a testcase derived from libunwind's personality
test in 64-bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80414 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
6fefcebc4f92b944664b7b26042bc21e57aefe43 29-Aug-2009 Eric Christopher <echristo@apple.com> Make the augmentation size and next set of bytes agree on size,
and make the reference pointer size as it should be.

Fixes an abort on a testcase derived from libunwind's personality
test in 64-bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80414 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
e54c004ea5ea6c7e89b1cef9531ce05096122bbf 29-Aug-2009 David Goodwin <david_goodwin@apple.com> Another stab at fixing up register kill flags after post-RA scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80410 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
7886cd85b21db4498ff042a4e42aded7bf3272ee 29-Aug-2009 David Goodwin <david_goodwin@apple.com> Another stab at fixing up register kill flags after post-RA scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80410 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
15e723d2c6021bbeacad9baa9c0d946d4a19867e 29-Aug-2009 Devang Patel <dpatel@apple.com> Reapply 79977.
Use MDNodes to encode debug info in llvm IR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80406 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
e4b275610a7a05b7ee4c0378a906a6330e4c4ab0 29-Aug-2009 Devang Patel <dpatel@apple.com> Reapply 79977.
Use MDNodes to encode debug info in llvm IR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80406 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
a14f4474b2d915579e9e9bd8bf4080d7f25e7dcd 29-Aug-2009 Eric Christopher <echristo@apple.com> Nuke trailing whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80401 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
dbfcdb976367ad5a9d3541fef90cd9f8dde7e2b4 29-Aug-2009 Eric Christopher <echristo@apple.com> Nuke trailing whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80401 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
20b3210d23b9c5633787e3d8bbd98d7cc0083c32 28-Aug-2009 Devang Patel <dpatel@apple.com> Closure is a very generic name. Use AppleBlock instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80307 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
a1ba269a27ca9d776e6de77e8177fa8fa844bd5e 28-Aug-2009 Devang Patel <dpatel@apple.com> Closure is a very generic name. Use AppleBlock instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80307 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
fa4c3253f6dd9f328549aa73e2710981ac3a2881 27-Aug-2009 Dan Gohman <gohman@apple.com> Adjust the MachineBasicBlock verifier rules to be more
tolerant of blocks that end with "unreachable".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80270 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
a01a80fa6c0c6e9c92ecfa951e974b98c3ba1783 27-Aug-2009 Dan Gohman <gohman@apple.com> Adjust the MachineBasicBlock verifier rules to be more
tolerant of blocks that end with "unreachable".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80270 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
5537c20c55869fac64e4f5738f8eab2080cc79c6 27-Aug-2009 Bill Wendling <isanbard@gmail.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80198 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
639217cb6a3948800c71c39503f8def4873a535e 27-Aug-2009 Bill Wendling <isanbard@gmail.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80198 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
25cd944a98bcf3b1542c71d2654fe61e28562867 27-Aug-2009 Bill Wendling <isanbard@gmail.com> --- Reverse-merging r80147 into '.':
A include/llvm/ADT/iterator.cmake
U autoconf/configure.ac
--- Reverse-merging r80161 into '.':
U cmake/config-ix.cmake
--- Reverse-merging r80171 into '.':
U Makefile
--- Reverse-merging r80173 into '.':
U configure
U include/llvm/Config/config.h.in
--- Reverse-merging r80180 into '.':
A include/llvm/ADT/iterator.h.in

Despite common miscomceptions, iterator.h is alive and well. It broke the build
bots for several hours. And yet no one bothered to look at them.

Gabor and Doug, please review your changes and make sure that they actually
build before resubmitting them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80197 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
fffb7266fe9c5c95d859ff5b3aeb5386cbd0cd1e 27-Aug-2009 Bill Wendling <isanbard@gmail.com> --- Reverse-merging r80147 into '.':
A include/llvm/ADT/iterator.cmake
U autoconf/configure.ac
--- Reverse-merging r80161 into '.':
U cmake/config-ix.cmake
--- Reverse-merging r80171 into '.':
U Makefile
--- Reverse-merging r80173 into '.':
U configure
U include/llvm/Config/config.h.in
--- Reverse-merging r80180 into '.':
A include/llvm/ADT/iterator.h.in

Despite common miscomceptions, iterator.h is alive and well. It broke the build
bots for several hours. And yet no one bothered to look at them.

Gabor and Doug, please review your changes and make sure that they actually
build before resubmitting them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80197 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
0d0598f6281c0b1ae107b2fa2fabd69ec21263c4 27-Aug-2009 Dan Gohman <gohman@apple.com> Add some checks for MachineCFG consistency. Use AnalyzeBranch and
do extra checking when it succeeds, as those are cases where
CodeGen will be doing particularly interesting CFG modifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80196 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
27920594b940d824038d16b13846aa76cac493cf 27-Aug-2009 Dan Gohman <gohman@apple.com> Add some checks for MachineCFG consistency. Use AnalyzeBranch and
do extra checking when it succeeds, as those are cases where
CodeGen will be doing particularly interesting CFG modifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80196 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
e92cc8d5591cb7ded636c91cc98c741af62ec85f 26-Aug-2009 Eric Christopher <echristo@apple.com> Rework getPersonalityIndex slightly - 0 is now a valid and not-NULL
personality function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80153 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
5e365e23f165d03fd2edc972bd4395e52a481c25 26-Aug-2009 Eric Christopher <echristo@apple.com> Rework getPersonalityIndex slightly - 0 is now a valid and not-NULL
personality function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80153 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
c87d5ae938fe0c3b0afc3aefef1dc6a9873516e4 26-Aug-2009 Eric Christopher <echristo@apple.com> If we're emitting additional CIEs due to personality functions
don't emit the default one. Explicitly check for the NULL
CIE later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80146 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
d44fff7849034fc17d6a0e9f9926542865bb7881 26-Aug-2009 Eric Christopher <echristo@apple.com> If we're emitting additional CIEs due to personality functions
don't emit the default one. Explicitly check for the NULL
CIE later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80146 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
84603633a7609ec55de5d8145048efbbf45e5c9c 26-Aug-2009 Eric Christopher <echristo@apple.com> Nuke trailing whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80145 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
cf29697266a78f74b4c00675ae54e3826a03fec1 26-Aug-2009 Eric Christopher <echristo@apple.com> Nuke trailing whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80145 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
0defefd8ce9f13cecba8c988897c3224a25e96f8 26-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Add extload expansion for f128

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80116 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
62c77d33b18937ea0b246be3631df082cd621126 26-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Add extload expansion for f128

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80116 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
32b17ffaa8593d25728c9ebad7e82a45c16f817c 26-Aug-2009 Dan Gohman <gohman@apple.com> -fast is now -O0. -fast-isel is no longer experimental.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80104 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
e29fea4434b784bd8d908088c0ee4d4788080088 26-Aug-2009 Dan Gohman <gohman@apple.com> -fast is now -O0. -fast-isel is no longer experimental.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80104 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
94060421ce73922e71c183fba0fda8bace7d0e2d 26-Aug-2009 Devang Patel <dpatel@apple.com> Revert 79977. It causes llvm-gcc bootstrap failures on some platforms.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80073 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
824598883513789516a919651f4b35e7a638ec5c 26-Aug-2009 Devang Patel <dpatel@apple.com> Revert 79977. It causes llvm-gcc bootstrap failures on some platforms.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80073 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
2e1a5d0b91503b8d5ada9fe0b19567daca2f1c6f 26-Aug-2009 Devang Patel <dpatel@apple.com> Add isClosure() predicate. This is used to add DW_AT_APPLE_block attribute.
Patch by Caroline Tice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80061 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8af76bdb7450b097efa17f7c192882111a9e8f10 26-Aug-2009 Devang Patel <dpatel@apple.com> Add isClosure() predicate. This is used to add DW_AT_APPLE_block attribute.
Patch by Caroline Tice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80061 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
97be9d37d93c38bc82950e0373cd3a8d1d2aa024 26-Aug-2009 Owen Anderson <resistor@mac.com> Get rid of this horrible "benign race" by exploiting ManagedStatic to initialize
the array on its first access.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80040 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d8110fb7264993f30133c532cd074313bead0afa 26-Aug-2009 Owen Anderson <resistor@mac.com> Get rid of this horrible "benign race" by exploiting ManagedStatic to initialize
the array on its first access.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80040 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a9c16fe7d4d2b61191b362a5d073bdc95c123c0f 25-Aug-2009 David Goodwin <david_goodwin@apple.com> Fixup register kills after scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80002 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
88a589c4b39830bbeed23654521ef2f77bb87abe 25-Aug-2009 David Goodwin <david_goodwin@apple.com> Fixup register kills after scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80002 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
a75796301ee17e60daea754e30a035a53891650d 25-Aug-2009 Bill Wendling <isanbard@gmail.com> - Rename EmitCommonInformationEntry to EmitCIE.
- Rename EmitFunctionDescriptionEntry to EmitFDE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79981 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
7ccda0f2aadb601ce48f05c12cc153f3fcc554e6 25-Aug-2009 Bill Wendling <isanbard@gmail.com> - Rename EmitCommonInformationEntry to EmitCIE.
- Rename EmitFunctionDescriptionEntry to EmitFDE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79981 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
57b83c78f56324e3a8ff636b311235f6f2350b4e 25-Aug-2009 Devang Patel <dpatel@apple.com> Update DebugInfo interface to use metadata, instead of special named llvm.dbg.... global variables, to encode debugging information in llvm IR. This is mostly a mechanical change that tests metadata support very well.

This change speeds up llvm-gcc by more then 6% at "-O0 -g" (measured by compiling InstructionCombining.cpp!)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79977 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
2a610c7387664bc557a35ce3bb4c0d4df56e4755 25-Aug-2009 Devang Patel <dpatel@apple.com> Update DebugInfo interface to use metadata, instead of special named llvm.dbg.... global variables, to encode debugging information in llvm IR. This is mostly a mechanical change that tests metadata support very well.

This change speeds up llvm-gcc by more then 6% at "-O0 -g" (measured by compiling InstructionCombining.cpp!)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79977 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
bcc93309ca3632b3cd2b45f265a534256be7589a 25-Aug-2009 Bill Wendling <isanbard@gmail.com> - Emit new line after each FDE.
- Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79971 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
4bda11fbdafc1d4fa97b7539bdf5a0f62ecfc280 25-Aug-2009 Bill Wendling <isanbard@gmail.com> - Emit new line after each FDE.
- Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79971 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
4767b24840250630c47fee8be2a6aef07f19d30a 25-Aug-2009 Bill Wendling <isanbard@gmail.com> Rename functions to something more descriptive. At the very least mention the
CIE and FDE in their names.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79969 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
a6f91da8b2500259828412de919393fca206cf29 25-Aug-2009 Bill Wendling <isanbard@gmail.com> Rename functions to something more descriptive. At the very least mention the
CIE and FDE in their names.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79969 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
f537768f6dfcdf5f06696b0383e292cbe3c6fec1 24-Aug-2009 Chris Lattner <sabre@nondot.org> prune the #includes in raw_ostream.h by moving a
member out of line. ftostr is not particularly speedy,
so that method is presumably not perf sensitive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79885 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
23132b188ba651ba172380cd082cc286df73d440 24-Aug-2009 Chris Lattner <sabre@nondot.org> prune the #includes in raw_ostream.h by moving a
member out of line. ftostr is not particularly speedy,
so that method is presumably not perf sensitive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79885 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
8755dee89ba6ae78f867a5f117212b569c2681fb 24-Aug-2009 Chris Lattner <sabre@nondot.org> remove the last uses of Config/alloca.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79873 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
dbe89cd2f019c23f41fe6471b8bfe0b45cc1c1ce 24-Aug-2009 Chris Lattner <sabre@nondot.org> remove the last uses of Config/alloca.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79873 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
b1aa85bcfad6245bed0a0c43adcca9efb51fcf79 24-Aug-2009 Chris Lattner <sabre@nondot.org> Prune #includes from llvm/Linker.h and llvm/System/Path.h,
forcing them down into various .cpp files.

This change also:
1. Renames TimeValue::toString() and Path::toString() to ::str()
for similarity with the STL.
2. Removes all stream insertion support for sys::Path, forcing
clients to call .str().
3. Removes a use of Config/alloca.h from bugpoint, using smallvector
instead.
4. Weans llvm-db off <iostream>

sys::Path really needs to be gutted, but I don't have the desire to
do it at this point.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79869 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
74382b7c699120fbec5cb5603c9cf4212eb37f06 24-Aug-2009 Chris Lattner <sabre@nondot.org> Prune #includes from llvm/Linker.h and llvm/System/Path.h,
forcing them down into various .cpp files.

This change also:
1. Renames TimeValue::toString() and Path::toString() to ::str()
for similarity with the STL.
2. Removes all stream insertion support for sys::Path, forcing
clients to call .str().
3. Removes a use of Config/alloca.h from bugpoint, using smallvector
instead.
4. Weans llvm-db off <iostream>

sys::Path really needs to be gutted, but I don't have the desire to
do it at this point.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79869 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
165b4dfeba7c1b0e7d3ca0ef71c276f585fee79f 23-Aug-2009 Jim Grosbach <grosbach@apple.com> SJLJ pass needs to punt if there's no personality function available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79858 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
a235d13217ff14621a88f3ea96a8a3b980c56d02 23-Aug-2009 Jim Grosbach <grosbach@apple.com> SJLJ pass needs to punt if there's no personality function available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79858 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
bf1c25570b611624388de2c71ed59ece5050e14c 23-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR4753.

When undoing a reuse in ReuseInfo::GetRegForReload, check if it was only a
sub-register being used. The MachineOperand::getSubReg() method is only valid
for virtual registers, so we have to recover the sub-register index manually.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79855 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
46ff969ca6e42e354c29328877810b0f7f373af0 23-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix PR4753.

When undoing a reuse in ReuseInfo::GetRegForReload, check if it was only a
sub-register being used. The MachineOperand::getSubReg() method is only valid
for virtual registers, so we have to recover the sub-register index manually.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79855 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
0588d2da0980b653e2862e8742e0fa7923b9f170 23-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Kill off more cerr/cout uses and prune includes a bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79852 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
irtRegRewriter.cpp
irtRegRewriter.h
cfa6ec92e61a1ab040c2b79db5de3a39df732ff6 23-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Kill off more cerr/cout uses and prune includes a bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79852 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
irtRegRewriter.cpp
irtRegRewriter.h
33b2663488b0f8f188c1a6003faabd5ee89f7749 23-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix some refactos for iostream changes (in -Asserts mode).
- The world needs better C++ refactoring tools, can I get an Amen!?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79843 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGPrinter.cpp
43ed267db3512823a9698f810be4e64bee227270 23-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix some refactos for iostream changes (in -Asserts mode).
- The world needs better C++ refactoring tools, can I get an Amen!?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79843 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGPrinter.cpp
5febcae0d24fc09d90564a46e23645b2443f4304 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove some uses of llvm/Support/Streams.h



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79842 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineModuleInfo.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
irtRegMap.h
d9ea85ab01fb0f2929ed50223d3758dceea8bcbd 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove some uses of llvm/Support/Streams.h



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79842 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineModuleInfo.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
irtRegMap.h
bf9d76de710117c29a70a3cd18aca0254064aa68 23-Aug-2009 Chris Lattner <sabre@nondot.org> convert LoopInfo.h and GraphWriter.h to use raw_ostream


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79836 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ostRASchedulerList.cpp
103289e9383ad1eb66caf28c9b166aebce963a35 23-Aug-2009 Chris Lattner <sabre@nondot.org> convert LoopInfo.h and GraphWriter.h to use raw_ostream


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79836 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ostRASchedulerList.cpp
36eef827f1576cb240418a78e2323863ef6b4f8c 23-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate uses of cerr()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
4437ae213d5435390f0750213b53ec807c047f22 23-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate uses of cerr()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
2b40c564224cda719903f8f552caefd285716632 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove a few DOUTs here and there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79832 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
bbbfa99d3d18fe9f20265305e833666645ada528 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove a few DOUTs here and there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79832 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
397f4560780d34da0bd1e4c9b9101c6f0774e8ff 23-Aug-2009 Chris Lattner <sabre@nondot.org> Change Pass::print to take a raw ostream instead of std::ostream,
update all code that this affects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79830 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
CStrategy.cpp
ntrinsicLowering.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
achineDominators.cpp
reAllocSplitting.cpp
electionDAG/CallingConvLower.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
45cfe545ec8177262dabc70580ce05feaa1c3880 23-Aug-2009 Chris Lattner <sabre@nondot.org> Change Pass::print to take a raw ostream instead of std::ostream,
update all code that this affects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79830 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
CStrategy.cpp
ntrinsicLowering.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
achineDominators.cpp
reAllocSplitting.cpp
electionDAG/CallingConvLower.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
a7a9daa051617d5d01fdeaa84585cba498e1c96e 23-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate the std::ostream form of WriteAsOperand and update clients.
This also updates dominator related stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79825 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
791102fb1192ac9483274e54cbc42480c9b1af10 23-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate the std::ostream form of WriteAsOperand and update clients.
This also updates dominator related stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79825 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
8a6411ca14e6216192ccddb18c5196a26e98e1b3 23-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate the "Value" printing methods that print to a std::ostream.
This required converting a bunch of stuff off DOUT and other cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79819 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
bdff548e4dd577a72094d57b282de4e765643b96 23-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate the "Value" printing methods that print to a std::ostream.
This required converting a bunch of stuff off DOUT and other cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79819 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
15be26734a1ce01943f61fbfdac489a197da6a23 23-Aug-2009 Chris Lattner <sabre@nondot.org> shoot a few more std::ostream print methods in the head.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79814 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveStackAnalysis.cpp
c02497f5bae87e71fd5617db5751cb0b3a14bbed 23-Aug-2009 Chris Lattner <sabre@nondot.org> shoot a few more std::ostream print methods in the head.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79814 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveStackAnalysis.cpp
d71b0b0bc402d151d7ea364cad32ad44ac7fbee2 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove various std::ostream version of printing methods from
MachineInstr and MachineOperand. This required eliminating a
bunch of stuff that was using DOUT, I hope that bill doesn't
mind me stealing his fun. ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79813 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
achineVerifier.cpp
705e07f578e2b3af47ddab610feb4e7f2d3063a5 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove various std::ostream version of printing methods from
MachineInstr and MachineOperand. This required eliminating a
bunch of stuff that was using DOUT, I hope that bill doesn't
mind me stealing his fun. ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79813 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
achineVerifier.cpp
620add5fb26e130107a36e7140c70fb66ae63e7c 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove some DOUTs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79812 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
irtRegRewriter.cpp
6456d3868d63a093b70ad522951f94b138389690 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove some DOUTs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79812 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
irtRegRewriter.cpp
0bde4e303451efeaf102dc61ed5e746e87b0e031 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove std::ostream versions of printing stuff for MBB and MF,
upgrading a few things to use raw_ostream


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79811 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
LVMTargetMachine.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineSink.cpp
achineVerifier.cpp
cf143a4d917699f8f4202f331fa9e184070471fb 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove std::ostream versions of printing stuff for MBB and MF,
upgrading a few things to use raw_ostream


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79811 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
LVMTargetMachine.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineSink.cpp
achineVerifier.cpp
fdcd46e28ab0cc3eb975d6017ca77395214e8ad5 23-Aug-2009 Chris Lattner <sabre@nondot.org> Change raw_fd_ostream to take flags as an optional bitmask
instead of as two bools. Use this to add a F_Append flag
which has the obvious behavior.

Other unrelated changes conflated into this patch:

1. REmove EH stuff from llvm-dis and llvm-as, the try blocks
are dead.
2. Simplify the filename inference code in llvm-as/llvm-dis,
because raw_fd_ostream does the right thing with '-'.
3. Switch machine verifier to use raw_ostream instead of ostream
(Which is the thing that needed append in the first place).




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79807 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
17e9edc4a7bbeadf756494cf39fcacc9eff72202 23-Aug-2009 Chris Lattner <sabre@nondot.org> Change raw_fd_ostream to take flags as an optional bitmask
instead of as two bools. Use this to add a F_Append flag
which has the obvious behavior.

Other unrelated changes conflated into this patch:

1. REmove EH stuff from llvm-dis and llvm-as, the try blocks
are dead.
2. Simplify the filename inference code in llvm-as/llvm-dis,
because raw_fd_ostream does the right thing with '-'.
3. Switch machine verifier to use raw_ostream instead of ostream
(Which is the thing that needed append in the first place).




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79807 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
d739775da8ba6a9b9b79c05b44d2efaab0ffab29 23-Aug-2009 Chris Lattner <sabre@nondot.org> convert some stuff to work on raw_ostreams instead of std::ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79803 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
d74c556e9aaad81a188158b7ba12d7ccffb30936 23-Aug-2009 Chris Lattner <sabre@nondot.org> convert some stuff to work on raw_ostreams instead of std::ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79803 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
74c5255224ffdc1c3b4bc21a5caa8849562a5871 23-Aug-2009 Chris Lattner <sabre@nondot.org> fix a gone file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79802 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
19ef66968965f829336f4dc01fec05bfa72712c3 23-Aug-2009 Chris Lattner <sabre@nondot.org> fix a gone file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79802 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
0c08a932968f2f6c85e06cde043e675b57500f11 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove some dead print method variants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79801 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
372fefe8d24e40df2390fffeea0dc2dec611f88b 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove some dead print method variants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79801 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
1514e998df9eca5b6dab7552e247197ba69f4187 23-Aug-2009 Chris Lattner <sabre@nondot.org> convert the DIE printing stuff to use raw_ostream instead of std::ostream.
Tweak #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79800 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfLabel.cpp
smPrinter/DwarfLabel.h
b01acfae5bf66d82eda7c12c473e5a51831f9382 23-Aug-2009 Chris Lattner <sabre@nondot.org> convert the DIE printing stuff to use raw_ostream instead of std::ostream.
Tweak #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79800 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfLabel.cpp
smPrinter/DwarfLabel.h
ed1da1af983817b39047ad64aa5953fc181d3566 23-Aug-2009 Chris Lattner <sabre@nondot.org> random code cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79798 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
623dd141b4c09b29de2c52d55328a787205d9340 23-Aug-2009 Chris Lattner <sabre@nondot.org> random code cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79798 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ebb8c086555e9a820d4fbc0bc6f257decee8b56d 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove some random indentation stuff, yay for efficiency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79797 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
c281de1d8485b5ec64f4b330b541f91d1ee86c37 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove some random indentation stuff, yay for efficiency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79797 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
b3fff70ff7fea177af2d704fd005974c2be79fdc 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove dead PrefixPrinter class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79796 91177308-0d34-0410-b5e6-96231b3b80d8
ump.cpp
achineBasicBlock.cpp
achineFunction.cpp
2d8e3d20be377112999670f210200b3658762571 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove dead PrefixPrinter class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79796 91177308-0d34-0410-b5e6-96231b3b80d8
ump.cpp
achineBasicBlock.cpp
achineFunction.cpp
fbbb9397cf0be41dc19b962d32285d27d18bb066 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove a dead class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79795 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
77942d4ee47e76626d574b027e4b9c5c90e2bbf4 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove a dead class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79795 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
50777b42052c6e44def11d124a5e75ffee18a331 23-Aug-2009 Chris Lattner <sabre@nondot.org> random cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79794 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
6371ed5e2b29434796333e487e6d14cf16306b4c 23-Aug-2009 Chris Lattner <sabre@nondot.org> random cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79794 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
a719605589c78aeb0b790709cfa3ef811d544d0d 23-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Add check for completeness. Note that this doesn't actually have any
effect with the way the current code is structured.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79792 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5aba5c0e882fca505e3e0fc784c37a85babb872e 23-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Add check for completeness. Note that this doesn't actually have any
effect with the way the current code is structured.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79792 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a5ef4d36198b2b591b592c595978ed7d3ac96a18 22-Aug-2009 Chris Lattner <sabre@nondot.org> rename TAI -> MAI, being careful not to make MAILJMP instructions :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79777 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/OcamlGCPrinter.cpp
LFWriter.cpp
LFWriter.h
CMetadataPrinter.cpp
achO.h
achOCodeEmitter.cpp
achOCodeEmitter.h
achOWriter.cpp
achOWriter.h
33adcfb4d217f5f23d9bde8ba02b8e48f9605fc5 22-Aug-2009 Chris Lattner <sabre@nondot.org> rename TAI -> MAI, being careful not to make MAILJMP instructions :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79777 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/OcamlGCPrinter.cpp
LFWriter.cpp
LFWriter.h
CMetadataPrinter.cpp
achO.h
achOCodeEmitter.cpp
achOCodeEmitter.h
achOWriter.cpp
achOWriter.h
f97ae6be182c6f279e6e6fbf62df467ca71af106 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79766 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
c75e7d2a06205f6c9870624eb5e8174a2b7b1bdd 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79766 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
9ce42a5ee25f97d3837a1d9725daad689fe3e8dc 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79765 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
70357db30a84914dc5cea5dab1071904e58080e3 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79765 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
621c44d3606307a3e9e56add33539c78c0009ab9 22-Aug-2009 Chris Lattner <sabre@nondot.org> Rename TargetAsmInfo (and its subclasses) to MCAsmInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79763 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/DwarfWriter.cpp
smPrinter/OcamlGCPrinter.cpp
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
CMetadataPrinter.cpp
LVMTargetMachine.cpp
achO.h
achOCodeEmitter.cpp
achOCodeEmitter.h
achOWriter.cpp
achOWriter.h
electionDAG/TargetLowering.cpp
af76e592c7f9deff0e55c13dbb4a34f07f1c7f64 22-Aug-2009 Chris Lattner <sabre@nondot.org> Rename TargetAsmInfo (and its subclasses) to MCAsmInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79763 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/DwarfWriter.cpp
smPrinter/OcamlGCPrinter.cpp
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
CMetadataPrinter.cpp
LVMTargetMachine.cpp
achO.h
achOCodeEmitter.cpp
achOCodeEmitter.h
achOWriter.cpp
achOWriter.h
electionDAG/TargetLowering.cpp
e7ef91921ce6bc1001233bab5effde323aa48a4b 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79762 91177308-0d34-0410-b5e6-96231b3b80d8
hrinkWrapping.cpp
9c52affd374e20b212d3266050f13d87ba80e36d 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79762 91177308-0d34-0410-b5e6-96231b3b80d8
hrinkWrapping.cpp
0d5be087c5a3de5e4da453001e42d23fa330eb4a 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79760 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
960bb85b2165bd69feea3fc07d9cadd2da821c72 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79760 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
540f0b77468697fec1ab8db8f1ec254fdb9855f6 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79759 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
cbac788324da2e3c7aaf9e9959b4426b52fc88b2 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79759 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
9dcc063737b7c0620255943510a224d371f34c50 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79758 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
fbb594f351f401e9e02fb21803d4ef18c060a8db 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79758 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
7a353b22d305af4bccf98b113a6ad9e3cf40390a 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79756 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
c3115a02c55ea44daeaeda7848af43d3c49f6f06 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79756 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
7767d3fe4ba52c4fdd5df6b3f7df673405ce4c64 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79755 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
1e973aae79476d003b58dc430d81f964c2ea5853 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79755 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
c4ed8ed1d2c81445166638df30fa4c44332cd700 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79754 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
b7a89928f495da21e77bae788e3d6b1c57ecc192 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79754 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
22491a6d41be52d7a2708dfa3d5824c6d396f3db 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79753 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
0d6b1b124888e568b4dd2037a9e31dcd54e62d18 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79753 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
83c96ca9a435da56e005249deed47316269fa8bc 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79752 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8e6179fb134af929ee7c937c82d9dc1c9a104c5f 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79752 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ba5cfa3278ca247ccee651506a225246d8d043dd 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79751 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
44ff7949c73580bf2bc5d075527fc13d8b7ef6a1 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79751 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
4c1dfccaab3d5bfdba8438ed505bc060c6aa12c9 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Normalize how the 'namespace llvm {' is used in this file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79750 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
fb98a43b311dec66188b3669a0da017829833617 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Normalize how the 'namespace llvm {' is used in this file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79750 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
f20b01e2608c5247fd5bdd500bf8e837580cad95 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79749 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
b22d8df162c6ab764434f0a0d45739f3d97baec1 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79749 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
6aaba5d93725eedcce10dc61720738cf155f1c95 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79748 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
9311a2283091f194f5b40490f3419cb0767a861d 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79748 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
ef26d40be2bf9dd56d7bacfb14c6866ef29515a9 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79747 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
3403bcd8f943cb053a7d9bbf8eb8135407699afa 22-Aug-2009 Bill Wendling <isanbard@gmail.com> Convert DOUT to DEBUG(errs()...).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79747 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
c3d25a1ce7c6718d6304464aacb2005c1ae99de7 22-Aug-2009 Devang Patel <dpatel@apple.com> Record variable debug info at ISel time directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79742 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
rologEpilogInserter.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
24f20e083280d979e8fa1bc88959ae9e8339ee99 22-Aug-2009 Devang Patel <dpatel@apple.com> Record variable debug info at ISel time directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79742 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfWriter.cpp
rologEpilogInserter.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
1a285c21708d469a799ba3d59292b8d23a137bb9 22-Aug-2009 Owen Anderson <resistor@mac.com> Reapply r79708 with the appropriate fix for the case that still requires locking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79731 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
02b10347bb2497e18d3a4019beed2974aa715cd4 22-Aug-2009 Owen Anderson <resistor@mac.com> Reapply r79708 with the appropriate fix for the case that still requires locking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79731 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
28ab49bc9e73b5f8267b8fafc6f03de9c740f775 22-Aug-2009 Chris Lattner <sabre@nondot.org> revert r79708 + r79711


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79720 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
895a55e66d107aa96a1e763a62a97e8ad62284a0 22-Aug-2009 Chris Lattner <sabre@nondot.org> revert r79708 + r79711


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79720 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b48b4e26e91c039464b8dd91847aa58b64cc4cb0 22-Aug-2009 Eric Christopher <echristo@apple.com> Actually remove unused static. Previous commit removed trailing
whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79711 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8dde7c0ff1a568a0739ff7581464c31dbc063527 22-Aug-2009 Eric Christopher <echristo@apple.com> Actually remove unused static. Previous commit removed trailing
whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79711 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
440d9eb4e03c42ede30b2e4e5e4b2b5c126f4aff 22-Aug-2009 Eric Christopher <echristo@apple.com> Remove unused static.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79710 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4d7c18c49bdc6e39ea6e862072ec224de499a2a1 22-Aug-2009 Eric Christopher <echristo@apple.com> Remove unused static.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79710 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b08876f050758a11800831e3e4b61c86de3852b5 22-Aug-2009 Owen Anderson <resistor@mac.com> Ease contention on this lock by noticing that all writes to the VTs array will
be of (dynamically) constant values, so races on it are immaterial. We just need
to ensure that at least one write has completed before return the pointer into it.

With this change, parllc exhibits essentially no overhead on 403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79708 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0b7401d3cdb4a2ecd266396ef1a77c8533a4476d 22-Aug-2009 Owen Anderson <resistor@mac.com> Ease contention on this lock by noticing that all writes to the VTs array will
be of (dynamically) constant values, so races on it are immaterial. We just need
to ensure that at least one write has completed before return the pointer into it.

With this change, parllc exhibits essentially no overhead on 403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79708 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
370c21dacb4b4569e172f89e1b1b272cddf4c038 21-Aug-2009 Bill Wendling <isanbard@gmail.com> Fix typo. Should check both values of RangeUse for 0. Patch by Marius Wachtler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79649 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
636e258a53b20695e841a70774f42c052c4c0bfd 21-Aug-2009 Bill Wendling <isanbard@gmail.com> Fix typo. Should check both values of RangeUse for 0. Patch by Marius Wachtler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79649 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
16f275c399a2ed9334e241984515e0ed9fd17334 21-Aug-2009 Bill Wendling <isanbard@gmail.com> Attempt to comment this code more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79567 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
a583c55864e83e470333b7be878280b10e175a6e 21-Aug-2009 Bill Wendling <isanbard@gmail.com> Attempt to comment this code more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79567 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
7639931caca9a8e11b477ced232c32b71cb64db8 20-Aug-2009 Daniel Dunbar <daniel@zuster.org> Suppress build warning in -Asserts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79564 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
bc84ad95b7a4e453f6dd91f535abd7ef9ddc1773 20-Aug-2009 Daniel Dunbar <daniel@zuster.org> Suppress build warning in -Asserts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79564 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
b882721ed44ad2150b7bc690c09adf217add8070 20-Aug-2009 Jim Grosbach <grosbach@apple.com> Check for shared landing pads when assigning call site values. Invokes which
share a landing pad should also use the same call site value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79501 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
8fc3b6903ac555e21d6c64c34f9815781e68c88b 20-Aug-2009 Jim Grosbach <grosbach@apple.com> Check for shared landing pads when assigning call site values. Invokes which
share a landing pad should also use the same call site value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79501 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
44662aa3907e309a8ef3e52a3324aecf44af753b 20-Aug-2009 David Greene <greened@obbligato.org> Add missing forward declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79481 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.h
5f3aeac9a7a258bc020d1db22a39972acec5d549 20-Aug-2009 David Greene <greened@obbligato.org> Add missing forward declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79481 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.h
b214eb923422fa6850fba5e7c36a3482a4ffb871 20-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79480 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
098612b0e8b864d6db82bb10b633d630cccd8562 20-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79480 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
5358561c3dbf74549650fa6e22ee0d07f9e19980 20-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79479 91177308-0d34-0410-b5e6-96231b3b80d8
achOCodeEmitter.cpp
43c76fbba286a17c7ea5c376211e22d58e7bfc7b 20-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79479 91177308-0d34-0410-b5e6-96231b3b80d8
achOCodeEmitter.cpp
119a8c9899e750d6185092b3118c5ba7994b51e4 20-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79478 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
2a711e36da2aa7d3e0a493297651745a38c4dce2 20-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79478 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
b9e5913544efc3b330e9e2de11c0b3110ba33e93 20-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79476 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
0d036d2e81c03d88c6460aa772fc7b9bcbaa54a2 20-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79476 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
18938f9bdbeb5353b354057ca39c4216093ccedc 19-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79475 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
eea1f4cdb7e2ba6d5d07a6b5f11fce215064cc8c 19-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79475 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
bb993c796f05205a5ce8473fc8a75f95c2567590 19-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79474 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
fc4da0cea8a0f6c9c1483b92c2dffda217c0ba24 19-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79474 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
d87baff44c679d26b13ef2dc2621a1ff84f98b6f 19-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79473 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b2c66fc322f62779f08e83e5253f383ae219bf78 19-Aug-2009 David Greene <greened@obbligato.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79473 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
768e97ddbde973fa68b12aecc0e0935e7f37dc2c 19-Aug-2009 Daniel Dunbar <daniel@zuster.org> Switch to SmallString::str from SmallString::c_str, and remove
SmallString::c_str.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79456 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
dddfd34e32ff081409e5a1c95b991a898d63dff2 19-Aug-2009 Daniel Dunbar <daniel@zuster.org> Switch to SmallString::str from SmallString::c_str, and remove
SmallString::c_str.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79456 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
7ffdd43aca7b74e449b88905738ac5815005071c 19-Aug-2009 Dan Gohman <gohman@apple.com> Add an x86 peep that narrows TEST instructions to forms that use
a smaller encoding. These kinds of patterns are very frequent in
sqlite3, for example.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79439 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6a402dc952ccad3f8fd0d9e272dbdd261f50854e 19-Aug-2009 Dan Gohman <gohman@apple.com> Add an x86 peep that narrows TEST instructions to forms that use
a smaller encoding. These kinds of patterns are very frequent in
sqlite3, for example.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79439 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5c6eabba721e46860a318447cc227e3a50bbd0db 19-Aug-2009 David Goodwin <david_goodwin@apple.com> Use the schedule itinerary operand use/def cycle information to adjust dependence edge latency for post-RA scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79425 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ScheduleDAGSDNodes.cpp
dc4bdcdef1c8dd1a28b82deb08df039e5c0ffc5a 19-Aug-2009 David Goodwin <david_goodwin@apple.com> Use the schedule itinerary operand use/def cycle information to adjust dependence edge latency for post-RA scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79425 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ScheduleDAGSDNodes.cpp
67ebebabfb0a1879a297abbcd979dee1065111c6 19-Aug-2009 Eli Friedman <eli.friedman@gmail.com> PR4737: Fix a nasty bug in load narrowing with non-power-of-two types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d68eea2b6d5ff284d3c7371c4f201c25ca030747 19-Aug-2009 Eli Friedman <eli.friedman@gmail.com> PR4737: Fix a nasty bug in load narrowing with non-power-of-two types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4891d148a4bb33d2de1a76ca7cc660a4918dc5df 19-Aug-2009 Chris Lattner <sabre@nondot.org> switch asmprinter to emit alignments through OutStreamer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79406 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
663c2d2580e6e9b2435785c7e5a2de18758860a3 19-Aug-2009 Chris Lattner <sabre@nondot.org> switch asmprinter to emit alignments through OutStreamer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79406 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
73266f9a953d9cb0833df1208c455725f5adf2ef 19-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate AsmPrinter::SwitchToSection and just have clients
talk to the MCStreamer directly instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79405 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/OcamlGCPrinter.cpp
6c2f9e14fdf14d8c1c687c6bd9918183fa7f8a7f 19-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate AsmPrinter::SwitchToSection and just have clients
talk to the MCStreamer directly instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79405 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfException.cpp
smPrinter/OcamlGCPrinter.cpp
d51a13fe57568744940c71042dcf191d18729c27 19-Aug-2009 Lang Hames <lhames@gmail.com> Added an option to have the PBQP allocator attempt coalescing during allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79397 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
8481e3b368444386d5be5b74cd1e0ba6f858d983 19-Aug-2009 Lang Hames <lhames@gmail.com> Added an option to have the PBQP allocator attempt coalescing during allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79397 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
1bc9cd58ffa9e34acc8c8c46715ce4c90d2e894c 19-Aug-2009 Dan Gohman <gohman@apple.com> Be tidy and use a break to exit from a switch block rather than
just falling through the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2c9489d6e96d99f77b6c31919805b5e61954deb2 19-Aug-2009 Dan Gohman <gohman@apple.com> Be tidy and use a break to exit from a switch block rather than
just falling through the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d97b83c65f677d7ac5c28adb430a7a3d7462561c 19-Aug-2009 Dan Gohman <gohman@apple.com> Legalize the shift amount operand of SRL_PARTS, SHL_PARTS, and
SRA_PARTS, as is done for SRL, SHL, and SRA.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
db8dc2b9faf346fbfa04c07f501981250948f5e2 19-Aug-2009 Dan Gohman <gohman@apple.com> Legalize the shift amount operand of SRL_PARTS, SHL_PARTS, and
SRA_PARTS, as is done for SRL, SHL, and SRA.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
65c8d8e8831536d4d49bd1f76e21ba48c677ab05 19-Aug-2009 Lang Hames <lhames@gmail.com> Changes DOUT references in the PBQP allocator to use DEBUG(errs() ...)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79378 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
233fd9cea04468d71ae44031df3f2c8d1c3299a7 19-Aug-2009 Lang Hames <lhames@gmail.com> Changes DOUT references in the PBQP allocator to use DEBUG(errs() ...)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79378 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
a793115a75b24b6b59de79d12b331a4829c6b9e2 18-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify RegScavenger::FindUnusedReg.

- Drop the Candidates argument and fix all callers. Now that RegScavenger
tracks available registers accurately, there is no need to restict the
search.
- Make sure that no aliases of the found register are in use. This was a potential bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79369 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
c0823fe7c679ca8f7d1667a310c2fca97b9402d5 18-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify RegScavenger::FindUnusedReg.

- Drop the Candidates argument and fix all callers. Now that RegScavenger
tracks available registers accurately, there is no need to restict the
search.
- Make sure that no aliases of the found register are in use. This was a potential bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79369 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
066ed6a19998f933d53d79d7a67390cfa2907065 18-Aug-2009 David Greene <greened@obbligato.org> Make various changes suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79358 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
fe37ab335be5632eab561d49984c95cb06b946d4 18-Aug-2009 David Greene <greened@obbligato.org> Make various changes suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79358 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2c3026df5ac39a51016de56a1c80812455747c4a 18-Aug-2009 Chris Lattner <sabre@nondot.org> fix COFF targets (mingw/cygwin) to provide ehframe and LSDA sections


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79346 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
35c3531754c392a533921a465a22f67f7e8fb743 18-Aug-2009 Chris Lattner <sabre@nondot.org> fix COFF targets (mingw/cygwin) to provide ehframe and LSDA sections


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79346 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
1a30b666a716784bcdba2df32ec512944e8a638c 18-Aug-2009 Dan Gohman <gohman@apple.com> Make tail merging handle blocks with repeated predecessors correctly, and
remove RemoveDuplicateSuccessor, as it is no longer necessary, and because
it breaks assumptions made in
MachineBasicBlock::isOnlyReachableByFallthrough.

Convert test/CodeGen/X86/omit-label.ll to FileCheck and add a testcase
for PR4732.

test/CodeGen/Thumb2/thumb2-ifcvt2.ll sees a diff with this commit due to
it being bugpoint-reduced to the point where it doesn't matter what the
condition for the branch is.

Add some more interesting code to
test/CodeGen/X86/2009-08-06-branchfolder-crash.ll, which is the testcase
that originally motivated the RemoveDuplicateSuccessor code, to help
verify that the original problem isn't being re-broken.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79338 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
da65822cfc938594f8fb7840947c1eb77e057a48 18-Aug-2009 Dan Gohman <gohman@apple.com> Make tail merging handle blocks with repeated predecessors correctly, and
remove RemoveDuplicateSuccessor, as it is no longer necessary, and because
it breaks assumptions made in
MachineBasicBlock::isOnlyReachableByFallthrough.

Convert test/CodeGen/X86/omit-label.ll to FileCheck and add a testcase
for PR4732.

test/CodeGen/Thumb2/thumb2-ifcvt2.ll sees a diff with this commit due to
it being bugpoint-reduced to the point where it doesn't matter what the
condition for the branch is.

Add some more interesting code to
test/CodeGen/X86/2009-08-06-branchfolder-crash.ll, which is the testcase
that originally motivated the RemoveDuplicateSuccessor code, to help
verify that the original problem isn't being re-broken.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79338 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
d69d8ad1c3569a5cbf08e795dfc3582e75c3b9ff 18-Aug-2009 Chris Lattner <sabre@nondot.org> Make AsmStreamer maintain a notion of the current section, pushing it up from the
MCAsmStreamer. Based on this, eliminate the current section from AsmPrinter.

While I'm at it, clean up the last of the horrible "switch to null section" stuff
and add an assert. This change is in preparation for completely eliminating
asmprinter::switchtosection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79324 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
dabf07c70a5e13a4560d75667fa5c7db28921a92 18-Aug-2009 Chris Lattner <sabre@nondot.org> Make AsmStreamer maintain a notion of the current section, pushing it up from the
MCAsmStreamer. Based on this, eliminate the current section from AsmPrinter.

While I'm at it, clean up the last of the horrible "switch to null section" stuff
and add an assert. This change is in preparation for completely eliminating
asmprinter::switchtosection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79324 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2c3a75c3853a35b38796daea0bc551c51b80b3c0 18-Aug-2009 Chris Lattner <sabre@nondot.org> add a horrible hack to the dwarf printer. It looks like mingw is not specifying
an EHFrame section, so we just emit ehframe data into a random section.

This is clearly bad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79323 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
6a66e585b8242b9764ec3343309697d24bb1e312 18-Aug-2009 Chris Lattner <sabre@nondot.org> add a horrible hack to the dwarf printer. It looks like mingw is not specifying
an EHFrame section, so we just emit ehframe data into a random section.

This is clearly bad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79323 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
a59f39b8fe424ea505b4c75f476a7ac915e9d606 18-Aug-2009 Chris Lattner <sabre@nondot.org> fix another bozo bug


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79313 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
1f50fc736ea402b10286523d7d53d2b16bd5ce16 18-Aug-2009 Chris Lattner <sabre@nondot.org> fix another bozo bug


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79313 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
1378a3a41367b129594b2754dba2ee0ff20cc8be 18-Aug-2009 Chris Lattner <sabre@nondot.org> fix accidentally inverted conditional and add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79312 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
b49a30c109469361881189d65ffeed44177ed98b 18-Aug-2009 Chris Lattner <sabre@nondot.org> fix accidentally inverted conditional and add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79312 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
01303c8fb44754ffe59559017d78c6dbddcfda28 18-Aug-2009 Chris Lattner <sabre@nondot.org> turn this conditional into something humans might actually
be able to understand ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79311 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
a006d4e60df8f1f07d669ddb5b46f5044717b6e4 18-Aug-2009 Chris Lattner <sabre@nondot.org> turn this conditional into something humans might actually
be able to understand ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79311 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
0a9b7e23d54e15a4fd57dac39e40252db1546245 17-Aug-2009 Jim Grosbach <grosbach@apple.com> cleanups per review. Mostly cosmetic, plus use SmallVector in place of std::vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79287 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
606f3d696ff78211524fa49c3ca0c4de6db37041 17-Aug-2009 Jim Grosbach <grosbach@apple.com> cleanups per review. Mostly cosmetic, plus use SmallVector in place of std::vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79287 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
13ed51fec3ac63666184b6d540bc7126fa8bbfa6 17-Aug-2009 Jim Grosbach <grosbach@apple.com> Remove a bit more cruft from the sjlj moving to a backend pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79272 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
achineFunction.cpp
electionDAG/SelectionDAGBuild.cpp
29626642271ae810dd526de8afa151484452abe0 17-Aug-2009 Jim Grosbach <grosbach@apple.com> Remove a bit more cruft from the sjlj moving to a backend pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79272 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
achineFunction.cpp
electionDAG/SelectionDAGBuild.cpp
4c4411c77d56b61d28677ce9b9721ac382ce8ba1 17-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Update CMakeLists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79264 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
ae68a19ef9d16fc1d331b289b62fb7c759bfdb99 17-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Update CMakeLists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79264 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
2b731cb45fe6494421220c5745548eccec2841ea 17-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix build warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79262 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
5d17eddb0cc07c13acbb38205778db7678a65065 17-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix build warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79262 91177308-0d34-0410-b5e6-96231b3b80d8
jLjEHPrepare.cpp
3e4fab4247bd777b044ab3b5252f78610c86acd0 17-Aug-2009 Jim Grosbach <grosbach@apple.com> Move the sjlj exception handling conversions to a back-end pass where they
more properly belong. This allows removing the front-end conditionalized
SJLJ code, and cleans up the generated IR considerably. All of the
infrastructure code (calling _Unwind_SjLj_Register/Unregister, etc) is
added by the SjLjEHPrepare pass.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79250 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
LVMTargetMachine.cpp
jLjEHPrepare.cpp
8b818d7e98309125c6058c4ea72a7dc73b031db2 17-Aug-2009 Jim Grosbach <grosbach@apple.com> Move the sjlj exception handling conversions to a back-end pass where they
more properly belong. This allows removing the front-end conditionalized
SJLJ code, and cleans up the generated IR considerably. All of the
infrastructure code (calling _Unwind_SjLj_Register/Unregister, etc) is
added by the SjLjEHPrepare pass.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79250 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
LVMTargetMachine.cpp
jLjEHPrepare.cpp
e010697fb00a8d2b7f605ee97d6c8aeb283be0f3 17-Aug-2009 David Goodwin <david_goodwin@apple.com> Extend the instruction itinerary model to include the ability to indicate the def and use cycle for each operand. This additional information is optional, so existing itineraries do not need to be changed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79247 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
fac8541dd40e01aa2b52962516f9ae67c99720cc 17-Aug-2009 David Goodwin <david_goodwin@apple.com> Extend the instruction itinerary model to include the ability to indicate the def and use cycle for each operand. This additional information is optional, so existing itineraries do not need to be changed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79247 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
46148950d8ca80286b88da5dffc5fefc75239778 17-Aug-2009 Chris Lattner <sabre@nondot.org> the MinPad argument to PadToColumn only really makes sense to be 1,
just remove the argument and replace it with 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79246 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8f4b1ec02bbc72161a9bd9777a2996dae439c81e 17-Aug-2009 Chris Lattner <sabre@nondot.org> the MinPad argument to PadToColumn only really makes sense to be 1,
just remove the argument and replace it with 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79246 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2f579bdd6582504b9bd6ca6e9d267b38b85b2810 17-Aug-2009 Chris Lattner <sabre@nondot.org> change AsmPrinter to switch sections using AsmStreamer instead of
doing it directly. This requires const'izing a bunch of stuff that
took sections, but this seems like the right semantic thing to do:
emitting a label to a section shouldn't mutate the MCSection object
itself, for example.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79227 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
975780bb595b57a45a8e6d72d8151b436314ce22 17-Aug-2009 Chris Lattner <sabre@nondot.org> change AsmPrinter to switch sections using AsmStreamer instead of
doing it directly. This requires const'izing a bunch of stuff that
took sections, but this seems like the right semantic thing to do:
emitting a label to a section shouldn't mutate the MCSection object
itself, for example.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79227 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
13a4af7f6ef51a10cf4595e73aec87b6f6ea7c4f 17-Aug-2009 Chris Lattner <sabre@nondot.org> give MCAsmStreamer a TargetAsmInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79222 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f3ce009fcb0a04a245c437d86657e9bd61ecc18f 17-Aug-2009 Chris Lattner <sabre@nondot.org> give MCAsmStreamer a TargetAsmInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79222 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
932dbf43f53920d259d86d0e3195ec8f59968449 16-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace RegScavenger::DistanceMap with a simpler local algorithm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79195 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
66a39699fb6b862e674415b32d307263812e996e 16-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace RegScavenger::DistanceMap with a simpler local algorithm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79195 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
af2a076c94fe7f56637579d4ac99a7dc38db6adc 16-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up the public interface of RegScavenger.

Remove unused methods and make others private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79194 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
e689ce626ce1d0022f70fb4a85113590bbdbb5e9 16-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up the public interface of RegScavenger.

Remove unused methods and make others private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79194 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
3686358eaccd713c89f1d2abeda4f9ef73fbd702 16-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more clever about regclasses in ScheduleDAGSDNodes::EmitCopyFromReg.

If two uses of a CopyFromReg want different regclasses, first try a common
sub-class, then fall back on the copy emitted in AddRegisterOperand. There is
no need for an assert here. The cross-class joiner usually cleans up nicely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79193 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
f7e8af925cee687b94ed4b84235cf0efed75a68b 16-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more clever about regclasses in ScheduleDAGSDNodes::EmitCopyFromReg.

If two uses of a CopyFromReg want different regclasses, first try a common
sub-class, then fall back on the copy emitted in AddRegisterOperand. There is
no need for an assert here. The cross-class joiner usually cleans up nicely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79193 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
4e3d397c057e265fbd055301010139a0da8ed621 16-Aug-2009 Evan Cheng <evan.cheng@apple.com> Needs to check whether unaligned load / store of i64 is legal here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8a9d5f96a5681ffe6e48dab9c8c383e71fd82a2c 16-Aug-2009 Evan Cheng <evan.cheng@apple.com> Needs to check whether unaligned load / store of i64 is legal here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ace63a60c77432a29c522866c5f8c040263d49c3 16-Aug-2009 Bill Wendling <isanbard@gmail.com> Remove <iostream>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79146 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/HeuristicSolver.h
eb75364020aad1af558b756e4a5e2eeea91be36f 16-Aug-2009 Bill Wendling <isanbard@gmail.com> Remove <iostream>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79146 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/HeuristicSolver.h
8e8abb34c093ceec4976fca482502a00990ae25a 15-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Unbreak build. Evan, please make sure my changes are correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79133 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
bc037cfcdef8e88274d7dd167fb9d8ba545f2229 15-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Unbreak build. Evan, please make sure my changes are correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79133 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
f94139ee8fd441a76b2e74335dd2d15916a45b38 15-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Refine EarlyClobber assert in register scavenger.

It is legal for an inline asm operand to use an earlyclobber register if the
use operand is tied to the earlyclobber operand. The issue is discussed here:

http://gcc.gnu.org/ml/gcc/1999-04n/msg00431.html

We should perhaps let only the machine code verifier worry about these finer
details. EarlyClobber operands are not really interesting to the scavenger.

This fixes PR4528 for the third time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79122 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
16b794d25accbc4c5db63bb4d172049f052f0a55 15-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Refine EarlyClobber assert in register scavenger.

It is legal for an inline asm operand to use an earlyclobber register if the
use operand is tied to the earlyclobber operand. The issue is discussed here:

http://gcc.gnu.org/ml/gcc/1999-04n/msg00431.html

We should perhaps let only the machine code verifier worry about these finer
details. EarlyClobber operands are not really interesting to the scavenger.

This fixes PR4528 for the third time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79122 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
2f4cc1d88ab57c00619bda6ad4bd2208aef9fbf6 15-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't setCalleeSavedInfoValid() until spills are interted.

In a naked function, the flag is never set and getPristineRegs() returns an
empty list. That means naked functions are able to clobber callee saved
registers, but that is the whole point of naked functions.

This fixes PR4716.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79096 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
d62c9a697b53f9e754926a89126fd121220ed09b 15-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't setCalleeSavedInfoValid() until spills are interted.

In a naked function, the flag is never set and getPristineRegs() returns an
empty list. That means naked functions are able to clobber callee saved
registers, but that is the whole point of naked functions.

This fixes PR4716.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79096 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
ca576bf84583264702f11643e23c2eca876df3e0 15-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow double defs in the machine code verifier after the addPreRegAlloc passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79095 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
4af85b2328d432960371efeb092a70a8d9c25227 15-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow double defs in the machine code verifier after the addPreRegAlloc passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79095 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
fca82bc53828c9218f7a7030eb55075233b976ee 15-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Update LocalRewriter::DistanceMap when inserting stack loads.

In the included test case, a stack load was not included in DistanceMap. That
caused TransferDeadness to ignore the instruction, leading to a scavenger
assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79090 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
7a1e872564a65a8494412d72e15c2f48735d32ab 15-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Update LocalRewriter::DistanceMap when inserting stack loads.

In the included test case, a stack load was not included in DistanceMap. That
caused TransferDeadness to ignore the instruction, leading to a scavenger
assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79090 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
9505df6da56cc2e7bbbed44dc6f581520a6bbbcd 15-Aug-2009 Evan Cheng <evan.cheng@apple.com> 80 col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79087 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e96507c73111d88743a15db6d6329f4fbdde7dec 15-Aug-2009 Evan Cheng <evan.cheng@apple.com> 80 col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79087 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
788fabf85cc009b61c75e9959fbdc6be116b6c62 15-Aug-2009 Dan Gohman <gohman@apple.com> Simplify this code to not depend as much on CurMBB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79068 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
0d24bfbf92ee0c3fa604df6c2099f46ec9ad3a94 15-Aug-2009 Dan Gohman <gohman@apple.com> Simplify this code to not depend as much on CurMBB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79068 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
e7ff5091f9eae5b87c8d266d5889154aa3827ccf 14-Aug-2009 Devang Patel <dpatel@apple.com> Do not completely skip subrange info for a zero sized array.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79044 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6325a5305ea9665bb8291037df4849baabd13b81 14-Aug-2009 Devang Patel <dpatel@apple.com> Do not completely skip subrange info for a zero sized array.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79044 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
cdab71fbe3e03cd2481f648ce9f8ea24e3fc73a5 14-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Allow targets to specify their choice of calling conventions per
libcall. Take advantage of this in the ARM backend to rectify broken
choice of CC when hard float is in effect. PIC16 may want to see if
it could be of use in MakePIC16Libcall, which works unchanged.

Patch by Sandeep!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79033 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
72977a45a8ad9d9524c9b49399e89fb9a3a676ed 14-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Allow targets to specify their choice of calling conventions per
libcall. Take advantage of this in the ARM backend to rectify broken
choice of CC when hard float is in effect. PIC16 may want to see if
it could be of use in MakePIC16Libcall, which works unchanged.

Patch by Sandeep!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79033 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
6c1789cb271d1ad2824855b131cdc31c9a1d74c8 14-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> *try* to use a better name to describe how common symbols are marked on the elf object file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79029 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
abd7514a68b0687f00d9df73cf5c79cb61ff08b6 14-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> *try* to use a better name to describe how common symbols are marked on the elf object file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79029 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
c92710a33f2478df2572b966e0cc128c2290be1e 14-Aug-2009 Daniel Dunbar <daniel@zuster.org> Add virtual printMCInst method to AsmPrinter, as a quick way to expose the API
to print one instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78985 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
575327b77e9092074e5d18bfebfb78ce550aa2a3 14-Aug-2009 Daniel Dunbar <daniel@zuster.org> Add virtual printMCInst method to AsmPrinter, as a quick way to expose the API
to print one instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78985 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
83a83d4cca16132415a22d99c6be5ae76fc0a8f9 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> Indentation change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78978 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
7cefd80bd52f239dbb002abdc1c4a7a5f76dd47e 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> Indentation change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78978 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
4cb6365d45ad16a1d287e04956263ceaba97206b 14-Aug-2009 Daniel Dunbar <daniel@zuster.org> TargetRegistry: Change AsmPrinter constructor to be typed as returning an
AsmPrinter instance (instead of just a FunctionPass)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78962 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
789457847002f5289dbbc5cfce9d68c72e00bed1 14-Aug-2009 Daniel Dunbar <daniel@zuster.org> TargetRegistry: Change AsmPrinter constructor to be typed as returning an
AsmPrinter instance (instead of just a FunctionPass)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78962 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
02f7bd5a38a6712f438cbee3cbcf7ef0b1f0618d 14-Aug-2009 Owen Anderson <resistor@mac.com> Actually privatize a IntegerTypes, and fix a few bugs exposed by this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78955 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
0e275dc53880a7f14f8b8c83cc6e0290a215492d 14-Aug-2009 Owen Anderson <resistor@mac.com> Actually privatize a IntegerTypes, and fix a few bugs exposed by this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78955 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
35b4707edb32008b1a7976dcbf3920b1160fc1c6 13-Aug-2009 Owen Anderson <resistor@mac.com> Push LLVMContexts through the IntegerType APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78948 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
warfEHPrepare.cpp
LFWriter.cpp
ntrinsicLowering.cpp
achineFunction.cpp
achineInstr.cpp
seudoSourceValue.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
hadowStackGC.cpp
tackProtector.cpp
1d0be15f89cb5056e20e2d24faa8d6afb1573bca 13-Aug-2009 Owen Anderson <resistor@mac.com> Push LLVMContexts through the IntegerType APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78948 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
warfEHPrepare.cpp
LFWriter.cpp
ntrinsicLowering.cpp
achineFunction.cpp
achineInstr.cpp
seudoSourceValue.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
hadowStackGC.cpp
tackProtector.cpp
dfa78d19236fe2c33733c916f45d25ba46e0773f 13-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove hack used to strip unwanted chars from section name
Use MCSectionELF methods as much as possible, removing some
ELFWriter methods which are now unused



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78940 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
d163e8b14c8aa5bbbb129e3f0dffdbe7213a3c72 13-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove hack used to strip unwanted chars from section name
Use MCSectionELF methods as much as possible, removing some
ELFWriter methods which are now unused



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78940 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
ef5abb43c2b98118d24f587d2aa9d6448466df72 13-Aug-2009 Daniel Dunbar <daniel@zuster.org> TargetRegistry: Reorganize AsmPrinter construction so that clients pass in the
TargetAsmInfo. This eliminates a dependency on TargetMachine.h from
TargetRegistry.h, which technically was a layering violation.
- Clients probably can only sensibly pass in the same TargetAsmInfo as the
TargetMachine has, but there are only limited clients of this API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78928 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
67d894ea64bc52245abf3f2ba89122a749d99c53 13-Aug-2009 Daniel Dunbar <daniel@zuster.org> TargetRegistry: Reorganize AsmPrinter construction so that clients pass in the
TargetAsmInfo. This eliminates a dependency on TargetMachine.h from
TargetRegistry.h, which technically was a layering violation.
- Clients probably can only sensibly pass in the same TargetAsmInfo as the
TargetMachine has, but there are only limited clients of this API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78928 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
800920825ed79c45ed608e0f708b268fac49a43f 13-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Track pristine registers as if they were live-in in the register scavenger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78913 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
06789e23d1aa0bcd935a3fba3eff0ec8a35b9c01 13-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Track pristine registers as if they were live-in in the register scavenger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78913 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
ca418873717a5e4df1db7389e0c6e6aeb67476fe 13-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Use pristine register info in machine code verifier.

So far these registers are simply tracked as if they were live-in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78912 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
a6b677d209013d82b03fa8da937296b6faae7de0 13-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Use pristine register info in machine code verifier.

So far these registers are simply tracked as if they were live-in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78912 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
e7b072a2fd07af722e2d9975bde84c8bbf51a9d3 13-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineFrameInfo::getPristineRegisters(MBB) method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78911 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
4a0f08c5fc14d840e4e411fade036f1cd815b795 13-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineFrameInfo::getPristineRegisters(MBB) method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78911 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
88c6f889620a5d749e86df844da667f5d91e717b 13-Aug-2009 David Goodwin <david_goodwin@apple.com> Add callback to allow target to adjust latency of schedule dependency edge.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78910 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
710461688bba935f0ad5c75da7fec2ad0f225c00 13-Aug-2009 David Goodwin <david_goodwin@apple.com> Add callback to allow target to adjust latency of schedule dependency edge.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78910 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
26d7ecd5f45419ebe39e07188218c00c0ab3a916 13-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Change MCSectionELF to represent a section semantically instead of
syntactically as a string, very similiar to what Chris did with MachO.
The parsing support and validation is not introduced yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78890 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
b808588a3a5febe931896b3779d159ba90d836f7 13-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Change MCSectionELF to represent a section semantically instead of
syntactically as a string, very similiar to what Chris did with MachO.
The parsing support and validation is not introduced yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78890 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
2aa282f4941f44996dc3e56f658a7a932dfb6531 13-Aug-2009 Dan Gohman <gohman@apple.com> Various AsmWriter output cleanups. Use WriteAsOperand instead of
PrintUnmangledNameSafely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78878 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cf20ac4fd12ea3510a8f32a24fff69eebe7b6f4a 13-Aug-2009 Dan Gohman <gohman@apple.com> Various AsmWriter output cleanups. Use WriteAsOperand instead of
PrintUnmangledNameSafely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78878 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
745d9d3b20414f44393b9b80f4edd87080d250c5 12-Aug-2009 David Goodwin <david_goodwin@apple.com> Fix counting of Post-RA scheduling stalls. Improve debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78843 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
2ffb0ce7dce2d5c243b90493807308af6fab0528 12-Aug-2009 David Goodwin <david_goodwin@apple.com> Fix counting of Post-RA scheduling stalls. Improve debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78843 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
8ee65c55dc0cdaaa3d354830187e7674258b4cbe 12-Aug-2009 Lang Hames <lhames@gmail.com> Added RegisterCoalescer to required passes for PBQP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78840 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
f7c553e993dccd7e71d1a5a45ca87f02626a17b6 12-Aug-2009 Lang Hames <lhames@gmail.com> Added RegisterCoalescer to required passes for PBQP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78840 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
5ee8d03e04279ae83e02c711dd0b7ed0bdaf8987 12-Aug-2009 Dan Gohman <gohman@apple.com> Use WriteAsOperand to print BasicBlock names.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78838 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
46d505647d255410b220d7f8134053390794683e 12-Aug-2009 Dan Gohman <gohman@apple.com> Use WriteAsOperand to print BasicBlock names.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78838 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
495af975328da9ebbe95f748105d3288468cfc0d 12-Aug-2009 Dan Gohman <gohman@apple.com> Fix a few more places to use PadToColumn instead of tabs. And fix
the basic block label printing to check whether a block has a name
before printing a comment character and whitespace for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78830 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e45da0dce0af2d6254c7db63a2fe0c3501dd3a5a 12-Aug-2009 Dan Gohman <gohman@apple.com> Fix a few more places to use PadToColumn instead of tabs. And fix
the basic block label printing to check whether a block has a name
before printing a comment character and whitespace for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78830 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
87581ebb5e7da766d971fbd25c008146932b38ad 12-Aug-2009 Dan Gohman <gohman@apple.com> Use PadToColumn instead of tabs for aligning comments. Fix one place
that emitted unnecessary whitespace outside of VerboseAsm mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78828 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a12e9d751b64767a5c41a718da2a91122d5874c4 12-Aug-2009 Dan Gohman <gohman@apple.com> Use PadToColumn instead of tabs for aligning comments. Fix one place
that emitted unnecessary whitespace outside of VerboseAsm mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78828 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4b6e4983844989b5a88421f2ac8aa54bed7de166 12-Aug-2009 David Goodwin <david_goodwin@apple.com> Enhance the InstrStage object to enable the specification of an Itinerary with overlapping stages. The default is to maintain the current behavior that the "next" stage immediately follows the previous one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78827 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
1a8f36e3ce5b9c230781b66600c81536128abfb5 12-Aug-2009 David Goodwin <david_goodwin@apple.com> Enhance the InstrStage object to enable the specification of an Itinerary with overlapping stages. The default is to maintain the current behavior that the "next" stage immediately follows the previous one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78827 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
f2d915d7810e0ceb04a207bd6c15c6542ede83e8 12-Aug-2009 Jim Grosbach <grosbach@apple.com> Add catch block handling to SjLj exception handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78817 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
bff392384ddb032c732c38ec78b91d7a25dcf467 12-Aug-2009 Jim Grosbach <grosbach@apple.com> Add catch block handling to SjLj exception handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78817 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
d88f9fd3f28cee69b0fcdca59532824d5617577e 12-Aug-2009 Chris Lattner <sabre@nondot.org> Change TargetAsmInfo to be constructed via TargetRegistry from a Target+Triple
pair instead of from a virtual method on TargetMachine. This cuts the final
ties of TargetAsmInfo to TargetMachine, meaning that MC can now use
TargetAsmInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78802 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
a7ac47cee1a0b3f4c798ecaa22ecf9d1be9c07e6 12-Aug-2009 Chris Lattner <sabre@nondot.org> Change TargetAsmInfo to be constructed via TargetRegistry from a Target+Triple
pair instead of from a virtual method on TargetMachine. This cuts the final
ties of TargetAsmInfo to TargetMachine, meaning that MC can now use
TargetAsmInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78802 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
657930c3a046738f6540107e2ba623acee2d76ea 12-Aug-2009 Dan Gohman <gohman@apple.com> This logic was accidentally inverted in r78767.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78773 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
da2775767b34a503735b78422c3558815933cc94 12-Aug-2009 Dan Gohman <gohman@apple.com> This logic was accidentally inverted in r78767.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78773 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
de75f6de8a40874a8f774c87bd9b9f68890cfe8f 12-Aug-2009 Dan Gohman <gohman@apple.com> Factor out the code for finding an available register for use
in breaking an anti-dependence into a separate function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78767 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
26255adcaa5836fafe32e5e296d81df63a0fb9c5 12-Aug-2009 Dan Gohman <gohman@apple.com> Factor out the code for finding an available register for use
in breaking an anti-dependence into a separate function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78767 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
77f4eb53ebe58e44972a4f99d8b67a91dcbfe2cb 12-Aug-2009 Owen Anderson <resistor@mac.com> Add contexts to some of the MVT APIs. No functionality change yet, just the infrastructure work needed to get the contexts to where they need to be first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78759 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
23b9b19b1a5a00faa9fce0788155c7dbfd00bfb1 12-Aug-2009 Owen Anderson <resistor@mac.com> Add contexts to some of the MVT APIs. No functionality change yet, just the infrastructure work needed to get the contexts to where they need to be first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78759 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
cae14fd2f334ef46b141a5e400fc43528f5e5b43 12-Aug-2009 Chris Lattner <sabre@nondot.org> Change the asmprinter to print the comment character before the
"inlineasmstart/end" strings so that the contents of the directive
are separate from the comment character. This lets elf targets
get #APP/#NOAPP for free even if they don't use "#" as the comment
character. This also allows hoisting the darwin stuff up to the
shared TAI class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78737 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e2b060161c92ddf60b5d020f981451e9e34a3f02 12-Aug-2009 Chris Lattner <sabre@nondot.org> Change the asmprinter to print the comment character before the
"inlineasmstart/end" strings so that the contents of the directive
are separate from the comment character. This lets elf targets
get #APP/#NOAPP for free even if they don't use "#" as the comment
character. This also allows hoisting the darwin stuff up to the
shared TAI class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78737 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
eb75972692419eee5ea85909cea17b04abeeddc6 12-Aug-2009 David Goodwin <david_goodwin@apple.com> Allow a zero cycle stage to reserve/require a FU without advancing the cycle counter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78736 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
546952fd600ddba3f1eb6d4f93ff4eb42821a962 12-Aug-2009 David Goodwin <david_goodwin@apple.com> Allow a zero cycle stage to reserve/require a FU without advancing the cycle counter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78736 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
2dd68a20cb6e307a7e46dfa363b8ba75d5072b01 11-Aug-2009 Owen Anderson <resistor@mac.com> Fix warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78725 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAG.cpp
766b5efd99c01e26f00f22d81b57d1385b3d2ab0 11-Aug-2009 Owen Anderson <resistor@mac.com> Fix warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78725 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAG.cpp
36e3a6e235ee8b21eba777686b4508f71248b869 11-Aug-2009 Owen Anderson <resistor@mac.com> Split EVT into MVT and EVT, the former representing _just_ a primitive type, while
the latter is capable of representing either a primitive or an extended type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78713 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
825b72b0571821bf2d378749f69d6c4cfb52d2f9 11-Aug-2009 Owen Anderson <resistor@mac.com> Split EVT into MVT and EVT, the former representing _just_ a primitive type, while
the latter is capable of representing either a primitive or an extended type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78713 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
3fb451e883aad740e1d1503a3acda5bde359e498 11-Aug-2009 Chris Lattner <sabre@nondot.org> "TAI::JumpTableDirective" is always null for current arm targets, simplify
the code based on this and make it fall through better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78708 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b3ac6e40d9dd3bc8157edc47004f39c8f382dc9e 11-Aug-2009 Chris Lattner <sabre@nondot.org> "TAI::JumpTableDirective" is always null for current arm targets, simplify
the code based on this and make it fall through better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78708 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
387579f3b477c8aba1ad37513006f4f5cbc6c048 11-Aug-2009 David Goodwin <david_goodwin@apple.com> Use DEBUG macro for debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78694 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
7cd0118c367314308cf94765ac12f81020a56271 11-Aug-2009 David Goodwin <david_goodwin@apple.com> Use DEBUG macro for debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78694 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
391efe0de27f008e3e3e47af958ea7851ee40842 11-Aug-2009 David Goodwin <david_goodwin@apple.com> Add some debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78687 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
c93d8373c93159c590838957b3194900caeb8a03 11-Aug-2009 David Goodwin <david_goodwin@apple.com> Add some debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78687 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
45f13d4db24058e9ad3aa3e818b12758b9d8664c 11-Aug-2009 Dan Gohman <gohman@apple.com> Tidy #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78677 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineLICM.cpp
electionDAG/SelectionDAG.cpp
ffef8acc3e3398bdd04e947c7949befdd52faf86 11-Aug-2009 Dan Gohman <gohman@apple.com> Tidy #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78677 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineLICM.cpp
electionDAG/SelectionDAG.cpp
d1e9ec57081f3b62d3595d9e3a66dd0d35fc02d4 11-Aug-2009 Dan Gohman <gohman@apple.com> Remove unnecessary throw() specifications; LLVM doesn't use exceptions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78667 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/PBQPMath.h
egAllocPBQP.cpp
00b0a243bdf2d9675bafbdb44ac3b2df768878b3 11-Aug-2009 Dan Gohman <gohman@apple.com> Remove unnecessary throw() specifications; LLVM doesn't use exceptions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78667 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/PBQPMath.h
egAllocPBQP.cpp
46a803a67e7b3157f11173e696a8e724c6af190e 11-Aug-2009 Dan Gohman <gohman@apple.com> Remove unnecessary casts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78664 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
1b2d0b83977a37cb22391dc5a7bf09de76caf0b2 11-Aug-2009 Dan Gohman <gohman@apple.com> Remove unnecessary casts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78664 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
f038e30eeed7579166cee58c258551633132880b 11-Aug-2009 Dan Gohman <gohman@apple.com> Add const qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78663 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
d443ee68847c9af65b7c387c40e9e4038e660fdf 11-Aug-2009 Dan Gohman <gohman@apple.com> Add const qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78663 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
0a3d49dc94760c871d053298f1033414cbf81893 11-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Rebuild RegScavenger::DistanceMap each time it is needed.

The register scavenger maintains a DistanceMap that maps MI pointers to their
distance from the top of the current MBB. The DistanceMap is built
incrementally in forward() and in bulk in findFirstUse(). It is used by
scavengeRegister() to determine which candidate register has the longest
unused interval.

Unfortunately the DistanceMap contents can become outdated. The first time
scavengeRegister() is called, the DistanceMap is filled to cover the MBB. If
then instructions are inserted in the MBB (as they always are following
scavengeRegister()), the recorded distances are too short. This causes bad
behaviour in the included test case where a register use /after/ the current
position is ignored because findFirstUse() thinks is is /before/ the current
position. A "using an undefined register" assertion follows promptly.

The fix is to build a fresh DistanceMap at the top of scavengeRegister(), and
discard it after use. This means that DistanceMap is no longer needed as a
RegScavenger member variable, and forward() doesn't need to update it.

The fix then discloses issue number two in the same test case: The candidate
search in scavengeRegister() finds a CSR that has been saved in the prologue,
but is currently unused. It would be both inefficient and wrong to spill such
a register in the emergency spill slot. In the present case, the emergency
slot restore is placed immediately before the normal epilogue restore, leading
to a "Redefining a live register" assertion.

Fix number two: When scavengerRegister() stumbles upon an unused register that
is overwritten later in the MBB, return that register early. It is important
to verify that the register is defined later in the MBB, otherwise it might be
an unspilled CSR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78650 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
8c54a620618a77f18af4bb5a0fb48dc741044b91 11-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Rebuild RegScavenger::DistanceMap each time it is needed.

The register scavenger maintains a DistanceMap that maps MI pointers to their
distance from the top of the current MBB. The DistanceMap is built
incrementally in forward() and in bulk in findFirstUse(). It is used by
scavengeRegister() to determine which candidate register has the longest
unused interval.

Unfortunately the DistanceMap contents can become outdated. The first time
scavengeRegister() is called, the DistanceMap is filled to cover the MBB. If
then instructions are inserted in the MBB (as they always are following
scavengeRegister()), the recorded distances are too short. This causes bad
behaviour in the included test case where a register use /after/ the current
position is ignored because findFirstUse() thinks is is /before/ the current
position. A "using an undefined register" assertion follows promptly.

The fix is to build a fresh DistanceMap at the top of scavengeRegister(), and
discard it after use. This means that DistanceMap is no longer needed as a
RegScavenger member variable, and forward() doesn't need to update it.

The fix then discloses issue number two in the same test case: The candidate
search in scavengeRegister() finds a CSR that has been saved in the prologue,
but is currently unused. It would be both inefficient and wrong to spill such
a register in the emergency spill slot. In the present case, the emergency
slot restore is placed immediately before the normal epilogue restore, leading
to a "Redefining a live register" assertion.

Fix number two: When scavengerRegister() stumbles upon an unused register that
is overwritten later in the MBB, return that register early. It is important
to verify that the register is defined later in the MBB, otherwise it might be
an unspilled CSR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78650 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
de00452af16a5462bca25fefc4700d9369572090 11-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix a -Asserts warning.
- Since the function is never called in NDEBUG mode, just dropped the DEBUG()
uses here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78649 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
d4d415a1e72dbcf4e123c2c383c9fdfc71b03f06 11-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix a -Asserts warning.
- Since the function is never called in NDEBUG mode, just dropped the DEBUG()
uses here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78649 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
0eeb45137a84aaa4dd22567dddce6bb07f487941 11-Aug-2009 David Goodwin <david_goodwin@apple.com> Replace DOUT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78634 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
ostRASchedulerList.cpp
3a5f0d444cf21e2b90d5eb965bb677c7ce098546 11-Aug-2009 David Goodwin <david_goodwin@apple.com> Replace DOUT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78634 91177308-0d34-0410-b5e6-96231b3b80d8
xactHazardRecognizer.cpp
ostRASchedulerList.cpp
29feb6a583204de0948def1d59d186e4b837ef52 11-Aug-2009 Jim Grosbach <grosbach@apple.com> SjLj based exception handling unwinding support. This patch is nasty, brutish
and short. Well, it's kinda short. Definitely nasty and brutish.

The front-end generates the register/unregister calls into the SjLj runtime,
call-site indices and landing pad dispatch. The back end fills in the LSDA
with the call-site information provided by the front end. Catch blocks are
not yet implemented.

Built on Darwin and verified no llvm-core "make check" regressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78625 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
LVMTargetMachine.cpp
achineFunction.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
1b747ad8a0694b86e8d98a8b9a05ddfe74ec0cd3 11-Aug-2009 Jim Grosbach <grosbach@apple.com> SjLj based exception handling unwinding support. This patch is nasty, brutish
and short. Well, it's kinda short. Definitely nasty and brutish.

The front-end generates the register/unregister calls into the SjLj runtime,
call-site indices and landing pad dispatch. The back end fills in the LSDA
with the call-site information provided by the front end. Catch blocks are
not yet implemented.

Built on Darwin and verified no llvm-core "make check" regressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78625 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
LVMTargetMachine.cpp
achineFunction.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
8797283758f03653bed11d91ec76d0bba28bf6f9 11-Aug-2009 Lang Hames <lhames@gmail.com> Modified VNInfo. The "copy" member is now a union which holds the copy for a register interval, or the defining register for a stack interval. Access is via getCopy/setCopy and getReg/setReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78620 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
trongPHIElimination.cpp
52c1afcaea61440950a11a4ccadac4354420d727 11-Aug-2009 Lang Hames <lhames@gmail.com> Modified VNInfo. The "copy" member is now a union which holds the copy for a register interval, or the defining register for a stack interval. Access is via getCopy/setCopy and getReg/setReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78620 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
trongPHIElimination.cpp
d546ef7f4201acea72797d80d21f50451646c589 11-Aug-2009 Dan Gohman <gohman@apple.com> Fix a bug in the DAGCombiner's handling of multiple linked
MERGE_VALUES nodes. Replacing the result values with the
operands in one MERGE_VALUES node may cause another
MERGE_VALUES node be CSE'd with the first one, and bring
its uses along, so that the first one isn't dead, as this
code expects. Fix this by iterating until the node is
really dead. This fixes PR4699.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78619 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
00edf39b3447db1b8dc0030d716ef70675f55755 11-Aug-2009 Dan Gohman <gohman@apple.com> Fix a bug in the DAGCombiner's handling of multiple linked
MERGE_VALUES nodes. Replacing the result values with the
operands in one MERGE_VALUES node may cause another
MERGE_VALUES node be CSE'd with the first one, and bring
its uses along, so that the first one isn't dead, as this
code expects. Fix this by iterating until the node is
really dead. This fixes PR4699.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78619 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3f20cb6d9679205620a4fd51d3ec9aa73bf3a508 11-Aug-2009 Dan Gohman <gohman@apple.com> Fix a bug where DAGCombine was producing an illegal ConstantFP
node after legalize, and remove the workaround code from the
ARM backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78615 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a407ca16c29b4e91ef3cf9e188ac2e3ab6920cd8 11-Aug-2009 Dan Gohman <gohman@apple.com> Fix a bug where DAGCombine was producing an illegal ConstantFP
node after legalize, and remove the workaround code from the
ARM backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78615 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ac9de036dc0e4065ee2c03419f11515a34ce505e 11-Aug-2009 Owen Anderson <resistor@mac.com> Rename MVT to EVT, in preparation for splitting SimpleValueType out into its own struct type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
e50ed30282bb5b4a9ed952580523f2dda16215ac 11-Aug-2009 Owen Anderson <resistor@mac.com> Rename MVT to EVT, in preparation for splitting SimpleValueType out into its own struct type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
5d8d5e9423a9fd05f429ae0c08f876bc675eb871 10-Aug-2009 Owen Anderson <resistor@mac.com> Remove a bunch of debugging code that was slowing PBQP down by 25% or so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78601 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
4600d179fdf132534af887f94d82d1afdbb1398a 10-Aug-2009 Owen Anderson <resistor@mac.com> Remove a bunch of debugging code that was slowing PBQP down by 25% or so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78601 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
27bfb67d9ac01e9bf33a7b105c7fe842525b7582 10-Aug-2009 Owen Anderson <resistor@mac.com> Start moving TargetLowering away from using full MVTs and towards SimpleValueType, which will simplify the privatization of IntegerType in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
77547befdc430633aaedf4130ddf17d953ed552e 10-Aug-2009 Owen Anderson <resistor@mac.com> Start moving TargetLowering away from using full MVTs and towards SimpleValueType, which will simplify the privatization of IntegerType in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
c1a090ff401564c2b00b3a5f4942fecf03cc16fe 10-Aug-2009 Dan Gohman <gohman@apple.com> Make this comment more closely reflect the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78569 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
eb1fedc62d0a3e3901d79edf40a585747dde2e1e 10-Aug-2009 Dan Gohman <gohman@apple.com> Make this comment more closely reflect the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78569 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e52fd87879c56151b6fc78b52c3aa1306f6e9af6 10-Aug-2009 David Greene <greened@obbligato.org> Add support for printing loop structure information in asm comments.
This definitely slows down asm output so put it under an -asm-exuberant
flag.

This information is useful when doing static analysis of performance
issues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78567 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b71d1b2fe2c0673005283b48be2f37c750ce367b 10-Aug-2009 David Greene <greened@obbligato.org> Add support for printing loop structure information in asm comments.
This definitely slows down asm output so put it under an -asm-exuberant
flag.

This information is useful when doing static analysis of performance
issues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78567 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5ab4fd4caaa5a1600e7cf3e89ebda14ca657f185 10-Aug-2009 David Goodwin <david_goodwin@apple.com> Post RA scheduler changes. Introduce a hazard recognizer that uses the target schedule information to accurately model the pipeline. Update the scheduler to correctly handle multi-issue targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78563 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
xactHazardRecognizer.cpp
xactHazardRecognizer.h
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
impleHazardRecognizer.h
d94a4e5d8de1145be200ff7223f98b0928462b94 10-Aug-2009 David Goodwin <david_goodwin@apple.com> Post RA scheduler changes. Introduce a hazard recognizer that uses the target schedule information to accurately model the pipeline. Update the scheduler to correctly handle multi-issue targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78563 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
xactHazardRecognizer.cpp
xactHazardRecognizer.h
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
impleHazardRecognizer.h
63c4e065432658761a1d27028fc3900949489849 10-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Move ConstantExpr handling to ResolveConstantExpr method and also
add support for PtrToInt, Add, Mul.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78552 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LFWriter.h
64a6b3941759587d5d1800580e959a2d40e7f17c 10-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Move ConstantExpr handling to ResolveConstantExpr method and also
add support for PtrToInt, Add, Mul.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78552 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LFWriter.h
26aabb95ddbfb011af2f738e8d329b079e4e889f 09-Aug-2009 Chris Lattner <sabre@nondot.org> sink the 'name' and 'isdirective' state out of MCSection into its derived classes.
This totally optimizes PIC16 sections by not having an 'isdirective' bit anymore!! ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78517 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
LFWriter.cpp
93b6db3de934a3cfca5586df25184fef4a54c500 09-Aug-2009 Chris Lattner <sabre@nondot.org> sink the 'name' and 'isdirective' state out of MCSection into its derived classes.
This totally optimizes PIC16 sections by not having an 'isdirective' bit anymore!! ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78517 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
LFWriter.cpp
d0d09fcf74cd20325acc3dcc38007c4ebc2816ff 09-Aug-2009 Chris Lattner <sabre@nondot.org> 1. Make MCSection an abstract class.
2. Move section switch printing to MCSection virtual method which takes a
TAI. This eliminates textual formatting stuff from TLOF.
3. Eliminate SwitchToSectionDirective, getSectionFlagsAsString, and
TLOFELF::AtIsCommentChar.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78510 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
892e18239308f8a02a4c83758616be84a459c19d 09-Aug-2009 Chris Lattner <sabre@nondot.org> 1. Make MCSection an abstract class.
2. Move section switch printing to MCSection virtual method which takes a
TAI. This eliminates textual formatting stuff from TLOF.
3. Eliminate SwitchToSectionDirective, getSectionFlagsAsString, and
TLOFELF::AtIsCommentChar.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78510 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a8b97f498668ebb2dc64f307f0b86240f25a2d32 08-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate TargetLoweringObjectFileSparc in favor of a TAI hook.
A TAI hook is appropriate in this case because this is just an
asm syntax issue, not a semantic difference. TLOF should model
the semantics of the section.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78498 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5277b22687d3513dd29d5a9c8510cac740f933f6 08-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate TargetLoweringObjectFileSparc in favor of a TAI hook.
A TAI hook is appropriate in this case because this is just an
asm syntax issue, not a semantic difference. TLOF should model
the semantics of the section.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78498 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4b9e0c7cc6946cfab67e08d3f484da8a4fecff17 08-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't build illegal ops in DAGCombiner::SimplifyBinOpWithSameOpcodeHands().

Blackfin supports and/or/xor on i32 but not on i16. Teach
DAGCombiner::SimplifyBinOpWithSameOpcodeHands to not produce illegal nodes
after legalize ops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78497 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
17421d81fdbc94dbd8b3549b095303baaf52e689 08-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't build illegal ops in DAGCombiner::SimplifyBinOpWithSameOpcodeHands().

Blackfin supports and/or/xor on i32 but not on i16. Teach
DAGCombiner::SimplifyBinOpWithSameOpcodeHands to not produce illegal nodes
after legalize ops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78497 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d5b21c16ee6a7a9c435808537d138ac6111b6119 08-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> ELF improvements:
Handle large integers, x86_fp80, ConstantAggregateZero, and two more ConstantExpr:
GetElementPtr and IntToPtr
Set SHF_MERGE bit for mergeable strings
Avoid zero initialized strings to be classified as a bss symbol
Don't allow common symbols to be classified as STB_WEAK
Add a constant to be used as a global value offset in data relocations



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78476 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFWriter.cpp
LFWriter.h
3e0094d9694a27c9e925f789fa26e740dc445fbe 08-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> ELF improvements:
Handle large integers, x86_fp80, ConstantAggregateZero, and two more ConstantExpr:
GetElementPtr and IntToPtr
Set SHF_MERGE bit for mergeable strings
Avoid zero initialized strings to be classified as a bss symbol
Don't allow common symbols to be classified as STB_WEAK
Add a constant to be used as a global value offset in data relocations



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78476 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFWriter.cpp
LFWriter.h
803e6ca25b44a8bf77d2debb39e024aabafea05b 08-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean out per-function data after the machine code verifier is done with it.

Also don't dereference old pointers after they have been deleted causing
random crashes when enabling the machine code verifier.

Ahem...

I have not included a test case for the crash. It hapened when enabling the
verifier on CodeGen/X86/2009-08-06-branchfolder-crash.ll.

The crash depends on an MBB being allocated at the same address as a
previously deleted MBB. I don't think that can be reproduced reliably.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78472 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
6349668fca491cfe1bf7c754fa0d7eb4255023b1 08-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean out per-function data after the machine code verifier is done with it.

Also don't dereference old pointers after they have been deleted causing
random crashes when enabling the machine code verifier.

Ahem...

I have not included a test case for the crash. It hapened when enabling the
verifier on CodeGen/X86/2009-08-06-branchfolder-crash.ll.

The crash depends on an MBB being allocated at the same address as a
previously deleted MBB. I don't think that can be reproduced reliably.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78472 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
e693fe774d2f52f9affea558e88d7d43169af112 08-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Update the machine code verifier to keep up with the scavenger.

* Cleaner handling of <undef>.
* <def> takes precedence over <def,dead>.
* Implement the OK-to-redefine-a-register-that-was-
live-in-but-has-not-been-used-before rule.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78467 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
710b13b2c2257d65779fd6380e27b823b06a74a9 08-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Update the machine code verifier to keep up with the scavenger.

* Cleaner handling of <undef>.
* <def> takes precedence over <def,dead>.
* Implement the OK-to-redefine-a-register-that-was-
live-in-but-has-not-been-used-before rule.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78467 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
463b9d2bf214221f33b5000735ec648fe676af75 08-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove RegisterScavenger::isSuperRegUsed(). This completely reverses the mistaken commit r77904.

Now there is no special treatment of instructions that redefine part of a
super-register. Instead, the super-register is marked with <imp-use,kill> and
<imp-def>. For instance, from LowerSubregs on ARM:

subreg: CONVERTING: %Q1<def> = INSERT_SUBREG %Q1<undef>, %D1<kill>, 5
subreg: %D2<def> = FCPYD %D1<kill>, 14, %reg0, %Q1<imp-def>

subreg: CONVERTING: %Q1<def> = INSERT_SUBREG %Q1, %D0<kill>, 6
subreg: %D3<def> = FCPYD %D0<kill>, 14, %reg0, %Q1<imp-use,kill>, %Q1<imp-def>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78466 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
egisterScavenging.cpp
9390cd0e86cb3b79f6836acab2a27b275e5bde9e 08-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove RegisterScavenger::isSuperRegUsed(). This completely reverses the mistaken commit r77904.

Now there is no special treatment of instructions that redefine part of a
super-register. Instead, the super-register is marked with <imp-use,kill> and
<imp-def>. For instance, from LowerSubregs on ARM:

subreg: CONVERTING: %Q1<def> = INSERT_SUBREG %Q1<undef>, %D1<kill>, 5
subreg: %D2<def> = FCPYD %D1<kill>, 14, %reg0, %Q1<imp-def>

subreg: CONVERTING: %Q1<def> = INSERT_SUBREG %Q1, %D0<kill>, 6
subreg: %D3<def> = FCPYD %D0<kill>, 14, %reg0, %Q1<imp-use,kill>, %Q1<imp-def>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78466 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
egisterScavenging.cpp
94a5d17fba9615a9ba82d3a1999f01ffbd5ee28c 08-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify RegScavenger::forward a bit more.

Verify that early clobber registers and their aliases are not used.

All changes to RegsAvailable are now done as a transaction so the order of
operands makes no difference.

The included test case is from PR4686. It has behaviour that was dependent on the order of operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78465 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
dffb051c21d32209c601ca0ca6baae75b6c6463f 08-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify RegScavenger::forward a bit more.

Verify that early clobber registers and their aliases are not used.

All changes to RegsAvailable are now done as a transaction so the order of
operands makes no difference.

The included test case is from PR4686. It has behaviour that was dependent on the order of operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78465 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
f7215417bb6ab686c5f8b7e85244eb51a8816cf0 08-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix some -Asserts unused variable warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78447 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/GraphBase.h
egAllocPBQP.cpp
8a1871d10b3c8cdbac9b8378eebd95461790d1e6 08-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix some -Asserts unused variable warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78447 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/GraphBase.h
egAllocPBQP.cpp
fdbeb81b564fc59d0916138cf2c5738b94b2f1ce 08-Aug-2009 Chris Lattner <sabre@nondot.org> code cleanup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78432 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5f51cd057984b89e0dc0812d45d512596a3c6596 08-Aug-2009 Chris Lattner <sabre@nondot.org> code cleanup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78432 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1fc07376c214b1e8a7fcdf234b12712dbf81349a 08-Aug-2009 Chris Lattner <sabre@nondot.org> remove a bunch of now-dead crud from the asmprinter and TAI interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78428 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
db0a9706e76fde6f3076f2baa1cb5bd0e47c8ee3 08-Aug-2009 Chris Lattner <sabre@nondot.org> remove a bunch of now-dead crud from the asmprinter and TAI interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78428 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
520cde24af985dcc5209754478cbd657a2d7d83d 08-Aug-2009 Evan Cheng <evan.cheng@apple.com> Back out some of recent register scavenger change by John Mosby. It broke a number of ARM tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78421 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
c40f6130344c53d5f0833838eddca1f94670ea1d 08-Aug-2009 Evan Cheng <evan.cheng@apple.com> Back out some of recent register scavenger change by John Mosby. It broke a number of ARM tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78421 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
99fb1eb43eb345fa0d6a6844f4a4da91057fd5ac 08-Aug-2009 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78416 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
23510d36ac5af80f7a47df64b4614b54d6a078c9 08-Aug-2009 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78416 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1773fe76af05f7d6fa95ab7da6552e666632d549 07-Aug-2009 Dale Johannesen <dalej@apple.com> Rewrite previous patch to follow Chris' stylistic
preference; no functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78391 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
1c5a28706d0b2e712f4c825d638b46bbe6eb67d6 07-Aug-2009 Dale Johannesen <dalej@apple.com> Rewrite previous patch to follow Chris' stylistic
preference; no functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78391 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
93a8d43799250813ba44b00ba5f0823db4c5a04e 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> Another coalescer bug. When a dead copy is eliminated, transfer the kill to a def of the exact register rather than a super-register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78376 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
15c592ddffc8f0e8d973bb126bd95e5d9a559739 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> Another coalescer bug. When a dead copy is eliminated, transfer the kill to a def of the exact register rather than a super-register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78376 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
bd6e475ca04e092b4eec84c1fd68699120f57022 07-Aug-2009 Daniel Dunbar <daniel@zuster.org> Update CMake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78367 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
08ada178b8a9f2b380fb6c2bc2693c615532278e 07-Aug-2009 Daniel Dunbar <daniel@zuster.org> Update CMake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78367 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
6d29b324f77099bf84fefbf8cb529de5141e1080 07-Aug-2009 Dan Gohman <gohman@apple.com> Fix a bunch of namespace pollution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78363 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
7db949df789383acce98ef072f08794fdd5bd04e 07-Aug-2009 Dan Gohman <gohman@apple.com> Fix a bunch of namespace pollution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78363 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
0f110c5cdac6100605d65d79dee4e8700088f28f 07-Aug-2009 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78362 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
748f98f90836dbb4c36fea67c9ebe7b6bb13255e 07-Aug-2009 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78362 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
6d2db66d10e6fb4fe5ad8ba579f7a5db8265dd7d 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78360 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
3a3cce59c428619513b5209d62f9398b84743cdb 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78360 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
25e9651afb26a004a9debda42da3f90234cc05e2 07-Aug-2009 Lang Hames <lhames@gmail.com> Added legal stuff, fixed some formatting issues. Removed the graph generator stuff as it was only meant for debugging the solver.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78359 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/AnnotatedGraph.h
BQP/ExhaustiveSolver.h
BQP/GraphBase.h
BQP/GraphGenerator.h
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
BQP/PBQPMath.h
BQP/SimpleGraph.h
BQP/Solution.h
BQP/Solver.h
caaf120a676f493b1535c9facd188539bfad3f80 07-Aug-2009 Lang Hames <lhames@gmail.com> Added legal stuff, fixed some formatting issues. Removed the graph generator stuff as it was only meant for debugging the solver.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78359 91177308-0d34-0410-b5e6-96231b3b80d8
BQP/AnnotatedGraph.h
BQP/ExhaustiveSolver.h
BQP/GraphBase.h
BQP/GraphGenerator.h
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
BQP/PBQPMath.h
BQP/SimpleGraph.h
BQP/Solution.h
BQP/Solver.h
3ca9a5bb440033db33cc5fa3318fa7f6f7c6a1eb 07-Aug-2009 Lang Hames <lhames@gmail.com> New C++ PBQP solver. Currently about as fast (read _slow_) as the old C based solver, but I'll be working to improve that. The PBQP allocator has been updated to use the new solver.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78354 91177308-0d34-0410-b5e6-96231b3b80d8
BQP.cpp
BQP.h
BQP/AnnotatedGraph.h
BQP/ExhaustiveSolver.h
BQP/GraphBase.h
BQP/GraphGenerator.h
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
BQP/PBQPMath.h
BQP/SimpleGraph.h
BQP/Solution.h
BQP/Solver.h
egAllocPBQP.cpp
6699fb27091927528f9f6059c3034d566dbed623 07-Aug-2009 Lang Hames <lhames@gmail.com> New C++ PBQP solver. Currently about as fast (read _slow_) as the old C based solver, but I'll be working to improve that. The PBQP allocator has been updated to use the new solver.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78354 91177308-0d34-0410-b5e6-96231b3b80d8
BQP.cpp
BQP.h
BQP/AnnotatedGraph.h
BQP/ExhaustiveSolver.h
BQP/GraphBase.h
BQP/GraphGenerator.h
BQP/HeuristicSolver.h
BQP/Heuristics/Briggs.h
BQP/PBQPMath.h
BQP/SimpleGraph.h
BQP/Solution.h
BQP/Solver.h
egAllocPBQP.cpp
6bb6e72a616f276b2d6571b8984c5b38a62d0a3a 07-Aug-2009 Dale Johannesen <dalej@apple.com> Fix PR 4626, a crash in branch folding after OptimizeBlock
produced a CFG it wasn't prepared for.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78351 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
14e545d18e46187b0f02e7c705a3da3ad82225c2 07-Aug-2009 Dale Johannesen <dalej@apple.com> Fix PR 4626, a crash in branch folding after OptimizeBlock
produced a CFG it wasn't prepared for.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78351 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
0be51482b5d2786f28747f46dc9ec98541234439 07-Aug-2009 Dale Johannesen <dalej@apple.com> Use stripPointerCasts instead of partially rewriting it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
76711246d9905575290fa7eebac4d1cad6000c60 07-Aug-2009 Dale Johannesen <dalej@apple.com> Use stripPointerCasts instead of partially rewriting it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
8945dca72107dd4e0587dc3e9c256de556b83077 06-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Get rid of RegScavenger::backwards() before the bitrot spreads.

If we need it one day, there is nothing wrong with putting it back in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78337 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
31f5591c91d4c012901018013aba19b0015fa6a0 06-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Get rid of RegScavenger::backwards() before the bitrot spreads.

If we need it one day, there is nothing wrong with putting it back in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78337 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
e61cf3b16436fc1dc2989d66f54f748dd646ca37 06-Aug-2009 John Mosby <ojomojo@gmail.com> Reg Scavenging generalization (Thumb support):
- start support for new PEI w/reg alloc, allow running RS from emit{Pro,Epi}logue() target hooks.
- fix minor issue with recursion detection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78318 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
e0161ea1050fd4107f3307b1e25b3aac02c2ba16 06-Aug-2009 John Mosby <ojomojo@gmail.com> Reg Scavenging generalization (Thumb support):
- start support for new PEI w/reg alloc, allow running RS from emit{Pro,Epi}logue() target hooks.
- fix minor issue with recursion detection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78318 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
e9a0775fe34ff3e86c70e41ccd7f2d94bf62c9c1 06-Aug-2009 Dan Gohman <gohman@apple.com> Add assertion checks after the calls to LowerFormalArguments, LowerCall,
and LowerReturn, to verify that the targets' hooks have respected some
of their postconditions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78312 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
5e86606f457d074769c1ee95aeaf718a5853f212 06-Aug-2009 Dan Gohman <gohman@apple.com> Add assertion checks after the calls to LowerFormalArguments, LowerCall,
and LowerReturn, to verify that the targets' hooks have respected some
of their postconditions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78312 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
aeee93f666ef04039e6bed630027c6967d1fe021 06-Aug-2009 Dan Gohman <gohman@apple.com> Remove an over-aggressive assert. Functions with empty struct return
types don't have any return values, from CodeGen's perspective.
This fixes PR4688.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
e483feded9a66b9a634f3dbdbf21eaaa65c69781 06-Aug-2009 Dan Gohman <gohman@apple.com> Remove an over-aggressive assert. Functions with empty struct return
types don't have any return values, from CodeGen's perspective.
This fixes PR4688.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
0cee5f4752c0ee0c90afaf20bb63d6cff167b92d 06-Aug-2009 Dan Gohman <gohman@apple.com> Fix a few places in DAGCombiner that were creating all-ones-bits
and high-bits values in ways that weren't correct for integer
types wider than 64 bits. This fixes a miscompile in
PPMacroExpansion.cpp in clang on x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78295 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5cbd37e5056f6a715333553e9d529e0ddddb3e78 06-Aug-2009 Dan Gohman <gohman@apple.com> Fix a few places in DAGCombiner that were creating all-ones-bits
and high-bits values in ways that weren't correct for integer
types wider than 64 bits. This fixes a miscompile in
PPMacroExpansion.cpp in clang on x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78295 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d2ed7457a184bdb8699f25e22f5cb8856c36bc5b 06-Aug-2009 Owen Anderson <resistor@mac.com> Privatize the StructType table, which unfortunately involves routing contexts through a number of APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78258 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
d7f2a6cb3fbc012763adb42fd967f6fefbb22a37 06-Aug-2009 Owen Anderson <resistor@mac.com> Privatize the StructType table, which unfortunately involves routing contexts through a number of APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78258 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
cdc2de3f6cee5709200c2267434e2884303e85f1 05-Aug-2009 David Greene <greened@obbligato.org> Fix some column padding bugs, reorganize things as suggested by Chris
and eliminate complexity. Yay!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78243 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a5bb59f85613e8ce481351803e7388f5ab466e72 05-Aug-2009 David Greene <greened@obbligato.org> Fix some column padding bugs, reorganize things as suggested by Chris
and eliminate complexity. Yay!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78243 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1c4428adef8bdc7400072f37d94ba5f5a1c75f4d 05-Aug-2009 Chris Lattner <sabre@nondot.org> remove the 'DataSectionStartSuffix' and 'TextSectionStartSuffix' knobs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78242 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cafbdc5c095f4cc84e74e0286651cf8daa6efa2a 05-Aug-2009 Chris Lattner <sabre@nondot.org> remove the 'DataSectionStartSuffix' and 'TextSectionStartSuffix' knobs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78242 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
40eed6c86c21ea0d756297c5da3bc8c1464be38a 05-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Rename a variable to make MSVC happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78202 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0ffc47039645e05527ee769ee62058dde1479ce7 05-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Rename a variable to make MSVC happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78202 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
06f5740dfecf71d82952f9d8ddf8ce260213a368 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> Disable stack coloring with register for now. It's not able to set kill markers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78179 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
6248fa45299a9e54aac84b3296c02c44ddec84e8 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> Disable stack coloring with register for now. It's not able to set kill markers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78179 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
4e4498e03db13890aedf4a241bb3d2a6c5826adf 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> Another nasty coalescer bug (is there another kind):

After coalescing reg1027's def and kill are both at the same point:
%reg1027,0.000000e+00 = [56,814:0) 0@70-(814)

bb5:
60 %reg1027<def> = t2MOVr %reg1027, 14, %reg0, %reg0
68 %reg1027<def> = t2LDRi12 %reg1027<kill>, 8, 14, %reg0
76 t2CMPzri %reg1038<kill,undef>, 0, 14, %reg0, %CPSR<imp-def>
84 %reg1027<def> = t2MOVr %reg1027, 14, %reg0, %reg0
96 t2Bcc mbb<bb5,0x2030910>, 1, %CPSR<kill>

Do not remove the kill marker on t2LDRi12.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78178 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9cd163281490dd5de4597cc184e7e15f658acea0 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> Another nasty coalescer bug (is there another kind):

After coalescing reg1027's def and kill are both at the same point:
%reg1027,0.000000e+00 = [56,814:0) 0@70-(814)

bb5:
60 %reg1027<def> = t2MOVr %reg1027, 14, %reg0, %reg0
68 %reg1027<def> = t2LDRi12 %reg1027<kill>, 8, 14, %reg0
76 t2CMPzri %reg1038<kill,undef>, 0, 14, %reg0, %CPSR<imp-def>
84 %reg1027<def> = t2MOVr %reg1027, 14, %reg0, %reg0
96 t2Bcc mbb<bb5,0x2030910>, 1, %CPSR<kill>

Do not remove the kill marker on t2LDRi12.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78178 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
661404bba65dfd26fa385f41fe8d46c68702ef6d 05-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove accidental commited comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78177 91177308-0d34-0410-b5e6-96231b3b80d8
bjectCodeEmitter.cpp
6e88a515992390312c96da99ffb82fc2da3c4a4f 05-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove accidental commited comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78177 91177308-0d34-0410-b5e6-96231b3b80d8
bjectCodeEmitter.cpp
b4be215fda2c63b6b194529d93b1839e4f5c1bcc 05-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> - Remove custom handling of jumptables by the elf writter (this was
a dirty hack and isn't need anymore since the last x86 code emitter patch)
- Add a target-dependent modifier to addend calculation
- Use R_X86_64_32S relocation for X86::reloc_absolute_word_sext
- Use getELFSectionFlags whenever possible
- fix getTextSection to use TLOF and emit the right text section
- Handle global emission for static ctors, dtors and Type::PointerTyID
- Some minor fixes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78176 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
bjectCodeEmitter.cpp
52d0851446afe2ae923fc7e7ee56aa4c9d61c1e1 05-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> - Remove custom handling of jumptables by the elf writter (this was
a dirty hack and isn't need anymore since the last x86 code emitter patch)
- Add a target-dependent modifier to addend calculation
- Use R_X86_64_32S relocation for X86::reloc_absolute_word_sext
- Use getELFSectionFlags whenever possible
- fix getTextSection to use TLOF and emit the right text section
- Handle global emission for static ctors, dtors and Type::PointerTyID
- Some minor fixes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78176 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
bjectCodeEmitter.cpp
693cfcc5b58cedcedd2701064ef6a17d13275b83 05-Aug-2009 Chris Lattner <sabre@nondot.org> add a temporary hook to allow reuse of the asmprinter from the disassembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78154 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d250329291dd9fe0d5f0e72e6cf1e287558a7cba 05-Aug-2009 Chris Lattner <sabre@nondot.org> add a temporary hook to allow reuse of the asmprinter from the disassembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78154 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3cb21ebef2e5765089d404d584e03ebf310412c0 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> Turn some insert_subreg, extract_subreg, subreg_to_reg into implicit_defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78151 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
owerSubregs.cpp
6ade93bbdceac28f441cfdc2571929a866eb7d24 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> Turn some insert_subreg, extract_subreg, subreg_to_reg into implicit_defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78151 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
owerSubregs.cpp
9eb13599cfa5208190d6866f514e21ace3f6821d 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> One more. Transfer kill of the larger register when lowering an EXTRACT_SUBREG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78145 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
b018a1e5a778808e35a12c1e7edd9b59fb8f6295 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> One more. Transfer kill of the larger register when lowering an EXTRACT_SUBREG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78145 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
95374eb8c992d869780fcf1b424ee7d795d27e3c 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> One more place where subreg lowering forgot to transfer undefness.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78144 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
a72dfb522da3f5a3c01fc4b1613565aa439d566d 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> One more place where subreg lowering forgot to transfer undefness.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78144 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
9178de1d2b1e0787539b83ed54ad505ff13169e8 05-Aug-2009 Dan Gohman <gohman@apple.com> Major calling convention code refactoring.

Instead of awkwardly encoding calling-convention information with ISD::CALL,
ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering
provides three virtual functions for targets to override:
LowerFormalArguments, LowerCall, and LowerRet, which replace the custom
lowering done on the special nodes. They provide the same information, but
in a more immediately usable format.

This also reworks much of the target-independent tail call logic. The
decision of whether or not to perform a tail call is now cleanly split
between target-independent portions, and the target dependent portion
in IsEligibleForTailCallOptimization.

This also synchronizes all in-tree targets, to help enable future
refactoring and feature work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78142 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
98ca4f2a325f72374a477f9deba7d09e8999c29b 05-Aug-2009 Dan Gohman <gohman@apple.com> Major calling convention code refactoring.

Instead of awkwardly encoding calling-convention information with ISD::CALL,
ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering
provides three virtual functions for targets to override:
LowerFormalArguments, LowerCall, and LowerRet, which replace the custom
lowering done on the special nodes. They provide the same information, but
in a more immediately usable format.

This also reworks much of the target-independent tail call logic. The
decision of whether or not to perform a tail call is now cleanly split
between target-independent portions, and the target dependent portion
in IsEligibleForTailCallOptimization.

This also synchronizes all in-tree targets, to help enable future
refactoring and feature work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78142 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorOps.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
32e5ec2ca24e5a8582db12f6fa88fec2e7a6657b 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> If the insert_subreg source is <undef>, insert an implicit_def instead of a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78141 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
518ad1a88031cd4a667bb2e54688fce7dc2ae133 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> If the insert_subreg source is <undef>, insert an implicit_def instead of a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78141 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
b9a6a286674abb146b76307cd0aeb0eead4e6410 05-Aug-2009 Dan Gohman <gohman@apple.com> Various comment fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78139 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
a5225add0d748bd6396f3e4e77669a8996d9ecec 05-Aug-2009 Dan Gohman <gohman@apple.com> Various comment fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78139 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
8c485ccb6d0978135f5475e95e94ce3ac4478849 04-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up the handling of two-address operands in RegScavenger.

This fixes PR4528.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78107 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
323e7d32ab256ba8847ba4ed176b5cd7d0bec3ad 04-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Clean up the handling of two-address operands in RegScavenger.

This fixes PR4528.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78107 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
0c5a1eb4b500414569ffa2b0a40f2a32018a2042 04-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't give implicit machine operands special treatment in the register scavenger.

Imp-def is *not* allowed to redefine a live register.
Imp-use is *not* allowed to use a dead register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78106 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
f955cbf56f130cdeb4c6c8aaa4a2715d420c1327 04-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't give implicit machine operands special treatment in the register scavenger.

Imp-def is *not* allowed to redefine a live register.
Imp-use is *not* allowed to use a dead register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78106 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
9dcecb924df97dee0a45b639a8bd1a364eba23e5 04-Aug-2009 Chris Lattner <sabre@nondot.org> rip out SectionEndDirectiveSuffix support, only uses by
the masm backend. If anyone cares about masm in the future,
we'll have semantic sections it can hang off of.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78096 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f9c1ccf28020add0b3e1d633684debf3e3dc294f 04-Aug-2009 Chris Lattner <sabre@nondot.org> rip out SectionEndDirectiveSuffix support, only uses by
the masm backend. If anyone cares about masm in the future,
we'll have semantic sections it can hang off of.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78096 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b409fff1289ce9981085fe8fb365f3a12d56bef5 04-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't tamper with <undef> operands in MachineInstr::addRegisterKilled.

For an undef operand, MO.getReg() is meaningless and we should not use it.
Undef operands should be skipped entirely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78095 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
efb8e3e113cbf359d6a838c3b37fedc8305d19bb 04-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't tamper with <undef> operands in MachineInstr::addRegisterKilled.

For an undef operand, MO.getReg() is meaningless and we should not use it.
Undef operands should be skipped entirely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78095 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9d01eb3df4554e8cdd09c1c0b735281cef899917 04-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> LowerSubregsInstructionPass::LowerExtract should not extend the live range of registers.

When LowerExtract eliminates an EXTRACT_SUBREG with a kill flag, it moves the
kill flag to the place where the sub-register is killed. This can accidentally
overlap with the use of a sibling sub-register, and we have trouble.

In the test case we have this code:

Live Ins: %R0 %R1 %R2
%R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
%R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0]
%R1L<def> = EXTRACT_SUBREG %R1<kill>, 1
%R0L<def> = EXTRACT_SUBREG %R0<kill>, 1
%R0H<def> = ADD16 %R2H<kill>, %R2L<kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def>

subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
subreg: eliminated!
subreg: killed here: %R0H<def> = ADD16 %R2H, %R2L, %R2<imp-use,kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def>

The kill flag on %R2 is moved to the last instruction, and the live range overlaps with the definition of %R2H:

*** Bad machine code: Redefining a live physical register ***
- function: f
- basic block: 0x18358c0 (#0)
- instruction: %R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0]
Register R2H was defined but already live.

The fix is to replace EXTRACT_SUBREG with IMPLICIT_DEF instead of eliminating
it completely:

subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
subreg: replace by: %R2L<def> = IMPLICIT_DEF %R2<kill>

Note that these IMPLICIT_DEF instructions survive to the asm output. It is
necessary to fix the stack-color-with-reg test case because of that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78093 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
ded2e3b0d02998b3bb99b5089d05fca1e0097868 04-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> LowerSubregsInstructionPass::LowerExtract should not extend the live range of registers.

When LowerExtract eliminates an EXTRACT_SUBREG with a kill flag, it moves the
kill flag to the place where the sub-register is killed. This can accidentally
overlap with the use of a sibling sub-register, and we have trouble.

In the test case we have this code:

Live Ins: %R0 %R1 %R2
%R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
%R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0]
%R1L<def> = EXTRACT_SUBREG %R1<kill>, 1
%R0L<def> = EXTRACT_SUBREG %R0<kill>, 1
%R0H<def> = ADD16 %R2H<kill>, %R2L<kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def>

subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
subreg: eliminated!
subreg: killed here: %R0H<def> = ADD16 %R2H, %R2L, %R2<imp-use,kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def>

The kill flag on %R2 is moved to the last instruction, and the live range overlaps with the definition of %R2H:

*** Bad machine code: Redefining a live physical register ***
- function: f
- basic block: 0x18358c0 (#0)
- instruction: %R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0]
Register R2H was defined but already live.

The fix is to replace EXTRACT_SUBREG with IMPLICIT_DEF instead of eliminating
it completely:

subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
subreg: replace by: %R2L<def> = IMPLICIT_DEF %R2<kill>

Note that these IMPLICIT_DEF instructions survive to the asm output. It is
necessary to fix the stack-color-with-reg test case because of that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78093 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
41339f0e8410ff33c4f7777c498d4e889773362b 04-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Enforce stricter rules in machine code verifier.

Implicit operands no longer get a free pass: Imp-use requires a live register
and imp-def requires a dead register.

There is also no special rule allowing redefinition of a sub-register when the
super-register is live. The super register must have imp-kill+imp-def operands
instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78090 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
d37bc5a27b2d40b05614587d61bbecb4017bdf23 04-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Enforce stricter rules in machine code verifier.

Implicit operands no longer get a free pass: Imp-use requires a live register
and imp-def requires a dead register.

There is also no special rule allowing redefinition of a sub-register when the
super-register is live. The super register must have imp-kill+imp-def operands
instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78090 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
48caa6bfaa851f55d5aeaf0899de52e59e1c0a29 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4528. This scavenger assertion is too strict. The two-address value is
killed by another operand.

There is probably a better fix. Either 1) scavenger can look at other operands, or
2) livevariables can be smarter about kill markers. Patches welcome.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78072 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
7d35249e897dc655c7c884b83d5cb39478ae497c 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4528. This scavenger assertion is too strict. The two-address value is
killed by another operand.

There is probably a better fix. Either 1) scavenger can look at other operands, or
2) livevariables can be smarter about kill markers. Patches welcome.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78072 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
dd5cdf6d64445371826b9223a24210e92a419919 04-Aug-2009 Dan Gohman <gohman@apple.com> Propogate the Depth argument when calling
TLI.computeMaskedBitsForTargetNode from ComputeMaskedBits, since
the former may call back into the latter. This fixes a major
compile time problem on a testcase that happnened to hit this
in a particularly bad way, PR4643.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78023 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
206ad10c14e5dda3bf7b2dc8faf84b2f75124844 04-Aug-2009 Dan Gohman <gohman@apple.com> Propogate the Depth argument when calling
TLI.computeMaskedBitsForTargetNode from ComputeMaskedBits, since
the former may call back into the latter. This fixes a major
compile time problem on a testcase that happnened to hit this
in a particularly bad way, PR4643.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78023 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7a6661431d043c11e15a72c6eb57b681fe7d3248 04-Aug-2009 Ted Kremenek <kremenek@apple.com> Update CMake files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78020 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
f6e75c3435de09bfd5a043c88e3a899da2bcc84f 04-Aug-2009 Ted Kremenek <kremenek@apple.com> Update CMake files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78020 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
ebd055c65ff685504558790428be11c967b62ecf 04-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate CurrentSection, rename CurrentSection_ -> CurrentSection, make it private,
eliminate IsInTextSection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78017 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
290c2f56ce551ebcf4480ac2944986fe4bb339e9 04-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate CurrentSection, rename CurrentSection_ -> CurrentSection, make it private,
eliminate IsInTextSection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78017 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
0f98c3329e085621496a76ddd59ccb6b2f677abb 04-Aug-2009 Chris Lattner <sabre@nondot.org> Kill off SwitchToDataSection and SwitchToTextSection, woo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78015 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c6fdced3dbfdf673cc9b01dfad4f08e316d8803d 04-Aug-2009 Chris Lattner <sabre@nondot.org> Kill off SwitchToDataSection and SwitchToTextSection, woo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78015 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
180b5e789d07f611994743f4e936b44a7947c7fb 03-Aug-2009 David Greene <greened@obbligato.org> Re-apply LiveInterval index dumping patch, with fixes suggested by Bill
and others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78003 91177308-0d34-0410-b5e6-96231b3b80d8
ump.cpp
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
b5257664795d49ada0d4669fe8ed1cd49c04fbf3 03-Aug-2009 David Greene <greened@obbligato.org> Re-apply LiveInterval index dumping patch, with fixes suggested by Bill
and others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78003 91177308-0d34-0410-b5e6-96231b3b80d8
ump.cpp
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
c1b906ffd28fb9f9bc9683782b249048d07613ac 03-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix Bug 4657: register scavenger asserts with subreg lowering

When LowerSubregsInstructionPass::LowerInsert eliminates an INSERT_SUBREG
instriction because it is an identity copy, make sure that the same registers
are alive before and after the elimination.

When the super-register is marked <undef> this requires inserting an
IMPLICIT_DEF instruction to make sure the super register is live.

Fix a related bug where a kill flag on the inserted sub-register was not transferred properly.

Finally, clear the undef flag in MachineInstr::addRegisterKilled. Undef implies dead and kill implies live, so they cant both be valid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77989 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
achineInstr.cpp
980daea857719b3eeb7dc88fe013049d361d955b 03-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix Bug 4657: register scavenger asserts with subreg lowering

When LowerSubregsInstructionPass::LowerInsert eliminates an INSERT_SUBREG
instriction because it is an identity copy, make sure that the same registers
are alive before and after the elimination.

When the super-register is marked <undef> this requires inserting an
IMPLICIT_DEF instruction to make sure the super register is live.

Fix a related bug where a kill flag on the inserted sub-register was not transferred properly.

Finally, clear the undef flag in MachineInstr::addRegisterKilled. Undef implies dead and kill implies live, so they cant both be valid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77989 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
achineInstr.cpp
75bdd29b81a79ff8dd3a6d6629cb7d42b48da45d 03-Aug-2009 Chris Lattner <sabre@nondot.org> make getObjFileLowering() return a non-const reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77984 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
38c398808cff7defdf013fa750dfac8e66302975 03-Aug-2009 Chris Lattner <sabre@nondot.org> make getObjFileLowering() return a non-const reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77984 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
564f681bc2473228458c54d34cf0f95a174553aa 03-Aug-2009 Bob Wilson <bob.wilson@apple.com> Revert 77974. It breaks 3 of the ARM tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77982 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
6e7a85c075ac1fc8fc7f11cad07e51839c80ee39 03-Aug-2009 Bob Wilson <bob.wilson@apple.com> Revert 77974. It breaks 3 of the ARM tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77982 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
6faaff6f13d194cdeb519901f9ad3843debf7062 03-Aug-2009 Chris Lattner <sabre@nondot.org> make SwitchToSection accept null sections for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77976 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d54a6b8c58bf0228b965ab00c7d9e2e87239161f 03-Aug-2009 Chris Lattner <sabre@nondot.org> make SwitchToSection accept null sections for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77976 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a76e198fbda9797ec9dc173a4b8abc9e6b5dc5fb 03-Aug-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow targets to custom handle softening of results or operands before trying the standard stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77974 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
2caf1b212e2db36c52f3a7c3e391ea2800802c60 03-Aug-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow targets to custom handle softening of results or operands before trying the standard stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77974 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
98c00ab7ee4842f1faa79d2fcf46476d02c4eb99 03-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> llvm_report_error already prints "LLVM ERROR:". So stop reporting errors like "LLVM ERROR: llvm: error:" or "LLVM ERROR: ERROR:".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
d5fe92efbc1774ada25a1cfa18009bfc5c6e625c 03-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> llvm_report_error already prints "LLVM ERROR:". So stop reporting errors like "LLVM ERROR: llvm: error:" or "LLVM ERROR: ERROR:".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
af2deaf01dfdacce208d438ce592bdba06dd9021 03-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix a coaelescer bug. If a copy val# is extended to eliminate a non-trivially coalesced copy, and the copy kills its source register. Trim the source register's live range to the last use if possible. This fixes up kill marker to make the scavenger happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77967 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
eed0ff147c40aa6a1550b331c6b4bb6ed994ff25 03-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix a coaelescer bug. If a copy val# is extended to eliminate a non-trivially coalesced copy, and the copy kills its source register. Trim the source register's live range to the last use if possible. This fixes up kill marker to make the scavenger happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77967 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0a17f3d8e26ed60ac1b04407759ca67de2d1ffb5 03-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix some comments referring to std::cerr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77931 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
275872e79950dafc6699f6502cee52f74b84a22a 03-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix some comments referring to std::cerr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77931 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
159abc0158542e0a7fe3a1200e93df0af32e163c 02-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix issue in regscavenger when scavenging a callee-saved register that has not been spilled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77912 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
b36eb9df205aa83cfdfc8ecebc93e1043d6253d9 02-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix issue in regscavenger when scavenging a callee-saved register that has not been spilled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77912 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
7b8fe1343b483389a9d4680d3d0253139b3c1116 02-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Never add a kill flag to a constrained physical register in a two-addr instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77906 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ece48185168ab130b1777feb86d9e3fe80eb87d2 02-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Never add a kill flag to a constrained physical register in a two-addr instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77906 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
37512f434723e382cb644c9b778c94c74735522d 02-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Scavenger asserts.

Allow imp-def and imp-use of anything in the scavenger asserts, just like the machine code verifier.
Allow redefinition of a sub-register of a live register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77904 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
0e6a4efdd4f97137fb0a58d7bb3de07562185530 02-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Scavenger asserts.

Allow imp-def and imp-use of anything in the scavenger asserts, just like the machine code verifier.
Allow redefinition of a sub-register of a live register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77904 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
8804e0ab44a86d0ca176575161b8ecf4ac9e6b57 02-Aug-2009 Dan Gohman <gohman@apple.com> Avoid forming a SELECT_CC in a type that the target doesn't
support. This isn't immediately interesting, because Legalize
ends up lowering SELECT_CC if the target doesn't support it,
but this simplifies the process.

Also, if the SELECT_CC would be expanded in Legalize, it
can potentially end up with two copies of the condition
expression. By leaving it as SELECT+SETCC, the SELECT can be
expanded into two SELECTs that use a single SETCC.

The two comparisons are usually CSE'd, but depending on
when various expressions get legalized, the comparison
expression could involve calls to library functions, such
that the comparison expression may not be able to be CSE'd.
This will be needed by a future patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77896 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4ea480499c40cd7e28bf35cacda33ccbab2aab07 02-Aug-2009 Dan Gohman <gohman@apple.com> Avoid forming a SELECT_CC in a type that the target doesn't
support. This isn't immediately interesting, because Legalize
ends up lowering SELECT_CC if the target doesn't support it,
but this simplifies the process.

Also, if the SELECT_CC would be expanded in Legalize, it
can potentially end up with two copies of the condition
expression. By leaving it as SELECT+SETCC, the SELECT can be
expanded into two SELECTs that use a single SETCC.

The two comparisons are usually CSE'd, but depending on
when various expressions get legalized, the comparison
expression could involve calls to library functions, such
that the comparison expression may not be able to be CSE'd.
This will be needed by a future patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77896 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c1297ac65105a518bf44a0298ccea271cd41faac 02-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle <undef> flag in machine code verifier.

Use of an <undef> register is treated like an <imp-use>. It is not an error to use a dead <undef> register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77890 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
bcdbcb9f95ce02cdc25048938fc461325b6e94a6 02-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle <undef> flag in machine code verifier.

Use of an <undef> register is treated like an <imp-use>. It is not an error to use a dead <undef> register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77890 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
72d228decc0b7d1cd28738b728cb289e5403f14c 02-Aug-2009 Chris Lattner <sabre@nondot.org> move dwarf debug info section selection stuff from TAI to
TLOF, unifying all the dwarf targets at the same time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77889 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
18a4c16726db2b8874c7b84d04650dda80746074 02-Aug-2009 Chris Lattner <sabre@nondot.org> move dwarf debug info section selection stuff from TAI to
TLOF, unifying all the dwarf targets at the same time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77889 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c01e333445a1aa6299bbbe95784b50b21098528b 02-Aug-2009 Chris Lattner <sabre@nondot.org> convert EHFrameSection to be managed by TLOF instead of TAI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77888 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
35039ac24163e99cfab161620a9fb41f944a63d5 02-Aug-2009 Chris Lattner <sabre@nondot.org> convert EHFrameSection to be managed by TLOF instead of TAI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77888 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
e3cfb273a3fe3b0f7cf832e7cff8dd2b45fc1062 02-Aug-2009 Chris Lattner <sabre@nondot.org> remove the dead ELFTargetAsmInfo.h/cpp file. TargetAsmInfo
defaults to being ELF.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77866 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
9ba8c6872dc722d0f9f804fcd67bace4acfe67ba 02-Aug-2009 Chris Lattner <sabre@nondot.org> remove the dead ELFTargetAsmInfo.h/cpp file. TargetAsmInfo
defaults to being ELF.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77866 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
f9f4d5a172b1bbde0bc5d9a89bbb7b93c8616d7e 02-Aug-2009 Chris Lattner <sabre@nondot.org> Fix some fixme's in #if 0'd code by making it dependent on the structural
behavior of the LSDA section instead of on some random target hook that
needs to be kept in synch with other points of truth.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77855 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
ad88bc4076d088baad8a5ee9561e46ac08a1c88a 02-Aug-2009 Chris Lattner <sabre@nondot.org> Fix some fixme's in #if 0'd code by making it dependent on the structural
behavior of the LSDA section instead of on some random target hook that
needs to be kept in synch with other points of truth.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77855 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
3d7780580131bf5a736412bcc3b11610721bd3e2 02-Aug-2009 Chris Lattner <sabre@nondot.org> move getDwarfExceptionSection from TAI to TLOF and rename it to
getLSDASection() to be more specific. This makes it pretty obvious
that the ELF LSDA section is being specified wrong in PIC mode. We're
probably getting a lot of startup-time relocations to a readonly page,
which is expensive and bad.

Someone who cares about ELF C++ should investigate this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77847 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
d5bbb07ec806e6fa1e804afd7073987fdacc83e4 02-Aug-2009 Chris Lattner <sabre@nondot.org> move getDwarfExceptionSection from TAI to TLOF and rename it to
getLSDASection() to be more specific. This makes it pretty obvious
that the ELF LSDA section is being specified wrong in PIC mode. We're
probably getting a lot of startup-time relocations to a readonly page,
which is expensive and bad.

Someone who cares about ELF C++ should investigate this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77847 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
b5c952a6aa643bfa7a002013f46e199e7a86bb3f 02-Aug-2009 Chris Lattner <sabre@nondot.org> convert ctors/dtors section to be in TLOF instead of
TAI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77842 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
80ec2792b2b271eca55743a3cc4c8bca214fa705 02-Aug-2009 Chris Lattner <sabre@nondot.org> convert ctors/dtors section to be in TLOF instead of
TAI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77842 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a945341d921f780e95b14475069c3a9c0d1c6575 02-Aug-2009 Chris Lattner <sabre@nondot.org> (re)introduce new simpler apis for creation sectionkinds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77834 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
2798119ab4d7e0b42812b3acdf37821f40dee627 02-Aug-2009 Chris Lattner <sabre@nondot.org> (re)introduce new simpler apis for creation sectionkinds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77834 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
d7f8c0a3b0375ca1550977e6281cb191712159b8 02-Aug-2009 Chris Lattner <sabre@nondot.org> Remove "JumpTableDataSection" from TAI, instead, have AsmPrinter
compute it based on what it knows. As part of this, rename getSectionForMergeableConstant
to getSectionForConstant because it works for non-mergable constants also.

The only functionality change from this is that Xcore will start dropping
its jump tables into readonly section instead of data section in -static mode.
This should be fine as the linker resolves the relocations. If this is a
problem, let me know and we'll come up with another solution.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77833 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
83d77faf6e8fc2c1c2377d037283dc162d8667a1 02-Aug-2009 Chris Lattner <sabre@nondot.org> Remove "JumpTableDataSection" from TAI, instead, have AsmPrinter
compute it based on what it knows. As part of this, rename getSectionForMergeableConstant
to getSectionForConstant because it works for non-mergable constants also.

The only functionality change from this is that Xcore will start dropping
its jump tables into readonly section instead of data section in -static mode.
This should be fine as the linker resolves the relocations. If this is a
problem, let me know and we'll come up with another solution.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77833 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
97988721ef914e63d8075402994d53ea0cfe7ff3 02-Aug-2009 Chris Lattner <sabre@nondot.org> loweringinfo is always non-null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77821 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2f03f652057ff880034069c087258635bb7dd3c2 02-Aug-2009 Chris Lattner <sabre@nondot.org> loweringinfo is always non-null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77821 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
34e4cde9db656a9a24bf52cf0182272944923659 02-Aug-2009 Chris Lattner <sabre@nondot.org> fix a problem Eli noticed where we would compile the attached ptrtoint
to:

.quad X

even on a 32-bit system, where X is not 64-bits. There isn't much that
we can do here, so we just print:

.quad ((X) & 4294967295)

instead.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77818 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c19ee610f6ca1ff90b8298160c78283acb9cbaa1 02-Aug-2009 Chris Lattner <sabre@nondot.org> fix a problem Eli noticed where we would compile the attached ptrtoint
to:

.quad X

even on a 32-bit system, where X is not 64-bits. There isn't much that
we can do here, so we just print:

.quad ((X) & 4294967295)

instead.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77818 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9de4876755e2d4ba1d3ad338cb1c67bf6aabebc4 01-Aug-2009 Chris Lattner <sabre@nondot.org> Change SectionKind to be a property that is true of a *section*, it
should have no state that is specific to particular globals in the
section. In this case, it means the removal of the "isWeak" and
"ExplicitSection" bits. MCSection uses the new form of SectionKind.

To handle isWeak, I introduced a new SectionInfo class, which is
SectionKind + isWeak, and it is used by the part of the code generator
that does classification of a specific global.

The ExplicitSection disappears. It is moved onto MCSection as a new
"IsDirective" bit. Since the Name of a section is either a section
or directive, it makes sense to keep this bit in MCSection. Ultimately
the creator of MCSection should canonicalize (e.g.) .text to whatever
the actual section is.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77803 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
968ff1196768c0b6dbcc5508025a2923bfa73fab 01-Aug-2009 Chris Lattner <sabre@nondot.org> Change SectionKind to be a property that is true of a *section*, it
should have no state that is specific to particular globals in the
section. In this case, it means the removal of the "isWeak" and
"ExplicitSection" bits. MCSection uses the new form of SectionKind.

To handle isWeak, I introduced a new SectionInfo class, which is
SectionKind + isWeak, and it is used by the part of the code generator
that does classification of a specific global.

The ExplicitSection disappears. It is moved onto MCSection as a new
"IsDirective" bit. Since the Name of a section is either a section
or directive, it makes sense to keep this bit in MCSection. Ultimately
the creator of MCSection should canonicalize (e.g.) .text to whatever
the actual section is.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77803 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
3625126a1e082647476e760bf416889ed2a8f021 01-Aug-2009 Dan Gohman <gohman@apple.com> Print the target flags as an int instead of a char, as they aren't
actually characters.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77794 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1944da1c5af82e95c9a4970a7f6a7310db0f6707 01-Aug-2009 Dan Gohman <gohman@apple.com> Print the target flags as an int instead of a char, as they aren't
actually characters.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77794 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e8cce20c5ed892f4c3bce3eabdec55f896dcd7b0 01-Aug-2009 Dan Gohman <gohman@apple.com> Give MachineFunctionAnalysis a destructor so it can verify that
that it released its allocated memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77775 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionAnalysis.cpp
f94083333c1702006c068b55526441b2bce1d45b 01-Aug-2009 Dan Gohman <gohman@apple.com> Give MachineFunctionAnalysis a destructor so it can verify that
that it released its allocated memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77775 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunctionAnalysis.cpp
8b797f5ab7527c243fa1d1310c083100ca6bdd9b 01-Aug-2009 Dan Gohman <gohman@apple.com> Delete a redundant variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77774 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8a0336a44bff2fcabc2de07cf482707c9508012f 01-Aug-2009 Dan Gohman <gohman@apple.com> Delete a redundant variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77774 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fbd8829cd08d286b79f44ba24bb96a6be4b70a5e 01-Aug-2009 Dan Gohman <gohman@apple.com> Minor code simplifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77769 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f7d6cd46e920776bb33913b2498347cf99358dc4 01-Aug-2009 Dan Gohman <gohman@apple.com> Minor code simplifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77769 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4021660154c087c5a57a8018569ca41951dcc4bb 01-Aug-2009 Dan Gohman <gohman@apple.com> SelectionDAGISel no longer needs to check hasAvailableExternallyLinkage,
as it is now a MachineFunctionPass, and MachineFunctionPass now handles
this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77760 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c32304e56e85b89f426354dddf98c765eeb16333 01-Aug-2009 Dan Gohman <gohman@apple.com> SelectionDAGISel no longer needs to check hasAvailableExternallyLinkage,
as it is now a MachineFunctionPass, and MachineFunctionPass now handles
this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77760 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
de104bdfed7861731ff131fc3d37dd47ae4e6b43 01-Aug-2009 Dan Gohman <gohman@apple.com> Make UnreachableMachineBlockElim preserve MachineDominatorTree and
MachineLoopInfo.

llc now runs MachineLoopInfo and MachineDominatorTree only twice, instead
of three times.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77759 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
4f3cfba575bceadcb3c2f66e83080751edcbcea6 01-Aug-2009 Dan Gohman <gohman@apple.com> Make UnreachableMachineBlockElim preserve MachineDominatorTree and
MachineLoopInfo.

llc now runs MachineLoopInfo and MachineDominatorTree only twice, instead
of three times.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77759 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
ecb436f195e55e6bf84713b54efd6c621a9ddbfe 01-Aug-2009 Dan Gohman <gohman@apple.com> Use setPreservesAll and setPreservesCFG in CodeGen passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77754 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
iveIntervalAnalysis.cpp
owerSubregs.cpp
achineModuleInfo.cpp
achineSink.cpp
HIElimination.cpp
ostRASchedulerList.cpp
reAllocSplitting.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
egAllocSimple.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
845012e6d31799c7fbd1193fa1af8ee2d12e9231 01-Aug-2009 Dan Gohman <gohman@apple.com> Use setPreservesAll and setPreservesCFG in CodeGen passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77754 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
iveIntervalAnalysis.cpp
owerSubregs.cpp
achineModuleInfo.cpp
achineSink.cpp
HIElimination.cpp
ostRASchedulerList.cpp
reAllocSplitting.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
egAllocSimple.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
03354410a05e9b2d4af041326bcc7c363880e703 01-Aug-2009 Dan Gohman <gohman@apple.com> SelectionDAGISel does not "preserve all", since it makes lots of changes
to the MachineFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77753 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a3477fe06df794e0eae26ea243f25912c619a6c4 01-Aug-2009 Dan Gohman <gohman@apple.com> SelectionDAGISel does not "preserve all", since it makes lots of changes
to the MachineFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77753 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b067fe1f969786a0971638338e4122fe78d81595 01-Aug-2009 Dan Gohman <gohman@apple.com> Use a range insert instead of an explicit loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77752 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
2d147c440178044aa2af1d9c276f9c4e540fcb8e 01-Aug-2009 Dan Gohman <gohman@apple.com> Use a range insert instead of an explicit loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77752 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
45ab48e34fe0f640ee1587f6edb157a03b02a315 01-Aug-2009 Bob Wilson <bob.wilson@apple.com> Allow target intrinsics that return multiple values, i.e., struct types,
in SelectionDAGLowering::visitTargetIntrinsic.

This removes a bit of special-case code for vector types. After staring
at it for a while, I managed to convince myself that it is not necessary.
The only case where TLI.getValueType() differs from MVT::getMVT is for iPTR,
so this code could potentially make a difference for a vector of pointers.
But, it looks like that is not supported. Calling TLI.getValueType() on
a vector of pointers leads to the following sequence of calls:

TargetLowering::getValueType
MVT::getMVT
MVT::getVectorVT(iPTR, num elements)
MVT::getExtendedVectorVT
MVT::getTypeForMVT for iPTR
assertion fails "Type is not extended!"

So, unless I'm really missing something, this bit of code is irrelevant to
the current version of LLVM, which is consistent with the fact that I don't
see this code in other similar places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
8d91955d2b985bfbb70aeadcd5fed0d68f939000 01-Aug-2009 Bob Wilson <bob.wilson@apple.com> Allow target intrinsics that return multiple values, i.e., struct types,
in SelectionDAGLowering::visitTargetIntrinsic.

This removes a bit of special-case code for vector types. After staring
at it for a while, I managed to convince myself that it is not necessary.
The only case where TLI.getValueType() differs from MVT::getMVT is for iPTR,
so this code could potentially make a difference for a vector of pointers.
But, it looks like that is not supported. Calling TLI.getValueType() on
a vector of pointers leads to the following sequence of calls:

TargetLowering::getValueType
MVT::getMVT
MVT::getVectorVT(iPTR, num elements)
MVT::getExtendedVectorVT
MVT::getTypeForMVT for iPTR
assertion fails "Type is not extended!"

So, unless I'm really missing something, this bit of code is irrelevant to
the current version of LLVM, which is consistent with the fact that I don't
see this code in other similar places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
32ab13dd0e1a5f460d460933f96b57f348c48667 01-Aug-2009 Chris Lattner <sabre@nondot.org> add some comments on how this is *supposed* to work. We don't
need the PreferredEHDataFormat hook, but I have yet-more refactoring to
do before I can zap it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77742 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
46b754c76bd6a720dd1dd3be248cb93a4e25d3e5 01-Aug-2009 Chris Lattner <sabre@nondot.org> add some comments on how this is *supposed* to work. We don't
need the PreferredEHDataFormat hook, but I have yet-more refactoring to
do before I can zap it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77742 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
8a2a64607104b9493e3651718ee8577cac3d3979 01-Aug-2009 Chris Lattner <sabre@nondot.org> rearrange a conditional. Even if this weren't #if 0'd out, this would
have no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77741 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
81c9a069377e9474d010f04eebe8325fd11429e3 01-Aug-2009 Chris Lattner <sabre@nondot.org> rearrange a conditional. Even if this weren't #if 0'd out, this would
have no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77741 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
4b62f5ba88a137246506b218d6386dc09fa7cc79 31-Jul-2009 David Greene <greened@obbligato.org> Simplify operand padding by keying off tabs in the asm stream. If
padding is disabled, tabs get replaced by spaces except in the case of
the first operand, where the tab is output to line up the operands after
the mnemonics.

Add some better comments and eliminate redundant code.

Fix some testcases to not assume tabs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77740 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
bef8768bd0576eec0470a80e3039cd5d1fd50c6b 31-Jul-2009 David Greene <greened@obbligato.org> Simplify operand padding by keying off tabs in the asm stream. If
padding is disabled, tabs get replaced by spaces except in the case of
the first operand, where the tab is output to line up the operands after
the mnemonics.

Add some better comments and eliminate redundant code.

Fix some testcases to not assume tabs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77740 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8b0bb375c9be32347afec9ee406cb15dd4c32cbb 31-Jul-2009 Chris Lattner <sabre@nondot.org> PreferredEHDataFormat is always call with data and global, but this whole
thing is #if0'd out anyway. Just simplify the code by reducing the interface.
Not deleting this is essential for Bill's continuing happiness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77736 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
7a01e959156ba4e0a15b45a1f153f67d1646c0a5 31-Jul-2009 Chris Lattner <sabre@nondot.org> PreferredEHDataFormat is always call with data and global, but this whole
thing is #if0'd out anyway. Just simplify the code by reducing the interface.
Not deleting this is essential for Bill's continuing happiness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77736 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
84362ace0889c4f1f71e8e5604fd620ba7ebb664 31-Jul-2009 Chris Lattner <sabre@nondot.org> move emitUsedDirectiveFor to TargetLoweringObjectFile and rename it to
indicate that it is a predicate, not an emitter. This eliminates TAI
dependencies on Mangler and GlobalValue.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77726 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
26630c1180502d07c9b2b4a9a4ba06bc5ddf180b 31-Jul-2009 Chris Lattner <sabre@nondot.org> move emitUsedDirectiveFor to TargetLoweringObjectFile and rename it to
indicate that it is a predicate, not an emitter. This eliminates TAI
dependencies on Mangler and GlobalValue.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77726 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
aac2837c17cafaf4ff6487a54bab42e6618b5945 31-Jul-2009 Owen Anderson <resistor@mac.com> Move a few more APIs back to 2.5 forms. The only remaining ones left to change back are
metadata related, which I'm waiting on to avoid conflicting with Devang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77721 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/FastISel.cpp
hadowStackGC.cpp
nreachableBlockElim.cpp
a7235ea7245028a0723e8ab7fd011386b3900777 31-Jul-2009 Owen Anderson <resistor@mac.com> Move a few more APIs back to 2.5 forms. The only remaining ones left to change back are
metadata related, which I'm waiting on to avoid conflicting with Devang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77721 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/FastISel.cpp
hadowStackGC.cpp
nreachableBlockElim.cpp
27abe0495d21cc9f078a57ade9137905356eeeeb 31-Jul-2009 Ted Kremenek <kremenek@apple.com> Update CMake files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77709 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
f83146fd115cd3de9137605dd3e195321c55c048 31-Jul-2009 Ted Kremenek <kremenek@apple.com> Update CMake files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77709 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
e6ad12f8febebcdca8ea6b0e48014786267df1ea 31-Jul-2009 Chris Lattner <sabre@nondot.org> switch off of 'Section' onto MCSection. We're not properly using
MCSection subclasses yet, but this is a step in the right direction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77708 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
LFWriter.cpp
a87dea4f8c546ca748f1777a8d1cabcc06515d91 31-Jul-2009 Chris Lattner <sabre@nondot.org> switch off of 'Section' onto MCSection. We're not properly using
MCSection subclasses yet, but this is a step in the right direction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77708 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
LFWriter.cpp
58ccf8dee03d7cf79468a774979ad065c5f945ac 31-Jul-2009 Dan Gohman <gohman@apple.com> MachineFunction no longer needs Annotation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77704 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
f266f89634363cb067a5b43cbe33f79c4397c08c 31-Jul-2009 Dan Gohman <gohman@apple.com> MachineFunction no longer needs Annotation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77704 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
fdf9ee278b684165014055069f407362bf9044f3 31-Jul-2009 Dan Gohman <gohman@apple.com> Reapply r77654 with a fix: MachineFunctionPass's getAnalysisUsage
shouldn't do AU.setPreservesCFG(), because even though CodeGen passes
don't modify the LLVM IR CFG, they may modify the MachineFunction CFG,
and passes like MachineLoop are registered with isCFGOnly set to true.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77691 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
iveVariables.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
achineFunctionPass.cpp
achineLoopInfo.cpp
achineVerifier.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAGISel.cpp
ad2afc2a421a0e41603d5eee412d4d8c77e9bc1c 31-Jul-2009 Dan Gohman <gohman@apple.com> Reapply r77654 with a fix: MachineFunctionPass's getAnalysisUsage
shouldn't do AU.setPreservesCFG(), because even though CodeGen passes
don't modify the LLVM IR CFG, they may modify the MachineFunction CFG,
and passes like MachineLoop are registered with isCFGOnly set to true.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77691 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
iveVariables.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
achineFunctionPass.cpp
achineLoopInfo.cpp
achineVerifier.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAGISel.cpp
013162700841c12357dc27f2a4a268c967c3eb50 31-Jul-2009 Chris Lattner <sabre@nondot.org> refactor section construction in TLOF to be through an explicit
initialize method, which can be called when an MCContext is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77687 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
LFWriter.h
f26e03bc7e30162197641406e37e662a15d80f7e 31-Jul-2009 Chris Lattner <sabre@nondot.org> refactor section construction in TLOF to be through an explicit
initialize method, which can be called when an MCContext is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77687 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
LFWriter.h
4f720fae677b937ace6ffd2bdbfb670ddbadc663 31-Jul-2009 Owen Anderson <resistor@mac.com> Move getTrue() and getFalse() to 2.5-like APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77685 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
5defacc6e605f4651c6300237cef8e9bb2eb6d0e 31-Jul-2009 Owen Anderson <resistor@mac.com> Move getTrue() and getFalse() to 2.5-like APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77685 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
696630149187f2f0f435c02c3a7fdc85817a7638 31-Jul-2009 Daniel Dunbar <daniel@zuster.org> Revert r77654, it appears to be causing llvm-gcc bootstrap failures, and many
failures when building assorted projects with clang.

--- Reverse-merging r77654 into '.':
U include/llvm/CodeGen/Passes.h
U include/llvm/CodeGen/MachineFunctionPass.h
U include/llvm/CodeGen/MachineFunction.h
U include/llvm/CodeGen/LazyLiveness.h
U include/llvm/CodeGen/SelectionDAGISel.h
D include/llvm/CodeGen/MachineFunctionAnalysis.h
U include/llvm/Function.h
U lib/Target/CellSPU/SPUISelDAGToDAG.cpp
U lib/Target/PowerPC/PPCISelDAGToDAG.cpp
U lib/CodeGen/LLVMTargetMachine.cpp
U lib/CodeGen/MachineVerifier.cpp
U lib/CodeGen/MachineFunction.cpp
U lib/CodeGen/PrologEpilogInserter.cpp
U lib/CodeGen/MachineLoopInfo.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
D lib/CodeGen/MachineFunctionAnalysis.cpp
D lib/CodeGen/MachineFunctionPass.cpp
U lib/CodeGen/LiveVariables.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77661 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
iveVariables.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
achineFunctionPass.cpp
achineLoopInfo.cpp
achineVerifier.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAGISel.cpp
c5b19b21d84814d19692a6bbea11fbd135f4b094 31-Jul-2009 Daniel Dunbar <daniel@zuster.org> Revert r77654, it appears to be causing llvm-gcc bootstrap failures, and many
failures when building assorted projects with clang.

--- Reverse-merging r77654 into '.':
U include/llvm/CodeGen/Passes.h
U include/llvm/CodeGen/MachineFunctionPass.h
U include/llvm/CodeGen/MachineFunction.h
U include/llvm/CodeGen/LazyLiveness.h
U include/llvm/CodeGen/SelectionDAGISel.h
D include/llvm/CodeGen/MachineFunctionAnalysis.h
U include/llvm/Function.h
U lib/Target/CellSPU/SPUISelDAGToDAG.cpp
U lib/Target/PowerPC/PPCISelDAGToDAG.cpp
U lib/CodeGen/LLVMTargetMachine.cpp
U lib/CodeGen/MachineVerifier.cpp
U lib/CodeGen/MachineFunction.cpp
U lib/CodeGen/PrologEpilogInserter.cpp
U lib/CodeGen/MachineLoopInfo.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
D lib/CodeGen/MachineFunctionAnalysis.cpp
D lib/CodeGen/MachineFunctionPass.cpp
U lib/CodeGen/LiveVariables.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77661 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
iveVariables.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
achineFunctionPass.cpp
achineLoopInfo.cpp
achineVerifier.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAGISel.cpp
7b829a2e9945416837d3ce0dee9648b7b6810c97 31-Jul-2009 Dan Gohman <gohman@apple.com> Manage MachineFunctions with an analysis Pass instead of the Annotable
mechanism. To support this, make MachineFunctionPass a little more
complete.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77654 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
iveVariables.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
achineFunctionPass.cpp
achineLoopInfo.cpp
achineVerifier.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAGISel.cpp
933c762371fe8cc6e2ef5d00d6866f4924852fed 31-Jul-2009 Dan Gohman <gohman@apple.com> Manage MachineFunctions with an analysis Pass instead of the Annotable
mechanism. To support this, make MachineFunctionPass a little more
complete.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77654 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
iveVariables.cpp
achineFunction.cpp
achineFunctionAnalysis.cpp
achineFunctionPass.cpp
achineLoopInfo.cpp
achineVerifier.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAGISel.cpp
8256b0ecdb38c80ad42545d025d83e76c059d5fd 31-Jul-2009 Benjamin Kramer <benny.kra@googlemail.com> Fix cmake build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77649 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
376cd007ec2da67bddd15d68623e51a6e122869c 31-Jul-2009 Benjamin Kramer <benny.kra@googlemail.com> Fix cmake build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77649 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
77198e495c6408851439d7de46e5ba0082a9621f 31-Jul-2009 Lang Hames <lhames@gmail.com> Removed the BigBlock register allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77640 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
2f75c727f2bc4d76036d12a65c5e21a37e097b90 31-Jul-2009 Lang Hames <lhames@gmail.com> Removed the BigBlock register allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77640 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
b99ecca4954cbc3fbff77ffb252952cc19c4d799 31-Jul-2009 Owen Anderson <resistor@mac.com> Move more code back to 2.5 APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9e9a0d5fc26878e51a58a8b57900fcbf952c2691 31-Jul-2009 Owen Anderson <resistor@mac.com> Move more code back to 2.5 APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fda766d66b73e1fad51864bfaa616e1c6ab6d272 30-Jul-2009 Devang Patel <dpatel@apple.com> Start using DebugInfoFinder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77621 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
78ab9e2c4907428f5f0d8aa594258ac188dd2125 30-Jul-2009 Devang Patel <dpatel@apple.com> Start using DebugInfoFinder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77621 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f4e64d64cace387219b5c8f9c0ec6e362d589c9e 30-Jul-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow targets to define libcall names for mem(cpy,set,move) intrinsics, rather than hardcoding them in DAG lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77586 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
a114baa5bf0d70aed8b8cf576a864005c0d6a128 30-Jul-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow targets to define libcall names for mem(cpy,set,move) intrinsics, rather than hardcoding them in DAG lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77586 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
b723fb501aee51fa80022635611a9d38b1e044df 30-Jul-2009 Evan Cheng <evan.cheng@apple.com> Optimize some common usage patterns of atomic built-ins __sync_add_and_fetch() and __sync_sub_and_fetch.

When the return value is not used (i.e. only care about the value in the memory), x86 does not have to use add to implement these. Instead, it can use add, sub, inc, dec instructions with the "lock" prefix.

This is currently implemented using a bit of instruction selection trick. The issue is the target independent pattern produces one output and a chain and we want to map it into one that just output a chain. The current trick is to select it into a merge_values with the first definition being an implicit_def. The proper solution is to add new ISD opcodes for the no-output variant. DAG combiner can then transform the node before it gets to target node selection.

Problem #2 is we are adding a whole bunch of x86 atomic instructions when in fact these instructions are identical to the non-lock versions. We need a way to add target specific information to target nodes and have this information carried over to machine instructions. Asm printer (or JIT) can use this information to add the "lock" prefix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77582 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
37b7387da90ffd42d28ad0f08fca00b684294b2c 30-Jul-2009 Evan Cheng <evan.cheng@apple.com> Optimize some common usage patterns of atomic built-ins __sync_add_and_fetch() and __sync_sub_and_fetch.

When the return value is not used (i.e. only care about the value in the memory), x86 does not have to use add to implement these. Instead, it can use add, sub, inc, dec instructions with the "lock" prefix.

This is currently implemented using a bit of instruction selection trick. The issue is the target independent pattern produces one output and a chain and we want to map it into one that just output a chain. The current trick is to select it into a merge_values with the first definition being an implicit_def. The proper solution is to add new ISD opcodes for the no-output variant. DAG combiner can then transform the node before it gets to target node selection.

Problem #2 is we are adding a whole bunch of x86 atomic instructions when in fact these instructions are identical to the non-lock versions. We need a way to add target specific information to target nodes and have this information carried over to machine instructions. Asm printer (or JIT) can use this information to add the "lock" prefix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77582 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
6b6e2d9392782724c48110bcca4bee2c8fbbd7b9 30-Jul-2009 Owen Anderson <resistor@mac.com> Move types back to the 2.5 API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77516 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
hadowStackGC.cpp
debcb01b0f0a15f568ca69e8f288fade4bfc7297 30-Jul-2009 Owen Anderson <resistor@mac.com> Move types back to the 2.5 API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77516 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
hadowStackGC.cpp
a0c38e6f80d46291fd3ce11c7b82026fd8745308 29-Jul-2009 Chris Lattner <sabre@nondot.org> inline the global 'getInstrOperandRegClass' function into its callers
now that TargetOperandInfo does the heavy lifting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77508 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
2a3868849438a0a0ad4f9a50f2b94eb1639b554e 29-Jul-2009 Chris Lattner <sabre@nondot.org> inline the global 'getInstrOperandRegClass' function into its callers
now that TargetOperandInfo does the heavy lifting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77508 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
f07406157f610d0d63deede491d2de851e7bf4b5 29-Jul-2009 Bill Wendling <isanbard@gmail.com> Forgot to output the base offset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77505 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
409914b773ffd53d53d214394d5636a76f673186 29-Jul-2009 Bill Wendling <isanbard@gmail.com> Forgot to output the base offset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77505 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
6a66b29b664313e14e67ee50551413286699ad1a 29-Jul-2009 Chris Lattner <sabre@nondot.org> 1. Introduce a new TargetOperandInfo::getRegClass() helper method
and convert code to using it, instead of having lots of things
poke the isLookupPtrRegClass() method directly.

2. Make PointerLikeRegClass contain a 'kind' int, and store it in
the existing regclass field of TargetOperandInfo when the
isLookupPtrRegClass() predicate is set. Make getRegClass pass
this into TargetRegisterInfo::getPointerRegClass(), allowing
targets to have multiple ptr_rc things.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77504 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
cb778a8634454c70d88955b3732f330a6cbe5b07 29-Jul-2009 Chris Lattner <sabre@nondot.org> 1. Introduce a new TargetOperandInfo::getRegClass() helper method
and convert code to using it, instead of having lots of things
poke the isLookupPtrRegClass() method directly.

2. Make PointerLikeRegClass contain a 'kind' int, and store it in
the existing regclass field of TargetOperandInfo when the
isLookupPtrRegClass() predicate is set. Make getRegClass pass
this into TargetRegisterInfo::getPointerRegClass(), allowing
targets to have multiple ptr_rc things.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77504 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
5666e684f4a22393526786ce6cd8c354b0a30ced 29-Jul-2009 Benjamin Kramer <benny.kra@googlemail.com> Remove now unused Context variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77495 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6c1e983a1756e914b328644e6cab7b4a39eb7853 29-Jul-2009 Benjamin Kramer <benny.kra@googlemail.com> Remove now unused Context variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77495 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
02b48c3be2112c64d8fc9cf5419c9c8d4ec30b71 29-Jul-2009 Owen Anderson <resistor@mac.com> Move ConstantExpr to 2.5 API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77494 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
hadowStackGC.cpp
baf3c404409d5e47b13984a7f95bfbd6d1f2e79e 29-Jul-2009 Owen Anderson <resistor@mac.com> Move ConstantExpr to 2.5 API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77494 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
hadowStackGC.cpp
2931fe435726903f4b8c63ab542e27620dc1a2f3 29-Jul-2009 Chris Lattner <sabre@nondot.org> pass the mangler down into the various SectionForGlobal methods.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77432 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
e53a600f065075731d0aeb9dc8f4f3d75f5a05f8 29-Jul-2009 Chris Lattner <sabre@nondot.org> pass the mangler down into the various SectionForGlobal methods.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77432 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
767459b83cb7176da521dfbbbeb038075387efd3 29-Jul-2009 Bill Wendling <isanbard@gmail.com> Move comment to above method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77412 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
0dafca90761097230f02e655fdd541f59b888315 29-Jul-2009 Bill Wendling <isanbard@gmail.com> Move comment to above method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77412 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
7b048681508f9739675c0aced56b57c1aec48b98 29-Jul-2009 Bill Wendling <isanbard@gmail.com> - Temporarily unbreak the build by forcing the TType "absptr", which isn't
correct. But what are you going to do? I'll fix this in the future.
- Move another large loop into its own method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77408 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
ade025c65c12503aba161a4fa399fd97414abaff 29-Jul-2009 Bill Wendling <isanbard@gmail.com> - Temporarily unbreak the build by forcing the TType "absptr", which isn't
correct. But what are you going to do? I'll fix this in the future.
- Move another large loop into its own method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77408 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
3ac794b56677e8f8bb01f33ae28748d7f4b0ef8b 29-Jul-2009 Bill Wendling <isanbard@gmail.com> Cleanup code to use iterators instead of ".size()".

Does any one else hate the name "const_reverse_iterator" as much as I do?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77399 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
5cff487665097d971067cbede1598e249f673182 29-Jul-2009 Bill Wendling <isanbard@gmail.com> Cleanup code to use iterators instead of ".size()".

Does any one else hate the name "const_reverse_iterator" as much as I do?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77399 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
cb3f7d83009e7a08fa1c10a8034e0f23d378d5c6 29-Jul-2009 Bill Wendling <isanbard@gmail.com> Doxygenify comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77394 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
d4609622ade8d0ebaf57fd70700c2fedf0b3d165 29-Jul-2009 Bill Wendling <isanbard@gmail.com> Doxygenify comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77394 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
759e64d6e3c6587b7a0115e39a24fce5cf516a8d 29-Jul-2009 Bill Wendling <isanbard@gmail.com> Split out large loop into it's very own method. No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77393 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
5e953ddfa3abdd684c8a43f9c9c144f584ec7d6f 29-Jul-2009 Bill Wendling <isanbard@gmail.com> Split out large loop into it's very own method. No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77393 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
86fc13f803b7d293c1f48585233287f9e1d0fdd2 29-Jul-2009 Bill Wendling <isanbard@gmail.com> Output the EH TType format and base offset only if there are types that we're
going to emit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77382 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
b0d9c3e7fdc952ae7cbe169b01ccaf1b80329403 29-Jul-2009 Bill Wendling <isanbard@gmail.com> Output the EH TType format and base offset only if there are types that we're
going to emit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77382 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
598a6aa94d9d3d60cc8bf7dd38e128d28f4f12e4 28-Jul-2009 Bill Wendling <isanbard@gmail.com> Use the preferred EH data format for the preferred EH data format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77373 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
c5800a809fd5e411de78ac1a4be633cd3e1d7840 28-Jul-2009 Bill Wendling <isanbard@gmail.com> Use the preferred EH data format for the preferred EH data format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77373 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
79d87ec983b916e8cb7461ba648d96f9a08d5f27 28-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix a typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77369 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
7cc2c406d0c82bcf329048ced643ec77fcae60e6 28-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix a typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77369 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
2f422e06e096ae765ced5d4c67ac063c3e216424 28-Jul-2009 Owen Anderson <resistor@mac.com> Return ConstantVector to 2.5 API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77366 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
af7ec975870f92245f1f1484ac80a1e2db6a0afa 28-Jul-2009 Owen Anderson <resistor@mac.com> Return ConstantVector to 2.5 API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77366 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
f109601f445629e11a2583c5c44d9464a76a3f05 28-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Handle null and file symbol on doInitialization

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77354 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFWriter.cpp
50bc204291c5b947f289302c577f83784136cb2c 28-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Handle null and file symbol on doInitialization

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77354 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFWriter.cpp
7b4f9f8b74cd8f8d476787763ea02030762b00e7 28-Jul-2009 Owen Anderson <resistor@mac.com> Change ConstantArray to 2.5 API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77347 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
hadowStackGC.cpp
1fd7096407d5e598ed3366a1141548e71273f1c5 28-Jul-2009 Owen Anderson <resistor@mac.com> Change ConstantArray to 2.5 API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77347 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
hadowStackGC.cpp
f26175c063b38c62bfde37139257676c79aba35d 28-Jul-2009 David Greene <greened@obbligato.org> Add reload and remat backscheduling. This is disabled by default. Use
-schedule-spills=true to enable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77327 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
2d4e6d3f123f824709be4884e9e2e2f1a4579858 28-Jul-2009 David Greene <greened@obbligato.org> Add reload and remat backscheduling. This is disabled by default. Use
-schedule-spills=true to enable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77327 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
c4c40a9f14d66de770ba7c0922be07dca7e3b827 28-Jul-2009 Chris Lattner <sabre@nondot.org> Rip all of the global variable lowering logic out of TargetAsmInfo. Since
it is highly specific to the object file that will be generated in the end,
this introduces a new TargetLoweringObjectFile interface that is implemented
for each of ELF/MachO/COFF/Alpha/PIC16 and XCore.

Though still is still a brutal and ugly refactoring, this is a major step
towards goodness.

This patch also:
1. fixes a bunch of dangling pointer problems in the PIC16 backend.
2. disables the TargetLowering copy ctor which PIC16 was accidentally using.
3. gets us closer to xcore having its own crazy target section flags and
pic16 not having to shadow sections with its own objects.
4. fixes wierdness where ELF targets would set CStringSection but not
CStringSection_. Factor the code better.
5. fixes some bugs in string lowering on ELF targets.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/OcamlGCPrinter.cpp
LFWriter.cpp
electionDAG/TargetLowering.cpp
f0144127b98425d214e59e4a1a4b342b78e3642b 28-Jul-2009 Chris Lattner <sabre@nondot.org> Rip all of the global variable lowering logic out of TargetAsmInfo. Since
it is highly specific to the object file that will be generated in the end,
this introduces a new TargetLoweringObjectFile interface that is implemented
for each of ELF/MachO/COFF/Alpha/PIC16 and XCore.

Though still is still a brutal and ugly refactoring, this is a major step
towards goodness.

This patch also:
1. fixes a bunch of dangling pointer problems in the PIC16 backend.
2. disables the TargetLowering copy ctor which PIC16 was accidentally using.
3. gets us closer to xcore having its own crazy target section flags and
pic16 not having to shadow sections with its own objects.
4. fixes wierdness where ELF targets would set CStringSection but not
CStringSection_. Factor the code better.
5. fixes some bugs in string lowering on ELF targets.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/OcamlGCPrinter.cpp
LFWriter.cpp
electionDAG/TargetLowering.cpp
011c7ac8369dcae2c3fdb96b39f93e6a99687564 28-Jul-2009 Mike Stump <mrs@apple.com> Avoid build warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77271 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
02efa786d40fabae6dbbb3de5ab057359701e337 28-Jul-2009 Mike Stump <mrs@apple.com> Avoid build warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77271 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9c9f10e3c7667d9104b1ed98090cf0c84e90f8e0 28-Jul-2009 Owen Anderson <resistor@mac.com> Move ConstantStruct back to 2.5 API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77266 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
8fa3338ed2400c1352b137613d2c2c70d1ead695 28-Jul-2009 Owen Anderson <resistor@mac.com> Move ConstantStruct back to 2.5 API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77266 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
1eb0ad05844cdda1da0acfc72cb583c8aa9c8dbf 27-Jul-2009 Chris Lattner <sabre@nondot.org> hoist MCContext/MCStreamer up to AsmPrinter since we're going to start creating
MCSections soon instead of Section for all targets, and we need something to
own them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77252 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2b2954f00ba02ca1a902f47080cd9f06aebc0378 27-Jul-2009 Chris Lattner <sabre@nondot.org> hoist MCContext/MCStreamer up to AsmPrinter since we're going to start creating
MCSections soon instead of Section for all targets, and we need something to
own them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77252 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d363a0e9b128db489f429405944607e672a7d92c 27-Jul-2009 Owen Anderson <resistor@mac.com> Move ConstantFP construction back to the 2.5-ish API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77247 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
6f83c9c6ef0e7f79825a0a8f22941815e4b684c7 27-Jul-2009 Owen Anderson <resistor@mac.com> Move ConstantFP construction back to the 2.5-ish API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77247 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
ef4c04e4ac5e34bf75fc3a1444c1099fc2a253b8 27-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> fix comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77239 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
42286562ef744d1737708852400432bd50878310 27-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> fix comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77239 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
2be60acc1ae1d1556e865a865d6452e4f9cca7f3 27-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> add module identifier to the elf object file

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77238 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFWriter.cpp
LFWriter.h
df0b6503d601c2150e3242b66f02fe906f838979 27-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> add module identifier to the elf object file

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77238 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFWriter.cpp
LFWriter.h
5436d9fd39977adebc39b6c2fc31d93e038a5d8d 27-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Handle external symbols for ELF and add some static methods to ELFSym

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77232 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
746e3bb3547d848af86c4d677dfdc2c4481c7518 27-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Handle external symbols for ELF and add some static methods to ELFSym

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77232 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
d8310520a75c10de2678e931f984e0c500e0ee43 27-Jul-2009 Chris Lattner <sabre@nondot.org> Eliminate SectionFlags, just embed a SectionKind into Section
instead and drive things based off of that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77184 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
LFWriter.h
5fe575ff4fdefc1b003a009b1b9282526a26c237 27-Jul-2009 Chris Lattner <sabre@nondot.org> Eliminate SectionFlags, just embed a SectionKind into Section
instead and drive things based off of that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77184 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
LFWriter.h
060189a1adac5da66282926539fb02324bd355e6 27-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Reorganize code a bit to reduce indentation. No visible functionality
change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b101b0bdbd22fa1bef3502fd7521da60038ac333 27-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Reorganize code a bit to reduce indentation. No visible functionality
change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
5d3ea9690f9045261c1e70c245fccc2b6b586aa6 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove Value::getName{Start,End}, the last of the old Name APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77152 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/OcamlGCPrinter.cpp
CMetadata.cpp
460f656475738d1a95a6be95346908ce1597df25 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove Value::getName{Start,End}, the last of the old Name APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77152 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
smPrinter/OcamlGCPrinter.cpp
CMetadata.cpp
0653dc6fadc3b459dd15e6a47a43f5b410130b14 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove Value::getNameLen


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77148 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f0443c1eb44d737d9bd78962932fc80f74c6113c 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove Value::getNameLen


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77148 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
94d8a7600a9d3f4aba6189d67a6a3e80c79d806a 26-Jul-2009 Chris Lattner <sabre@nondot.org> remove a densemap from TargetAsmInfo that was uniquing the targetflags strings,
just use a smallstring instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77144 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f40761d5229322c08701049f89aa10f7f7b8b743 26-Jul-2009 Chris Lattner <sabre@nondot.org> remove a densemap from TargetAsmInfo that was uniquing the targetflags strings,
just use a smallstring instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77144 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ed0c676d4ee8f25d06297caa81502efa3f65782e 26-Jul-2009 Chris Lattner <sabre@nondot.org> make SectionKind know whether a symbol is weak or not in addition
to its classification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77140 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
4c50922f6be96fdb1e9a924aeeecf91638e2c52b 26-Jul-2009 Chris Lattner <sabre@nondot.org> make SectionKind know whether a symbol is weak or not in addition
to its classification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77140 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
1c3792478d45063589e36f0523c66d4b2ec4a90f 26-Jul-2009 Chris Lattner <sabre@nondot.org> rename Mergable -> Mergeable and Writable -> Writeable


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77138 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
2ceb60a677065e08ec436dcb79a9d445e628a5c9 26-Jul-2009 Chris Lattner <sabre@nondot.org> rename Mergable -> Mergeable and Writable -> Writeable


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77138 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
47399189c836d255a0b402a0ed5c36d775de5511 26-Jul-2009 Chris Lattner <sabre@nondot.org> two files I missed in the last commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77137 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
94809c3b108606e287b0966476a381ec907d6c7a 26-Jul-2009 Chris Lattner <sabre@nondot.org> two files I missed in the last commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77137 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
fc60ba101e122dd74ee0a2aeafd80a620c6bbb47 26-Jul-2009 Chris Lattner <sabre@nondot.org> simplify getSectionForMergableConstant to take a SectionKind.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77134 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
5c2f789952ff315021afb10381f141f2ac3b1a6b 26-Jul-2009 Chris Lattner <sabre@nondot.org> simplify getSectionForMergableConstant to take a SectionKind.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77134 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
e03513b6e418341df9f2c18559c3e3557ac9b695 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove Value::{isName, getNameRef}.

Also, change MDString to use a StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77098 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
03d7651c3652e1f0cc86e79b26585d86818da9cf 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove Value::{isName, getNameRef}.

Also, change MDString to use a StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77098 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4c530ee667b91ee9ffbe1d5614efa48c5bde903d 25-Jul-2009 Chris Lattner <sabre@nondot.org> this is (unfortunately) several changes mixed together:

1. Spell SectionFlags::Writeable as "Writable".
2. Add predicates for deriving SectionFlags from SectionKinds.
3. Sink ELF-specific getSectionPrefixForUniqueGlobal impl into
ELFTargetAsmInfo.
4. Fix SectionFlagsForGlobal to know that BSS/ThreadBSS has the
BSS bit set (the real fix for PR4619).
5. Fix isSuitableForBSS to not put globals with explicit sections
set in BSS (which was the reason #4 wasn't fixed earlier).
6. Remove my previous hack for PR4619.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77085 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
b4fc419d83bc4afc8ce5a204dd226d5ae58f5896 25-Jul-2009 Chris Lattner <sabre@nondot.org> this is (unfortunately) several changes mixed together:

1. Spell SectionFlags::Writeable as "Writable".
2. Add predicates for deriving SectionFlags from SectionKinds.
3. Sink ELF-specific getSectionPrefixForUniqueGlobal impl into
ELFTargetAsmInfo.
4. Fix SectionFlagsForGlobal to know that BSS/ThreadBSS has the
BSS bit set (the real fix for PR4619).
5. Fix isSuitableForBSS to not put globals with explicit sections
set in BSS (which was the reason #4 wasn't fixed earlier).
6. Remove my previous hack for PR4619.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77085 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
0be10b0b53610b5c543713acf5d4f3ff68ed8319 25-Jul-2009 Dan Gohman <gohman@apple.com> Convert a few more things to use raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77039 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
fd87a544c00c2ca04ee23aae67bbcad4dc852a54 25-Jul-2009 Dan Gohman <gohman@apple.com> Convert a few more things to use raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77039 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
005975c04c5ffc4ee07107ad60dd7d465464e6f7 25-Jul-2009 Daniel Dunbar <daniel@zuster.org> More migration to raw_ostream, the water has dried up around the iostream hole.
- Some clients which used DOUT have moved to DEBUG. We are deprecating the
"magic" DOUT behavior which avoided calling printing functions when the
statement was disabled. In addition to being unnecessary magic, it had the
downside of leaving code in -Asserts builds, and of hiding potentially
unnecessary computations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77019 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
owerSubregs.cpp
achineFunction.cpp
achineLICM.cpp
achineVerifier.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
electionDAG/SelectionDAGISel.cpp
hrinkWrapping.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
ce63ffb52f249b62cdf2d250c128007b13f27e71 25-Jul-2009 Daniel Dunbar <daniel@zuster.org> More migration to raw_ostream, the water has dried up around the iostream hole.
- Some clients which used DOUT have moved to DEBUG. We are deprecating the
"magic" DOUT behavior which avoided calling printing functions when the
statement was disabled. In addition to being unnecessary magic, it had the
downside of leaving code in -Asserts builds, and of hiding potentially
unnecessary computations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77019 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
owerSubregs.cpp
achineFunction.cpp
achineLICM.cpp
achineVerifier.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
electionDAG/SelectionDAGISel.cpp
hrinkWrapping.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
eacb44d0bb89c608c4465b7900eea3afc0f0be0d 25-Jul-2009 Owen Anderson <resistor@mac.com> Revert the ConstantInt constructors back to their 2.5 forms where possible, thanks to contexts-on-types. More to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77011 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
hadowStackGC.cpp
eed707b1e6097aac2bb6b3d47271f6300ace7f2e 25-Jul-2009 Owen Anderson <resistor@mac.com> Revert the ConstantInt constructors back to their 2.5 forms where possible, thanks to contexts-on-types. More to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77011 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
hadowStackGC.cpp
ca037dfe5d198f134bc9c7866a8345a0056acb39 24-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Add support for promoting SETCC operations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76987 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
78d12644b905dc54cf6cf984af02a49d30d29744 24-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Add support for promoting SETCC operations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76987 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
8aafa1c4b64aa863823dbfc372aa7464257cabe6 24-Jul-2009 Chris Lattner <sabre@nondot.org> remove a use of SectionFlagsForGlobal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76970 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d0418ce890ed94a233f69423afb0499a884ff4a9 24-Jul-2009 Chris Lattner <sabre@nondot.org> remove a use of SectionFlagsForGlobal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76970 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ddea63b3a373bd0004d30ba797432749d06726d9 24-Jul-2009 Daniel Dunbar <daniel@zuster.org> More move to raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76966 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
a717b7be8886c4c6ae261ee553c5cbcae29c1e52 24-Jul-2009 Daniel Dunbar <daniel@zuster.org> More move to raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76966 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
f55f61f8a105e225f3589cac07ae98c08c26b1f6 24-Jul-2009 Daniel Dunbar <daniel@zuster.org> Move more to raw_ostream, provide support for writing MachineBasicBlock,
LiveInterval, etc to raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76965 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
achineBasicBlock.cpp
electionDAG/ScheduleDAGSDNodes.cpp
irtRegMap.cpp
irtRegMap.h
1cd1d98232c3c3a0bd3810c3bf6c2572ea02f208 24-Jul-2009 Daniel Dunbar <daniel@zuster.org> Move more to raw_ostream, provide support for writing MachineBasicBlock,
LiveInterval, etc to raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76965 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
achineBasicBlock.cpp
electionDAG/ScheduleDAGSDNodes.cpp
irtRegMap.cpp
irtRegMap.h
c6ebd38219ab19934697d8d416095a5db6a6e181 24-Jul-2009 Daniel Dunbar <daniel@zuster.org> Move to raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76963 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cheduleDAG.cpp
3f0e83067d7938f742d21e14fc87c006d2fc3161 24-Jul-2009 Daniel Dunbar <daniel@zuster.org> Move to raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76963 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cheduleDAG.cpp
1e13b9756098b2d657c09fc2910dd66f255d9592 24-Jul-2009 Daniel Dunbar <daniel@zuster.org> Switch to getNameStr().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76962 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
f6ccee5a9d2b9573f679bca6266ade3eb8cd3f88 24-Jul-2009 Daniel Dunbar <daniel@zuster.org> Switch to getNameStr().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76962 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
978228189102b8c1d4f316bff684748f17a69320 24-Jul-2009 Chris Lattner <sabre@nondot.org> document SectionFlags::Named better and make it more easily greppable by
eliminating isNamed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76946 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
837f3323729f91be2d62b4074fedafd7fb1ce451 24-Jul-2009 Chris Lattner <sabre@nondot.org> document SectionFlags::Named better and make it more easily greppable by
eliminating isNamed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76946 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b8523fae98888e969edc2fd5452887c686a0477c 23-Jul-2009 Chris Lattner <sabre@nondot.org> "fix" PR4612, which is a crash on:
%0 = malloc [3758096384 x i32]

The "malloc" instruction doesn't support 64-bits correctly (see PR715),
and should be removed. Victor is actively working on fixing this, in
the meantime just don't crash.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76899 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
50340f666b5b1fceb2c781464779b4a0f583db9a 23-Jul-2009 Chris Lattner <sabre@nondot.org> "fix" PR4612, which is a crash on:
%0 = malloc [3758096384 x i32]

The "malloc" instruction doesn't support 64-bits correctly (see PR715),
and should be removed. Victor is actively working on fixing this, in
the meantime just don't crash.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76899 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
4d10add69d4b366dacaa7bb0ceb7db4ac61b4d3d 23-Jul-2009 Daniel Dunbar <daniel@zuster.org> Convert StringMap to using StringRef for its APIs.
- Yay for '-'s and simplifications!

- I kept StringMap::GetOrCreateValue for compatibility purposes, this can
eventually go away. Likewise the StringMapEntry Create functions still follow
the old style.

- NIFC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76888 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
6316fbcb04af00fe76b6526fab09f51484014b3e 23-Jul-2009 Daniel Dunbar <daniel@zuster.org> Convert StringMap to using StringRef for its APIs.
- Yay for '-'s and simplifications!

- I kept StringMap::GetOrCreateValue for compatibility purposes, this can
eventually go away. Likewise the StringMapEntry Create functions still follow
the old style.

- NIFC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76888 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
0ef653ec28822038cc39aac52c7e6da4fb15900d 23-Jul-2009 Lang Hames <lhames@gmail.com> For real this time: PHI Def & Kill tracking added to PHIElimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76865 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
20354634ebb64023d322919633f8bd348a63891d 23-Jul-2009 Lang Hames <lhames@gmail.com> For real this time: PHI Def & Kill tracking added to PHIElimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76865 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
26a3c1b63523515afebd09a2b11e52130043a431 23-Jul-2009 Lang Hames <lhames@gmail.com> Added PHI Def & Kill tracking to PHIElimination pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76849 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
287b8b0301bc6ec7eb70d23d242326a8766bb8eb 23-Jul-2009 Lang Hames <lhames@gmail.com> Added PHI Def & Kill tracking to PHIElimination pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76849 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
d7d71ae30947b79b3efd8e894ab9d06d56c52abe 23-Jul-2009 David Greene <greened@obbligato.org> Reorder if-else branches as suggested by Bill.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76808 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
92b78bbc7f2ee919a2d09ed00fd35d1eb7f5f548 23-Jul-2009 David Greene <greened@obbligato.org> Reorder if-else branches as suggested by Bill.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76808 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
7b04db41721529da6367c37f2a8de20894f17869 22-Jul-2009 David Greene <greened@obbligato.org> Constify the key in Mi2IndexMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76801 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
340482dcc0060b10976b5ff13c44b6d4c8446b9b 22-Jul-2009 David Greene <greened@obbligato.org> Constify the key in Mi2IndexMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76801 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
474088a63f84f19eed2687c74605de0f70c99469 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Ignore undef uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76799 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
1e0c1588b1b030a1402cf1865b63faf060e44a39 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Ignore undef uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76799 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
e24a8e4421ca8db64fb11281753dddbb8d098f49 22-Jul-2009 Daniel Dunbar <daniel@zuster.org> Switch some clients to Value::getName(), and other getName() user
simplification.
- NFC


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76789 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGPrinter.cpp
3d5126fbad17647088b7335cd5fea178407211e2 22-Jul-2009 Daniel Dunbar <daniel@zuster.org> Switch some clients to Value::getName(), and other getName() user
simplification.
- NFC


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76789 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGPrinter.cpp
1fa359423e11cbbf671039d248c7b0212a962078 22-Jul-2009 David Greene <greened@obbligato.org> Put comment printing under asm-verbose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76780 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
67e59834fc1dca7e357c40af2e5144f3d62f5133 22-Jul-2009 David Greene <greened@obbligato.org> Put comment printing under asm-verbose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76780 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a7f6e089f1f77bbc9bc9daf2804b847ebba705c2 22-Jul-2009 David Greene <greened@obbligato.org> Make some changes suggested by Bill and Evan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76775 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
29ff37f39c305455752941fbf8a426b1f4d877fc 22-Jul-2009 David Greene <greened@obbligato.org> Make some changes suggested by Bill and Evan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76775 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
680c6f69828e44b73f2dbea9922c35c8cd481f52 22-Jul-2009 Chris Lattner <sabre@nondot.org> remove the SelectSectionForMachineConst hook, replacing it with
a new getSectionForMergableConstant hook. This removes one dependence
of TAI on Type, and provides the hook with enough info to make the
right decision based on whether the global has relocations etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76705 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
298414ec1891ce8d3a1b69e6019ad8765c8e69dc 22-Jul-2009 Chris Lattner <sabre@nondot.org> remove the SelectSectionForMachineConst hook, replacing it with
a new getSectionForMergableConstant hook. This removes one dependence
of TAI on Type, and provides the hook with enough info to make the
right decision based on whether the global has relocations etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76705 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
5454456ad84ec6080b09188456f27493d9ca4b87 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Let each target determines whether a machine instruction is dead. If true, that allows late codeine passes to delete it.

This is considered a workaround. The problem is some targets are not modeling side effects correctly. PPC is apparently one of those. This patch allows ppc llvm-gcc to bootstrap on Darwin. Once we find out which instruction definitions are wrong, we can remove the PPCInstrInfo workaround.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76703 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
irtRegRewriter.cpp
fc6ad402fb267cba1625801444aad30da43d383a 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Let each target determines whether a machine instruction is dead. If true, that allows late codeine passes to delete it.

This is considered a workaround. The problem is some targets are not modeling side effects correctly. PPC is apparently one of those. This patch allows ppc llvm-gcc to bootstrap on Darwin. Once we find out which instruction definitions are wrong, we can remove the PPCInstrInfo workaround.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76703 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
irtRegRewriter.cpp
175b6540352920afd47979cecb8c2667a3f7fdd3 22-Jul-2009 Owen Anderson <resistor@mac.com> Get rid of the Pass+Context magic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76702 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ntrinsicLowering.cpp
electionDAG/CallingConvLower.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAG.cpp
hadowStackGC.cpp
nreachableBlockElim.cpp
e922c0201916e0b980ab3cfe91e1413e68d55647 22-Jul-2009 Owen Anderson <resistor@mac.com> Get rid of the Pass+Context magic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76702 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ntrinsicLowering.cpp
electionDAG/CallingConvLower.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAG.cpp
hadowStackGC.cpp
nreachableBlockElim.cpp
bdb23b3806e83737a67a023a729547caf03fc533 22-Jul-2009 Chris Lattner <sabre@nondot.org> reimplement Constant::ContainsRelocations as
Constant::getRelocationInfo(), which has a much simpler
to use API. It still should not be part of libvmcore, but
is better than it was. Also teach it to be smart about
hidden visibility.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76700 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
7cf12c7efd37dc12c3ed536a3f4c373dddac2b85 22-Jul-2009 Chris Lattner <sabre@nondot.org> reimplement Constant::ContainsRelocations as
Constant::getRelocationInfo(), which has a much simpler
to use API. It still should not be part of libvmcore, but
is better than it was. Also teach it to be smart about
hidden visibility.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76700 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
6ffaeb4deb991625622d120920c96ae47127a782 22-Jul-2009 Lang Hames <lhames@gmail.com> Exposed PHIElimination pass within CodeGen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76688 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
fae02a2ab19abdf12854356e19aeb1da62a0b8ea 22-Jul-2009 Lang Hames <lhames@gmail.com> Exposed PHIElimination pass within CodeGen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76688 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
HIElimination.h
7e8c86d3f88e4b5e3977210dc2a76ae1946a157c 22-Jul-2009 David Greene <greened@obbligato.org> Add some support for iterative coalescers to calculate a joined live
range's weight properly. This is turned off right now in the sense that
you'll get an assert if you get into a situation that can only be caused
by an iterative coalescer. All other code paths operate exactly as
before so there is no functional change with this patch. The asserts
should be disabled if/when an iterative coalescer gets added to trunk.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76680 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
80607c9b2bdb09993ac48e40c48852e124eb2c0b 22-Jul-2009 David Greene <greened@obbligato.org> Add some support for iterative coalescers to calculate a joined live
range's weight properly. This is turned off right now in the sense that
you'll get an assert if you get into a situation that can only be caused
by an iterative coalescer. All other code paths operate exactly as
before so there is no functional change with this patch. The asserts
should be disabled if/when an iterative coalescer gets added to trunk.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76680 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
690b8d58190f71ff277f1f8b74a13ba35bedce4f 22-Jul-2009 Chris Lattner <sabre@nondot.org> no really, I can spell!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76679 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
354c0165e755fd857bc89792243b82387ee3936d 22-Jul-2009 Chris Lattner <sabre@nondot.org> no really, I can spell!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76679 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
8f3f851edb0f3339c8913f666492d3be9843e854 22-Jul-2009 Chris Lattner <sabre@nondot.org> add an API so target-independent codegen can determine if a constant
pool entry will require relocations against it. I implemented this
conservatively for ARM, someone who is knowledgable about it should
see if this can be improved.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76678 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cb4596364369ea36ff5675eb12fc62d0c6f1f0dd 22-Jul-2009 Chris Lattner <sabre@nondot.org> add an API so target-independent codegen can determine if a constant
pool entry will require relocations against it. I implemented this
conservatively for ARM, someone who is knowledgable about it should
see if this can be improved.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76678 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
f2492c371544875f6fb195e083ba0c94326eeb1d 22-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Change ELFCodeEmitter logic to emit the constant pool and jump tables to
their appropriate sections before the code itself. They need to be emitted
before the function because on some targets (x86 but not x86_64) the later
may reference a JT or CP entry address


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76672 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFCodeEmitter.h
82a70ccb24a09dd38ab8eaf55428880781fe9006 22-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Change ELFCodeEmitter logic to emit the constant pool and jump tables to
their appropriate sections before the code itself. They need to be emitted
before the function because on some targets (x86 but not x86_64) the later
may reference a JT or CP entry address


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76672 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFCodeEmitter.h
3f1d2c3a512eacb997c35e6f1277549b31c892cb 21-Jul-2009 Chris Lattner <sabre@nondot.org> revert r76602, 76603, and r76615, pending design discussions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76646 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
3380d5c4aaafc3d78d32f583d685d64a67ae5224 21-Jul-2009 Chris Lattner <sabre@nondot.org> revert r76602, 76603, and r76615, pending design discussions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76646 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
ff45145136161b5399af8fcda61d1cc253703ebd 21-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Remove shift amount flavor. It isn't actually complete enough to
be useful, and it's currently unused. (Some issues: it isn't actually
rich enough to capture the semantics on many architectures, and
semantics can vary depending on the type being shifted.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76633 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b3e717192635873a0d8491fc45ddb64c0e4bda15 21-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Remove shift amount flavor. It isn't actually complete enough to
be useful, and it's currently unused. (Some issues: it isn't actually
rich enough to capture the semantics on many architectures, and
semantics can vary depending on the type being shifted.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76633 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
f498f7d323ac5db82ad9e3b56438de7fa13be971 21-Jul-2009 David Greene <greened@obbligato.org> Prefix IR dumps with LiveInterval indices when possible. This turns
this:

%ESI<def> = MOV32rr %EDI<kill>
ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>
%reg1027<def> = MOVZX64rr32 %ESI
%reg1027<def> = ADD64ri8 %reg1027, 15, %EFLAGS<imp-def,dead>
%reg1027<def> = AND64ri8 %reg1027, -16, %EFLAGS<imp-def,dead>
%RDI<def> = MOV64rr %RSP
%RDI<def> = SUB64rr %RDI, %reg1027<kill>, %EFLAGS<imp-def,dead>
%RSP<def> = MOV64rr %RDI

into this:

4 %reg1024<def> = MOV32rr %EDI<kill>
12 ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>
20 %reg1025<def> = MOVZX64rr32 %reg1024
28 %reg1026<def> = MOV64rr %reg1025<kill>
36 %reg1026<def> = ADD64ri8 %reg1026, 15, %EFLAGS<imp-def,dead>
44 %reg1027<def> = MOV64rr %reg1026<kill>
52 %reg1027<def> = AND64ri8 %reg1027, -16, %EFLAGS<imp-def,dead>
60 %reg1028<def> = MOV64rr %RSP
68 %reg1029<def> = MOV64rr %reg1028<kill>
76 %reg1029<def> = SUB64rr %reg1029, %reg1027<kill>, %EFLAGS<imp-def,dead>
84 %RSP<def> = MOV64rr %reg1029

This helps greatly when debugging register allocation and coalescing
problems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76615 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a358c1db5c744f7c524b18f2860c2d48613adbd1 21-Jul-2009 David Greene <greened@obbligato.org> Prefix IR dumps with LiveInterval indices when possible. This turns
this:

%ESI<def> = MOV32rr %EDI<kill>
ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>
%reg1027<def> = MOVZX64rr32 %ESI
%reg1027<def> = ADD64ri8 %reg1027, 15, %EFLAGS<imp-def,dead>
%reg1027<def> = AND64ri8 %reg1027, -16, %EFLAGS<imp-def,dead>
%RDI<def> = MOV64rr %RSP
%RDI<def> = SUB64rr %RDI, %reg1027<kill>, %EFLAGS<imp-def,dead>
%RSP<def> = MOV64rr %RDI

into this:

4 %reg1024<def> = MOV32rr %EDI<kill>
12 ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>
20 %reg1025<def> = MOVZX64rr32 %reg1024
28 %reg1026<def> = MOV64rr %reg1025<kill>
36 %reg1026<def> = ADD64ri8 %reg1026, 15, %EFLAGS<imp-def,dead>
44 %reg1027<def> = MOV64rr %reg1026<kill>
52 %reg1027<def> = AND64ri8 %reg1027, -16, %EFLAGS<imp-def,dead>
60 %reg1028<def> = MOV64rr %RSP
68 %reg1029<def> = MOV64rr %reg1028<kill>
76 %reg1029<def> = SUB64rr %reg1029, %reg1027<kill>, %EFLAGS<imp-def,dead>
84 %RSP<def> = MOV64rr %reg1029

This helps greatly when debugging register allocation and coalescing
problems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76615 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ae9822178ceb757bb0778146cf899bd715382f4f 21-Jul-2009 Chris Lattner <sabre@nondot.org> make AsmPrinter::doFinalization iterate over the global variables
and call PrintGlobalVariable, allowing elimination and simplification
of various targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76604 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
40bbebde9d250b875a47a688d0c6552834ada48f 21-Jul-2009 Chris Lattner <sabre@nondot.org> make AsmPrinter::doFinalization iterate over the global variables
and call PrintGlobalVariable, allowing elimination and simplification
of various targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76604 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b528d7627c5aa90478e8ae756fabc1d2a61f79d9 21-Jul-2009 David Greene <greened@obbligato.org> Add PrefixPrinter arguments to the dump routines for MachineFunction and
MachineBasicBlock. We'll use these shortly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76603 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineFunction.cpp
4b938958bcc59586508bc9681e75c2e3f5164672 21-Jul-2009 David Greene <greened@obbligato.org> Add PrefixPrinter arguments to the dump routines for MachineFunction and
MachineBasicBlock. We'll use these shortly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76603 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineFunction.cpp
71f286c68d892cd26eab145e9de034f3d5fa41d4 21-Jul-2009 Owen Anderson <resistor@mac.com> Rename getConstantInt{True|False} to get{True|False} at Chris' behest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76598 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
b3056faa5554ded7ac1ac5865d10ef5839fb77d3 21-Jul-2009 Owen Anderson <resistor@mac.com> Rename getConstantInt{True|False} to get{True|False} at Chris' behest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76598 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
c889b3b87756ad1f7f077024f0bafc56bc2d883a 21-Jul-2009 Chris Lattner <sabre@nondot.org> Rename LessPrivateGlobalPrefix -> LinkerPrivateGlobalPrefix to match the
LLVM IR concept.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76590 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achOWriter.cpp
90f8b7073dd472afb21bc33be0f24391e7a4505b 21-Jul-2009 Chris Lattner <sabre@nondot.org> Rename LessPrivateGlobalPrefix -> LinkerPrivateGlobalPrefix to match the
LLVM IR concept.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76590 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achOWriter.cpp
f7e1206ae4478137e5926bde150106f3bdbc2a1f 21-Jul-2009 Evan Cheng <evan.cheng@apple.com> Another rewriter bug exposed by recent coalescer changes. ReuseInfo::GetRegForReload() should make sure the "switched" register is in the desired register class. I'm surprised this hasn't caused more failures in the past.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76558 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
5d885023feac777ac0bcf1b63ac8282ab76f3ec7 21-Jul-2009 Evan Cheng <evan.cheng@apple.com> Another rewriter bug exposed by recent coalescer changes. ReuseInfo::GetRegForReload() should make sure the "switched" register is in the desired register class. I'm surprised this hasn't caused more failures in the past.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76558 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
9198e93dc38dc6d0fdc4893cd43da4808dfc012f 21-Jul-2009 Daniel Dunbar <daniel@zuster.org> Simplify / normalize some uses of Value::getName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76553 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fbee579ed46016166d88b4defb81a2e7e253062d 21-Jul-2009 Daniel Dunbar <daniel@zuster.org> Simplify / normalize some uses of Value::getName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76553 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
88ac2e4b5bb5ce6863ae17b5e1233793b9424d2c 21-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Support adding relocations for data sections, handling the cases where
global declared symbols are initialized with references from other global
symbols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76540 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
68491c12179f963b346aa4cb8e1b924184d79970 21-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Support adding relocations for data sections, handling the cases where
global declared symbols are initialized with references from other global
symbols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76540 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
3f8f2810f286608cd5f252354eeea26c99b53aa4 21-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix a dagga combiner bug: avoid creating illegal constant.

Is this really a winning transformation?
fold (shl (srl x, c1), c2) -> (shl (and x, (shl -1, c1)), (sub c2, c1)) or
(srl (and x, (shl -1, c1)), (sub c1, c2))


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76535 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d101a72d79d910abf781e6573be0edac99061acc 21-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix a dagga combiner bug: avoid creating illegal constant.

Is this really a winning transformation?
fold (shl (srl x, c1), c2) -> (shl (and x, (shl -1, c1)), (sub c2, c1)) or
(srl (and x, (shl -1, c1)), (sub c1, c2))


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76535 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
153afcae9b32c19724f869327822a53535bbfab0 21-Jul-2009 Owen Anderson <resistor@mac.com> Move a bit more state over to the LLVMContext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76533 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f53c371983908f02678b0e12c5d18466dcc70ffd 21-Jul-2009 Owen Anderson <resistor@mac.com> Move a bit more state over to the LLVMContext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76533 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
4cdaee1ba79096421c9f1a2f84c3a6a96f9eb791 21-Jul-2009 Evan Cheng <evan.cheng@apple.com> Cross RC coalescing is now on by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76519 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c95be59371e0b9ed827076953fd7e1270e418ff8 21-Jul-2009 Evan Cheng <evan.cheng@apple.com> Cross RC coalescing is now on by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76519 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d3d20998946bc9067334debe57b79041b2bec722 21-Jul-2009 Dale Johannesen <dalej@apple.com> Move stripping of bitcasts in inline asm arguments
to a place where it affects everything. Occurs
only on calls AFAIK.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76502 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
5339c551b508d8231672b417d9df1629e42af89b 21-Jul-2009 Dale Johannesen <dalej@apple.com> Move stripping of bitcasts in inline asm arguments
to a place where it affects everything. Occurs
only on calls AFAIK.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76502 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
fbefc075e49031064521dfd2a98bea4b168ba40c 20-Jul-2009 Bill Wendling <isanbard@gmail.com> Simplify the code in DarwinTargetAsmInfo::emitUsedDirectiveFor so that humans can understand it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76480 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
ecc2da8efdc07cf01163b7ab6db1f6dc2f134b67 20-Jul-2009 Bill Wendling <isanbard@gmail.com> Simplify the code in DarwinTargetAsmInfo::emitUsedDirectiveFor so that humans can understand it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76480 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
4c5482bae6b8ff9a5b5bae9b13c17d86320cd3d9 20-Jul-2009 Bill Wendling <isanbard@gmail.com> Pass in the unfortunately named "LessPrivatePrefix" for the
"LinkerPrivatePrefix". It seems to have been used in only one place before I
started this "linker_private" business. I'm thinking that a rename is in
order...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76479 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4cef584860acbde1d71157564e0d5f6f935b38a6 20-Jul-2009 Bill Wendling <isanbard@gmail.com> Pass in the unfortunately named "LessPrivatePrefix" for the
"LinkerPrivatePrefix". It seems to have been used in only one place before I
started this "linker_private" business. I'm thinking that a rename is in
order...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76479 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cee787fc3c6b0e4043cebe2c16825f9d0da863a6 20-Jul-2009 Evan Cheng <evan.cheng@apple.com> Use TII->findCommutedOpIndices to find the commute operands (rather than guessing).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76472 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
33d0474bf5d5783cf9690bcab3eabd513d918fc5 20-Jul-2009 Evan Cheng <evan.cheng@apple.com> Use TII->findCommutedOpIndices to find the commute operands (rather than guessing).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76472 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
53ec6b7e82b1846bf326031326092ea2f3858ea8 20-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix some sub-reg coalescing bugs where the coalescer wasn't updating the resulting interval's register class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76458 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
753480ad204c122dab5942ff40f7f5b10c7a891e 20-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix some sub-reg coalescing bugs where the coalescer wasn't updating the resulting interval's register class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76458 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c4d2dafd1427ec9835cb3896ddc2c2f7b178b920 20-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> For PC relative relocations where symbols are defined in the same section they
are referenced, ignore the relocation entry and patch the relocatable field with
the computed symbol offset directly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76414 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LFWriter.h
0a38dc5fda9a22aceecccbad2f024b118ce1d5d8 20-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> For PC relative relocations where symbols are defined in the same section they
are referenced, ignore the relocation entry and patch the relocatable field with
the computed symbol offset directly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76414 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LFWriter.h
1e0e0d15d2749d27af05086f860cc2204f1f828e 20-Jul-2009 Chris Lattner <sabre@nondot.org> implement a new magic global "llvm.compiler.used" which is like llvm.used, but
doesn't cause ".no_dead_strip" to be emitted on darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76399 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
401e10c4fbfcdcfade5065093e2ca97f69a1d144 20-Jul-2009 Chris Lattner <sabre@nondot.org> implement a new magic global "llvm.compiler.used" which is like llvm.used, but
doesn't cause ".no_dead_strip" to be emitted on darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76399 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
achineModuleInfo.cpp
2616560b5e0c80cbdd78a100958d495bdd09a542 20-Jul-2009 Chris Lattner <sabre@nondot.org> use stripPointerCasts to simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76397 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
1d5c49327b81fe99295dc55d3be80a229f214da3 20-Jul-2009 Chris Lattner <sabre@nondot.org> use stripPointerCasts to simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76397 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
41a0785fdd228e1563e606f650cef9b3617ab29e 20-Jul-2009 Bill Wendling <isanbard@gmail.com> Add plumbing for the `linker_private' linkage type. This type is meant for
"private" symbols which the assember shouldn't strip, but which the linker may
remove after evaluation. This is mostly useful for Objective-C metadata.

This is plumbing, so we don't have a use of it yet. More to come, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76385 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
3d10a5a75794356a0a568ce283713adc3a963200 20-Jul-2009 Bill Wendling <isanbard@gmail.com> Add plumbing for the `linker_private' linkage type. This type is meant for
"private" symbols which the assember shouldn't strip, but which the linker may
remove after evaluation. This is mostly useful for Objective-C metadata.

This is plumbing, so we don't have a use of it yet. More to come, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76385 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
458bbfb5aafd3b9e7ce1e2afcb7c8351a1093b7a 19-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix http://llvm.org/bugs/show_bug.cgi?id=4583

Inline asm instructions may have additional <imp-def,kill> register operands.
These operands are not marked with a flag like the normal asm operands, so we
must not assert that there is a flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76373 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
45d34fe35846eed7019bdc2f7814025302849e0c 19-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix http://llvm.org/bugs/show_bug.cgi?id=4583

Inline asm instructions may have additional <imp-def,kill> register operands.
These operands are not marked with a flag like the normal asm operands, so we
must not assert that there is a flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76373 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
43e3a62bc33eb3c0ba666041738247853fd0a4b7 19-Jul-2009 Daniel Dunbar <daniel@zuster.org> Fix some minor MSVC compiler warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
piller.h
cfb8a1bea15f50e6609283c0e06f815a1448a14b 19-Jul-2009 Daniel Dunbar <daniel@zuster.org> Fix some minor MSVC compiler warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
piller.h
2c1fe1aac6032f17855607c46acacb18cf821fde 19-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use R_X86_64_32S to handle Jump Table Index relocation entries. Hide TAI usage inside getSection* functions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76347 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
e2b0ecd8be031685a4fe63633235eceae7f1c4fa 19-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use R_X86_64_32S to handle Jump Table Index relocation entries. Hide TAI usage inside getSection* functions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76347 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
530a2d30997c547140bc71ffa13eb427c297d314 18-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use a better name for the label relocations while emitting them for Jump Tables

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76334 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
617dd7baa6dfd3a7b5ee72ace37f6b6aeaa6006b 18-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use a better name for the label relocations while emitting them for Jump Tables

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76334 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
8c20392d2b73d401000ce76959b2288e00f2d968 18-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add support to properly reference private symbols on relocation entries.
Use proper relocation type to build relocations for JumpTables (rodata
sections).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76326 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
171375f73a733edcd7a5f839491cc8da4fdeddfe 18-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add support to properly reference private symbols on relocation entries.
Use proper relocation type to build relocations for JumpTables (rodata
sections).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76326 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
ae7e8fdb7373644a052e7561fe79f645fe9bc3a5 18-Jul-2009 Evan Cheng <evan.cheng@apple.com> Catch more coalescing opportunities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76282 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
438d9900c0170699deaa3124e9b9a7902d7251b6 18-Jul-2009 Evan Cheng <evan.cheng@apple.com> Catch more coalescing opportunities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76282 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
02bc74c0b4aa1e77f993b506f976baa8fdc5e1aa 18-Jul-2009 Evan Cheng <evan.cheng@apple.com> Enable cross register class coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76281 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
5248468473f0488a652b545ad95f7abda302b7b5 18-Jul-2009 Evan Cheng <evan.cheng@apple.com> Enable cross register class coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76281 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
818e7f0efdacc1f64106897d574098ed78340735 18-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix pr4552. Stack slot coloring with register must take care not to generate illegal ams.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76258 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
59959cd96673c2452ad006dc392ef8b5a278609c 18-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix pr4552. Stack slot coloring with register must take care not to generate illegal ams.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76258 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
3f621b34a4ad5326465a46ff73209384e0b0bd37 18-Jul-2009 Chris Lattner <sabre@nondot.org> remove AsmPrinter::findGlobalValue, just use Value::stripPointerCasts instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76246 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
16fe990e56102a355f1e77aca93bf8c79d7b9eb2 18-Jul-2009 Chris Lattner <sabre@nondot.org> remove AsmPrinter::findGlobalValue, just use Value::stripPointerCasts instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76246 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5361537e3d9a8fce60461856581e8e3f25b8fcb7 17-Jul-2009 Evan Cheng <evan.cheng@apple.com> Simplify some more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76239 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
0768f0eb7f5f3784e18c5c60abe83f758d9ded0d 17-Jul-2009 Evan Cheng <evan.cheng@apple.com> Simplify some more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76239 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
8d971615480493288cf6f7365e9b1ce35708c36c 17-Jul-2009 Chris Lattner <sabre@nondot.org> Use more terse and precise linkage checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76237 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
3e0f60be46cb5363d4375f26a5e27d1dcd9867fb 17-Jul-2009 Chris Lattner <sabre@nondot.org> Use more terse and precise linkage checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76237 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
4dd585da7f48f0693efffc0c878b243cf1ef78b3 17-Jul-2009 Dan Gohman <gohman@apple.com> Eliminate yet another copy of getOpcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76236 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
8906f950068fab18a5d1065ec11bd6563a46728d 17-Jul-2009 Dan Gohman <gohman@apple.com> Eliminate yet another copy of getOpcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76236 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
269e9519269b3f3fd5a43e4a1ac957f841901eb6 17-Jul-2009 Chris Lattner <sabre@nondot.org> these two pieces of code are the same because we always
emit the EHFrame label next to the section_eh_frame and
eh_frame_common labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76234 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
a4ff5e48fc6a4718d3a2af8654cfc06a17310aed 17-Jul-2009 Chris Lattner <sabre@nondot.org> these two pieces of code are the same because we always
emit the EHFrame label next to the section_eh_frame and
eh_frame_common labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76234 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
5c3475ecd4d91b986d1d5b2facbf6618d2fd795a 17-Jul-2009 Chris Lattner <sabre@nondot.org> Untangle a snarl that I discovered when updating the mangler,
starting in getCurrentFunctionEHName. Among other problems,
we would try to privative a "foo.eh" label, but end up emitting
the label as _Lfoo.eh instead of L_foo.eh on darwin. This is really
bad, and the linker has always tolerated these labels existing.
For now, just emit them as _foo.eh.

This patch also fixes problems with ".eh" labels on unnamed
functions and eliminates two strangely defined TargetAsmInfo
hooks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76231 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
e2cf37b88c089a71727b3ecd466856f0cd638813 17-Jul-2009 Chris Lattner <sabre@nondot.org> Untangle a snarl that I discovered when updating the mangler,
starting in getCurrentFunctionEHName. Among other problems,
we would try to privative a "foo.eh" label, but end up emitting
the label as _Lfoo.eh instead of L_foo.eh on darwin. This is really
bad, and the linker has always tolerated these labels existing.
For now, just emit them as _foo.eh.

This patch also fixes problems with ".eh" labels on unnamed
functions and eliminates two strangely defined TargetAsmInfo
hooks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76231 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfException.cpp
3d8214accfbf38af576dbfe4fe624ac3f22e5d59 17-Jul-2009 Chris Lattner <sabre@nondot.org> fix include guard.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76228 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.h
6f37f8f9c3174f7a09344ed25e095b1d6b1ff024 17-Jul-2009 Chris Lattner <sabre@nondot.org> fix include guard.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76228 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.h
cb11cae299f9413e37930761e04090fe119acf2f 17-Jul-2009 Evan Cheng <evan.cheng@apple.com> Simplify the coalescer (finally!) by making LiveIntervals::processImplicitDefs a little more aggressive and teaching liveintervals to make use of isUndef marker on MachineOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76223 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
d129d73b725e32d2fc0c87f392c239db8801e922 17-Jul-2009 Evan Cheng <evan.cheng@apple.com> Simplify the coalescer (finally!) by making LiveIntervals::processImplicitDefs a little more aggressive and teaching liveintervals to make use of isUndef marker on MachineOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76223 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
edd7d11690027b9ff9387d85b7c235cd7fd2cf20 17-Jul-2009 Anton Korobeynikov <asl@math.spbu.ru> Add support for naked functions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76198 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c5ec8a78ea898087ad361e5b755f74a76150e5fd 17-Jul-2009 Anton Korobeynikov <asl@math.spbu.ru> Add support for naked functions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76198 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
65fe694ce3d0e0c8439f1ea696d2c2ad70f49994 17-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> revert one of the loops to use indicies over iterators because there are vector insertions inside the loop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76195 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
b674dbe656984220c362acb7f336d10d890857fe 17-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> revert one of the loops to use indicies over iterators because there are vector insertions inside the loop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76195 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
e3fef569eb316d234212a49110e06bbfe96b0c5e 17-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Make promotion in operation legalization for SETCC work correctly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76153 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a64eb92fe305424ebde2e3de2b12160b8bf76047 17-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Make promotion in operation legalization for SETCC work correctly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76153 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9fc2d69858c807adfa4828900f8b0e78cd473adc 17-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix my brain cramp by inverting the assertion condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76131 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
c1b46f91f52ea838be6d67708a43ff661810fe6a 17-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix my brain cramp by inverting the assertion condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76131 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
54ac4f0daee5c12e47a95fd74f6c279b6a8ce9ea 17-Jul-2009 Daniel Dunbar <daniel@zuster.org> Disable this assert for now, it is firing on an llvm-gcc bootstrap. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76123 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
2df5e554e262c9c2b31b401387fee8678d16cec2 17-Jul-2009 Daniel Dunbar <daniel@zuster.org> Disable this assert for now, it is firing on an llvm-gcc bootstrap. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76123 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
e4db9c5ab0328530a125c80a43bfc3d46ac0155d 17-Jul-2009 Dale Johannesen <dalej@apple.com> Assume an inline asm might be a call, so we get
stack alignment right when it is. This is not
ideal but conservatively correct. Adjust a test
to compensate for changed stack offset value.
gcc.apple/asm-block-57.c



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76120 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
423ccfe51daa699a969cd716ce3a69cb2ada6234 17-Jul-2009 Dale Johannesen <dalej@apple.com> Assume an inline asm might be a call, so we get
stack alignment right when it is. This is not
ideal but conservatively correct. Adjust a test
to compensate for changed stack offset value.
gcc.apple/asm-block-57.c



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76120 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
4a37a69ef65bf725dd9a434b070d6f3b45fed42d 17-Jul-2009 David Greene <greened@obbligato.org> Emit line numbers in asm comments when available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76117 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3ac1ab835caacdeebbd0d7b4d69160f283928d21 17-Jul-2009 David Greene <greened@obbligato.org> Emit line numbers in asm comments when available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76117 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9c69e28556a520f0fa6346ac0666445518e15970 17-Jul-2009 Daniel Dunbar <daniel@zuster.org> Fix inverted preprocessor conditional.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76111 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
24cd3c4711333ca1e07cbdb34475bccfeb762bb6 17-Jul-2009 Daniel Dunbar <daniel@zuster.org> Fix inverted preprocessor conditional.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76111 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
8ad296e39b8b51cd15ea1bfdad0993769762265d 16-Jul-2009 Jeffrey Yasskin <jyasskin@google.com> Add line numbers to OProfile. To do this, I added a processDebugLoc()
call to the MachineCodeEmitter interface and made copying the start
line of a function not conditional on whether we're emitting Dwarf
debug information. I'll propagate the processDebugLoc() calls to the
non-X86 targets in a followup patch.

In the long run, it'll probably be better to gather this information
through the DwarfWriter, but the DwarfWriter currently depends on the
AsmPrinter and TargetAsmInfo, and fixing that would be out of the way
for this patch.

There's a bug in OProfile 0.9.4 that makes it ignore line numbers for
addresses above 4G, and a patch fixing it at
http://thread.gmane.org/gmane.linux.oprofile/7634

Sample output:

$ sudo opcontrol --reset; sudo opcontrol --start-daemon; sudo opcontrol --start; `pwd`/Debug/bin/lli fib.bc; sudo opcontrol --stop
Signalling daemon... done
Profiler running.
fib(40) == 165580141
Stopping profiling.

$ opreport -g -d -l `pwd`/Debug/bin/lli|head -60
Overflow stats not available
CPU: Core 2, speed 1998 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000
vma samples % linenr info image name symbol name
00007f67a30370b0 25489 61.2554 fib.c:24 10946.jo fib_left
00007f67a30370b0 1634 6.4106 fib.c:24
00007f67a30370b1 83 0.3256 fib.c:24
00007f67a30370b9 1997 7.8348 fib.c:24
00007f67a30370c6 2080 8.1604 fib.c:27
00007f67a30370c8 988 3.8762 fib.c:27
00007f67a30370cd 1315 5.1591 fib.c:27
00007f67a30370cf 251 0.9847 fib.c:27
00007f67a30370d3 1191 4.6726 fib.c:27
00007f67a30370d6 975 3.8252 fib.c:27
00007f67a30370db 1010 3.9625 fib.c:27
00007f67a30370dd 242 0.9494 fib.c:27
00007f67a30370e1 2782 10.9145 fib.c:28
00007f67a30370e5 3768 14.7828 fib.c:28
00007f67a30370eb 615 2.4128 (no location information)
00007f67a30370f3 6558 25.7287 (no location information)
00007f67a3037100 15603 37.4973 fib.c:29 10946.jo fib_right
00007f67a3037100 1646 10.5493 fib.c:29
00007f67a3037101 45 0.2884 fib.c:29
00007f67a3037109 2372 15.2022 fib.c:29
00007f67a3037116 2234 14.3178 fib.c:32
00007f67a3037118 612 3.9223 fib.c:32
00007f67a303711d 622 3.9864 fib.c:32
00007f67a303711f 385 2.4675 fib.c:32
00007f67a3037123 404 2.5892 fib.c:32
00007f67a3037126 634 4.0633 fib.c:32
00007f67a303712b 870 5.5759 fib.c:32
00007f67a303712d 62 0.3974 fib.c:32
00007f67a3037131 1848 11.8439 fib.c:33
00007f67a3037135 2840 18.2016 fib.c:33
00007f67a303713a 1 0.0064 fib.c:33
00007f67a303713b 1023 6.5564 (no location information)
00007f67a3037143 5 0.0320 (no location information)
000000000080c1e4 15 0.0360 MachineOperand.h:150 lli llvm::MachineOperand::isReg() const
000000000080c1e4 6 40.0000 MachineOperand.h:150
000000000080c1ec 2 13.3333 MachineOperand.h:150
...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76102 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
32360a7e21a4454aa7014992213823fb4319905a 16-Jul-2009 Jeffrey Yasskin <jyasskin@google.com> Add line numbers to OProfile. To do this, I added a processDebugLoc()
call to the MachineCodeEmitter interface and made copying the start
line of a function not conditional on whether we're emitting Dwarf
debug information. I'll propagate the processDebugLoc() calls to the
non-X86 targets in a followup patch.

In the long run, it'll probably be better to gather this information
through the DwarfWriter, but the DwarfWriter currently depends on the
AsmPrinter and TargetAsmInfo, and fixing that would be out of the way
for this patch.

There's a bug in OProfile 0.9.4 that makes it ignore line numbers for
addresses above 4G, and a patch fixing it at
http://thread.gmane.org/gmane.linux.oprofile/7634

Sample output:

$ sudo opcontrol --reset; sudo opcontrol --start-daemon; sudo opcontrol --start; `pwd`/Debug/bin/lli fib.bc; sudo opcontrol --stop
Signalling daemon... done
Profiler running.
fib(40) == 165580141
Stopping profiling.

$ opreport -g -d -l `pwd`/Debug/bin/lli|head -60
Overflow stats not available
CPU: Core 2, speed 1998 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000
vma samples % linenr info image name symbol name
00007f67a30370b0 25489 61.2554 fib.c:24 10946.jo fib_left
00007f67a30370b0 1634 6.4106 fib.c:24
00007f67a30370b1 83 0.3256 fib.c:24
00007f67a30370b9 1997 7.8348 fib.c:24
00007f67a30370c6 2080 8.1604 fib.c:27
00007f67a30370c8 988 3.8762 fib.c:27
00007f67a30370cd 1315 5.1591 fib.c:27
00007f67a30370cf 251 0.9847 fib.c:27
00007f67a30370d3 1191 4.6726 fib.c:27
00007f67a30370d6 975 3.8252 fib.c:27
00007f67a30370db 1010 3.9625 fib.c:27
00007f67a30370dd 242 0.9494 fib.c:27
00007f67a30370e1 2782 10.9145 fib.c:28
00007f67a30370e5 3768 14.7828 fib.c:28
00007f67a30370eb 615 2.4128 (no location information)
00007f67a30370f3 6558 25.7287 (no location information)
00007f67a3037100 15603 37.4973 fib.c:29 10946.jo fib_right
00007f67a3037100 1646 10.5493 fib.c:29
00007f67a3037101 45 0.2884 fib.c:29
00007f67a3037109 2372 15.2022 fib.c:29
00007f67a3037116 2234 14.3178 fib.c:32
00007f67a3037118 612 3.9223 fib.c:32
00007f67a303711d 622 3.9864 fib.c:32
00007f67a303711f 385 2.4675 fib.c:32
00007f67a3037123 404 2.5892 fib.c:32
00007f67a3037126 634 4.0633 fib.c:32
00007f67a303712b 870 5.5759 fib.c:32
00007f67a303712d 62 0.3974 fib.c:32
00007f67a3037131 1848 11.8439 fib.c:33
00007f67a3037135 2840 18.2016 fib.c:33
00007f67a303713a 1 0.0064 fib.c:33
00007f67a303713b 1023 6.5564 (no location information)
00007f67a3037143 5 0.0320 (no location information)
000000000080c1e4 15 0.0360 MachineOperand.h:150 lli llvm::MachineOperand::isReg() const
000000000080c1e4 6 40.0000 MachineOperand.h:150
000000000080c1ec 2 13.3333 MachineOperand.h:150
...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76102 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
4c769c3c06d763b4db82231211c80d5aa9be45b5 16-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach MachineInstr::isRegTiedToDefOperand() to correctly parse inline asm operands.

The inline asm operands must be parsed from the first flag, you cannot assume
that an immediate operand preceeding a register use operand is the flag.
PowerPC "m" operands are represented as (flag, imm, reg) triples.
isRegTiedToDefOperand() would incorrectly interpret the imm as the flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76101 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
57e599a46b7b1321f9af02d1cecb4fa6b34f8a52 16-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach MachineInstr::isRegTiedToDefOperand() to correctly parse inline asm operands.

The inline asm operands must be parsed from the first flag, you cannot assume
that an immediate operand preceeding a register use operand is the flag.
PowerPC "m" operands are represented as (flag, imm, reg) triples.
isRegTiedToDefOperand() would incorrectly interpret the imm as the flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76101 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
6dbb7f62ad93f4034dff2825dd4d1f33c667cc5a 16-Jul-2009 Evan Cheng <evan.cheng@apple.com> Changed my mind. We now allow remat of instructions whose defs have subreg indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76100 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegRewriter.cpp
5f15992b77f178f633e414603a732279997ae1e2 16-Jul-2009 Evan Cheng <evan.cheng@apple.com> Changed my mind. We now allow remat of instructions whose defs have subreg indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76100 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegRewriter.cpp
48db02d0d921faded40a05912717a380e0f62642 16-Jul-2009 Owen Anderson <resistor@mac.com> Privatize the ConstantFP table. I'm on a roll!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76097 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
914e50c841bbc248ab94144c11813b5785b1292d 16-Jul-2009 Owen Anderson <resistor@mac.com> Privatize the ConstantFP table. I'm on a roll!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76097 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
e1f1f82a2c1506c57f77df09c0a86de6e59ff952 16-Jul-2009 Owen Anderson <resistor@mac.com> Move the ConstantInt uniquing table into LLVMContextImpl. This exposed a number of issues in
our current context-passing stuff, which is also fixed here


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76089 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
001dbfebcbbded8c8e74b19e838b50da2b6c6fb5 16-Jul-2009 Owen Anderson <resistor@mac.com> Move the ConstantInt uniquing table into LLVMContextImpl. This exposed a number of issues in
our current context-passing stuff, which is also fixed here


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76089 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
4484c98df5eab8501adbe0dfca508cec45003cb0 16-Jul-2009 Anton Korobeynikov <asl@math.spbu.ru> Let RegisterInfo decide whether it can emit cross-class copy or not

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75955 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
d519756203868b1bb92f2be9a357850689886ee2 16-Jul-2009 Anton Korobeynikov <asl@math.spbu.ru> Let RegisterInfo decide whether it can emit cross-class copy or not

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75955 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
49d780670d07fa86f61ab1cb006dcd9689983978 16-Jul-2009 Anton Korobeynikov <asl@math.spbu.ru> Scan for presence of calls and determine max callframe size early. To allow ProcessFunctionBeforeCalleeSaveScan() use this information

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75942 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
33b350bf24be396a127c81af045468765731afc7 16-Jul-2009 Anton Korobeynikov <asl@math.spbu.ru> Scan for presence of calls and determine max callframe size early. To allow ProcessFunctionBeforeCalleeSaveScan() use this information

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75942 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
rologEpilogInserter.h
3942ed7e05f362b0c45d309609fb7c96a336d93e 16-Jul-2009 Anton Korobeynikov <asl@math.spbu.ru> Propagate return result extension type

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75925 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
0692fabb4e681da2907361346ff984290dbb3e40 16-Jul-2009 Anton Korobeynikov <asl@math.spbu.ru> Propagate return result extension type

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75925 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
463a3e4dd8149ca3f4ab27a71f2a9f48e02c2726 16-Jul-2009 Evan Cheng <evan.cheng@apple.com> Let callers decide the sub-register index on the def operand of rematerialized instructions.
Avoid remat'ing instructions whose def have sub-register indices for now. It's just really really hard to get all the cases right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75900 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
378445303b10b092a898a75131141a8259cff50b 16-Jul-2009 Evan Cheng <evan.cheng@apple.com> Let callers decide the sub-register index on the def operand of rematerialized instructions.
Avoid remat'ing instructions whose def have sub-register indices for now. It's just really really hard to get all the cases right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75900 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegRewriter.cpp
f4f4dcd25b5c068d47403a417b3b0fc01f56f520 16-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix coding style issues pointed by Bill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75898 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFWriter.cpp
LFWriter.h
115934eb57d02d4413aea1931a56ca9102d59f0b 16-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix coding style issues pointed by Bill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75898 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFWriter.cpp
LFWriter.h
76031e84c67ec56a651dd274d2ac197eb03e41df 16-Jul-2009 Devang Patel <dpatel@apple.com> Skip special LLVM prefix '1' while emitting linknage name.
This prefix is used by LLVM to inform the asm printer to not emit usual global symbol prefix before the symbol name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75875 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
53cb17dfbcf314e434e2826c8076a013f8f799b3 16-Jul-2009 Devang Patel <dpatel@apple.com> Skip special LLVM prefix '1' while emitting linknage name.
This prefix is used by LLVM to inform the asm printer to not emit usual global symbol prefix before the symbol name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75875 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
83b8c0ea92f42e25d6cb535907ed8353c59cc44c 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> We don't need to use llvm_report_error, this interface can deal with errors
(although we don't get a very good error message).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75864 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
36129dba4f4134bc9cc83e3ea830e215754b1baf 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> We don't need to use llvm_report_error, this interface can deal with errors
(although we don't get a very good error message).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75864 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
140166dfcd14dc05ebca646f41d1dfe155718182 16-Jul-2009 Owen Anderson <resistor@mac.com> Revert yesterday's change by removing the LLVMContext parameter to AllocaInst and MallocInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75863 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
tackProtector.cpp
50dead06ffc107edb7e84857baaeeb09039c631c 16-Jul-2009 Owen Anderson <resistor@mac.com> Revert yesterday's change by removing the LLVMContext parameter to AllocaInst and MallocInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75863 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
tackProtector.cpp
f87b6fe74ebcdd70263889c697960ee7525e9b79 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75862 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
6d823cd39d8d16571682cd1bb4cbf2ecb4815d8e 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Add missing includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75862 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
c8a017441ab0045e249fdf0463f8489c37c58a63 16-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that there is no kill flag on tied operands on two-address instructions.
This extra check is not trigged when runnning "make check" on top-of-tree.

Change error message to better match llvm_unreachable() grammar.

Don't call llvm_unreachable() when writing error messages to a file, but keep going.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75860 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
f7d3e696a5f6e1f467ff107b6db75175887f4916 16-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that there is no kill flag on tied operands on two-address instructions.
This extra check is not trigged when runnning "make check" on top-of-tree.

Change error message to better match llvm_unreachable() grammar.

Don't call llvm_unreachable() when writing error messages to a file, but keep going.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75860 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
f0cda48cf2490ed0212fc438beec5e803beb87f1 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Lift addAssemblyEmitter into LLVMTargetMachine.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75859 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
5d77cad60bd82dfa2d00f78e26443d667922efbf 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Lift addAssemblyEmitter into LLVMTargetMachine.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75859 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
3e0ad8b5c033e9640473e7a274dbcd5d71dc4419 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Lift DumpAsm / -print-emitted-asm functionality into LLVMTargetMachine.
- No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75848 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
cfe9a605eea542d91e3db74289b69b7e317d90a6 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Lift DumpAsm / -print-emitted-asm functionality into LLVMTargetMachine.
- No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75848 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
808e8e7ffdb5ac1f99cb9e4c563f2e6472499d32 16-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix bug in RegScavenger::scavengeRegister().

Reserved registers are not candidates for scavenging, and they were removed
from the candidate list like this:

CreateRegClassMask(RC, Candidates);
Candidates ^= ReservedRegs;

However, when there are reserved registers outside RC, this causes invalid
bits to be set in Candidates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75847 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
72fbc3d9d260e061bdee07059fcd63772c714091 16-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix bug in RegScavenger::scavengeRegister().

Reserved registers are not candidates for scavenging, and they were removed
from the candidate list like this:

CreateRegClassMask(RC, Candidates);
Candidates ^= ReservedRegs;

However, when there are reserved registers outside RC, this causes invalid
bits to be set in Candidates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75847 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
6361f97916fc9aa3fc9e983287bc69ca0570fde8 15-Jul-2009 Owen Anderson <resistor@mac.com> Move a few more convenience factory functions from Constant to LLVMContext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75840 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
a90b3dc2f1f70ab7102ec3f1fc57f199fd56d7cc 15-Jul-2009 Owen Anderson <resistor@mac.com> Move a few more convenience factory functions from Constant to LLVMContext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75840 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
41d72e44851d7e2b674f20a9686988ed5a422c9b 15-Jul-2009 Evan Cheng <evan.cheng@apple.com> ShortenDeadCopySrcLiveRange needs to be more conservative in multi-kill situations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75838 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
a499effd3b5ccdcbfd472f1f3c8a06f00056303d 15-Jul-2009 Evan Cheng <evan.cheng@apple.com> ShortenDeadCopySrcLiveRange needs to be more conservative in multi-kill situations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75838 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
129f8fea7b991a5a38ce147e6b2adcba475da817 15-Jul-2009 Ted Kremenek <kremenek@apple.com> Lexically order files in CMakeLists.txt files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75831 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
193562982930fb7c094dbe2c8b10fd18a1fac1d6 15-Jul-2009 Ted Kremenek <kremenek@apple.com> Lexically order files in CMakeLists.txt files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75831 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
a412a42b0f35568ee63d8f1d09d9327a55ce5f95 15-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> use std::vector instead of std::list for both Section and Symbol lists because
we care more about random access than insertion/deletion of elements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75828 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
4b70fab658114dbab81725f2a42db381bf6f031f 15-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> use std::vector instead of std::list for both Section and Symbol lists because
we care more about random access than insertion/deletion of elements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75828 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
1ad1c1d327aa47a077ece9c0f49fc59200872b63 15-Jul-2009 Chris Lattner <sabre@nondot.org> remove printSuffixedName.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75742 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f1cfea2dbfd6ebc0008ecd2d37a1c91058bbfdd1 15-Jul-2009 Chris Lattner <sabre@nondot.org> remove printSuffixedName.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75742 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9f5b2aa7fba203469386acc413c23dd41a713bc9 15-Jul-2009 Owen Anderson <resistor@mac.com> Move EVER MORE stuff over to LLVMContext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75703 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ntrinsicLowering.cpp
electionDAG/LegalizeDAG.cpp
hadowStackGC.cpp
tackProtector.cpp
9adc0abad3c3ed40a268ccbcee0c74cb9e1359fe 15-Jul-2009 Owen Anderson <resistor@mac.com> Move EVER MORE stuff over to LLVMContext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75703 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
ntrinsicLowering.cpp
electionDAG/LegalizeDAG.cpp
hadowStackGC.cpp
tackProtector.cpp
302008dbeae03364ffffc1bcf77d2eb28897d98a 14-Jul-2009 David Greene <greened@obbligato.org> Have asm printers use formatted_raw_ostream directly to avoid a
dynamic_cast<>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75670 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LVMTargetMachine.cpp
71847813bc419f7a0667468136a07429c6d9f164 14-Jul-2009 David Greene <greened@obbligato.org> Have asm printers use formatted_raw_ostream directly to avoid a
dynamic_cast<>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75670 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LVMTargetMachine.cpp
b3cdde6d77eadb722aff894b1d90498ce70babc2 14-Jul-2009 Chris Lattner <sabre@nondot.org> Reapply my previous asmprinter changes now with more testing and two
additional bug fixes:

1. The bug that everyone hit was a problem in the asmprinter where it
would remove $stub but keep the L prefix on a name when emitting the
indirect symbol. This is easy to fix by keeping the name of the stub
and the name of the symbol in a StringMap instead of just keeping a
StringSet and trying to reconstruct it late.

2. There was a problem printing the personality function. The current
logic to print out the personality function from the DWARF information
is a bit of a cesspool right now that duplicates a bunch of other
logic in the asm printer. The short version of it is that it depends
on emitting both the L and _ prefix for symbols (at least on darwin)
and until I can untangle it, it is best to switch the mangler back to
emitting both prefixes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
achOCodeEmitter.cpp
achOWriter.cpp
b8158acc23f5f0bf235fb1c6a8182a38ec9b00b2 14-Jul-2009 Chris Lattner <sabre@nondot.org> Reapply my previous asmprinter changes now with more testing and two
additional bug fixes:

1. The bug that everyone hit was a problem in the asmprinter where it
would remove $stub but keep the L prefix on a name when emitting the
indirect symbol. This is easy to fix by keeping the name of the stub
and the name of the symbol in a StringMap instead of just keeping a
StringSet and trying to reconstruct it late.

2. There was a problem printing the personality function. The current
logic to print out the personality function from the DWARF information
is a bit of a cesspool right now that duplicates a bunch of other
logic in the asm printer. The short version of it is that it depends
on emitting both the L and _ prefix for symbols (at least on darwin)
and until I can untangle it, it is best to switch the mangler back to
emitting both prefixes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
achOCodeEmitter.cpp
achOWriter.cpp
bd448e3ca993226084d7f53445388fcd8e46b996 14-Jul-2009 Edwin Török <edwintorok@gmail.com> llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.
This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75640 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfPrinter.cpp
ranchFolding.cpp
LFCodeEmitter.cpp
LFWriter.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
ntrinsicLowering.cpp
iveIntervalAnalysis.cpp
achOCodeEmitter.cpp
achOWriter.cpp
achineInstr.cpp
achineModuleInfo.cpp
ostRASchedulerList.cpp
seudoSourceValue.cpp
egAllocLinearScan.cpp
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
c23197a26f34f559ea9797de51e187087c039c42 14-Jul-2009 Torok Edwin <edwintorok@gmail.com> llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.
This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75640 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfPrinter.cpp
ranchFolding.cpp
LFCodeEmitter.cpp
LFWriter.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
ntrinsicLowering.cpp
iveIntervalAnalysis.cpp
achOCodeEmitter.cpp
achOWriter.cpp
achineInstr.cpp
achineModuleInfo.cpp
ostRASchedulerList.cpp
seudoSourceValue.cpp
egAllocLinearScan.cpp
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
aa2b53498c12c3972f87733108465b59f7cd02a5 14-Jul-2009 Daniel Dunbar <daniel@zuster.org> Revert r7561{9,8,7,6}, which depend on r75610.

--- Reverse-merging r75619 into '.':
U lib/Target/DarwinTargetAsmInfo.cpp
U lib/CodeGen/AsmPrinter/AsmPrinter.cpp
--- Reverse-merging r75618 into '.':
U lib/CodeGen/ELFWriter.cpp
U lib/CodeGen/MachOCodeEmitter.cpp
U lib/CodeGen/MachOWriter.cpp
--- Reverse-merging r75617 into '.':
U lib/Target/CBackend/CBackend.cpp
--- Reverse-merging r75616 into '.':
U tools/bugpoint/Miscompilation.cpp
U tools/lto/LTOCodeGenerator.cpp
U tools/lto/LTOModule.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75638 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
achOCodeEmitter.cpp
achOWriter.cpp
1f316e321a8f2fa0e193c5444584a67a8aabe9a8 14-Jul-2009 Daniel Dunbar <daniel@zuster.org> Revert r7561{9,8,7,6}, which depend on r75610.

--- Reverse-merging r75619 into '.':
U lib/Target/DarwinTargetAsmInfo.cpp
U lib/CodeGen/AsmPrinter/AsmPrinter.cpp
--- Reverse-merging r75618 into '.':
U lib/CodeGen/ELFWriter.cpp
U lib/CodeGen/MachOCodeEmitter.cpp
U lib/CodeGen/MachOWriter.cpp
--- Reverse-merging r75617 into '.':
U lib/Target/CBackend/CBackend.cpp
--- Reverse-merging r75616 into '.':
U tools/bugpoint/Miscompilation.cpp
U tools/lto/LTOCodeGenerator.cpp
U tools/lto/LTOModule.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75638 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
achOCodeEmitter.cpp
achOWriter.cpp
b2de05e42ea607956e52004d90d3ba84d127b6c8 14-Jul-2009 Edwin Török <edwintorok@gmail.com> eliminate extra space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75630 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
481d15a12289ec4d058b863da93794fd8be1e702 14-Jul-2009 Torok Edwin <edwintorok@gmail.com> eliminate extra space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75630 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
d045bb4d1884b06db3d5421872eca83ac09e2ca5 14-Jul-2009 Chris Lattner <sabre@nondot.org> rename getValueName -> getMangledName. These two files have very
dubious looking things that I need to investigate in more detail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75619 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5dc72d2c9f759bf9aa901c1901da8d942a32e254 14-Jul-2009 Chris Lattner <sabre@nondot.org> rename getValueName -> getMangledName. These two files have very
dubious looking things that I need to investigate in more detail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75619 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4b9ebd386c1ac2f9df2fc1aef4d3c8f33658c059 14-Jul-2009 Chris Lattner <sabre@nondot.org> Rename getValueName -> getMangledName


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75618 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOCodeEmitter.cpp
achOWriter.cpp
063af39f87eaefb5d602385f281c5eb3d34fbd70 14-Jul-2009 Chris Lattner <sabre@nondot.org> Rename getValueName -> getMangledName


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75618 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOCodeEmitter.cpp
achOWriter.cpp
37db402da9462e27c0cd2704a11d8c0f28c52e8d 14-Jul-2009 Chris Lattner <sabre@nondot.org> Change the internal interface to makeNameProper to take a bool that
indicates whether the label is private or not, instead of taking
prefix stuff. One effect of this is that symbols will be generated
with *just* the private prefix, instead of both the private prefix
*and* the user-label-prefix, but this doesn't matter as long as it
is consistent. For example we'll now get "Lfoo" instead of "L_foo".
These are just assembler temporary labels anyway, so they never even
make it into the .o file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75607 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
1cda87c3a07dc097f27e365f7f3ff4bcb31f5699 14-Jul-2009 Chris Lattner <sabre@nondot.org> Change the internal interface to makeNameProper to take a bool that
indicates whether the label is private or not, instead of taking
prefix stuff. One effect of this is that symbols will be generated
with *just* the private prefix, instead of both the private prefix
*and* the user-label-prefix, but this doesn't matter as long as it
is consistent. For example we'll now get "Lfoo" instead of "L_foo".
These are just assembler temporary labels anyway, so they never even
make it into the .o file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75607 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfDebug.cpp
bd760a50153e3f543e5ccf0d5d6a34e3a33bd88e 14-Jul-2009 Devang Patel <dpatel@apple.com> Do not use Mangler to remove '1' from linkage name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75574 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1a8d2d2d4f9c019e3ace0053ce3f33449cf85c44 14-Jul-2009 Devang Patel <dpatel@apple.com> Do not use Mangler to remove '1' from linkage name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75574 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
6a598fd56de58b403ebe295a2110f0aeee581489 14-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix pr4544. When remating, make sure the destination register fits the instruction definition. It may be mismatched due to sub-register coalescing.
No test case yet because the code doesn't trigger until 75408 is re-applied.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75572 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5ad147281a2c95b662cbc76e879f340118c8bb19 14-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix pr4544. When remating, make sure the destination register fits the instruction definition. It may be mismatched due to sub-register coalescing.
No test case yet because the code doesn't trigger until 75408 is re-applied.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75572 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
66c7e26156e67deb9dcf46a5697e70c9ebd112c2 14-Jul-2009 Evan Cheng <evan.cheng@apple.com> Revert an accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75553 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
8799dbe5b7be2e959047caf88ce97a04a3526856 14-Jul-2009 Evan Cheng <evan.cheng@apple.com> Revert an accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75553 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
1aad0d13d1c136923a2b32648108753faa620a18 14-Jul-2009 Devang Patel <dpatel@apple.com> Use assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75540 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d84b41615e8a9844d0cc26527ec9ef316fdddb84 14-Jul-2009 Devang Patel <dpatel@apple.com> Use assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75540 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
af939d83a0e1401f0219257327c0277c7fbd3753 14-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Cleanup the global emission and refactor some code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75537 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
d291066879ea4e577572fdbb22ba142826c98ccd 14-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Cleanup the global emission and refactor some code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75537 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
62d0d31be23e51757d2877550864ded52e071a22 14-Jul-2009 Dan Gohman <gohman@apple.com> Move isLCSSAForm, isLoopInvariant, getCanonicalInductionVariable,
and related functions out of LoopBase and into Loop, since they
are specific to BasicBlock-based loops. This also allows the code
to be moved out-of-line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75523 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
16a2c927e95c29a316d0271c93e0490ce3bc06ce 14-Jul-2009 Dan Gohman <gohman@apple.com> Move isLCSSAForm, isLoopInvariant, getCanonicalInductionVariable,
and related functions out of LoopBase and into Loop, since they
are specific to BasicBlock-based loops. This also allows the code
to be moved out-of-line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75523 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
42cf7cc6ace5157c359c6a5758c1d77d0cf0e236 13-Jul-2009 Dan Gohman <gohman@apple.com> Make Loop and MachineLoop be subclasses of LoopBase, rather than typedefs,
using the Curiously Recurring Template Pattern with LoopBase.

This will help further refactoring, and future functionality for
Loop. Also, Headers can now foward-declare Loop, instead of pulling
in LoopInfo.h or doing tricks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75519 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
c8d76d5afb023a1c6b439941be3b62789fcc0ed3 13-Jul-2009 Dan Gohman <gohman@apple.com> Make Loop and MachineLoop be subclasses of LoopBase, rather than typedefs,
using the Curiously Recurring Template Pattern with LoopBase.

This will help further refactoring, and future functionality for
Loop. Also, Headers can now foward-declare Loop, instead of pulling
in LoopInfo.h or doing tricks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75519 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
03cc004a76b1504ea0b11feaab1e026e77eaaf55 13-Jul-2009 Devang Patel <dpatel@apple.com> Use AsmPrinter's Mangler to remove leading '1' from linkage names.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75515 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
87370b8301fa39ee54bdcaae0618fd565e808466 13-Jul-2009 Devang Patel <dpatel@apple.com> Use AsmPrinter's Mangler to remove leading '1' from linkage names.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75515 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8d9397a582f963064c5a044543887336898e8ef8 13-Jul-2009 Owen Anderson <resistor@mac.com> As Chris pointed out, this doesn't actually need an LLVMContext to operate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75508 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
1ca29d318a6632c115b9f62c791077b575494e42 13-Jul-2009 Owen Anderson <resistor@mac.com> As Chris pointed out, this doesn't actually need an LLVMContext to operate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75508 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
714dd9b716dfb8625bd7f2ecb18c6c9660374b9e 13-Jul-2009 Devang Patel <dpatel@apple.com> revert rev. 75503 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75507 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
43da8fbe524f4f1921209e6280678173393fb461 13-Jul-2009 Devang Patel <dpatel@apple.com> revert rev. 75503 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75507 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
aa219559b8feecd575d706a3c7ef6308f08b68af 13-Jul-2009 Devang Patel <dpatel@apple.com> Use Mangler to remove leading '1' from linkage names.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75503 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
7597a6252b29f76c7e65351ef85918d1769713bb 13-Jul-2009 Devang Patel <dpatel@apple.com> Use Mangler to remove leading '1' from linkage names.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75503 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
634861206ef715b330251026657b4261326007d9 13-Jul-2009 David Greene <greened@obbligato.org> Add infrastructure to allow post instruction printing action triggers.
We'll eventually use this to print comments in asm files and do other
fun things.

This adds interfaces to the AsmPrinter and changes TableGen to invoke
the postInstructionAction when appropriate. It also add parameters to
TargetAsmInfo to control comment layout.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75490 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
014700c1a8cba203fd21ff129426ba8a426ab244 13-Jul-2009 David Greene <greened@obbligato.org> Add infrastructure to allow post instruction printing action triggers.
We'll eventually use this to print comments in asm files and do other
fun things.

This adds interfaces to the AsmPrinter and changes TableGen to invoke
the postInstructionAction when appropriate. It also add parameters to
TargetAsmInfo to control comment layout.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75490 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
08edb60710e1272caa7e80e6c33d4fa3140040e3 13-Jul-2009 Daniel Dunbar <daniel@zuster.org> Match declaration to definition (missed a few).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75456 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.h
7a80f5f825a037c6247509ecea82028a73028fc5 13-Jul-2009 Daniel Dunbar <daniel@zuster.org> Match declaration to definition (missed a few).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75456 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.h
d653ac859ecb579af2aee79fc21adf95668a66fb 13-Jul-2009 Daniel Dunbar <daniel@zuster.org> Match declaration to definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75454 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.h
achOWriter.h
89e12a1b2e3380c11be612b0c34751221e4a1c23 13-Jul-2009 Daniel Dunbar <daniel@zuster.org> Match declaration to definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75454 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.h
achOWriter.h
bd4ba8f7ab5f1697d63473ca674dbeb39befbc18 13-Jul-2009 Lang Hames <lhames@gmail.com> Removed some junk code that snuck in to an earlier commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75450 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
fc1b75f7c8fa2f2974c476f99a55b2d006e5d14f 13-Jul-2009 Lang Hames <lhames@gmail.com> Removed some junk code that snuck in to an earlier commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75450 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
15b3932454f2777376ac500eae3999139a2c1f2e 13-Jul-2009 Owen Anderson <resistor@mac.com> Begin the painful process of tearing apart the rat'ss nest that is Constants.cpp and ConstantFold.cpp.
This involves temporarily hard wiring some parts to use the global context. This isn't ideal, but it's
the only way I could figure out to make this process vaguely incremental.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75445 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
achOWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
hadowStackGC.cpp
nreachableBlockElim.cpp
0a5372ed3e8cda10d724feda3c1a1c998db05ca0 13-Jul-2009 Owen Anderson <resistor@mac.com> Begin the painful process of tearing apart the rat'ss nest that is Constants.cpp and ConstantFold.cpp.
This involves temporarily hard wiring some parts to use the global context. This isn't ideal, but it's
the only way I could figure out to make this process vaguely incremental.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75445 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
achOWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
hadowStackGC.cpp
nreachableBlockElim.cpp
238dcb7f78f7cd0950e6eca3a23aa53f4eadb1e7 13-Jul-2009 Daniel Dunbar <daniel@zuster.org> Match declaration to definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75440 91177308-0d34-0410-b5e6-96231b3b80d8
piller.h
deb052a3dd0227579f86d74b3c1d70384ea5c16b 13-Jul-2009 Daniel Dunbar <daniel@zuster.org> Match declaration to definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75440 91177308-0d34-0410-b5e6-96231b3b80d8
piller.h
92a8198f9346913f3db6f35d97ba6bbd8ca1ff37 12-Jul-2009 Chris Lattner <sabre@nondot.org> remove llvm.part.set.* and llvm.part.select.*. They have never been
implemented in codegen, have no frontend to generate them, and are
better implemented with pattern matching (like the ppc backend does
to generate rlwimi/rlwinm etc).

PR4543



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75430 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuild.cpp
eaff5246707cc620736e895c239ff78298b3d95e 12-Jul-2009 Chris Lattner <sabre@nondot.org> remove llvm.part.set.* and llvm.part.select.*. They have never been
implemented in codegen, have no frontend to generate them, and are
better implemented with pattern matching (like the ppc backend does
to generate rlwimi/rlwinm etc).

PR4543



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75430 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuild.cpp
280d15bd08f05838396f368f0de6ca63ab107f3f 12-Jul-2009 Edwin Török <edwintorok@gmail.com> Fix assert(0) conversion, as suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75423 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
reAllocSplitting.cpp
egisterScavenging.cpp
electionDAG/SelectionDAGISel.cpp
f36892335b4919b9120e48a792e6b3630b9de978 12-Jul-2009 Torok Edwin <edwintorok@gmail.com> Fix assert(0) conversion, as suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75423 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
reAllocSplitting.cpp
egisterScavenging.cpp
electionDAG/SelectionDAGISel.cpp
635c9f0fbddb5aef75870f379522b9f279b77385 12-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement support for promotion of AND/OR/XOR on integer types.

The blackfin processor has a legal i16 type, but only logic operations on i32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c8ca3ae27b64fa785f944799a9bc133fac8f90d9 12-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement support for promotion of AND/OR/XOR on integer types.

The blackfin processor has a legal i16 type, but only logic operations on i32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f90244488d1e1ac608a9272ecb1d5950902234c6 12-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix types in PromoteNode handling of CTPOP and friends.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75418 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9a4ba45f4cd0496c422f81e104adf6c03ebdd3ba 12-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix types in PromoteNode handling of CTPOP and friends.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75418 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
675d56222b6b98d2c22a17aaf69a036e57d5426a 11-Jul-2009 Edwin Török <edwintorok@gmail.com> assert(0) -> LLVM_UNREACHABLE.
Make llvm_unreachable take an optional string, thus moving the cerr<< out of
line.
LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
NDEBUG builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75379 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfPrinter.cpp
ranchFolding.cpp
LFCodeEmitter.cpp
LFWriter.cpp
CMetadata.cpp
ntrinsicLowering.cpp
iveIntervalAnalysis.cpp
achOCodeEmitter.cpp
achOWriter.cpp
achineInstr.cpp
achineModuleInfo.cpp
ostRASchedulerList.cpp
seudoSourceValue.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
c25e7581b9b8088910da31702d4ca21c4734c6d7 11-Jul-2009 Torok Edwin <edwintorok@gmail.com> assert(0) -> LLVM_UNREACHABLE.
Make llvm_unreachable take an optional string, thus moving the cerr<< out of
line.
LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
NDEBUG builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75379 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DIE.cpp
smPrinter/DwarfPrinter.cpp
ranchFolding.cpp
LFCodeEmitter.cpp
LFWriter.cpp
CMetadata.cpp
ntrinsicLowering.cpp
iveIntervalAnalysis.cpp
achOCodeEmitter.cpp
achOWriter.cpp
achineInstr.cpp
achineModuleInfo.cpp
ostRASchedulerList.cpp
seudoSourceValue.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
irtRegRewriter.cpp
ced9ff8ea2fac344da91d925294817ad51f51e06 11-Jul-2009 Edwin Török <edwintorok@gmail.com> Convert more assert(0)+abort() -> LLVM_UNREACHABLE,
and abort()/exit() -> llvm_report_error().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75363 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/OcamlGCPrinter.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
ntrinsicLowering.cpp
iveIntervalAnalysis.cpp
achOWriter.cpp
achineVerifier.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egisterScavenging.cpp
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
7d696d80409aad20bb5da0fc4eccab941dd371d4 11-Jul-2009 Torok Edwin <edwintorok@gmail.com> Convert more assert(0)+abort() -> LLVM_UNREACHABLE,
and abort()/exit() -> llvm_report_error().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75363 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/OcamlGCPrinter.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
ntrinsicLowering.cpp
iveIntervalAnalysis.cpp
achOWriter.cpp
achineVerifier.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egisterScavenging.cpp
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
b5a5ab2df4bd8a61bac1be99f2e0a4b8493d964b 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix up support for OptionalDefOperand when it defaults to an actual register def. I need this to get ready for major Thumb1 surgery.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75328 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
8955e93b1ffa7645beea0b51e4b091b96063f613 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix up support for OptionalDefOperand when it defaults to an actual register def. I need this to get ready for major Thumb1 surgery.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75328 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
23a154729df2ebd333211da7c184b123c945ca97 11-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Use CreateStackStoreLoad helper in more places.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
aad3460086a1b29c55f7490c6d8743ea4e53f07d 11-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Use CreateStackStoreLoad helper in more places.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
8aa92df0b08cb2553cab7d3c9f23bd7e2b64f0c5 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> Two-address pass should use findCommutedOpIndices to determine what registers are commuted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75317 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
ebfc177b59c0bda0c2cb54f3f64dce7ee0fa4df2 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> Two-address pass should use findCommutedOpIndices to determine what registers are commuted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75317 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
66cf2c8bec33b88b452a6ca5b0a4a323762693d0 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> Use findCommutedOpIndices to find the operands to commute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75312 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
34c75093f085c7958fa3bd31f3c4a50942d83505 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> Use findCommutedOpIndices to find the operands to commute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75312 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
4c17de983f586bc85e7ee850dc4b6ad5b6e3420a 10-Jul-2009 David Greene <greened@obbligato.org> Make changes suggested by Chris and eliminate newly-added raw_ostream
hooks as they're no longer needed.

The major change with this patch is to make formatted_raw_ostream usable
by any client of raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75283 91177308-0d34-0410-b5e6-96231b3b80d8
smStream.cpp
62fe47a33755719ab9c6e8c239e0dd01fc87e6f9 10-Jul-2009 David Greene <greened@obbligato.org> Make changes suggested by Chris and eliminate newly-added raw_ostream
hooks as they're no longer needed.

The major change with this patch is to make formatted_raw_ostream usable
by any client of raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75283 91177308-0d34-0410-b5e6-96231b3b80d8
smStream.cpp
e8dfcaece2b1f2f0ccfc99b3e63914a82cb0f834 10-Jul-2009 Duncan Sands <baldrick@free.fr> Avoid compiler warnings if assertions turned off.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75267 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
413a15ef0e5e727afeedf57e8b2f416acf3662c0 10-Jul-2009 Duncan Sands <baldrick@free.fr> Avoid compiler warnings if assertions turned off.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75267 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8a0ec3c9d93556ab03b25412560568410cbce001 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Remove TargetInstrInfo::CommuteChangesDestination and added findCommutedOpIndices which returns the operand indices which are swapped (when applicable). This allows for some code clean up and future enhancements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75264 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
argetInstrInfoImpl.cpp
irtRegRewriter.cpp
261ce1d5f89155d2e6f914f281db2004c89ee839 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Remove TargetInstrInfo::CommuteChangesDestination and added findCommutedOpIndices which returns the operand indices which are swapped (when applicable). This allows for some code clean up and future enhancements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75264 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
argetInstrInfoImpl.cpp
irtRegRewriter.cpp
26a17a853b0c122fa18985d5f83877a0d4182cc3 10-Jul-2009 David Greene <greened@obbligato.org> Eliminate an unnecessary include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75256 91177308-0d34-0410-b5e6-96231b3b80d8
smStream.cpp
caf642a97661a34c32ab884261428e427d9bfbad 10-Jul-2009 David Greene <greened@obbligato.org> Eliminate an unnecessary include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75256 91177308-0d34-0410-b5e6-96231b3b80d8
smStream.cpp
7869cae7ecb3aca600aa30d83ebcaa1d0af6c6aa 10-Jul-2009 David Greene <greened@obbligato.org> Redesign this to avoid standard stream classes. This stream class
provides pretty -printing of comments and other such things in asm
files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75202 91177308-0d34-0410-b5e6-96231b3b80d8
smStream.cpp
e7800be8f08da88e9916020bb770e22c0d98625b 10-Jul-2009 David Greene <greened@obbligato.org> Redesign this to avoid standard stream classes. This stream class
provides pretty -printing of comments and other such things in asm
files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75202 91177308-0d34-0410-b5e6-96231b3b80d8
smStream.cpp
6601fcdc38a21a39ac124f2bd8794846519b6455 10-Jul-2009 Owen Anderson <resistor@mac.com> This started as a small change, I swear. Unfortunately, lots of things call the [I|F]CmpInst constructors. Who knew!?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75200 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
333c40096561218bc3597cf153c0a3895274414c 10-Jul-2009 Owen Anderson <resistor@mac.com> This started as a small change, I swear. Unfortunately, lots of things call the [I|F]CmpInst constructors. Who knew!?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75200 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
e8c3da9e64cffdc3b06832eef97b175561146cd0 10-Jul-2009 Bob Wilson <bob.wilson@apple.com> Fix an apparent copy-and-paste problem in an error message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75197 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
22023607345b083907591c32152b2c59e48e0cd7 10-Jul-2009 Bob Wilson <bob.wilson@apple.com> Fix an apparent copy-and-paste problem in an error message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75197 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f1896f2694f5bc4aa4d10c3007821e0772889f24 10-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Make EXTRACT_VECTOR_ELT a bit more flexible in terms of the returned
value. Adjust other code to deal with that correctly. Make
DAGTypeLegalizer::PromoteIntRes_EXTRACT_VECTOR_ELT take advantage of
this new flexibility to simplify the code and make it deal with unusual
vectors (like <4 x i1>) correctly. Fixes PR3037.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75176 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
c680ac90032bf455b2bba77de538fccea08eb267 10-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Make EXTRACT_VECTOR_ELT a bit more flexible in terms of the returned
value. Adjust other code to deal with that correctly. Make
DAGTypeLegalizer::PromoteIntRes_EXTRACT_VECTOR_ELT take advantage of
this new flexibility to simplify the code and make it deal with unusual
vectors (like <4 x i1>) correctly. Fixes PR3037.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75176 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
f3a4d6b841de386e5604f99005d3ed19493505c3 09-Jul-2009 Owen Anderson <resistor@mac.com> As Chris pointed out, we don't actually need to pass the context around here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75161 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
5dcaceb0a6a7fcf508d9898547e10d374b0e4cd1 09-Jul-2009 Owen Anderson <resistor@mac.com> As Chris pointed out, we don't actually need to pass the context around here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75161 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
f94fead99bc140adc6e61dc80e5faf36f85288f7 09-Jul-2009 Chris Lattner <sabre@nondot.org> back out r75156 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75160 91177308-0d34-0410-b5e6-96231b3b80d8
smStream.cpp
2a52c691403ef96d98f0c1013605e97d6aa99a6f 09-Jul-2009 Chris Lattner <sabre@nondot.org> back out r75156 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75160 91177308-0d34-0410-b5e6-96231b3b80d8
smStream.cpp
426fee3741fbd612479f927aeaa4e042a53175f2 09-Jul-2009 David Greene <greened@obbligato.org> Add some classes to produce pretty-printed asm. We'll use these
shortly to provide nicely printed comments and other goodies in
asm files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75156 91177308-0d34-0410-b5e6-96231b3b80d8
smStream.cpp
a63769187152931ed3939f49c9cfc8f6bb1dd7a5 09-Jul-2009 David Greene <greened@obbligato.org> Add some classes to produce pretty-printed asm. We'll use these
shortly to provide nicely printed comments and other goodies in
asm files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75156 91177308-0d34-0410-b5e6-96231b3b80d8
smStream.cpp
a0167020062bbcfe0558faa29dd705ca6f9a8e2a 09-Jul-2009 Owen Anderson <resistor@mac.com> Thread LLVMContext through MVT and related parts of SDISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75153 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
d1474d09cbe5fdeec8ba0d6c6b52f316f3422532 09-Jul-2009 Owen Anderson <resistor@mac.com> Thread LLVMContext through MVT and related parts of SDISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75153 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
10b8d22fc08d063995b647eea82e5ab79d2aff4b 09-Jul-2009 Evan Cheng <evan.cheng@apple.com> Targets sometimes assign fixed stack object to spill certain callee-saved
registers based on dynamic conditions. For example, X86 EBP/RBP, when used as
frame register has to be spilled in the first fixed object. It should inform
PEI this so it doesn't get allocated another stack object. Also, it should not
be spilled as other callee-saved registers but rather its spilling and restoring
are being handled by emitPrologue and emitEpilogue. Avoid spilling it twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75116 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
910139f9ca53fc20a680d51ae61bb1e072095141 09-Jul-2009 Evan Cheng <evan.cheng@apple.com> Targets sometimes assign fixed stack object to spill certain callee-saved
registers based on dynamic conditions. For example, X86 EBP/RBP, when used as
frame register has to be spilled in the first fixed object. It should inform
PEI this so it doesn't get allocated another stack object. Also, it should not
be spilled as other callee-saved registers but rather its spilling and restoring
are being handled by emitPrologue and emitEpilogue. Avoid spilling it twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75116 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
d2bd8627d9bac9a1c4528ea19d76ac7740d52517 09-Jul-2009 Lang Hames <lhames@gmail.com> Improved tracking of value number kills. VN kills are now represented
as an (index,bool) pair. The bool flag records whether the kill is a
PHI kill or not. This code will be used to enable splitting of live
intervals containing PHI-kills.

A slight change to live interval weights introduced an extra spill
into lsr-code-insertion (outside the critical sections). The test
condition has been updated to reflect this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75097 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
piller.cpp
trongPHIElimination.cpp
ffd1326ff8dfc652a8026c3faebf55bbba7c32c7 09-Jul-2009 Lang Hames <lhames@gmail.com> Improved tracking of value number kills. VN kills are now represented
as an (index,bool) pair. The bool flag records whether the kill is a
PHI kill or not. This code will be used to enable splitting of live
intervals containing PHI-kills.

A slight change to live interval weights introduced an extra spill
into lsr-code-insertion (outside the critical sections). The test
condition has been updated to reflect this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75097 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
piller.cpp
trongPHIElimination.cpp
76a3e1ceae509c9918a92c643047e24c0a0aa67d 09-Jul-2009 Dan Gohman <gohman@apple.com> Make SelectionDAG::getVectorShuffle work properly for VECTOR_SHUFFLE
nodes with operand types that differ from the result type. (This
doesn't normally happen right now, because
SelectionDAGLowering::visitShuffleVector normalizes vector shuffles.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75081 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2e4284de53fb70686c5c135387006d033171da2e 09-Jul-2009 Dan Gohman <gohman@apple.com> Make SelectionDAG::getVectorShuffle work properly for VECTOR_SHUFFLE
nodes with operand types that differ from the result type. (This
doesn't normally happen right now, because
SelectionDAGLowering::visitShuffleVector normalizes vector shuffles.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75081 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4a8979320ced9b38019f6f2c074f2d3dbe1b189e 09-Jul-2009 David Goodwin <david_goodwin@apple.com> Use common code for both ARM and Thumb-2 instruction and register info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75067 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f1daf7d8abebd6e0104a6b41a774ccbb19a51c60 09-Jul-2009 David Goodwin <david_goodwin@apple.com> Use common code for both ARM and Thumb-2 instruction and register info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75067 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
54b74335fe618e24bc4c39cdbe4495de437541d4 08-Jul-2009 Duncan Sands <baldrick@free.fr> Nowadays vectors are only split if they have an even
number of elements. Make some simplifications based
on this (in particular SplitVecRes_SETCC). Tighten
up some checking while there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
f2d754bb382cba0bad2774144ddac84be5354d16 08-Jul-2009 Duncan Sands <baldrick@free.fr> Nowadays vectors are only split if they have an even
number of elements. Make some simplifications based
on this (in particular SplitVecRes_SETCC). Tighten
up some checking while there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
b9d98eb3c918aca884e2c2e694b5287aea6d50ac 08-Jul-2009 Bill Wendling <isanbard@gmail.com> Use interators instead of counters for loops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75046 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
058a024eb7265239d527680b0a448cdb48102a46 08-Jul-2009 Bill Wendling <isanbard@gmail.com> Use interators instead of counters for loops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75046 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
baf982b5cb66e22f492741ca30ea4e2d34399674 08-Jul-2009 Owen Anderson <resistor@mac.com> Push LLVMContext _back_ through IRBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75040 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
hadowStackGC.cpp
d1fbd142945f5ef0c273c3d756431f8cb9d25ded 08-Jul-2009 Owen Anderson <resistor@mac.com> Push LLVMContext _back_ through IRBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75040 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
hadowStackGC.cpp
e17fc1d7a2bcc05efc0ebe943254b273c99d77fd 08-Jul-2009 Owen Anderson <resistor@mac.com> Switch GlobalVariable ctors to a sane API, where *either* a context or a module is required.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75025 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
e9b11b431308f4766b73cda93e38ec930c912122 08-Jul-2009 Owen Anderson <resistor@mac.com> Switch GlobalVariable ctors to a sane API, where *either* a context or a module is required.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75025 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
568a8b0cb6eb7447707145b8d07fc778a98da09d 08-Jul-2009 Duncan Sands <baldrick@free.fr> Remove trailing whitespace. Reorder some methods
and cases alphabetically. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
8c899ee031481dbece5f111379a274c848cb5902 08-Jul-2009 Duncan Sands <baldrick@free.fr> Remove trailing whitespace. Reorder some methods
and cases alphabetically. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
8f5253baafe027bb8939498d9eb1083febc7339a 08-Jul-2009 Nick Lewycky <nicholas@mxc.ca> Remove the vicmp and vfcmp instructions. Because we never had a release with
these instructions, no autoupgrade or backwards compatibility support is
provided.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74991 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
7f6aa2b162e5daaf7b9ccf05d749597d3d7cf460 08-Jul-2009 Nick Lewycky <nicholas@mxc.ca> Remove the vicmp and vfcmp instructions. Because we never had a release with
these instructions, no autoupgrade or backwards compatibility support is
provided.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74991 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
e0f136d9637981bbc5096ca396e4df383c59eafe 08-Jul-2009 Owen Anderson <resistor@mac.com> Push LLVMContext through GlobalVariables and IRBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74985 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
3d29df3e8a203b167d8071ea6f805b21db18a5af 08-Jul-2009 Owen Anderson <resistor@mac.com> Push LLVMContext through GlobalVariables and IRBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74985 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackGC.cpp
bb30203c9e9f60a5695451ee91b51fc0e560a6e5 08-Jul-2009 Chris Lattner <sabre@nondot.org> dag combine sext(setcc) -> vsetcc before legalize. To make this safe,
VSETCC must define all bits, which is different than it was documented
to before. Since all targets that implement VSETCC already have this
behavior, and we don't optimize based on this, just change the
documentation. We now get nice code for vec_compare.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74978 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2b7a271c713ff1db83990f691126bc33d6c59b52 08-Jul-2009 Chris Lattner <sabre@nondot.org> dag combine sext(setcc) -> vsetcc before legalize. To make this safe,
VSETCC must define all bits, which is different than it was documented
to before. Since all targets that implement VSETCC already have this
behavior, and we don't optimize based on this, just change the
documentation. We now get nice code for vec_compare.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74978 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b9e009a19589e91a91f0bc99395aa57569fa4d62 08-Jul-2009 Chris Lattner <sabre@nondot.org> SelectionDAG::SignBitIsZero doesn't work right for vectors,
for now, conservatively return false.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a4f73182450ad6d7197c9229f6396f2e54faefdf 08-Jul-2009 Chris Lattner <sabre@nondot.org> SelectionDAG::SignBitIsZero doesn't work right for vectors,
for now, conservatively return false.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d438911f3eba133fcbb6f7df98bd3de7dca0f4eb 08-Jul-2009 Dale Johannesen <dalej@apple.com> Operand of asm("call") (the callee function) is represented
as "X" constraint and "P" modifier on x86. Make this work.
(Change may not be sufficient to fix it for non-Darwin, but
I'm pretty sure it won't break anything.)
gcc.apple/asm-block-32.c
gcc.apple/asm-block-33.c



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
8ea5ec681bd4838c84e545f8a1226a62d3b2f089 08-Jul-2009 Dale Johannesen <dalej@apple.com> Operand of asm("call") (the callee function) is represented
as "X" constraint and "P" modifier on x86. Make this work.
(Change may not be sufficient to fix it for non-Darwin, but
I'm pretty sure it won't break anything.)
gcc.apple/asm-block-32.c
gcc.apple/asm-block-33.c



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
42005c0c20aec31b53f6052585ed7ca9258560f8 08-Jul-2009 Chris Lattner <sabre@nondot.org> add support for legalizing an icmp where the result is illegal (4xi1) but
the input is legal (4 x i32)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
c2c27b3627cf7a8724f2e1ec6a93b1dceea09c25 08-Jul-2009 Chris Lattner <sabre@nondot.org> add support for legalizing an icmp where the result is illegal (4xi1) but
the input is legal (4 x i32)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
108801641f66c01031aa9062a8ece3bfbf0cff78 08-Jul-2009 Chris Lattner <sabre@nondot.org> random code cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74962 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
0a6c2d8deab5124198e8cd5fbb3c43509be3e511 08-Jul-2009 Chris Lattner <sabre@nondot.org> random code cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74962 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
8c5b707bc11ff73031e2e91bbeff5fc37c587a29 08-Jul-2009 Chris Lattner <sabre@nondot.org> implement support for spliting and scalarizing vector setcc's. This
finishes off enough support for vector compares to get the icmp/fcmp
version of 2008-07-23-VSetCC.ll passing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74961 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
5962ed0a36bfad0fb591998964a0da7ddecda1f2 08-Jul-2009 Chris Lattner <sabre@nondot.org> implement support for spliting and scalarizing vector setcc's. This
finishes off enough support for vector compares to get the icmp/fcmp
version of 2008-07-23-VSetCC.ll passing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74961 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
3937b129e61a03fc530011ffae9bbcc00d4cb3fa 08-Jul-2009 Chris Lattner <sabre@nondot.org> lower vector icmp/fcmp to ICMP/FCMP nodes with the right result
(vector of bool).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74960 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
9800e849c10fbcf9f6fcff3698165a01930b8ac2 08-Jul-2009 Chris Lattner <sabre@nondot.org> lower vector icmp/fcmp to ICMP/FCMP nodes with the right result
(vector of bool).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74960 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
75b460578ee242104d7e8483b4ff6e04f5a20894 08-Jul-2009 Chris Lattner <sabre@nondot.org> ScalarizeVecRes_ShiftOp and ScalarizeVecRes_BinOp are the same,
eliminate the former.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74959 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
87c411b5cc254a8d169b834f3487657a8dc1e17a 08-Jul-2009 Chris Lattner <sabre@nondot.org> ScalarizeVecRes_ShiftOp and ScalarizeVecRes_BinOp are the same,
eliminate the former.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74959 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
e53009f0f4d85d1e9c3a2f902bf7fc672765d5a8 08-Jul-2009 Chris Lattner <sabre@nondot.org> add support for vector legalizing of *_EXTEND.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
64a3fa23f8bd02d5b5f44faec6e9cbc26a417c44 08-Jul-2009 Chris Lattner <sabre@nondot.org> add support for vector legalizing of *_EXTEND.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
2eebf84c4a52ccf30e7328c9638e3f1fe6af826d 07-Jul-2009 Devang Patel <dpatel@apple.com> Accidently dropped this while removing dead code in previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74953 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
261cc194d7bf391913ea75617f19d7ad4880d7d2 07-Jul-2009 Devang Patel <dpatel@apple.com> Accidently dropped this while removing dead code in previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74953 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b862f9d56e463e48c206dfe83b7873f2c499dd0f 07-Jul-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74949 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0a4afb6caf08d38130bb867be2c455ffdc54f3ca 07-Jul-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74949 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
be44bedb7fe330e36f5ed544aa48c59742a52185 07-Jul-2009 Owen Anderson <resistor@mac.com> Have scoped mutexes take referenes instead of pointers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74931 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a9d1f2c559ef4b2549e29288fe6944e68913ba0f 07-Jul-2009 Owen Anderson <resistor@mac.com> Have scoped mutexes take referenes instead of pointers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74931 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a57b9e834f3862c8901d853dc1946e8defac2ad9 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> Revert 74898. It broke several tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74925 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
ddb03d831be02323e10b17328f715c0c5ffe3e02 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> Revert 74898. It broke several tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74925 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
73c96a7e95b084ec58ee4e0289066cf76dfbd2f7 07-Jul-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> if the terminator is a branch depending upon the side effects of a
previous cmp; a copy can not be inserted here if the copy insn also has
side effects. We don't have access to the attributes of copy insn here;
so just play safe by finding a safe locations for branch terminators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74898 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
1dd35b4c35ef149a48c511283331f49c04351cae 07-Jul-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> if the terminator is a branch depending upon the side effects of a
previous cmp; a copy can not be inserted here if the copy insn also has
side effects. We don't have access to the attributes of copy insn here;
so just play safe by finding a safe locations for branch terminators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74898 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
2fe17a5352bb867efe10d4651b71cbaf68437071 06-Jul-2009 Evan Cheng <evan.cheng@apple.com> Avoid adding a duplicate def. This fixes PR4478.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74857 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
2c4d96dfe9c309cc6b206c7d2cf03fe9fbd8aa93 06-Jul-2009 Evan Cheng <evan.cheng@apple.com> Avoid adding a duplicate def. This fixes PR4478.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74857 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
8895e1d95e4e1c9cc34e4dddcdd162f4e5a207ae 06-Jul-2009 Duncan Sands <baldrick@free.fr> Fix the cmake build - patch by Xerxes RÃ¥nby.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74825 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
08b7daf3ffa029c742e38bba6ced2b94b1367792 06-Jul-2009 Duncan Sands <baldrick@free.fr> Fix the cmake build - patch by Xerxes RÃ¥nby.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74825 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
2bcbd2e4b520c7bd24d846c4c4f1d618ab57f0fb 06-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Changed ELFCodeEmitter to inherit from ObjectCodeEmitter

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74821 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
6933d3eff8e47a64803ece18b5a78748a674dc43 06-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Changed ELFCodeEmitter to inherit from ObjectCodeEmitter

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74821 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
3290ac97ef4a0c02a48987bb6ce094cc191ef98f 06-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Cleanup MachO writer and code emitter. Fix 80 cols problems, remove extra spaces, shrink down includes and move some methods out-of-line

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74817 91177308-0d34-0410-b5e6-96231b3b80d8
achO.h
achOCodeEmitter.cpp
achOCodeEmitter.h
achOWriter.cpp
achOWriter.h
752e928e6b87a2988588fed9cc224fd6ec02c5f6 06-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Cleanup MachO writer and code emitter. Fix 80 cols problems, remove extra spaces, shrink down includes and move some methods out-of-line

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74817 91177308-0d34-0410-b5e6-96231b3b80d8
achO.h
achOCodeEmitter.cpp
achOCodeEmitter.h
achOWriter.cpp
achOWriter.h
1b3e155ef255aaff9e07760d39a18414841e8e58 06-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Just forgot to include the two new files

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74814 91177308-0d34-0410-b5e6-96231b3b80d8
bjectCodeEmitter.cpp
8ae058a815d41d73965832cf3d190e27a48de5f6 06-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Just forgot to include the two new files

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74814 91177308-0d34-0410-b5e6-96231b3b80d8
bjectCodeEmitter.cpp
aabb9a5359cbb0bf9d25bfb917ecb09c086d034b 06-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add the Object Code Emitter class. Original patch by Aaron Gray, I did some
cleanup, removed some #includes and moved Object Code Emitter out-of-line.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74813 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
achO.h
achOCodeEmitter.cpp
achOCodeEmitter.h
achOWriter.cpp
achOWriter.h
ac57e6e498abccb117e0d61c2fa0f733845e50cb 06-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add the Object Code Emitter class. Original patch by Aaron Gray, I did some
cleanup, removed some #includes and moved Object Code Emitter out-of-line.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74813 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
achO.h
achOCodeEmitter.cpp
achOCodeEmitter.h
achOWriter.cpp
achOWriter.h
a09d234e773549eaf50a8b724dfd7c6471b58e98 06-Jul-2009 Owen Anderson <resistor@mac.com> More LLVMContext-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74807 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
0a205a459884ec745df1c529396dd921f029dafd 06-Jul-2009 Owen Anderson <resistor@mac.com> More LLVMContext-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74807 91177308-0d34-0410-b5e6-96231b3b80d8
warfEHPrepare.cpp
71c697382e6165ab1b601866a52c8f6628517e42 03-Jul-2009 Tilmann Scheller <tilmann.scheller@googlemail.com> Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed arguments in a vararg call.

With the SVR4 ABI on PowerPC, vector arguments for vararg calls are passed differently depending on whether they are a fixed or a variable argument. Variable vector arguments always go into memory, fixed vector arguments are put
into vector registers. If there are no free vector registers available, fixed vector arguments are put on the stack.

The NumFixedArgs attribute allows to decide for an argument in a vararg call whether it belongs to the fixed or variable portion of the parameter list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74764 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
6b61cd185eeb90bec93f042535594132ae1f0f41 03-Jul-2009 Tilmann Scheller <tilmann.scheller@googlemail.com> Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed arguments in a vararg call.

With the SVR4 ABI on PowerPC, vector arguments for vararg calls are passed differently depending on whether they are a fixed or a variable argument. Variable vector arguments always go into memory, fixed vector arguments are put
into vector registers. If there are no free vector registers available, fixed vector arguments are put on the stack.

The NumFixedArgs attribute allows to decide for an argument in a vararg call whether it belongs to the fixed or variable portion of the parameter list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74764 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
79ed671be2e693d376f9f64ba2db8bba582ced1c 03-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Factor some code out and support for Jump Table relocations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74760 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
0b1308f18998344aa707594839a5b7c4618f4762 03-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Factor some code out and support for Jump Table relocations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74760 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
1540fd690f40c4771c411d89adeb142613064dbd 03-Jul-2009 Devang Patel <dpatel@apple.com> Simplify debug info intrisinc lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74733 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
7e1e31f467d87c834d8baf673929865907901313 03-Jul-2009 Devang Patel <dpatel@apple.com> Simplify debug info intrisinc lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74733 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
d097aa0cb5d160031b01d8831904cecbabc5ef81 02-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> CMake build fixes, from Xerxes Ranby

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74720 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
electionDAG/CMakeLists.txt
033080cf6a6f6ca94f20c410204405471c19c535 02-Jul-2009 Douglas Gregor <dgregor@apple.com> CMake build fixes, from Xerxes Ranby

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74720 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
electionDAG/CMakeLists.txt
9dcbc8603c33622ae21421318a2543c3166169d8 02-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> shrinking down #includes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74718 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
45f5d6417bfe9941ba58777865e00098ffff5793 02-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> shrinking down #includes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74718 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
32b6dff32616d6d17b36ccc85cf883fa8021faef 02-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove getFunctionAlignment from TargetELFInfo and use new MachineFunction alignment method

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74686 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
3d62a412fbe517fbbbf5661ef1a748a39f382aa3 02-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove getFunctionAlignment from TargetELFInfo and use new MachineFunction alignment method

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74686 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
f151969c988d7bebf22ded9bde88a860cd59878c 02-Jul-2009 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
6d8f1263f40e6b8fc2cd5cce3dfd9ce99fe09226 02-Jul-2009 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
4fecd7e121ec5b2993b6ff05488f3068f7f1e4d6 02-Jul-2009 Devang Patel <dpatel@apple.com> Simplify. No intentional functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74673 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
07b0ec0927e145458b2e49598b1bbe32262cda6f 02-Jul-2009 Devang Patel <dpatel@apple.com> Simplify. No intentional functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74673 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
1ad58170e3d570da9a7892a572ecdc18881af332 02-Jul-2009 Devang Patel <dpatel@apple.com> Refactor. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74659 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ceddbe8e30a46f99a98033c4618c807bf058499a 02-Jul-2009 Devang Patel <dpatel@apple.com> Refactor. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74659 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
39bd365ee957d1ebb886dc77c4a251610bf3b83d 01-Jul-2009 Devang Patel <dpatel@apple.com> llvm.dbg.declare is always used for local variable's debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74625 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
30d7b650aa443b78cfa1e918bb0d5eaf288b0a2f 01-Jul-2009 Devang Patel <dpatel@apple.com> llvm.dbg.declare is always used for local variable's debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74625 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
0563297ed9360fc554a56d89046c4959f1ff4ca6 01-Jul-2009 Evan Cheng <evan.cheng@apple.com> CommuteChangesDestination() should check if to-be-commuted instruction defines any register. Also teaches the default commuteInstruction() to commute instruction without definitions (e.g. X86::test / ARM::tsp).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74602 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
498c2903e28b56b73b8056335ad7f1eb6347b8ed 01-Jul-2009 Evan Cheng <evan.cheng@apple.com> CommuteChangesDestination() should check if to-be-commuted instruction defines any register. Also teaches the default commuteInstruction() to commute instruction without definitions (e.g. X86::test / ARM::tsp).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74602 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
cea5378b2cc082fed3071b7fec6e58bff8c752ac 01-Jul-2009 Evan Cheng <evan.cheng@apple.com> Remove special handling of implicit_def. Fix a couple more bugs in liveintervalanalysis and coalescer handling of implicit_def.

Note, isUndef marker must be placed even on implicit_def def operand or else the scavenger will not ignore it. This is necessary because -O0 path does not use liveintervalanalysis, it treats implicit_def just like any other def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74601 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egisterScavenging.cpp
impleRegisterCoalescing.cpp
459a7c6b6ad9c4fcb9f119aa6eaaf2769b00d9b1 01-Jul-2009 Evan Cheng <evan.cheng@apple.com> Remove special handling of implicit_def. Fix a couple more bugs in liveintervalanalysis and coalescer handling of implicit_def.

Note, isUndef marker must be placed even on implicit_def def operand or else the scavenger will not ignore it. This is necessary because -O0 path does not use liveintervalanalysis, it treats implicit_def just like any other def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74601 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egisterScavenging.cpp
impleRegisterCoalescing.cpp
6521982510e67c23441d94dd4c4a7167527356cb 01-Jul-2009 Evan Cheng <evan.cheng@apple.com> Handle IMPLICIT_DEF with isUndef operand marker, part 2. This patch moves the code to annotate machineoperands to LiveIntervalAnalysis. It also add markers for implicit_def that define physical registers. The rest, is just a lot of details.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74580 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
egisterScavenging.cpp
irtRegRewriter.cpp
2578ba26e72e36dde64be0f52a2788480aad3378 01-Jul-2009 Evan Cheng <evan.cheng@apple.com> Handle IMPLICIT_DEF with isUndef operand marker, part 2. This patch moves the code to annotate machineoperands to LiveIntervalAnalysis. It also add markers for implicit_def that define physical registers. The rest, is just a lot of details.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74580 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
egisterScavenging.cpp
irtRegRewriter.cpp
b10d22209eac7e43d917ef2194e7a159b9b1c689 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove unused AsmPrinter OptLevel argument, and propogate.
- This more or less amounts to a revert of r65379. I'm curious to know what
happened that caused this variable to become unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74579 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5bcc8bd0c60cfe583ee47852950aad9e532c932e 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove unused AsmPrinter OptLevel argument, and propogate.
- This more or less amounts to a revert of r65379. I'm curious to know what
happened that caused this variable to become unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74579 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
25a8ae3f10965b47ecaa9eda5e997f16fe1d9414 01-Jul-2009 Bill Wendling <isanbard@gmail.com> Add an "alignment" field to the MachineFunction object. It makes more sense to
have the alignment be calculated up front, and have the back-ends obey whatever
alignment is decided upon.

This allows for future work that would allow for precise no-op placement and the
like.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74564 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
20c568f366be211323eeaf0e45ef053278ec9ddc 01-Jul-2009 Bill Wendling <isanbard@gmail.com> Add an "alignment" field to the MachineFunction object. It makes more sense to
have the alignment be calculated up front, and have the back-ends obey whatever
alignment is decided upon.

This allows for future work that would allow for precise no-op placement and the
like.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74564 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
73b76f9c5b76385a4d2202b6d1ac9b09794b8eb8 30-Jun-2009 Evan Cheng <evan.cheng@apple.com> Temporarily restore the scavenger implicit_def checking code. MachineOperand isUndef mark is not being put on implicit_def of physical registers (created for parameter passing, etc.).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74519 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
50564ebc9e3d7ff806062023e6511e91065df0d2 30-Jun-2009 Evan Cheng <evan.cheng@apple.com> Temporarily restore the scavenger implicit_def checking code. MachineOperand isUndef mark is not being put on implicit_def of physical registers (created for parameter passing, etc.).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74519 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
9c73db1e61c42e4d658753ad2046af51e3bcbd5a 30-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add a bit IsUndef to MachineOperand. This indicates the def / use register operand is defined by an implicit_def. That means it can def / use any register and passes (e.g. register scavenger) can feel free to ignore them.

The register allocator, when it allocates a register to a virtual register defined by an implicit_def, can allocate any physical register without worrying about overlapping live ranges. It should mark all of operands of the said virtual register so later passes will do the right thing.

This is not the best solution. But it should be a lot less fragile to having the scavenger try to track what is defined by implicit_def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74518 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
egAllocLinearScan.cpp
egisterScavenging.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
irtRegRewriter.cpp
4784f1fc73abf6005b7b7262d395af71b57b1255 30-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add a bit IsUndef to MachineOperand. This indicates the def / use register operand is defined by an implicit_def. That means it can def / use any register and passes (e.g. register scavenger) can feel free to ignore them.

The register allocator, when it allocates a register to a virtual register defined by an implicit_def, can allocate any physical register without worrying about overlapping live ranges. It should mark all of operands of the said virtual register so later passes will do the right thing.

This is not the best solution. But it should be a lot less fragile to having the scavenger try to track what is defined by implicit_def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74518 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
egAllocLinearScan.cpp
egisterScavenging.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
irtRegRewriter.cpp
20683bf7d820c16f1d1b7b384a8fcd8cb5ca7884 30-Jun-2009 Devang Patel <dpatel@apple.com> Struct types are described using field types only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74477 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
93a65b2fe1cef7eac1473b6f47ddbfdc4a362616 30-Jun-2009 Devang Patel <dpatel@apple.com> Struct types are described using field types only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74477 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
5a3d37fcb637e71373beb16f1d35e76612a5815b 29-Jun-2009 Devang Patel <dpatel@apple.com> s/MainCU/ModuleCU/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74452 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1dbc771a837818ee077a7c287ef8cdd254b13d3c 29-Jun-2009 Devang Patel <dpatel@apple.com> s/MainCU/ModuleCU/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74452 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
f97a05a660127943c74fa508a1acda357bb20cec 29-Jun-2009 Devang Patel <dpatel@apple.com> Multiple DW_TAG_compile_unit is not used, afaict, on any target.

Update dwarf writer to only emit one DW_TAG_compile_unit per .o file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74449 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
70f44267501412662ca8fb716812df0f3d48191d 29-Jun-2009 Devang Patel <dpatel@apple.com> Multiple DW_TAG_compile_unit is not used, afaict, on any target.

Update dwarf writer to only emit one DW_TAG_compile_unit per .o file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74449 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9b0abfe769b6e8ebddba457ac2d1631df204c8ad 27-Jun-2009 Dan Gohman <gohman@apple.com> Eliminate a layer of indirection in LoopInfo and MachineLoopInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74394 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
9d59d9f8495b0361c9ffd1dc82888d8e7ba5070e 27-Jun-2009 Dan Gohman <gohman@apple.com> Eliminate a layer of indirection in LoopInfo and MachineLoopInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74394 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
be5f2c6841611251b1a8d2145645e6ca6cd2d15e 27-Jun-2009 Chris Lattner <sabre@nondot.org> When doing remat, don't consider uses of non-allocatable physregs. Patch
by Evan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74370 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1873d0c2257b18451c5bb35577f929d0723433a0 27-Jun-2009 Chris Lattner <sabre@nondot.org> When doing remat, don't consider uses of non-allocatable physregs. Patch
by Evan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74370 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
093adbb08652b7b6179629f5c184f8a9e3b85792 27-Jun-2009 Chris Lattner <sabre@nondot.org> fix a typo that GCC should have caught that causes crashes with -view-*-dags


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5b93ea1ca3cf55a750e58abee7ed845b210d14c8 27-Jun-2009 Chris Lattner <sabre@nondot.org> fix a typo that GCC should have caught that causes crashes with -view-*-dags


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b31fb964f42d4b51d0a4c1e04a343741857d91cb 26-Jun-2009 Chris Lattner <sabre@nondot.org> fix a really subtle bug in the cross section of aliases and TLS:
the SelectionDAG::getGlobalAddress function properly looks through
aliases to determine thread-localness, but then passes the GV* down
to GlobalAddressSDNode::GlobalAddressSDNode which does not. Instead
of passing down isTarget, just pass down the predetermined node
opcode. This fixes some assertions with out of tree changes I'm
working on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74325 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
505e982040fe7482e5f3c09b0c899c4e09393b69 26-Jun-2009 Chris Lattner <sabre@nondot.org> fix a really subtle bug in the cross section of aliases and TLS:
the SelectionDAG::getGlobalAddress function properly looks through
aliases to determine thread-localness, but then passes the GV* down
to GlobalAddressSDNode::GlobalAddressSDNode which does not. Instead
of passing down isTarget, just pass down the predetermined node
opcode. This fixes some assertions with out of tree changes I'm
working on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74325 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
41d6d6cb406b62505e52f2c14c524fd5a509742f 26-Jun-2009 Owen Anderson <resistor@mac.com> Get rid of these cache variables, which are a holdover from the days when
we had multiple type planes and these lookups were expensive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74319 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
b41b5e0b2d865f9dcb8cc868b28929daf3a11207 26-Jun-2009 Owen Anderson <resistor@mac.com> Get rid of these cache variables, which are a holdover from the days when
we had multiple type planes and these lookups were expensive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74319 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
367c851c0ad52339e6ada06a837fabbdac8e062f 26-Jun-2009 Chris Lattner <sabre@nondot.org> implement DOTGraphTraits<SelectionDAG*>::getNodeLabel in terms of
SDNode::print_details to eliminate a ton of near-duplicate code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
d212bb8ef2b36628eb3b41d882472814d0aad509 26-Jun-2009 Chris Lattner <sabre@nondot.org> implement DOTGraphTraits<SelectionDAG*>::getNodeLabel in terms of
SDNode::print_details to eliminate a ton of near-duplicate code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
deb5adead1c7ccad508b3de9fc528fc0e08980ad 26-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Fix linking of llvm-ld and lli with CMake, from Xerxes RÃ¥nby

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74285 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
894788144493f0621f2821dc730f11a2bd7eaaf5 26-Jun-2009 Douglas Gregor <dgregor@apple.com> Fix linking of llvm-ld and lli with CMake, from Xerxes RÃ¥nby

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74285 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
0075855025ee9bd75b7901163fddcfc54af31846 26-Jun-2009 Chris Lattner <sabre@nondot.org> dot graph viewing is apparently not using SDNode::print_details, this is bad,
but in the meantime lets print targetflags on node labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74274 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
7bea038b3e24772b1a89634836aa79cb99c68bd9 26-Jun-2009 Chris Lattner <sabre@nondot.org> dot graph viewing is apparently not using SDNode::print_details, this is bad,
but in the meantime lets print targetflags on node labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74274 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
97b4ec7b1556b37d51bd5bf649ee6b9641e12ac5 26-Jun-2009 Chris Lattner <sabre@nondot.org> propagate target operand flags from dag nodes into MachineOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
6ec66dba123a46a4006e0169d9edb8f5d9e1fbdc 26-Jun-2009 Chris Lattner <sabre@nondot.org> propagate target operand flags from dag nodes into MachineOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
b7a6de3cf2722676d4226e2b7c49f8b821ce7844 26-Jun-2009 Chris Lattner <sabre@nondot.org> fit in 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74270 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
5202312d2ed5078b0451838ee2661f4eb5ff2ef9 26-Jun-2009 Chris Lattner <sabre@nondot.org> fit in 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74270 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
166f843a9f6913e1699b343b8adeecce568274d7 26-Jun-2009 Devang Patel <dpatel@apple.com> Remove debug info anchors - llvm.dbg.compile_units, llvm.dbg.subprograms
and llvm.dbg.global_variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74251 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
13e16b65ddd679d6edb5f182d683701fdea37b85 26-Jun-2009 Devang Patel <dpatel@apple.com> Remove debug info anchors - llvm.dbg.compile_units, llvm.dbg.subprograms
and llvm.dbg.global_variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74251 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
59a1d424d0bda8d6355ef1036136e26542abc390 26-Jun-2009 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74215 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
smPrinter/DwarfWriter.cpp
208622db8a3f1d796bfaf61f8d4f41b6613a71bd 26-Jun-2009 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74215 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
smPrinter/DwarfWriter.cpp
583c796287dad07f7b4a979af3515bf93d7a65a4 25-Jun-2009 Chris Lattner <sabre@nondot.org> add targetflags to jump tables and constant pool entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f5a5546f435a261c93078defb41ed18d9cafd7d3 25-Jun-2009 Chris Lattner <sabre@nondot.org> add targetflags to jump tables and constant pool entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7123ef7585122d114673a67b8c0fdc86f6e0f901 25-Jun-2009 Chris Lattner <sabre@nondot.org> allow setting target operand flags on TargetGlobalAddress nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2a4ed82ce2ba4a02f2a02eb4ed8ce5186f3f93da 25-Jun-2009 Chris Lattner <sabre@nondot.org> allow setting target operand flags on TargetGlobalAddress nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8430a2950c737eef2d6c6d098e265f4ff6e4723b 25-Jun-2009 Chris Lattner <sabre@nondot.org> start bringing targetoperand flags into isel, first up, ExternalSymbol.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74199 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1af2231da64a14d638406d133c7912bfc1c8a9ce 25-Jun-2009 Chris Lattner <sabre@nondot.org> start bringing targetoperand flags into isel, first up, ExternalSymbol.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74199 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ef31ae3dfca1e5a2262f35d7b71419ac69ca1411 25-Jun-2009 Owen Anderson <resistor@mac.com> Provide guards for this shared structure. I'm not sure this actually needs
to be shared, but how/where to privatize it is not immediately clear to me.

If any SelectionDAG experts see a better solution, please share!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b4459088d62670b0f0333eab1b260622955ec3e5 25-Jun-2009 Owen Anderson <resistor@mac.com> Provide guards for this shared structure. I'm not sure this actually needs
to be shared, but how/where to privatize it is not immediately clear to me.

If any SelectionDAG experts see a better solution, please share!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c82bd82aed933fa52a52b3b5d440fdf49fc85d88 25-Jun-2009 Owen Anderson <resistor@mac.com> Privatize some more debug-related static data.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74179 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a8dbf36f3f88917b101d7ab9d253ba2fe6e396b4 25-Jun-2009 Owen Anderson <resistor@mac.com> Privatize some more debug-related static data.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74179 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
179f3a329b3dad9954a8cf10f5339cb9fdf7bf89 25-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Support Constant Pool Sections
Add section symbols to the symbol table


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74170 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
a5e0abd0d454ffdb22f8647f4319b178901b08be 25-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Support Constant Pool Sections
Add section symbols to the symbol table


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74170 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
9624c615169fec3957e38ea181d634d51859a195 25-Jun-2009 Bill Wendling <isanbard@gmail.com> My guess is that RegInfo should only call the Allocator.Deallocator if it's not
null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74147 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
dd37b360d7ecc95b4a077bb64cca22b764788751 25-Jun-2009 Bill Wendling <isanbard@gmail.com> My guess is that RegInfo should only call the Allocator.Deallocator if it's not
null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74147 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
512bedb6016f75bd764c823aaaf1e41b1ba0d593 25-Jun-2009 Owen Anderson <resistor@mac.com> Now with EVEN FEWER statics!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74143 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
6279cd85e9e59c93d43877bf2cf7d116e51ce021 25-Jun-2009 Owen Anderson <resistor@mac.com> Now with EVEN FEWER statics!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74143 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
03f2a7b881ceb3220222eac4747abf271a6ec973 25-Jun-2009 Owen Anderson <resistor@mac.com> Fewer static variables, part 3 of many.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74140 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
13bbe4bb9af9cd0789d81374bd5779d546936aad 25-Jun-2009 Owen Anderson <resistor@mac.com> Fewer static variables, part 3 of many.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74140 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
9f765d178aec597dce6cc16b0d08db159498c87e 25-Jun-2009 Owen Anderson <resistor@mac.com> Down with _even more_ statics!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74137 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
d5509f2e027a4bc97b84a8ff5d706b4d6f4ba8a0 25-Jun-2009 Owen Anderson <resistor@mac.com> Down with _even more_ statics!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74137 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
696d486e629cb3747d0641d03fd63dbf37a0b18f 25-Jun-2009 Owen Anderson <resistor@mac.com> Down with statics!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74134 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
04c05f7630f33e092ae268a19de1b1a76d31785f 25-Jun-2009 Owen Anderson <resistor@mac.com> Down with statics!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74134 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
da3388bae6b9085bfa0c04e039b5d35b32f60047 25-Jun-2009 Owen Anderson <resistor@mac.com> Move local statics to per-instance variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74132 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
bd58edf59128d2acb5ae48c76ef8a108fd587db2 25-Jun-2009 Owen Anderson <resistor@mac.com> Move local statics to per-instance variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74132 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
9f97faf21676977b25550aa4fd87e4735b08328f 24-Jun-2009 Lang Hames <lhames@gmail.com> Completed basic intra block split implementation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74114 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
6bbc73d3fd274e15297eb2c3e4172e43ce7bc8f8 24-Jun-2009 Lang Hames <lhames@gmail.com> Completed basic intra block split implementation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74114 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
8dea566175b014b144637cf098e5e03c68685e7e 24-Jun-2009 David Greene <greened@obbligato.org> This increases the maximum for MVT::LAST_VALUETYPE

This change doubles the allowable value for MVT::LAST_VALUETYPE. It does
this by doing several things.

1. Introduces MVT::MAX_ALLOWED_LAST_VALUETYPE which in this change has a
value of 64. This value contains the current maximum for the
MVT::LAST_VALUETYPE.

2. Instead of checking "MVT::LAST_VALUETYPE <= 32", all of those uses
now become "MVT::LAST_VALUETYPE <= MVT::MAX_ALLOWED_LAST_VALUETYPE"

3. Changes the dimension of the ValueTypeActions from 2 elements to four
elements and adds comments ahead of the declaration indicating the it is
"(MVT::MAX_ALLOWED_LAST_VALUETYPE/32) * 2". This at least lets us find
what is affected if and when MVT::MAX_ALLOWED_LAST_VALUETYPE gets
changed.

4. Adds initializers for the new elements of ValueTypeActions.

This does NOT add any types in MVT. That would be done separately.

This doubles the size of ValueTypeActions from 64 bits to 128 bits and
gives us the freedom to add more types for AVX.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74110 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
f2e19d5dcfa13472493bb18339555686182b7df9 24-Jun-2009 David Greene <greened@obbligato.org> This increases the maximum for MVT::LAST_VALUETYPE

This change doubles the allowable value for MVT::LAST_VALUETYPE. It does
this by doing several things.

1. Introduces MVT::MAX_ALLOWED_LAST_VALUETYPE which in this change has a
value of 64. This value contains the current maximum for the
MVT::LAST_VALUETYPE.

2. Instead of checking "MVT::LAST_VALUETYPE <= 32", all of those uses
now become "MVT::LAST_VALUETYPE <= MVT::MAX_ALLOWED_LAST_VALUETYPE"

3. Changes the dimension of the ValueTypeActions from 2 elements to four
elements and adds comments ahead of the declaration indicating the it is
"(MVT::MAX_ALLOWED_LAST_VALUETYPE/32) * 2". This at least lets us find
what is affected if and when MVT::MAX_ALLOWED_LAST_VALUETYPE gets
changed.

4. Adds initializers for the new elements of ValueTypeActions.

This does NOT add any types in MVT. That would be done separately.

This doubles the size of ValueTypeActions from 64 bits to 128 bits and
gives us the freedom to add more types for AVX.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74110 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
2424eace0a0ac7914790d00dc28a8841ec673edc 24-Jun-2009 Chris Lattner <sabre@nondot.org> sink management of DwarfWriter & MachineModuleInfo into the AsmPrinter base class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74101 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0de1fc4f416b3e94749ca84cdaede55b040a8b60 24-Jun-2009 Chris Lattner <sabre@nondot.org> sink management of DwarfWriter & MachineModuleInfo into the AsmPrinter base class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74101 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e1225cc5cd22b797c702bcdf4663c6a7bad707b9 24-Jun-2009 Chris Lattner <sabre@nondot.org> sink dwarf finalization out of each target into AsmPrinter::doFinalization


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74097 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1f522feabf25134249bc7894e04f5b89fa071b7f 24-Jun-2009 Chris Lattner <sabre@nondot.org> sink dwarf finalization out of each target into AsmPrinter::doFinalization


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74097 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
db191f09eb4c5cc1e8b38a377896750cc6361e83 24-Jun-2009 Chris Lattner <sabre@nondot.org> eliminate the ExtWeakSymbols set from AsmPrinter. This eliminates
a bunch of code from all the targets, and eliminates nondeterministic
ordering of directives being emitted in the output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74096 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0a7befa8bd56621f51eaf9196417b866962bf7b1 24-Jun-2009 Chris Lattner <sabre@nondot.org> eliminate the ExtWeakSymbols set from AsmPrinter. This eliminates
a bunch of code from all the targets, and eliminates nondeterministic
ordering of directives being emitted in the output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74096 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f29b6dc928aa3c59e29393f5a6564cd64cba2018 24-Jun-2009 Chris Lattner <sabre@nondot.org> Rearrange some stuff in MachineOperand and add a new TargetFlags field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74087 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
31530617dd206c3ac549e98508d8f98e91bf8275 24-Jun-2009 Chris Lattner <sabre@nondot.org> Rearrange some stuff in MachineOperand and add a new TargetFlags field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74087 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f4a1546148d94d9dd8f7561ab4b9516398281476 24-Jun-2009 Owen Anderson <resistor@mac.com> Get rid of the global CFGOnly flag by threading a ShortNames parameters through the GraphViz rendering code.
Update other uses in the codebase for this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74084 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGPrinter.cpp
8cbc94afb71fd2da72d8f1284f7f53e39019fdec 24-Jun-2009 Owen Anderson <resistor@mac.com> Get rid of the global CFGOnly flag by threading a ShortNames parameters through the GraphViz rendering code.
Update other uses in the codebase for this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74084 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cheduleDAGPrinter.cpp
electionDAG/SelectionDAGPrinter.cpp
6933df972036a610d499a3d00512fae64087d86e 24-Jun-2009 Dale Johannesen <dalej@apple.com> Rewrite 73900 per Duncan's suggestion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74082 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8539cfd30e6058e605ed2f38fb29523ea42e17a1 24-Jun-2009 Dale Johannesen <dalej@apple.com> Rewrite 73900 per Duncan's suggestion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74082 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
017511b99fcd1c192b62e45f3166f83b6466f063 24-Jun-2009 Chris Lattner <sabre@nondot.org> remove dead makefile flags.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74065 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
electionDAG/Makefile
929a49356e2b95ac5a054bb53697e67f2a0bc43e 24-Jun-2009 Chris Lattner <sabre@nondot.org> remove dead makefile flags.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74065 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
electionDAG/Makefile
9d331725a787e00f73bcece2318430b587e16e29 24-Jun-2009 Lang Hames <lhames@gmail.com> Fixed a bug in LiveInterval scaling (failure to scale VNI defs correctly), removed old TODO comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74054 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
irtRegRewriter.h
98d5982e0020e0c18d2847798ba2f40c4711af5a 24-Jun-2009 Lang Hames <lhames@gmail.com> Fixed a bug in LiveInterval scaling (failure to scale VNI defs correctly), removed old TODO comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74054 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
irtRegRewriter.h
3df52f7fd990931d84d3a0e359535c9d97544663 24-Jun-2009 Evan Cheng <evan.cheng@apple.com> Fix support for inline asm input / output operand tying when operand spans across multiple registers (e.g. two i64 operands in 32-bit mode).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74053 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ef5d070bbe55d7165fc84778ca7757c3cfeea491 24-Jun-2009 Evan Cheng <evan.cheng@apple.com> Fix support for inline asm input / output operand tying when operand spans across multiple registers (e.g. two i64 operands in 32-bit mode).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74053 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b53d5c039853331f36ffd05e54454fe884189408 23-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use a default alignment for data and bss sections.
Only pad when the section size > 0 and move the code that deals
with globals initializers to a place we know for sure the global
is initialized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73944 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LFWriter.h
e39493eb1bb867f8c4e4cdb59952576b52201bbf 23-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use a default alignment for data and bss sections.
Only pad when the section size > 0 and move the code that deals
with globals initializers to a place we know for sure the global
is initialized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73944 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LFWriter.h
5ebb9308d8bec5fdc2fd0e1cfd556a86ced3eff2 22-Jun-2009 Dale Johannesen <dalej@apple.com> Fix memcpy expansion so it won't generate invalid
types for the target (I think). This was breaking
the PPC32 calling sequence.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
08bc98e3cc1c6859ee78f304c0182098b580b56f 22-Jun-2009 Dale Johannesen <dalej@apple.com> Fix memcpy expansion so it won't generate invalid
types for the target (I think). This was breaking
the PPC32 calling sequence.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
28ff725202cdd0162e4343ee6f2dd832b7fbbc95 22-Jun-2009 Evan Cheng <evan.cheng@apple.com> Fix another register coalescer crash: forgot to check if the instruction being updated has already been coalesced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73898 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
81909b74231b816e9c3ae589b8e112377be30cd0 22-Jun-2009 Evan Cheng <evan.cheng@apple.com> Fix another register coalescer crash: forgot to check if the instruction being updated has already been coalesced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73898 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5d7a1ebd9e3cf17f7416e3fcf9e8bc7c56cb731b 22-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use different functions to emit the string and symbol tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73895 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LFWriter.h
c236a345c754aa27c95a037ad517271ac73d2456 22-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use different functions to emit the string and symbol tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73895 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LFWriter.h
6d4086b26be256cbb72598f1a3cc57733f6be1b8 22-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add more methods to gather target specific elf stuff
Support for .text relocations, implementing TargetELFWriter overloaded methods for x86/x86_64.
Use a map to track global values to their symbol table indexes
Code cleanup and small fixes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73894 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
0d3193ef3ce7377eeaa1d38ca08f8a62ebcd5f63 22-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add more methods to gather target specific elf stuff
Support for .text relocations, implementing TargetELFWriter overloaded methods for x86/x86_64.
Use a map to track global values to their symbol table indexes
Code cleanup and small fixes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73894 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
b8fabe260483cfb16ea12b872c7f9fa2ffaf1433 20-Jun-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4419: handle defs of partial uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73816 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
694f6c81e885818840d374c855cd0c91ed3f2f15 20-Jun-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4419: handle defs of partial uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73816 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
4f25cfbf68a546010da73707896a2b799056fe65 20-Jun-2009 Devang Patel <dpatel@apple.com> mv CodeGen/DebugLoc.h Support/DebugLoc.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
1e86a66b00b94adc4ad6977ef6b47c516ac62cec 20-Jun-2009 Devang Patel <dpatel@apple.com> mv CodeGen/DebugLoc.h Support/DebugLoc.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
1a45484151060a9c0190e5d1674709eab72cbd14 19-Jun-2009 Devang Patel <dpatel@apple.com> Move up dwarf writer initialization in common AsmPrinter class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73784 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
14a55d952cf238fff42da53a75f39cf06dab184b 19-Jun-2009 Devang Patel <dpatel@apple.com> Move up dwarf writer initialization in common AsmPrinter class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73784 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
12cdf5033f0a22e3639e82b69c9e3b98831d8442 19-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Minor cleanup; fixes review comments for a previous patch. Sorry for
taking so long to get to this!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73757 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
2fb070bf5a34f3fae89beb8609c92abc1b1a2551 19-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Minor cleanup; fixes review comments for a previous patch. Sorry for
taking so long to get to this!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73757 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
7c3765da747832befd9a57fa96c6f56ac2838c2a 19-Jun-2009 Lang Hames <lhames@gmail.com> More VNInfo tweaking, plus a little progress on intra-block splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73750 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
piller.cpp
piller.h
10382fb71d8306f320ecbeb7049d25354c0e5457 19-Jun-2009 Lang Hames <lhames@gmail.com> More VNInfo tweaking, plus a little progress on intra-block splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73750 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
piller.cpp
piller.h
690b02cc2be75f878ab189295690484f25e98b26 19-Jun-2009 Chris Lattner <sabre@nondot.org> move mangler quote handling from asm printers to TargetAsmInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73738 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a93ca92379129e87e0130609ac78422fcf6dd21e 19-Jun-2009 Chris Lattner <sabre@nondot.org> move mangler quote handling from asm printers to TargetAsmInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73738 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ecbf73b8ff55100f416aabbb19000b7e5f647b5a 19-Jun-2009 Chris Lattner <sabre@nondot.org> simplify macro debug info directive handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73736 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
b839c3f577e03467bce8904eb2a02b124ec19ec8 19-Jun-2009 Chris Lattner <sabre@nondot.org> simplify macro debug info directive handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73736 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
cc6643230f348250657dba4e7667432aa4d16401 19-Jun-2009 Lang Hames <lhames@gmail.com> Improved PHI def marking, replaced some gotos with breaks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73727 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d21c31610c4a10e9e638f4221b5df89ea932e258 19-Jun-2009 Lang Hames <lhames@gmail.com> Improved PHI def marking, replaced some gotos with breaks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73727 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ccca6f7493b4a8db815cc2746ea50152ddc97c25 18-Jun-2009 Evan Cheng <evan.cheng@apple.com> On Darwin, ams printer should output a second label before a jump table so the linker knows it's a new atom. But this is only needed if the jump table is put in a separate section from the function body.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73720 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b13bafe5c12dd908b55c559c93adaeb1627ed096 18-Jun-2009 Evan Cheng <evan.cheng@apple.com> On Darwin, ams printer should output a second label before a jump table so the linker knows it's a new atom. But this is only needed if the jump table is put in a separate section from the function body.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73720 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a3cc1a05c52f029d479ae8379725d199ac2162d5 18-Jun-2009 Evan Cheng <evan.cheng@apple.com> - Update register allocation hint after coalescing. This is done by the target since the hint is target dependent. This is important for ARM register pair hints.
- Register allocator should resolve the second part of the hint (register number) before passing it to the target since it knows virtual register to physical register mapping.
- More fixes to get ARM load / store double word working.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73671 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
f9f1da17f8bd6ffb2df62ce3cb933f0ee63f8da4 18-Jun-2009 Evan Cheng <evan.cheng@apple.com> - Update register allocation hint after coalescing. This is done by the target since the hint is target dependent. This is important for ARM register pair hints.
- Register allocator should resolve the second part of the hint (register number) before passing it to the target since it knows virtual register to physical register mapping.
- More fixes to get ARM load / store double word working.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73671 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
4eb8fc810fa14930119df9adbde2d92da08fb98c 17-Jun-2009 Lang Hames <lhames@gmail.com> VNInfo cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73634 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
piller.cpp
piller.h
trongPHIElimination.cpp
857c4e01f85601cf2084adb860616256ee47c177 17-Jun-2009 Lang Hames <lhames@gmail.com> VNInfo cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73634 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
piller.cpp
piller.h
trongPHIElimination.cpp
78842787afbcc1925497e524fb8e4accc71007ac 16-Jun-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Fixed names of libcalls checked in r73480.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73483 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7d8d36a69f4089d1829797aae90d276c9fb5b260 16-Jun-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Fixed names of libcalls checked in r73480.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73483 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
a5790f9a25cb1ef8e43f6113e62df18492540413 16-Jun-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Added required libcalls for PIC16 (mostly floating points to integer casting operations).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73480 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
8aa207ee306b6a5ce753511a5f811fc1cd2468e2 16-Jun-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Added required libcalls for PIC16 (mostly floating points to integer casting operations).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73480 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
3396618a81aef52d88650d984ce1f77c659bbf76 16-Jun-2009 Evan Cheng <evan.cheng@apple.com> Rename RemoveCopiesFromValNo to TurnCopiesFromValNoToImpDefs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73479 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
7b11365787555b0836cce9e507bf993d1b51fbbc 16-Jun-2009 Evan Cheng <evan.cheng@apple.com> Rename RemoveCopiesFromValNo to TurnCopiesFromValNoToImpDefs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73479 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
7ca124cb276fbeeb0f12904497f1cc4ed55ce977 16-Jun-2009 Evan Cheng <evan.cheng@apple.com> If a val# is defined by an implicit_def and it is being removed, all of the copies off the val# were removed. This causes problem later since the scavenger will see uses of registers without defs. The proper solution is to change the copies into implicit_def's instead.

TurnCopyIntoImpDef turns a copy into implicit_def and remove the val# defined by it. This causes an scavenger assertion later if the def reaches other blocks. Disable the transformation if the value live interval extends beyond its def block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73478 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
67fcf56ac48f5fea50cd8a1573a2ff348c597190 16-Jun-2009 Evan Cheng <evan.cheng@apple.com> If a val# is defined by an implicit_def and it is being removed, all of the copies off the val# were removed. This causes problem later since the scavenger will see uses of registers without defs. The proper solution is to change the copies into implicit_def's instead.

TurnCopyIntoImpDef turns a copy into implicit_def and remove the val# defined by it. This causes an scavenger assertion later if the def reaches other blocks. Disable the transformation if the value live interval extends beyond its def block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73478 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
43bc4d665fc60c113ba5a78268b97b223e970c68 16-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add some generic expansion logic for SMULO and UMULO. Fixes UMULO
support for x86, and UMULO/SMULO for many architectures, including PPC
(PR4201), ARM, and Cell. The resulting expansion isn't perfect, but it's
not bad.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73477 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
db3c169f3a3102d40352ba63fd14a75c819c7adc 16-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add some generic expansion logic for SMULO and UMULO. Fixes UMULO
support for x86, and UMULO/SMULO for many architectures, including PPC
(PR4201), ARM, and Cell. The resulting expansion isn't perfect, but it's
not bad.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73477 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
41fea9c87a7b5dcb35f0ea318d3695e41c443f70 16-Jun-2009 Bill Wendling <isanbard@gmail.com> Fix typos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73464 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
05b5e03ec8526e95c2a7059aef1d2cf8f87d5c1d 16-Jun-2009 Bill Wendling <isanbard@gmail.com> Fix typos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73464 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfPrinter.cpp
330856b3e250da95e328092f04b3ee186429a3e3 16-Jun-2009 Devang Patel <dpatel@apple.com> Use MainCU if it is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73457 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
c2230821a6ad04ab2c1c1c71212d99b56b783fa8 16-Jun-2009 Devang Patel <dpatel@apple.com> Use MainCU if it is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73457 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
4afb8afb6eb800052c8f2ac2357a2ddffadeead1 16-Jun-2009 Owen Anderson <resistor@mac.com> Owen Anderson 2009-06-15: Use a SmallPtrSet here, for speed and to match df_iterator.
Owen Anderson 2009-06-15: Remember to clear out our maps to prevent crashing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73438 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
be24f1b7fb093380f9bac489f4b70a7e133be7b5 16-Jun-2009 Owen Anderson <resistor@mac.com> Owen Anderson 2009-06-15: Use a SmallPtrSet here, for speed and to match df_iterator.
Owen Anderson 2009-06-15: Remember to clear out our maps to prevent crashing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73438 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
97ecc8b8f4ab1c3f1d9fe9ef94cf86297aea3532 16-Jun-2009 Dan Gohman <gohman@apple.com> Change this from an assert to a cerr+exit, since it's diagnosing an
unsupported inline asm construct, rather than verifying a code invariant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73435 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
15480bd1747eeef5eb36b46743cba50fa4791c01 16-Jun-2009 Dan Gohman <gohman@apple.com> Change this from an assert to a cerr+exit, since it's diagnosing an
unsupported inline asm construct, rather than verifying a code invariant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73435 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
e0406af64fb0083eedff8f208b20d5e67d9c2879 15-Jun-2009 Devang Patel <dpatel@apple.com> Gracefully handle imbalanced inline function begin and end markers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73426 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/FastISel.cpp
11a407f43fc0fb21df3156350175eaeeffaf7085 15-Jun-2009 Devang Patel <dpatel@apple.com> Gracefully handle imbalanced inline function begin and end markers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73426 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
electionDAG/FastISel.cpp
4eb66e6a71dd207cf94332c93804265bfef49e03 15-Jun-2009 Evan Cheng <evan.cheng@apple.com> ifcvt should ignore cfg where true and false successors are the same.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73423 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
2077e18caf1425f83ce549913a1cffa0a4de192e 15-Jun-2009 Evan Cheng <evan.cheng@apple.com> ifcvt should ignore cfg where true and false successors are the same.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73423 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
dd48b7096e38a82fe84fefdc45cf0aa1a69ea380 15-Jun-2009 Arnold Schwaighofer <arnold.schwaighofer@gmail.com> CheckTailCallReturnConstraints is missing a check on the
incomming chain of the RETURN node. The incomming chain must
be the outgoing chain of the CALL node. This causes the
backend to identify tail calls that are not tail calls. This
patch fixes this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73387 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
5d2c01e48afba59be7bd0eaa10db784bf2073c20 15-Jun-2009 Arnold Schwaighofer <arnold.schwaighofer@gmail.com> CheckTailCallReturnConstraints is missing a check on the
incomming chain of the RETURN node. The incomming chain must
be the outgoing chain of the CALL node. This causes the
backend to identify tail calls that are not tail calls. This
patch fixes this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73387 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
41169551d59e9aee3d9dcd043013d65ee6e33759 15-Jun-2009 Evan Cheng <evan.cheng@apple.com> Part 1.
- Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent.
- Allow targets to specify alternative register allocation orders based on allocation hint.

Part 2.
- Use the register allocation hint system to implement more aggressive load / store multiple formation.
- Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g.
v1025 = LDR v1024, 0
v1026 = LDR v1024, 0
=>
v1025,v1026 = LDRD v1024, 0

If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair.

- Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions.

This is work in progress, not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73381 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
achineRegisterInfo.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
358dec51804ee52e47ea3a47c9248086e458ad7c 15-Jun-2009 Evan Cheng <evan.cheng@apple.com> Part 1.
- Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent.
- Allow targets to specify alternative register allocation orders based on allocation hint.

Part 2.
- Use the register allocation hint system to implement more aggressive load / store multiple formation.
- Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g.
v1025 = LDR v1024, 0
v1026 = LDR v1024, 0
=>
v1025,v1026 = LDRD v1024, 0

If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair.

- Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions.

This is work in progress, not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73381 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
achineRegisterInfo.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
9e1657f79a7cf86a12be2c0a2b4ae4a2600266c6 15-Jun-2009 Dan Gohman <gohman@apple.com> Fix old-style type names in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73362 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a119de86a064414622562cfe32953de7f9b0ee40 15-Jun-2009 Dan Gohman <gohman@apple.com> Fix old-style type names in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73362 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d78907d459b73c041725a7ca254c00a8d92b3ae9 14-Jun-2009 Evan Cheng <evan.cheng@apple.com> Move register allocation preference (or hint) from LiveInterval to MachineRegisterInfo. This allows more passes to set them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73346 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
achineRegisterInfo.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
irtRegMap.h
90f95f88c6ce09c6744777dc9d140c3c77203b92 14-Jun-2009 Evan Cheng <evan.cheng@apple.com> Move register allocation preference (or hint) from LiveInterval to MachineRegisterInfo. This allows more passes to set them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73346 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
achineRegisterInfo.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
irtRegMap.h
fee73a317c4fe5fce68c9296bba2f4e103254524 14-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Introduce new BinaryObject (blob) class, ELF Writer modified to use it. BinaryObject.h by Aaron Gray

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73333 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
ae9163f0e24d032f99b978d31ea810a1d441f7e2 14-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Introduce new BinaryObject (blob) class, ELF Writer modified to use it. BinaryObject.h by Aaron Gray

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73333 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
54353c9810ad1b79cf9dc865277f16a750abc079 13-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add a ARM specific pre-allocation pass that re-schedule loads / stores from
consecutive addresses togther. This makes it easier for the post-allocation pass
to form ldm / stm.

This is step 1. We are still missing a lot of ldm / stm opportunities because
of register allocation are not done in the desired order. More enhancements
coming.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73291 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
e7d6df73530a98a5cc5f69ddfd17073b464caa57 13-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add a ARM specific pre-allocation pass that re-schedule loads / stores from
consecutive addresses togther. This makes it easier for the post-allocation pass
to form ldm / stm.

This is step 1. We are still missing a lot of ldm / stm opportunities because
of register allocation are not done in the desired order. More enhancements
coming.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73291 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
a17c65ba24aa8ffb248751ddea9795342d63801c 13-Jun-2009 Devang Patel <dpatel@apple.com> llvm.dbg.region.end() intrinsic is not required to be in _last_ basic block in a function. If that happens then any basic block that follows (lexically) the block with regin.end will not have scope info available. LexicalScopeStack relies on processing basic block in CFG order, but this processing order is not guaranteed. Things get complicated when the optimizer gets a chance to optimizer IR with dbg intrinsics.
Apply defensive patch to preserve at least one lexical scope till the end of function.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73282 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
daf9e02893e7e17ca2267ffd5e994f824adbb624 13-Jun-2009 Devang Patel <dpatel@apple.com> llvm.dbg.region.end() intrinsic is not required to be in _last_ basic block in a function. If that happens then any basic block that follows (lexically) the block with regin.end will not have scope info available. LexicalScopeStack relies on processing basic block in CFG order, but this processing order is not guaranteed. Things get complicated when the optimizer gets a chance to optimizer IR with dbg intrinsics.
Apply defensive patch to preserve at least one lexical scope till the end of function.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73282 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
d0e823987e07b867285e5d8f9fe6dbea1849674b 13-Jun-2009 Owen Anderson <resistor@mac.com> Improve style.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73258 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
a21f31bca5716438e63b8028ec07ad073652de72 13-Jun-2009 Owen Anderson <resistor@mac.com> Improve style.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73258 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
725aaed9a7b0a99ae5779c6b061acb87c6660b5e 12-Jun-2009 Owen Anderson <resistor@mac.com> This is supposed to be a preorder numbering of the dominator tree, not the CFG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73257 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
5b6139a4d10c7c892518570bf3c18707b600c232 12-Jun-2009 Owen Anderson <resistor@mac.com> This is supposed to be a preorder numbering of the dominator tree, not the CFG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73257 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
21443db042a97ea48a96804e9cc378bec852ccbf 12-Jun-2009 Owen Anderson <resistor@mac.com> Now with less iterator invalidation, and other forms of crashing!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73256 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
fdf72c660774538cb29adb2b6a1bd66e766c2b53 12-Jun-2009 Owen Anderson <resistor@mac.com> Now with less iterator invalidation, and other forms of crashing!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73256 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
86b8a0b1014f32fb8da595a8c3c27cda14a54100 12-Jun-2009 Evan Cheng <evan.cheng@apple.com> If killed register is defined by implicit_def, do not clear it since it's live range may overlap another def of same register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73255 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
4a274e573dbbd4a6085de0d3c738c801b9d000c5 12-Jun-2009 Evan Cheng <evan.cheng@apple.com> If killed register is defined by implicit_def, do not clear it since it's live range may overlap another def of same register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73255 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
03bf53d5c787142c004bf237b52f1bbaf71345c9 12-Jun-2009 Devang Patel <dpatel@apple.com> Clear AbstractInstanceRootMap at the end of the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73244 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
9217f793bf5d1fa0900f87ba96348da093409106 12-Jun-2009 Devang Patel <dpatel@apple.com> Clear AbstractInstanceRootMap at the end of the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73244 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8c25df1f6c84ee5bf27b6d64ac3bd8b2ca986e4e 11-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Support for ELF Visibility
Emission for globals, using the correct data sections
Function alignment can be computed for each target using TargetELFWriterInfo
Some small fixes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73201 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
c997d45ae5d2e25643d3ccc2c4ae44dcca6cdf5b 11-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Support for ELF Visibility
Emission for globals, using the correct data sections
Function alignment can be computed for each target using TargetELFWriterInfo
Some small fixes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73201 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFWriter.cpp
LFWriter.h
c351d6136ff86fb5ccec2b40754859e99c0af0fe 11-Jun-2009 Oscar Fuentes <ofv@wanadoo.es> CMake: Updated list of files on lib/CodeGen/CMakeLists.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73174 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
89456cecb3bd3b85f3b909b6e43fbf1f457540ed 11-Jun-2009 Oscar Fuentes <ofv@wanadoo.es> CMake: Updated list of files on lib/CodeGen/CMakeLists.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73174 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
0f4a0bc61a9fbcb021108901bbb4e73d9402dc69 10-Jun-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Remove warnings: no newline at end of file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73156 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
cb597c9cc457ee0bb9c6ab3195b90da6d0049caf 10-Jun-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Remove warnings: no newline at end of file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73156 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
863a90137742ddea249024522824b2649a3ab466 09-Jun-2009 Owen Anderson <resistor@mac.com> Add the beginnings of an implementatation of lazy liveness analysis, based on "Fast Liveness Checking for SSA-form Programs" by Boissinot, et al.

This is still very early, hasn't been tested, and is not yet well documented. More to come soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73141 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
6cbd8da86ed602fd85807e82ead0bcec3d8739de 09-Jun-2009 Owen Anderson <resistor@mac.com> Add the beginnings of an implementatation of lazy liveness analysis, based on "Fast Liveness Checking for SSA-form Programs" by Boissinot, et al.

This is still very early, hasn't been tested, and is not yet well documented. More to come soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73141 91177308-0d34-0410-b5e6-96231b3b80d8
azyLiveness.cpp
875462e8c3f6716d7f743345274ea28a6f58baea 07-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Delete comment and fix typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73040 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFWriter.cpp
06bfa33eefd6c7b56fc354ab640a9175e82bf890 07-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Delete comment and fix typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73040 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFWriter.cpp
59b1415cf361612f68b4226ed915bea535f07db1 07-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix wrong elf class and byte order initializations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73039 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
24f14f16fd2992adf7f422251a328d09c88f5a0a 07-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix wrong elf class and byte order initializations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73039 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
6b5788edb17bad161bbe7a21f38a45f92bba892f 07-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Simple ELF32/64 binary files can now be emitted for x86 and x86_64 without
relocation sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73038 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
a029a27fae25628fa7805aba6d7ae3216a4e026b 07-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Simple ELF32/64 binary files can now be emitted for x86 and x86_64 without
relocation sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73038 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
a2caab9866b62cc33c90aa819a82a9f802feea39 07-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Tweak the expansion code for BIT_CONVERT to generate better code
converting from an MMX vector to an i64.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73024 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
f10d3a7bcda97d28f9d325cb58cec7e17d7ed101 07-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Tweak the expansion code for BIT_CONVERT to generate better code
converting from an MMX vector to an i64.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73024 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
e6bb1e57c7e9e84d6ad12baa89e7f6119b6c46a7 07-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Slightly generalize the code that handles shuffles of consecutive loads
on x86 to handle more cases. Fix a bug in said code that would cause it
to read past the end of an object. Rewrite the code in
SelectionDAGLegalize::ExpandBUILD_VECTOR to be a bit more general.
Remove PerformBuildVectorCombine, which is no longer necessary with
these changes. In addition to simplifying the code, with this change,
we can now catch a few more cases of consecutive loads.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73012 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7a5e55509b99d579d56d126a7b503ec6fe153a8f 07-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Slightly generalize the code that handles shuffles of consecutive loads
on x86 to handle more cases. Fix a bug in said code that would cause it
to read past the end of an object. Rewrite the code in
SelectionDAGLegalize::ExpandBUILD_VECTOR to be a bit more general.
Remove PerformBuildVectorCombine, which is no longer necessary with
these changes. In addition to simplifying the code, with this change,
we can now catch a few more cases of consecutive loads.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73012 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b8427d805310c8a2ebab03b9082622e74d9cdd33 06-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Fix the expansion for CONCAT_VECTORS so that it doesn't create illegal
types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72993 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5257106c4d396b5d932f7b282c3ba255c4605195 06-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Fix the expansion for CONCAT_VECTORS so that it doesn't create illegal
types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72993 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a188a97e440525a0a6650cebb48175b5aec721f3 06-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Factor out a couple of helpers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7ef3d178660b82d1571757e49f44b004d772a116 06-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Factor out a couple of helpers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
04066de38f4d0b750fdb8de446f14b813c202ff5 06-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove elf specific info from ELFWriter.h to Elf.h. Code cleanup and more comments added

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72982 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
f5b0c5a1c735dd2a6027edcca83cddc6d755bdc2 06-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove elf specific info from ELFWriter.h to Elf.h. Code cleanup and more comments added

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72982 91177308-0d34-0410-b5e6-96231b3b80d8
LF.h
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
LFWriter.h
42b0e36979d7d385b6d5002bad5ac2d6f00fbd0d 06-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Make SINT_TO_FP/UINT_TO_FP vector legalization queries query on the
integer type to be consistent with normal operation legalization. No visible
change because nothing is actually using this at the moment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72980 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
556929a84bb8842cb07bebf4df67810d17be096e 06-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Make SINT_TO_FP/UINT_TO_FP vector legalization queries query on the
integer type to be consistent with normal operation legalization. No visible
change because nothing is actually using this at the moment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72980 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
c386c848cead46ecd3e94764aa5ea39749db2671 05-Jun-2009 Devang Patel <dpatel@apple.com> Add new function attribute - noimplicitfloat
Update code generator to use this attribute and remove NoImplicitFloat target option.
Update llc to set this attribute when -no-implicit-float command line option is used.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72959 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
578efa920abd218ba75a0fb3c9b8398f4c0a774b 05-Jun-2009 Devang Patel <dpatel@apple.com> Add new function attribute - noimplicitfloat
Update code generator to use this attribute and remove NoImplicitFloat target option.
Update llc to set this attribute when -no-implicit-float command line option is used.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72959 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
65e800308932871350c3512e5a4861bfdc839126 05-Jun-2009 Nate Begeman <natebegeman@mac.com> Adapt the x86 build_vector dagcombine to the current state of the legalizer.
build vectors with i64 elements will only appear on 32b x86 before legalize.
Since vector widening occurs during legalize, and produces i64 build_vector
elements, the dag combiner is never run on these before legalize splits them
into 32b elements.

Teach the build_vector dag combine in x86 back end to recognize consecutive
loads producing the low part of the vector.

Convert the two uses of TLI's consecutive load recognizer to pass LoadSDNodes
since that was required implicitly.

Add a testcase for the transform.

Old:
subl $28, %esp
movl 32(%esp), %eax
movl 4(%eax), %ecx
movl %ecx, 4(%esp)
movl (%eax), %eax
movl %eax, (%esp)
movaps (%esp), %xmm0
pmovzxwd %xmm0, %xmm0
movl 36(%esp), %eax
movaps %xmm0, (%eax)
addl $28, %esp
ret

New:
movl 4(%esp), %eax
pmovzxwd (%eax), %xmm0
movl 8(%esp), %eax
movaps %xmm0, (%eax)
ret




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
abc019968067736a499467f7db7fb758a425ca06 05-Jun-2009 Nate Begeman <natebegeman@mac.com> Adapt the x86 build_vector dagcombine to the current state of the legalizer.
build vectors with i64 elements will only appear on 32b x86 before legalize.
Since vector widening occurs during legalize, and produces i64 build_vector
elements, the dag combiner is never run on these before legalize splits them
into 32b elements.

Teach the build_vector dag combine in x86 back end to recognize consecutive
loads producing the low part of the vector.

Convert the two uses of TLI's consecutive load recognizer to pass LoadSDNodes
since that was required implicitly.

Add a testcase for the transform.

Old:
subl $28, %esp
movl 32(%esp), %eax
movl 4(%eax), %ecx
movl %ecx, 4(%esp)
movl (%eax), %eax
movl %eax, (%esp)
movaps (%esp), %xmm0
pmovzxwd %xmm0, %xmm0
movl 36(%esp), %eax
movaps %xmm0, (%eax)
addl $28, %esp
ret

New:
movl 4(%esp), %eax
pmovzxwd (%eax), %xmm0
movl 8(%esp), %eax
movaps %xmm0, (%eax)
ret




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
27c2daf02027f431d63995f947294e71b9ba384b 05-Jun-2009 Dan Gohman <gohman@apple.com> Remove some unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72948 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
achineInstr.cpp
c965ee223c6077250525048106726e12b59072ac 05-Jun-2009 Dan Gohman <gohman@apple.com> Remove some unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72948 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfPrinter.cpp
achineInstr.cpp
170d69e3148e4d96f68a3b5ac8834d03ec346913 05-Jun-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow libcalls for i16 sdiv/udiv/rem operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
a43a7aefd753fe7d6005cbebc9619268db4ae139 05-Jun-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow libcalls for i16 sdiv/udiv/rem operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
23dfc8fe42781e17c5b5bb326273d8fbdd46b746 05-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> ELF Code Emitter now uses CurBufferPtr, BufferBegin and BufferEnd, as do JIT and
MachO Writer. This will change with the arrival of ObjectCodeEmitter and
BinaryObject


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72906 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.h
5d4191039645f2eeb90148d7359199ad21c75347 05-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> ELF Code Emitter now uses CurBufferPtr, BufferBegin and BufferEnd, as do JIT and
MachO Writer. This will change with the arrival of ObjectCodeEmitter and
BinaryObject


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72906 91177308-0d34-0410-b5e6-96231b3b80d8
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.h
7ce405e7aa026ef683da9eb8cc39cce87fcfa1d6 05-Jun-2009 Dan Gohman <gohman@apple.com> Split the Add, Sub, and Mul instruction opcodes into separate
integer and floating-point opcodes, introducing
FAdd, FSub, and FMul.

For now, the AsmParser, BitcodeReader, and IRBuilder all preserve
backwards compatability, and the Core LLVM APIs preserve backwards
compatibility for IR producers. Most front-ends won't need to change
immediately.

This implements the first step of the plan outlined here:
http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72897 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
ae3a0be92e33bc716722aa600983fc1535acb122 05-Jun-2009 Dan Gohman <gohman@apple.com> Split the Add, Sub, and Mul instruction opcodes into separate
integer and floating-point opcodes, introducing
FAdd, FSub, and FMul.

For now, the AsmParser, BitcodeReader, and IRBuilder all preserve
backwards compatability, and the Core LLVM APIs preserve backwards
compatibility for IR producers. Most front-ends won't need to change
immediately.

This implements the first step of the plan outlined here:
http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72897 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
d87cf08c273a278afbd9583e25bd9c2c1755bf7b 04-Jun-2009 Dale Johannesen <dalej@apple.com> Fix FP_TO_UINT->i32 on ppc32 -mcpu=g5. This was
using Promote which won't work because i64 isn't
a legal type. It's easy enough to use Custom, but
then we have the problem that when the type
legalizer is promoting FP_TO_UINT->i16, it has no
way of telling it should prefer FP_TO_SINT->i32
to FP_TO_UINT->i32. I have uncomfortably hacked
this by making the type legalizer choose FP_TO_SINT
when both are Custom.
This fixes several regressions in the testsuite.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72891 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
4c9369df57a52cec5e1fc735e61a979766288074 04-Jun-2009 Dale Johannesen <dalej@apple.com> Fix FP_TO_UINT->i32 on ppc32 -mcpu=g5. This was
using Promote which won't work because i64 isn't
a legal type. It's easy enough to use Custom, but
then we have the problem that when the type
legalizer is promoting FP_TO_UINT->i16, it has no
way of telling it should prefer FP_TO_SINT->i32
to FP_TO_UINT->i32. I have uncomfortably hacked
this by making the type legalizer choose FP_TO_SINT
when both are Custom.
This fixes several regressions in the testsuite.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72891 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
785d81ea5236df535d7718de53ad6fa7488118ac 04-Jun-2009 Evan Cheng <evan.cheng@apple.com> RALinScan::attemptTrivialCoalescing() was returning a virtual register instead of the physical register it is allocated to. This resulted in virtual register(s) being added the live-in sets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72890 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
073e7e5807991a9f614569426fdd6536728c01ca 04-Jun-2009 Evan Cheng <evan.cheng@apple.com> RALinScan::attemptTrivialCoalescing() was returning a virtual register instead of the physical register it is allocated to. This resulted in virtual register(s) being added the live-in sets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72890 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
9be391da176dc1e378746d273f291c74ee17f970 04-Jun-2009 Evan Cheng <evan.cheng@apple.com> A value defined by an implicit_def can be liven to a use BB. This is unfortunate. But register allocator still has to add it to the live-in set of the use BB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72889 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
550aacb978a8391f605c6ec1feca7d797415d38b 04-Jun-2009 Evan Cheng <evan.cheng@apple.com> A value defined by an implicit_def can be liven to a use BB. This is unfortunate. But register allocator still has to add it to the live-in set of the use BB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72889 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
775e7713e930743ae3d908e4820b5a589dc15723 04-Jun-2009 Lang Hames <lhames@gmail.com> Removed SimpleRewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72880 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
ac2764040f9617e50688d336d99f504da8cdc35e 04-Jun-2009 Lang Hames <lhames@gmail.com> Removed SimpleRewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72880 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
a22a840c2c561f5cee6691c3ae13dfcf230b7e45 04-Jun-2009 Dan Gohman <gohman@apple.com> Don't do the X * 0.0 -> 0.0 transformation in instcombine, because
instcombine doesn't know when it's safe. To partially compensate
for this, introduce new code to do this transformation in
dagcombine, which can use UnsafeFPMath.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
77b81fe487de709d41dfcc97bbb2941ae1bb80af 04-Jun-2009 Dan Gohman <gohman@apple.com> Don't do the X * 0.0 -> 0.0 transformation in instcombine, because
instcombine doesn't know when it's safe. To partially compensate
for this, introduce new code to do this transformation in
dagcombine, which can use UnsafeFPMath.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
2ac69f6a48cf68cfb33bb37b310b088120b4084b 04-Jun-2009 Dan Gohman <gohman@apple.com> Fix comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72870 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
68f32cbb1f9e62d5e6047b048c0d7d217b8717e1 04-Jun-2009 Dan Gohman <gohman@apple.com> Fix comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72870 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1dac13f580f31bc3f605200ea9a65bcd43775f6e 04-Jun-2009 Dan Gohman <gohman@apple.com> Remove a #include of <iostream>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72828 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
e5eb6d2fdb9c8cb1d0ddc89759bb6c6d43dd75ec 04-Jun-2009 Dan Gohman <gohman@apple.com> Remove a #include of <iostream>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72828 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
95a39c040b70ffd3b924640b7648ec79626a594e 04-Jun-2009 Lang Hames <lhames@gmail.com> Removed more testing code that snuck in earlier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72825 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
fcad1720066fe88c33c1d6007f36e57a82894302 04-Jun-2009 Lang Hames <lhames@gmail.com> Removed more testing code that snuck in earlier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72825 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
14582c8a8c925940177296b0e0a9b8931fa4a204 03-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Move ELFCodeEmiter stuff to new files

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72785 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
4cb31436bd90ace0e41c6aad801371538996d8c7 03-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Move ELFCodeEmiter stuff to new files

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72785 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
LFCodeEmitter.cpp
LFCodeEmitter.h
LFWriter.cpp
157886a77f0cfc03066e066d3e940b6ae29af773 03-Jun-2009 Oscar Fuentes <ofv@wanadoo.es> CMake: Added missing source file to lib/CodeGen/CMakeLists.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72775 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
030019f113114184266910625b9074c4f1e1d97c 03-Jun-2009 Oscar Fuentes <ofv@wanadoo.es> CMake: Added missing source file to lib/CodeGen/CMakeLists.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72775 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
8312e2965612848d57f8f15e70f258c3075df2f3 03-Jun-2009 Evan Cheng <evan.cheng@apple.com> Fix for PR4225: When rewriter reuse a value in a physical register , it clear the register kill operand marker and its kill ops information. However, the cleared operand may be a def of a super-register. Clear the kill ops info for the super-register's sub-registers as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72758 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
2c48fe6757284e363248ea725ceedca8dd7ee272 03-Jun-2009 Evan Cheng <evan.cheng@apple.com> Fix for PR4225: When rewriter reuse a value in a physical register , it clear the register kill operand marker and its kill ops information. However, the cleared operand may be a def of a super-register. Clear the kill ops info for the super-register's sub-registers as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72758 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
9ae8c88986f34b761dd52fccf7e21346e62ec17d 03-Jun-2009 Evan Cheng <evan.cheng@apple.com> If there is a def of a super-register followed by a use of a sub-register, do *not* add an implicit def of the sub-register. e.g.
EAX = ..., AX<imp-def>
...
= AX

This creates a double-def. Apparently this used to be necessary but is no longer needed.

Thanks to Anton for pointing this out. Anton, I cannot create a test case without your uncommitted ARM patches. Please check in a test case for me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72755 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
95299c194d4f852d17554779117c4125c3fae73d 03-Jun-2009 Evan Cheng <evan.cheng@apple.com> If there is a def of a super-register followed by a use of a sub-register, do *not* add an implicit def of the sub-register. e.g.
EAX = ..., AX<imp-def>
...
= AX

This creates a double-def. Apparently this used to be necessary but is no longer needed.

Thanks to Anton for pointing this out. Anton, I cannot create a test case without your uncommitted ARM patches. Please check in a test case for me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72755 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
f42e3eb5690368cd421840fb03568265d239cc22 03-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Move structures and classes into header files, providing two new headers and
one new .cpp file, in preparation for merging in the Direct Object Emission
changes we're working on. No functional changes.
Fixed coding style issues on the original patch. Patch by Aaron Gray


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72754 91177308-0d34-0410-b5e6-96231b3b80d8
achO.h
achOCodeEmitter.cpp
achOCodeEmitter.h
achOWriter.cpp
achOWriter.h
a321dcd38d2bdafa06537515de97787aa0e83974 03-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Move structures and classes into header files, providing two new headers and
one new .cpp file, in preparation for merging in the Direct Object Emission
changes we're working on. No functional changes.
Fixed coding style issues on the original patch. Patch by Aaron Gray


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72754 91177308-0d34-0410-b5e6-96231b3b80d8
achO.h
achOCodeEmitter.cpp
achOCodeEmitter.h
achOWriter.cpp
achOWriter.h
76b7bec6d15634372f2becd033cc55eb8efdd3b8 02-Jun-2009 Lang Hames <lhames@gmail.com> Fixed warning, removed some temporary validation code that snuck in during my last commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72735 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
7ccf4a05e8452feffd5ae90b68d700f113e83923 02-Jun-2009 Lang Hames <lhames@gmail.com> Fixed warning, removed some temporary validation code that snuck in during my last commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72735 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
86f6afb2fcf72c987aa2cfc01f5b4044dda349bd 02-Jun-2009 Lang Hames <lhames@gmail.com> Update to in-place spilling framework. Includes live interval scaling and trivial rewriter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72729 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
piller.cpp
piller.h
trongPHIElimination.cpp
irtRegRewriter.cpp
f41538d1b54f55e8900394929b50f7ce3e61125f 02-Jun-2009 Lang Hames <lhames@gmail.com> Update to in-place spilling framework. Includes live interval scaling and trivial rewriter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72729 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
piller.cpp
piller.h
trongPHIElimination.cpp
irtRegRewriter.cpp
747fe522899b2cdc0366b3c125341745ef99f2ba 02-Jun-2009 Dale Johannesen <dalej@apple.com> Revert 72707 and 72709, for the moment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
874ae251c317788391f9c3f113957802d390a063 02-Jun-2009 Dale Johannesen <dalej@apple.com> Revert 72707 and 72709, for the moment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
d6758f98bfa1f02e5218ed484002ea120a691a44 02-Jun-2009 Dale Johannesen <dalej@apple.com> Make the implicit inputs and outputs of target-independent
ADDC/ADDE use MVT::i1 (later, whatever it gets legalized to)
instead of MVT::Flag. Remove CARRY_FALSE in favor of 0; adjust
all target-independent code to use this format.

Most targets will still produce a Flag-setting target-dependent
version when selection is done. X86 is converted to use i32
instead, which means TableGen needs to produce different code
in xxxGenDAGISel.inc. This keys off the new supportsHasI1 bit
in xxxInstrInfo, currently set only for X86; in principle this
is temporary and should go away when all other targets have
been converted. All relevant X86 instruction patterns are
modified to represent setting and using EFLAGS explicitly. The
same can be done on other targets.

The immediate behavior change is that an ADC/ADD pair are no
longer tightly coupled in the X86 scheduler; they can be
separated by instructions that don't clobber the flags (MOV).
I will soon add some peephole optimizations based on using
other instructions that set the flags to feed into ADC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72707 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
4150d83abe90a5da4ddf86433b7bf4329acfa57c 02-Jun-2009 Dale Johannesen <dalej@apple.com> Make the implicit inputs and outputs of target-independent
ADDC/ADDE use MVT::i1 (later, whatever it gets legalized to)
instead of MVT::Flag. Remove CARRY_FALSE in favor of 0; adjust
all target-independent code to use this format.

Most targets will still produce a Flag-setting target-dependent
version when selection is done. X86 is converted to use i32
instead, which means TableGen needs to produce different code
in xxxGenDAGISel.inc. This keys off the new supportsHasI1 bit
in xxxInstrInfo, currently set only for X86; in principle this
is temporary and should go away when all other targets have
been converted. All relevant X86 instruction patterns are
modified to represent setting and using EFLAGS explicitly. The
same can be done on other targets.

The immediate behavior change is that an ADC/ADD pair are no
longer tightly coupled in the X86 scheduler; they can be
separated by instructions that don't clobber the flags (MOV).
I will soon add some peephole optimizations based on using
other instructions that set the flags to feed into ADC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72707 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/SelectionDAG.cpp
caa5a11d3ed679347488cdcd4ed9be5c65d9b671 01-Jun-2009 Bill Wendling <isanbard@gmail.com> Accidental commit. This isn't ready for prime time just yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72699 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8fff19ba556b8a61545fa52fdac9f04fbbe74e11 01-Jun-2009 Bill Wendling <isanbard@gmail.com> Accidental commit. This isn't ready for prime time just yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72699 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
bb7b585dbc0b6b4ead10e89399c444faa8d5c04a 31-May-2009 Duncan Sands <baldrick@free.fr> Rename CustomLowerResults to CustomLowerNode, since
it is used both when a result is illegal and when an
operand is illegal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72658 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
f43071beddb7ed5b2fd7d2f06c4130460616a13d 31-May-2009 Duncan Sands <baldrick@free.fr> Rename CustomLowerResults to CustomLowerNode, since
it is used both when a result is illegal and when an
operand is illegal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72658 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
60a367021993b49edc317d8dddedcb23a28ca5c2 31-May-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use uint8_t and int32_t in {JIT,Machine}CodeEmiters


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72650 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
achOWriter.h
af90a1cd2647909623758078540abb1a81495e32 31-May-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use uint8_t and int32_t in {JIT,Machine}CodeEmiters


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72650 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
achOWriter.h
1ea31ff434f7966f3d8b2c158b4f20950e94e80d 30-May-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> First patch in the direction of splitting MachineCodeEmitter in two subclasses:
JITCodeEmitter and ObjectCodeEmitter. No functional changes yet. Patch by Aaron Gray



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72631 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
a3f99f90338d89354384ca25f53ca4450a1a9d18 30-May-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> First patch in the direction of splitting MachineCodeEmitter in two subclasses:
JITCodeEmitter and ObjectCodeEmitter. No functional changes yet. Patch by Aaron Gray



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72631 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
c19467424889a76b42eb17134180e42ff528c55b 30-May-2009 Bill Wendling <isanbard@gmail.com> Untabification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72604 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
egAllocPBQP.cpp
electionDAG/SelectionDAG.cpp
51b16f473759c1546acbf308a5d3f3e7bf3ea23c 30-May-2009 Bill Wendling <isanbard@gmail.com> Untabification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72604 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
egAllocPBQP.cpp
electionDAG/SelectionDAG.cpp
cad47c045c8b01585e3302e51a23ade4c26dbfb2 29-May-2009 Evan Cheng <evan.cheng@apple.com> Do not try to create a MVT type of width 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72557 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d3c76bb6fc3c066286850e91b8bf03484ea2a56e 29-May-2009 Evan Cheng <evan.cheng@apple.com> Do not try to create a MVT type of width 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72557 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5281c2132e2f0fd0219a7a9ab8d3ef2a3f80a310 28-May-2009 Eli Friedman <eli.friedman@gmail.com> Re-commit r72514 and r72516 with a fixed version of BR_CC lowering.
This patch removes some special cases for opcodes and does a bit of
cleanup.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72536 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bbdd903c52897df78750aa0caf2fc34d55b5ead0 28-May-2009 Eli Friedman <eli.friedman@gmail.com> Re-commit r72514 and r72516 with a fixed version of BR_CC lowering.
This patch removes some special cases for opcodes and does a bit of
cleanup.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72536 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f98ca6bcea7231a1cea2f2b7f7d04211d605d4f6 28-May-2009 Evan Cheng <evan.cheng@apple.com> Incorporate patch feedbacks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72533 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cdcecc03ce7d3cece0ef2a0d93fade05506849c1 28-May-2009 Evan Cheng <evan.cheng@apple.com> Incorporate patch feedbacks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72533 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
724bd8f55345d8c58beba7b98472258ce945cf79 28-May-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r72514 (and dependent patch r72516). It was causing this
failure during llvm-gcc bootstrap:

Assertion failed: (!Tmp2.getNode() && "Can't legalize BR_CC with legal condition!"), function ExpandNode, file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/src/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp, line 2923.
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/gcc/libgcc2.c:1727: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72530 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
43b41273f3e56f49449992436cc39b406c9a6350 28-May-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r72514 (and dependent patch r72516). It was causing this
failure during llvm-gcc bootstrap:

Assertion failed: (!Tmp2.getNode() && "Can't legalize BR_CC with legal condition!"), function ExpandNode, file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/src/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp, line 2923.
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/gcc/libgcc2.c:1727: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72530 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
11108da1594427115f3f7d002e0d6dd487357abc 28-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove a couple of useless functions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72516 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e727d7a08406265acb10d0c52943ef92859710f2 28-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove a couple of useless functions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72516 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9140bd22cf5936f73c51193ee94cde5c10220c07 28-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove special cases for more opcodes.

This is basically the end of this series of patches for LegalizeDAG; the
remaining special cases can't be removed without more infrastructure
work. There's a FIXME for each relevant opcode near the beginning of
SelectionDAGLegalize::LegalizeOp.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72514 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1c39965342453ce33a3b3f9a863c38fdb45fd6ef 28-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove special cases for more opcodes.

This is basically the end of this series of patches for LegalizeDAG; the
remaining special cases can't be removed without more infrastructure
work. There's a FIXME for each relevant opcode near the beginning of
SelectionDAGLegalize::LegalizeOp.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72514 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b303fbab66223a5ca43d23022a49bef5ae5adbe0 28-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove special case for SETCC opcode; add some comments explaining why
some special cases are necessary.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72511 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ad75460e30aab135057355fa0712141bf2cb08fc 28-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove special case for SETCC opcode; add some comments explaining why
some special cases are necessary.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72511 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
36607b0dacdd0ea9c99caacdbfa8dace07329f42 28-May-2009 Eli Friedman <eli.friedman@gmail.com> Some minor cleanups.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72509 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3be2e514c9e7b20135be5b9df3e9aa1cb08cb374 28-May-2009 Eli Friedman <eli.friedman@gmail.com> Some minor cleanups.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72509 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2f5d3a50b3d4206d83f7ccc4e95c3c0465d6e460 28-May-2009 Evan Cheng <evan.cheng@apple.com> Added optimization that narrow load / op / store and the 'op' is a bit twiddling instruction and its second operand is an immediate. If bits that are touched by 'op' can be done with a narrower instruction, reduce the width of the load and store as well. This happens a lot with bitfield manipulation code.
e.g.
orl $65536, 8(%rax)
=>
orb $1, 10(%rax)

Since narrowing is not always a win, e.g. i32 -> i16 is a loss on x86, dag combiner consults with the target before performing the optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72507 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8b944d39b356135676459152385f05c496951f6c 28-May-2009 Evan Cheng <evan.cheng@apple.com> Added optimization that narrow load / op / store and the 'op' is a bit twiddling instruction and its second operand is an immediate. If bits that are touched by 'op' can be done with a narrower instruction, reduce the width of the load and store as well. This happens a lot with bitfield manipulation code.
e.g.
orl $65536, 8(%rax)
=>
orb $1, 10(%rax)

Since narrowing is not always a win, e.g. i32 -> i16 is a loss on x86, dag combiner consults with the target before performing the optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72507 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e7fde9f81755b2d2b71146cc99f2a1d44342c65b 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Minor cleanups; add a better explanation for the issue with
BUILD_VECTOR.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72469 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b5da3f6f98b28afc0c62572c164ffccb4004827f 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Minor cleanups; add a better explanation for the issue with
BUILD_VECTOR.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72469 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ed053c0a914befdd1a83b5fe18e46eda1a9b3c48 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove more special cases for opcodes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72468 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4bc8c718218159fe410462f6e3670e7cb76c0c04 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove more special cases for opcodes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72468 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cad61b8f7471149e0ed5de0506dd782ea7bf8006 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove special cases for more opcodes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72467 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorOps.cpp
509150f973ae650a57b79010a3ec36e60e40f41d 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove special cases for more opcodes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72467 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorOps.cpp
375652ba013c714e580a68f6c2d61ecdc65b556b 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Removing more special cases from LegalizeDAG.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f6f20a7779c5308ccb3e4306552d749091a77a60 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Removing more special cases from LegalizeDAG.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ddb45ea7c3b1b064b732f37ae4fea58e9299058d 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Eliminate more special cases for opcodes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
26ea8f982fb58245d3735b80ce04bc8050348a19 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Eliminate more special cases for opcodes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0f7deb53c06791d05298505531800497e027deed 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove more special cases from LegalizeDAG.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72456 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f6b23bfc79cf9f605a2e74942c90799ff4f1a17e 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove more special cases from LegalizeDAG.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72456 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
98cace6d4c701959b388a98e920c0214ce598412 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove unused argument.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72455 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
47b41f7e20b6af7aaaf0e050200102d55d038b9d 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove unused argument.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72455 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3404c523fe86ff6c82a9aafe7dfb33bb6f4dc028 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove more opcode special cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3f727d6c1b68e90a3ab2d95ec2229f8b2c40b84b 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove more opcode special cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
26cc99330bbab98aba15514fb37384fcf1e0a0d5 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Start of refactoring LegalizeDAG so that we don't need specialized
handling for every single opcode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72447 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8c377c7296d8a8104231442c3f6c27296249ec5f 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Start of refactoring LegalizeDAG so that we don't need specialized
handling for every single opcode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72447 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
02d392b4b8dbbc83fb98fba9b6116289ca70f4e8 26-May-2009 Jeffrey Yasskin <jyasskin@google.com> LiveVariables::VarInfo contains an AliveBlocks BitVector, which has as many
entries as there are basic blocks in the function. LiveVariables::getVarInfo
creates a VarInfo struct for every register in the function, leading to
quadratic space use. This patch changes the BitVector to a SparseBitVector,
which doesn't help the worst-case memory use but does reduce the actual use in
very long functions with short-lived variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72426 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
HIElimination.cpp
493a3d015cbb2bcc18d9293a4dec3b35c7493818 26-May-2009 Jeffrey Yasskin <jyasskin@google.com> LiveVariables::VarInfo contains an AliveBlocks BitVector, which has as many
entries as there are basic blocks in the function. LiveVariables::getVarInfo
creates a VarInfo struct for every register in the function, leading to
quadratic space use. This patch changes the BitVector to a SparseBitVector,
which doesn't help the worst-case memory use but does reduce the actual use in
very long functions with short-lived variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72426 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
HIElimination.cpp
0e88384d97a20d105270b8a070bde02a74290f14 26-May-2009 Eli Friedman <eli.friedman@gmail.com> Delete a bunch of dead code from LegalizeDAG.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72414 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
74807f2520715056be399a2bc59dfc8b6f8f3eb2 26-May-2009 Eli Friedman <eli.friedman@gmail.com> Delete a bunch of dead code from LegalizeDAG.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72414 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b99b9cb3c54e21676021c02c7cf1ddb14b5b3c47 26-May-2009 Evan Cheng <evan.cheng@apple.com> Eliminate VarInfo::UsedBlocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72411 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
woAddressInstructionPass.cpp
aed4a430f4f6cc0e3ff06d458e68e5d195bbed7c 26-May-2009 Evan Cheng <evan.cheng@apple.com> Eliminate VarInfo::UsedBlocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72411 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
woAddressInstructionPass.cpp
63f7ac9eed9bded6e344bd5f31fff35a9ba990a0 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Add a comment which should hopefully make the purpose of this method a
bit clearer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72374 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
c046c00d0a1f65483a8c69f26c66fc74f5228332 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Add a comment which should hopefully make the purpose of this method a
bit clearer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72374 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
66c5365caa055fbb305f16cc7e27149f21f84ea0 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Minor improvement to FCOPYSIGN to use BIT_CONVERT in cases where the
corresponding integer type is legal.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
57f1a4bc40e9103cd41cf541b9d6a73b92f0acba 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Minor improvement to FCOPYSIGN to use BIT_CONVERT in cases where the
corresponding integer type is legal.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
57e542700d20f066920d4f0430b797990ec2661e 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Rewrite ISD::FCOPYSIGN lowering to never use i64. Not really ideal, but
it's late, and I don't have any better ideas at the moment. Fixes PR4257.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72363 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ed2f8c557a86612ee14fea25e7be2d3c1445951a 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Rewrite ISD::FCOPYSIGN lowering to never use i64. Not really ideal, but
it's late, and I don't have any better ideas at the moment. Fixes PR4257.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72363 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
69eb9c201cbe6a289bb42973e00bf79bc545fbc6 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Update for CMakeLists; untested, so tell me if there are issues.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72360 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
7d869fb062aee8a3de7dad23eb48d7a5d2d64190 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Update for CMakeLists; untested, so tell me if there are issues.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72360 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
32874522768f22dd3f55dc5e1c2cff13715378d3 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove checks of getTypeAction from LegalizeOp; we already assert that
all results and all operands are legal, so this change shouldn't affect
behavior at all.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
957bffaeca6a0e2ccc684d753df1d87e8e053fe2 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove checks of getTypeAction from LegalizeOp; we already assert that
all results and all operands are legal, so this change shouldn't affect
behavior at all.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
65d41930c0358f7488100a740087e7ef29e4ac88 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Disable type legalization in LegalizeDAG.

This leaves around 4000 lines of dead code; I'll clean that up
in subsequent commits.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72358 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1fde9c5f771922f12fefc903850c4eca303297d9 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Disable type legalization in LegalizeDAG.

This leaves around 4000 lines of dead code; I'll clean that up
in subsequent commits.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72358 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4421bc828d03a462864519150a96c51b6c989f9c 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Fix a bug in the expansion of EXTRACT_SUBVECTOR in
ExpandExtractFromVectorThroughStack.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72351 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2a35b1c54ba55a917e01e0043efcf67e20505953 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Fix a bug in the expansion of EXTRACT_SUBVECTOR in
ExpandExtractFromVectorThroughStack.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72351 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ed3d4b1c5cc683d7026c39cc76f2645bd436ed20 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Add a proper implementation of EXTRACT_SUBVECTOR legalization that
doesn't split legal vector operands. This is necessary because the
type legalization (and therefore, vector splitting) code will be going
away soon.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3d43b3f6d7e1d3516052f20bf2d14727ebddb8ff 24-May-2009 Eli Friedman <eli.friedman@gmail.com> Add a proper implementation of EXTRACT_SUBVECTOR legalization that
doesn't split legal vector operands. This is necessary because the
type legalization (and therefore, vector splitting) code will be going
away soon.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a9bb5d91c0090d8492df3314237c97cbbccfc02e 23-May-2009 Edwin Török <edwintorok@gmail.com> Fix PR4254.
The DAGCombiner created a negative shiftamount, stored in an
unsigned variable. Later the optimizer eliminated the shift entirely as being
undefined.
Example: (srl (shl X, 56) 48). ShiftAmt is 4294967288.
Fix it by checking that the shiftamount is positive, and storing in a signed
variable.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72331 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6bb4958543e2b7ff412b3dac3ebf01a184193ad7 23-May-2009 Torok Edwin <edwintorok@gmail.com> Fix PR4254.
The DAGCombiner created a negative shiftamount, stored in an
unsigned variable. Later the optimizer eliminated the shift entirely as being
undefined.
Example: (srl (shl X, 56) 48). ShiftAmt is 4294967288.
Fix it by checking that the shiftamount is positive, and storing in a signed
variable.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72331 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e7cf6a8ec347079c178290e279b63451c4d633ea 23-May-2009 Eli Friedman <eli.friedman@gmail.com> Add a new step to legalization to legalize vector math operations. This
will allow simplifying LegalizeDAG to eliminate type legalization. (I
have a patch to do that, but it's not quite finished; I'll commit it
once it's finished and I've fixed any review comments for this patch.)
See the comment at the beginning of
lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp for more details on the
motivation for this patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72325 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
electionDAG/SelectionDAGISel.cpp
5c22c8074404797f1313b1334757254fb5c6487a 23-May-2009 Eli Friedman <eli.friedman@gmail.com> Add a new step to legalization to legalize vector math operations. This
will allow simplifying LegalizeDAG to eliminate type legalization. (I
have a patch to do that, but it's not quite finished; I'll commit it
once it's finished and I've fixed any review comments for this patch.)
See the comment at the beginning of
lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp for more details on the
motivation for this patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72325 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorOps.cpp
electionDAG/SelectionDAGISel.cpp
f325c4808b01ed9a5230faec3be5a8fbddf18c76 22-May-2009 Duncan Sands <baldrick@free.fr> Add a new codegen pass that normalizes dwarf exception handling
code in preparation for code generation. The main thing it does
is handle the case when eh.exception calls (and, in a future
patch, eh.selector calls) are far away from landing pads. Right
now in practice you only find eh.exception calls close to landing
pads: either in a landing pad (the common case) or in a landing
pad successor, due to loop passes shifting them about. However
future exception handling improvements will result in calls far
from landing pads:
(1) Inlining of rewinds. Consider the following case:
In function @f:
...
invoke @g to label %normal unwind label %unwinds
...
unwinds:
%ex = call i8* @llvm.eh.exception()
...

In function @g:
...
invoke @something to label %continue unwind label %handler
...
handler:
%ex = call i8* @llvm.eh.exception()
... perform cleanups ...
"rethrow exception"

Now inline @g into @f. Currently this is turned into:
In function @f:
...
invoke @something to label %continue unwind label %handler
...
handler:
%ex = call i8* @llvm.eh.exception()
... perform cleanups ...
invoke "rethrow exception" to label %normal unwind label %unwinds
unwinds:
%ex = call i8* @llvm.eh.exception()
...

However we would like to simplify invoke of "rethrow exception" into
a branch to the %unwinds label. Then %unwinds is no longer a landing
pad, and the eh.exception call there is then far away from any landing
pads.

(2) Using the unwind instruction for cleanups.
It would be nice to have codegen handle the following case:
invoke @something to label %continue unwind label %run_cleanups
...
handler:
... perform cleanups ...
unwind

This requires turning "unwind" into a library call, which
necessarily takes a pointer to the exception as an argument
(this patch also does this unwind lowering). But that means
you are using eh.exception again far from a landing pad.

(3) Bugpoint simplifications. When bugpoint is simplifying
exception handling code it often generates eh.exception calls
far from a landing pad, which then causes codegen to assert.
Bugpoint then latches on to this assertion and loses sight
of the original problem.

Note that it is currently rare for this pass to actually do
anything. And in fact it normally shouldn't do anything at
all given the code coming out of llvm-gcc! But it does fire
a few times in the testsuite. As far as I can see this is
almost always due to the LoopStrengthReduce codegen pass
introducing pointless loop preheader blocks which are landing
pads and only contain a branch to another block. This other
block contains an eh.exception call. So probably by tweaking
LoopStrengthReduce a bit this can be avoided.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72276 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
warfEHPrepare.cpp
LVMTargetMachine.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
b0f1e1780c736c62fb99e5824825d2a60a53b53b 22-May-2009 Duncan Sands <baldrick@free.fr> Add a new codegen pass that normalizes dwarf exception handling
code in preparation for code generation. The main thing it does
is handle the case when eh.exception calls (and, in a future
patch, eh.selector calls) are far away from landing pads. Right
now in practice you only find eh.exception calls close to landing
pads: either in a landing pad (the common case) or in a landing
pad successor, due to loop passes shifting them about. However
future exception handling improvements will result in calls far
from landing pads:
(1) Inlining of rewinds. Consider the following case:
In function @f:
...
invoke @g to label %normal unwind label %unwinds
...
unwinds:
%ex = call i8* @llvm.eh.exception()
...

In function @g:
...
invoke @something to label %continue unwind label %handler
...
handler:
%ex = call i8* @llvm.eh.exception()
... perform cleanups ...
"rethrow exception"

Now inline @g into @f. Currently this is turned into:
In function @f:
...
invoke @something to label %continue unwind label %handler
...
handler:
%ex = call i8* @llvm.eh.exception()
... perform cleanups ...
invoke "rethrow exception" to label %normal unwind label %unwinds
unwinds:
%ex = call i8* @llvm.eh.exception()
...

However we would like to simplify invoke of "rethrow exception" into
a branch to the %unwinds label. Then %unwinds is no longer a landing
pad, and the eh.exception call there is then far away from any landing
pads.

(2) Using the unwind instruction for cleanups.
It would be nice to have codegen handle the following case:
invoke @something to label %continue unwind label %run_cleanups
...
handler:
... perform cleanups ...
unwind

This requires turning "unwind" into a library call, which
necessarily takes a pointer to the exception as an argument
(this patch also does this unwind lowering). But that means
you are using eh.exception again far from a landing pad.

(3) Bugpoint simplifications. When bugpoint is simplifying
exception handling code it often generates eh.exception calls
far from a landing pad, which then causes codegen to assert.
Bugpoint then latches on to this assertion and loses sight
of the original problem.

Note that it is currently rare for this pass to actually do
anything. And in fact it normally shouldn't do anything at
all given the code coming out of llvm-gcc! But it does fire
a few times in the testsuite. As far as I can see this is
almost always due to the LoopStrengthReduce codegen pass
introducing pointless loop preheader blocks which are landing
pads and only contain a branch to another block. This other
block contains an eh.exception call. So probably by tweaking
LoopStrengthReduce a bit this can be avoided.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72276 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
warfEHPrepare.cpp
LVMTargetMachine.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
2d9b3cbe342bca2e2ec06f74e90a949c43b89fce 21-May-2009 Jay Foad <jay.foad@gmail.com> Use v.data() instead of &v[0] when SmallVector v might be empty.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72210 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e3e51c0038bd6ba2add82e2246e97edec0ab2204 21-May-2009 Jay Foad <jay.foad@gmail.com> Use v.data() instead of &v[0] when SmallVector v might be empty.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72210 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bc121cc257b82165c7e476cd627e6236375f4dc9 21-May-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r72191. It was causing an assert during llvm-gcc
bootstrapping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72200 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ebugLoc.cpp
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
df7d5d317096c342ee1c459139914965008fbcd7 21-May-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r72191. It was causing an assert during llvm-gcc
bootstrapping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72200 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ebugLoc.cpp
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
4ca8dfde22e09e0ce39c6625f3da3e3241911ae9 21-May-2009 Bill Wendling <isanbard@gmail.com> Minor code cleanup. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72198 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
39dd6962821ee48c334ac1240ecb231c18c17e40 21-May-2009 Bill Wendling <isanbard@gmail.com> Minor code cleanup. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72198 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
065d8473bc3b511dd90e8f551d9ffe6a14dfd9e2 21-May-2009 Bill Wendling <isanbard@gmail.com> Merge 'ConstructFunctionDbgScope' and 'ConstructAbstractDbgScope'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72197 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
1795616930543c8156b2414482b2f811c87bb375 21-May-2009 Bill Wendling <isanbard@gmail.com> Merge 'ConstructFunctionDbgScope' and 'ConstructAbstractDbgScope'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72197 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0d3db8b07e2638cb8a0e005ff08dd824e851d1c7 21-May-2009 Bill Wendling <isanbard@gmail.com> Rename 'New*' methods to 'Create*' to be consistent. 'NewString' isn't used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72196 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
995f80ad5fa835b51f0db4566b7edc3d5b126625 21-May-2009 Bill Wendling <isanbard@gmail.com> Rename 'New*' methods to 'Create*' to be consistent. 'NewString' isn't used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72196 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
e1a5bbb8a43196d3eb44e943bef4ea0d268dd253 21-May-2009 Bill Wendling <isanbard@gmail.com> Add comment for emit section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72195 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
829e67b5ec955760733e67dc6d41a09cd73a084f 21-May-2009 Bill Wendling <isanbard@gmail.com> Add comment for emit section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72195 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
55fccda5744a6362673dbbf5de184b91a88ab93f 21-May-2009 Bill Wendling <isanbard@gmail.com> Move 'Emit' methods down to their own place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72194 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
94d04b8f808bc3ea9de0120c3a7da593771a438a 21-May-2009 Bill Wendling <isanbard@gmail.com> Move 'Emit' methods down to their own place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72194 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
f5839195e511f635057cd92dbb09b5ecbb078fe9 21-May-2009 Bill Wendling <isanbard@gmail.com> Revert r72192. It was causing a build failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72193 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
f0fb987903d0885e7da456e3d6f4a094efaccdc2 21-May-2009 Bill Wendling <isanbard@gmail.com> Revert r72192. It was causing a build failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72193 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
53f5ba4a7a80b2a36984be67fd146eb819b14dff 21-May-2009 Bill Wendling <isanbard@gmail.com> Do some mechanical changes. Combine the 'construct abastract dbg thingy' in with
the 'constract function dbg thingy'. Rename some methods to make them consistent
with the rest of the methods. Move the 'Emit' methods to the end of the file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72192 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
63ad10c004a559dce2dd3179fb851ad5fa6fbbe9 21-May-2009 Bill Wendling <isanbard@gmail.com> Do some mechanical changes. Combine the 'construct abastract dbg thingy' in with
the 'constract function dbg thingy'. Rename some methods to make them consistent
with the rest of the methods. Move the 'Emit' methods to the end of the file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72192 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
0c41264d8ca7e8bd4bab0413891e7fb1aa22d864 21-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce DebugScope which gets embedded into the machine instructions' DebugLoc.
DebugScope refers to a debug region, function or block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72191 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ebugLoc.cpp
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
a3437647dc6996499db4823c31242184c93e6e2e 21-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce DebugScope which gets embedded into the machine instructions' DebugLoc.
DebugScope refers to a debug region, function or block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72191 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ebugLoc.cpp
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
f4e4613beefe9956dc2254f7d553a82db7296f3a 20-May-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR4235: to build a floating-point value from integer parts,
build an integer and cast that to a float. This fixes a crash
caused by trying to split an f32 into two f16's.

This changes the behavior in test/CodeGen/XCore/fneg.ll because that
testcase now triggers a DAGCombine which converts the fneg into an integer
operation. If someone is interested, it's probably possible to tweak
the test to generate an actual fneg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72162 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
2ac8b324eb4de4507858dcd33ce03ef9973bf1f3 20-May-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR4235: to build a floating-point value from integer parts,
build an integer and cast that to a float. This fixes a crash
caused by trying to split an f32 into two f16's.

This changes the behavior in test/CodeGen/XCore/fneg.ll because that
testcase now triggers a DAGCombine which converts the fneg into an integer
operation. If someone is interested, it's probably possible to tweak
the test to generate an actual fneg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72162 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
40ac86f6b7bc1b60e66a29a29d292bf5d97ed611 19-May-2009 Bill Wendling <isanbard@gmail.com> Forward decls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72114 91177308-0d34-0410-b5e6-96231b3b80d8
piller.h
cd35ed5153963c92333aa8d82692f1344d3ec911 19-May-2009 Bill Wendling <isanbard@gmail.com> Forward decls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72114 91177308-0d34-0410-b5e6-96231b3b80d8
piller.h
cebe3125ac8382d7a35b40430862a88ce70dc56f 19-May-2009 Bill Wendling <isanbard@gmail.com> Remove 'class' specifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72113 91177308-0d34-0410-b5e6-96231b3b80d8
piller.h
0bde89e4555b726104dff26b90378a17fa919648 19-May-2009 Bill Wendling <isanbard@gmail.com> Remove 'class' specifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72113 91177308-0d34-0410-b5e6-96231b3b80d8
piller.h
5dc3a43c393db620b59a8bcbdbe1d483eaca9aa2 19-May-2009 Bill Wendling <isanbard@gmail.com> Fix to compile on VS2008.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72112 91177308-0d34-0410-b5e6-96231b3b80d8
piller.h
7683806ea3a16e14e8b7c0c9878f5211b4c8baa5 19-May-2009 Bill Wendling <isanbard@gmail.com> Fix to compile on VS2008.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72112 91177308-0d34-0410-b5e6-96231b3b80d8
piller.h
1e1d610788e281a17a9073d86825d89d7358501d 19-May-2009 Dan Gohman <gohman@apple.com> Remove the #ifndef NDEBUG from the FastISel debugging options. This
fixes dejagnu tests that use these options.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72094 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
dea4085da04e2e3993f9357ce5049a7fbe05e924 19-May-2009 Dan Gohman <gohman@apple.com> Remove the #ifndef NDEBUG from the FastISel debugging options. This
fixes dejagnu tests that use these options.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72094 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
128f89418404c66ea5e2481baba36c48204f89f0 19-May-2009 Mike Stump <mrs@apple.com> Fix cmake builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72078 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
1d4c73860339f8eccf876635a0409e01e7062d8c 19-May-2009 Mike Stump <mrs@apple.com> Fix cmake builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72078 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
5221372e265d4c911707589c8967d2b8e1880aa1 19-May-2009 Bill Wendling <isanbard@gmail.com> Don't set the "location" information for inlined functions' variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72064 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
1180c7899ca101bdb96cf36a0101bf161e510fcb 19-May-2009 Bill Wendling <isanbard@gmail.com> Don't set the "location" information for inlined functions' variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72064 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
35d02263362b2a3e7188a75bc7ae8c327ba48ffb 19-May-2009 Bill Wendling <isanbard@gmail.com> Small code cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72057 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
cde5d63d909c2c3b9c2a30cef107f77a7a556deb 19-May-2009 Bill Wendling <isanbard@gmail.com> Small code cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72057 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
8730786d9d61ca07337168703d6d489bcccfceca 19-May-2009 Bill Wendling <isanbard@gmail.com> RecordVariable is called each time a DECLARE node is encountered. For an inlined
function, this could be many, many times. We don't want to re-add variables to
that DIE for each time. We just want to add them once. Check to make sure that
we haven't added them already.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72047 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
6679ee4e805f606264ed4e03449b957c9212cfb6 19-May-2009 Bill Wendling <isanbard@gmail.com> RecordVariable is called each time a DECLARE node is encountered. For an inlined
function, this could be many, many times. We don't want to re-add variables to
that DIE for each time. We just want to add them once. Check to make sure that
we haven't added them already.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72047 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
dd7395fca55493963842a17017fde4e683b546f6 18-May-2009 Bob Wilson <bob.wilson@apple.com> Fix CodePlacementOpt::OptimizeIntraLoopEdges so that its return value
correctly indicates whether it changed the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72038 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
8ad05c4bdf2739742131adbab247e5c8ee0df857 18-May-2009 Bob Wilson <bob.wilson@apple.com> Fix CodePlacementOpt::OptimizeIntraLoopEdges so that its return value
correctly indicates whether it changed the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72038 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
8d4e3038f1a00e63afb589dcfc17213f37aebfd8 18-May-2009 Lang Hames <lhames@gmail.com> New Spiller interface and trivial implementation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72030 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
piller.cpp
piller.h
e2b201bac382464496758d789cddefa50690fbe3 18-May-2009 Lang Hames <lhames@gmail.com> New Spiller interface and trivial implementation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72030 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
piller.cpp
piller.h
7fb88bf0d090098142480431583a1f5d0c5bfdc1 18-May-2009 Bill Wendling <isanbard@gmail.com> Revert last commit. It was wrong.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
805da894cf7976e85ed001633fcaafbb5842dcf8 18-May-2009 Bill Wendling <isanbard@gmail.com> Revert last commit. It was wrong.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
087f6072c6c518c7693465989498d131af84619e 18-May-2009 Bill Wendling <isanbard@gmail.com> Don't call RegionInlinedFnEnd if our optimization level isn't -O0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72024 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
15ffc0826782bb498f4ea2722aa15f28cffd04ec 18-May-2009 Bill Wendling <isanbard@gmail.com> Don't call RegionInlinedFnEnd if our optimization level isn't -O0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72024 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
a95d96c283d767f95b122f8064a3497ffb7ced07 18-May-2009 Daniel Dunbar <daniel@zuster.org> Silence Release-Asserts warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
8c562e2d25d319f8bde7a1a60142203f316a2883 18-May-2009 Daniel Dunbar <daniel@zuster.org> Silence Release-Asserts warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
1ba46a17e1b0ca9289352bfd658eaf341637e8b3 18-May-2009 Lang Hames <lhames@gmail.com> Prevented reg0 from being added to MBB live-in set, which was causing issues
for PostRAScheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71991 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
b0e519f2bf201d96d304cb9fd330a5e1b38536fe 18-May-2009 Lang Hames <lhames@gmail.com> Prevented reg0 from being added to MBB live-in set, which was causing issues
for PostRAScheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71991 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
3040aa83ec24bd920c00225ae7070501286eb57f 17-May-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename MachineVerifier pass to avoid command line collision.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71987 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
de67a51b66964e95df05cd2192c05c77dccfa4c9 17-May-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename MachineVerifier pass to avoid command line collision.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71987 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
cfc790a3d3fa9013ffc76c7103969a1e2a65093a 16-May-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that explicit definitions in the TargetInstrDesc are matched by
explicit register define operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71933 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
44b27e5c7522e0e2e1a48efefceab8508db711b9 16-May-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify that explicit definitions in the TargetInstrDesc are matched by
explicit register define operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71933 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
b71109bf98ce1ad178e9ff322072390743352c0b 16-May-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow redefinition of reserved registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71932 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
d6fb97761e65fd0db19cd48e22dd05d211822d47 16-May-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow redefinition of reserved registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71932 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
de74b17e55b3d9511ae5cd0ebf4c2c34f26a42f5 16-May-2009 Duncan Sands <baldrick@free.fr> Put back a bit of expensive checking logic that
was overenthusiastically deleted in r70234.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
0394c4fb3d271b3a6736f167b812bbe445ddb5e9 16-May-2009 Duncan Sands <baldrick@free.fr> Put back a bit of expensive checking logic that
was overenthusiastically deleted in r70234.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
6609dfae0187909b5d35c3139d995297f8ff4529 16-May-2009 Duncan Sands <baldrick@free.fr> Pacify gcc-4.3, which suggests explicit braces here
to avoid an ambiguous else.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71924 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
e556720ea8d60581c95d3ca3f9175a3688150d95 16-May-2009 Duncan Sands <baldrick@free.fr> Pacify gcc-4.3, which suggests explicit braces here
to avoid an ambiguous else.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71924 91177308-0d34-0410-b5e6-96231b3b80d8
achineVerifier.cpp
ac32dd9c5f1c6c6dab23a47068498c30b1d087f0 16-May-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Pass to verify generated machine code.

The following is checked:

* Operand counts: All explicit operands must be present.

* Register classes: All physical and virtual register operands must be
compatible with the register class required by the instruction descriptor.

* Register live intervals: Registers must be defined only once, and must be
defined before use.

The machine code verifier is enabled with the command-line option
'-verify-machineinstrs', or by defining the environment variable
LLVM_VERIFY_MACHINEINSTRS to the name of a file that will receive all the
verifier errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71918 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
LVMTargetMachine.cpp
achineVerifier.cpp
48872e0d84b47769be6c13ae98bf88468b59d921 16-May-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Pass to verify generated machine code.

The following is checked:

* Operand counts: All explicit operands must be present.

* Register classes: All physical and virtual register operands must be
compatible with the register class required by the instruction descriptor.

* Register live intervals: Registers must be defined only once, and must be
defined before use.

The machine code verifier is enabled with the command-line option
'-verify-machineinstrs', or by defining the environment variable
LLVM_VERIFY_MACHINEINSTRS to the name of a file that will receive all the
verifier errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71918 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
LVMTargetMachine.cpp
achineVerifier.cpp
b12b3d77fc304842357a7fa909d8bf553e8f9674 15-May-2009 Bill Wendling <isanbard@gmail.com> Split out the DwarfDebug module from the DwarfWriter module.

Again, no intendtional functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71854 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
smPrinter/DwarfLabel.h
smPrinter/DwarfPrinter.h
smPrinter/DwarfWriter.cpp
0310d768a1e267935729fdeee0d677ebf7095cb3 15-May-2009 Bill Wendling <isanbard@gmail.com> Split out the DwarfDebug module from the DwarfWriter module.

Again, no intendtional functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71854 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
smPrinter/DwarfDebug.cpp
smPrinter/DwarfDebug.h
smPrinter/DwarfException.h
smPrinter/DwarfLabel.h
smPrinter/DwarfPrinter.h
smPrinter/DwarfWriter.cpp
a8990a148db19a4d8aab0f3f03515f9159e98666 15-May-2009 Bill Wendling <isanbard@gmail.com> Mark class as hidden.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71850 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
e428e21033e7a5d9b88c5607c77583ca7a4e2b3d 15-May-2009 Bill Wendling <isanbard@gmail.com> Mark class as hidden.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71850 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.h
e339dcbc8fcbf9448183f671522b5abf5fc56e3c 15-May-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4210. Rewritter should track and update kills of sub-registers as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71848 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
427a6b666bce6069b0578ce75b63d80dc684b09d 15-May-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4210. Rewritter should track and update kills of sub-registers as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71848 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegRewriter.cpp
0530f42b442cdcca775f7163b95b5b0d99a4a9b4 15-May-2009 Bill Wendling <isanbard@gmail.com> Move c'tor/d'tor to top of file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71828 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
bc0d23afae781c45f92865c1c27bed0ce51fe545 15-May-2009 Bill Wendling <isanbard@gmail.com> Move c'tor/d'tor to top of file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71828 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
1b43db78c5c5354f666bce235202615398cd49d0 15-May-2009 Bill Wendling <isanbard@gmail.com> Split out the DwarfException class into its own file. No functionality change,
though the classes have been marked with "VISIBILITY_HIDDEN".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71827 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfWriter.cpp
eb9072195ca7d777a71194dcaaaa369d82f24f53 15-May-2009 Bill Wendling <isanbard@gmail.com> Split out the DwarfException class into its own file. No functionality change,
though the classes have been marked with "VISIBILITY_HIDDEN".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71827 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfException.cpp
smPrinter/DwarfException.h
smPrinter/DwarfWriter.cpp
bbee8c925518db5831184ea13fa5abb7b4292561 15-May-2009 Bill Wendling <isanbard@gmail.com> Split out the Dwarf writer stuff into separate files. This is a much more
logical/sane approach to organizing all of the stuff that goes into writing out
DWARF information. Honestly? even this is too complex for what it's supposed to
be doing.

Trivia: It *looks* like there would be functionality changes, however there aren't!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71821 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfLabel.cpp
smPrinter/DwarfLabel.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/DwarfWriter.cpp
88423eecd0f16d3cfa89bdf92abdb72a5dc0616a 15-May-2009 Bill Wendling <isanbard@gmail.com> Split out the Dwarf writer stuff into separate files. This is a much more
logical/sane approach to organizing all of the stuff that goes into writing out
DWARF information. Honestly? even this is too complex for what it's supposed to
be doing.

Trivia: It *looks* like there would be functionality changes, however there aren't!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71821 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DIE.cpp
smPrinter/DIE.h
smPrinter/DwarfLabel.cpp
smPrinter/DwarfLabel.h
smPrinter/DwarfPrinter.cpp
smPrinter/DwarfPrinter.h
smPrinter/DwarfWriter.cpp
f60642422fcb0e79d00f323b8f649f17de36cf91 14-May-2009 Owen Anderson <resistor@mac.com> Down with static variables!

Part one of many.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71785 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
2b2c0d716a6a6ebdf5fdb805d9a639dcc057d83a 14-May-2009 Owen Anderson <resistor@mac.com> Down with static variables!

Part one of many.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71785 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
ae6cc68b932414b5f2cbe054fe4b04f5fe71e271 14-May-2009 Mike Stump <mrs@apple.com> Tag blocks with DW_AT_APPLE_block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71784 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
a681515ee695b9209f49998588e27a33f40a8881 14-May-2009 Mike Stump <mrs@apple.com> Tag blocks with DW_AT_APPLE_block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71784 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
f3dc37daa7bab1dc018aedb9937a560c75e4e5bb 14-May-2009 Bob Wilson <bob.wilson@apple.com> Revert r71744. I must not have understood this correctly, because the
assertion is failing for some tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71779 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
4bb3374b6d11a8a4ec1b174f0404bd6cbd2d00b9 14-May-2009 Bob Wilson <bob.wilson@apple.com> Revert r71744. I must not have understood this correctly, because the
assertion is failing for some tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71779 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
61885d7c56da33282dd5b62093b0e59bd8761807 14-May-2009 Lang Hames <lhames@gmail.com> Fix for PR4124. Make TwoAddressFormPass::FindLastUseInMBB return the real last use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71769 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
a7c9deaa2b1df30808db376bdfcba7f2e54e59d1 14-May-2009 Lang Hames <lhames@gmail.com> Fix for PR4124. Make TwoAddressFormPass::FindLastUseInMBB return the real last use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71769 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b875cf55f4406d6ad2f82001e992ce403673cf25 14-May-2009 Dan Gohman <gohman@apple.com> Add an assert to turn a segfault on an unsupported inline
asm construct into an assertion failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71757 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
e340e84196af8618b623d499a040150373ae5da4 14-May-2009 Dan Gohman <gohman@apple.com> Add an assert to turn a segfault on an unsupported inline
asm construct into an assertion failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71757 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
66e789edc2eba97b56b7f7c13b38f09f617e4c1b 14-May-2009 Bill Wendling <isanbard@gmail.com> There's yet more ugliness (surprise!) in DebugInfo. This needs major reworking.

Basically, there was a situation where it was getting an empty vector and doing
a .back() on that. Which isn't cool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71746 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
f59d10f1bc7167db39b65ecf6eee95a1ca7562e4 14-May-2009 Bill Wendling <isanbard@gmail.com> There's yet more ugliness (surprise!) in DebugInfo. This needs major reworking.

Basically, there was a situation where it was getting an empty vector and doing
a .back() on that. Which isn't cool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71746 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
bf13a45a412e64ca3a5ead06fa425a90bcbe749f 14-May-2009 Bob Wilson <bob.wilson@apple.com> The IfConverter::MergeBlocks method appears to be used only to merge a basic
block with its unique predecessor. Change the code to assert if that is not
the case, instead of trying to handle situations where the block has
multiple predecessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71744 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
df1ed678904e65192ecdee9bd695f803c550ed68 14-May-2009 Bob Wilson <bob.wilson@apple.com> The IfConverter::MergeBlocks method appears to be used only to merge a basic
block with its unique predecessor. Change the code to assert if that is not
the case, instead of trying to handle situations where the block has
multiple predecessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71744 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
a0929a18ae6341fa1fcc786965cf3d5190ef4d2a 14-May-2009 Jim Grosbach <grosbach@apple.com> Removing the HasBuiltinSetjmp flag and associated bits. Flagging the presence
of exception handling builtin sjlj targets in functions turns out not to
be necessary. Marking the intrinsic implementation in the .td file as
defining all registers is sufficient to get the context saved properly by
the containing function.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71743 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAGBuild.cpp
2afb3b7251dbcfadef7a8126e9516bde78fc13bb 14-May-2009 Jim Grosbach <grosbach@apple.com> Removing the HasBuiltinSetjmp flag and associated bits. Flagging the presence
of exception handling builtin sjlj targets in functions turns out not to
be necessary. Marking the intrinsic implementation in the .td file as
defining all registers is sufficient to get the context saved properly by
the containing function.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71743 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAGBuild.cpp
58c9e3ca46ee2d0decc713dfac032b0dda4f7e6b 14-May-2009 Bob Wilson <bob.wilson@apple.com> Revert a portion of Dan's change r71018 that I'm convinced is wrong.
Dan was trying to catch the case where a basic block ends with a conditional
branch to the fall-through block. In this case, all the instructions have
been moved out of FromBBI, leaving it empty. It cannot end with a
conditional branch. As the existing comment indicates, it will always fall
through to the next block. If the block already had the next block (NBB)
listed as a successor, the preceding loop has a check for that and does not
remove it. Thus, we need to check and add the successor only when it is
not already listed.

With Dan's change, the empty block often ends up with the fall-through
successor listed twice. This exposed the problem in pr4195, where
CodePlacementOpt did not handle the same predecessor listed more than once.
It is also at least partially responsible for pr4202 and probably a similar
issue with Thumb branches being out of range.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71742 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
8308e8fae0dad2dff22f0cedbfb5e1be3a146375 14-May-2009 Bob Wilson <bob.wilson@apple.com> Revert a portion of Dan's change r71018 that I'm convinced is wrong.
Dan was trying to catch the case where a basic block ends with a conditional
branch to the fall-through block. In this case, all the instructions have
been moved out of FromBBI, leaving it empty. It cannot end with a
conditional branch. As the existing comment indicates, it will always fall
through to the next block. If the block already had the next block (NBB)
listed as a successor, the preceding loop has a check for that and does not
remove it. Thus, we need to check and add the successor only when it is
not already listed.

With Dan's change, the empty block often ends up with the fall-through
successor listed twice. This exposed the problem in pr4195, where
CodePlacementOpt did not handle the same predecessor listed more than once.
It is also at least partially responsible for pr4202 and probably a similar
issue with Thumb branches being out of range.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71742 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
5ef3c8b6bdc59c96aecacd1a86a475ac5861118d 14-May-2009 Bob Wilson <bob.wilson@apple.com> Merge adjacent conditional.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71741 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
596e22e2b3a1375bad678eb1c5e95b3188a0532b 14-May-2009 Bob Wilson <bob.wilson@apple.com> Merge adjacent conditional.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71741 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
36c1b67f28b29174019bdbcbe65c61af8d9e2bc0 14-May-2009 Bob Wilson <bob.wilson@apple.com> Remove an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71740 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
e19fb7de631acc4e50653926fe023d35be0293e2 14-May-2009 Bob Wilson <bob.wilson@apple.com> Remove an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71740 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
4a2f20d18bce69674e96a05bfd0044b0eff2c199 14-May-2009 Bob Wilson <bob.wilson@apple.com> Fix some typos and spelling and grammar, mostly in comments, but also one
field name. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71739 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
9c4856a4cf90155312181bf85e47f6149ba15034 14-May-2009 Bob Wilson <bob.wilson@apple.com> Fix some typos and spelling and grammar, mostly in comments, but also one
field name. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71739 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
79566823f83e7dc1719c5212404acf8995c1c4a0 13-May-2009 Evan Cheng <evan.cheng@apple.com> Run code placement optimization for targets that want it (arm and x86 for now).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71726 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
electionDAG/TargetLowering.cpp
6ebf7bc7405ee79d27d50b70f0c1a474cbea820d 13-May-2009 Evan Cheng <evan.cheng@apple.com> Run code placement optimization for targets that want it (arm and x86 for now).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71726 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
electionDAG/TargetLowering.cpp
2b739762c5444433753e4d3a141ff20f40636611 13-May-2009 Bill Wendling <isanbard@gmail.com> Change MachineInstrBuilder::addReg() to take a flag instead of a list of
booleans. This gives a better indication of what the "addReg()" is
doing. Remembering what all of those booleans mean isn't easy, especially if you
aren't spending all of your time in that code.

I took Jakob's suggestion and made it illegal to pass in "true" for the
flag. This should hopefully prevent any unintended misuse of this (by reverting
to the old way of using addReg()).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71722 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
587daedce2d6c2b2d380b6a5843a6f8b6cfc79e4 13-May-2009 Bill Wendling <isanbard@gmail.com> Change MachineInstrBuilder::addReg() to take a flag instead of a list of
booleans. This gives a better indication of what the "addReg()" is
doing. Remembering what all of those booleans mean isn't easy, especially if you
aren't spending all of your time in that code.

I took Jakob's suggestion and made it illegal to pass in "true" for the
flag. This should hopefully prevent any unintended misuse of this (by reverting
to the old way of using addReg()).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71722 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
496eea903bf7d198e5bb676f8c60d1c24b2bacdb 13-May-2009 Bill Wendling <isanbard@gmail.com> Move the bookkeeping of the debug scopes back to the place where it
belonged. The variable declaration stuff wasn't happy with it where it
was. Sorry that the testcase is so big. Bugpoint wasn't able to reduce it
successfully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71714 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
f3cc96e1f3645aa4c4cae37f87d2ece3b9d35f80 13-May-2009 Bill Wendling <isanbard@gmail.com> Move the bookkeeping of the debug scopes back to the place where it
belonged. The variable declaration stuff wasn't happy with it where it
was. Sorry that the testcase is so big. Bugpoint wasn't able to reduce it
successfully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71714 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
aa5e7c20341f9c0e8210e065dba9b85e7e5dc960 13-May-2009 John Mosby <ojomojo@gmail.com> PEI: rename PEI.h to PrologEpilogInserter.h to adhere to file naming standard

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71678 91177308-0d34-0410-b5e6-96231b3b80d8
EI.h
rologEpilogInserter.cpp
rologEpilogInserter.h
hrinkWrapping.cpp
752c1df73949438ef6fa86a86363ee7091aa2532 13-May-2009 John Mosby <ojomojo@gmail.com> PEI: rename PEI.h to PrologEpilogInserter.h to adhere to file naming standard

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71678 91177308-0d34-0410-b5e6-96231b3b80d8
EI.h
rologEpilogInserter.cpp
rologEpilogInserter.h
hrinkWrapping.cpp
a28251d927079e8aca6fe3f8748126a616d7ef60 13-May-2009 Chris Lattner <sabre@nondot.org> add ShrinkWrapping.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71645 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
9422e01a63758de4be2acb85d41d5d4676c1c749 13-May-2009 Chris Lattner <sabre@nondot.org> add ShrinkWrapping.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71645 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
52f7e149c0ba489dad202e2f21f1846380ec52cf 13-May-2009 Lang Hames <lhames@gmail.com> Fix for PR4121. If TwoAddressInstructionPass removes a dead def, and the regB
operand was killed, the kill needs to be removed from regB's VarInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71635 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
60dc7345eb1543546064a35c7c2c4ea08b40f9c0 13-May-2009 Lang Hames <lhames@gmail.com> Fix for PR4121. If TwoAddressInstructionPass removes a dead def, and the regB
operand was killed, the kill needs to be removed from regB's VarInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71635 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
c10915b85165887e1886179338c7d14925f95c52 13-May-2009 Jim Grosbach <grosbach@apple.com> Add support for GCC compatible builtin setjmp and longjmp intrinsics. This is
a supporting preliminary patch for GCC-compatible SjLJ exception handling. Note that these intrinsics are not designed to be invoked directly by the user, but
rather used by the front-end as target hooks for exception handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71610 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAGBuild.cpp
0e0da734bbdfa1d3f55cd04db31d83b97e4556f7 13-May-2009 Jim Grosbach <grosbach@apple.com> Add support for GCC compatible builtin setjmp and longjmp intrinsics. This is
a supporting preliminary patch for GCC-compatible SjLJ exception handling. Note that these intrinsics are not designed to be invoked directly by the user, but
rather used by the front-end as target hooks for exception handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71610 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAGBuild.cpp
c4ee366f3ae6c503cbd09b1d25cd964bd5c800bc 13-May-2009 Evan Cheng <evan.cheng@apple.com> If header of inner loop is aligned, do not align the outer loop header. We don't want to add nops in the outer loop for the sake of aligning the inner loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71609 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
9d3094b38e51c85e93fc5a9c8ab23c95b73f78d4 13-May-2009 Evan Cheng <evan.cheng@apple.com> If header of inner loop is aligned, do not align the outer loop header. We don't want to add nops in the outer loop for the sake of aligning the inner loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71609 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
5f35694aaf02377dbccf3f86264a99c252a7ebf1 13-May-2009 Evan Cheng <evan.cheng@apple.com> Teach TransferDeadness to delete truly dead instructions if they do not produce side effects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71606 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
irtRegRewriter.cpp
eca24fba3fccb08ed822827601a0da32bf1d508d 13-May-2009 Evan Cheng <evan.cheng@apple.com> Teach TransferDeadness to delete truly dead instructions if they do not produce side effects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71606 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
irtRegRewriter.cpp
b6052aad4af9b3e8762889468d44937e118dc827 12-May-2009 John Mosby <ojomojo@gmail.com> Restructure PEI code:

- moved shrink wrapping code from PrologEpilogInserter.cpp to
new file ShrinkWrapping.cpp.

- moved PEI pass definition into new shared header PEI.h.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71588 91177308-0d34-0410-b5e6-96231b3b80d8
EI.h
rologEpilogInserter.cpp
hrinkWrapping.cpp
378553cb079aba2b8dee5d52b5166316d4132d5a 12-May-2009 John Mosby <ojomojo@gmail.com> Restructure PEI code:

- moved shrink wrapping code from PrologEpilogInserter.cpp to
new file ShrinkWrapping.cpp.

- moved PEI pass definition into new shared header PEI.h.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71588 91177308-0d34-0410-b5e6-96231b3b80d8
EI.h
rologEpilogInserter.cpp
hrinkWrapping.cpp
e409488573ad1a2a0da98278ebe081ad5d71f655 12-May-2009 Jay Foad <jay.foad@gmail.com> Switch to using IRBuilder throughout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71587 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
e1e201416ae8ab40d31d223c5d560ee0f635e05a 12-May-2009 Jay Foad <jay.foad@gmail.com> Switch to using IRBuilder throughout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71587 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
4f2dfd2cc9494af61eed8c1498fbf1039ceeda0b 12-May-2009 Evan Cheng <evan.cheng@apple.com> Fixed a stack slot coloring with reg bug: do not update implicit use / def when doing forward / backward propagation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71574 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackSlotColoring.cpp
1ea7327845bcd0996425c9892730bf9b1f123f20 12-May-2009 Evan Cheng <evan.cheng@apple.com> Fixed a stack slot coloring with reg bug: do not update implicit use / def when doing forward / backward propagation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71574 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackSlotColoring.cpp
7cf4d88dcdc127b26f5e29fafbc4f751fa9a0841 12-May-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4195: When iterating through predecessor blocks, break out of the loop
after finding the (unique) layout predecessor. Sometimes a block may be listed
more than once, and processing it more than once in this loop can lead to
inconsistent values for FtTBB/FtFBB, since the AnalyzeBranch method does not
clear these values. There's no point in continuing the loop regardless.
The testcase for this is reduced from the 2003-05-02-DependentPHI SingleSource
test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71536 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
74b0ccc577062a25b8b3ab99b13cd1efa6e3a75a 12-May-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4195: When iterating through predecessor blocks, break out of the loop
after finding the (unique) layout predecessor. Sometimes a block may be listed
more than once, and processing it more than once in this loop can lead to
inconsistent values for FtTBB/FtFBB, since the AnalyzeBranch method does not
clear these values. There's no point in continuing the loop regardless.
The testcase for this is reduced from the 2003-05-02-DependentPHI SingleSource
test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71536 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
dea0ec265e17840423c49ee1608bc8d9d3205037 12-May-2009 Bill Wendling <isanbard@gmail.com> - Record that the debug info is actually used so that the label folder doesn't
blast it away.
- Move InlineInfo bookkeeping to bookkeep the correct debug info object.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71519 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
bc12c2be1822af07c1737cdb1c2dc9b117bb6a28 12-May-2009 Bill Wendling <isanbard@gmail.com> - Record that the debug info is actually used so that the label folder doesn't
blast it away.
- Move InlineInfo bookkeeping to bookkeep the correct debug info object.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71519 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
36bec3239dced2c84f447b4e6bc78c67d2c11779 12-May-2009 Lang Hames <lhames@gmail.com> Fixed PR4090.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71495 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9c992f1141ac2c440f7e3016b0d5ac841fbc0c4e 12-May-2009 Lang Hames <lhames@gmail.com> Fixed PR4090.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71495 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f80313754347ecd52f7240afd80a6b1bc1d9bc7e 11-May-2009 Dale Johannesen <dalej@apple.com> Fix PR4188. TailMerging can't tolerate inexact
sucessor info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71478 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
bf06f6a6f1be0802ad7b761138ecba568814008a 11-May-2009 Dale Johannesen <dalej@apple.com> Fix PR4188. TailMerging can't tolerate inexact
sucessor info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71478 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
e8a03eb18b8b0dd1b2b97871d773d839e9cb0550 11-May-2009 Evan Cheng <evan.cheng@apple.com> Apply patch review feedback.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71472 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
fb3bd472a1a987a97754137914016dbd78c7d5c7 11-May-2009 Evan Cheng <evan.cheng@apple.com> Apply patch review feedback.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71472 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
714cea3af986b10a529df5d8f370530b25cbaaab 11-May-2009 Evan Cheng <evan.cheng@apple.com> Unbreak non-debug build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71457 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
6afd198fd8bb3b1985182ea990a3b98f50ef7b79 11-May-2009 Evan Cheng <evan.cheng@apple.com> Unbreak non-debug build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71457 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
6c0889b77574915a0a749892c6bdba45c871ff29 11-May-2009 Evan Cheng <evan.cheng@apple.com> Eliminate a compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71456 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
ec51b58b1c9b58087e74eff7717205f277e3013b 11-May-2009 Evan Cheng <evan.cheng@apple.com> Eliminate a compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71456 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
c13b734801e96c20256f0659c5ead91ba95caea3 11-May-2009 Dan Gohman <gohman@apple.com> When scalarizing a vector BITCAST, check whether the operand has vector
type, rather than assume that it does. If the operand is not vector, it
shouldn't be run through ScalarizeVectorOp. This fixes one of the
testcases in PR3886.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71453 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4e3fdf2c0fc58af9b3b52924708a6d162a52ba5f 11-May-2009 Dan Gohman <gohman@apple.com> When scalarizing a vector BITCAST, check whether the operand has vector
type, rather than assume that it does. If the operand is not vector, it
shouldn't be run through ScalarizeVectorOp. This fixes one of the
testcases in PR3886.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71453 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e5497d83bb451d19e4651c0bc257ccbcbb87fb10 11-May-2009 John Mosby <ojomojo@gmail.com> Shrink wrapping in PEI:
- reduces _static_ callee saved register spills
and restores similar to Chow's original algorithm.
- iterative implementation with simple heuristic
limits to mitigate compile time impact.
- handles placing spills/restores for multi-entry,
multi-exit regions in the Machine CFG without
splitting edges.
- passes test-suite in LLCBETA mode.

Added contains() method to ADT/SparseBitVector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71438 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
b9cfbd94abb23ec8646b9b10aa4ac3d1cbf4461e 11-May-2009 John Mosby <ojomojo@gmail.com> Shrink wrapping in PEI:
- reduces _static_ callee saved register spills
and restores similar to Chow's original algorithm.
- iterative implementation with simple heuristic
limits to mitigate compile time impact.
- handles placing spills/restores for multi-entry,
multi-exit regions in the Machine CFG without
splitting edges.
- passes test-suite in LLCBETA mode.

Added contains() method to ADT/SparseBitVector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71438 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
4c4839d12ca71438a1e51e7e8faa0f3d7868ef8f 11-May-2009 Jay Foad <jay.foad@gmail.com> Don't generate redundant casts of constant values when lowering calls to
memcpy, memmove and memset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71427 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
589b1efe1b83a43cf89a41841664ce0b4ae3e838 11-May-2009 Jay Foad <jay.foad@gmail.com> Don't generate redundant casts of constant values when lowering calls to
memcpy, memmove and memset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71427 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
a89e67d2c564284dd49e806956d424db15a1e576 11-May-2009 Bill Wendling <isanbard@gmail.com> This is a large rewrite of how Dwarf info for inlined functions is handled.

The DwarfWriter expects DbgScopes and DIEs to behave themselves according to
DwarfWriter's rules. However, inlined functions violate these rules. There are
two different types of DIEs associated with an inlined function: an abstract
instance, which has information about the original source code for the function
being inlined; and concrete instances, which are created for each place the
function was inlined and point back to the abstract instance.

This patch tries to stay true to this schema. It bypasses how regular DbgScopes
and DIEs are created and used when necessary. It provides special handling for
DIEs of abstract and concrete instances.

This doesn't take care of all of the problems with debug info for inlined
functions, but it's a step in the right direction. For one thing, llvm-gcc
generates wrong IR (it's missing some llvm.dbg intrinsics at the point where the
function's inlined) for this example:

#include <stdio.h>
static __inline__ __attribute__((always_inline)) int bar(int x) { return 4; }
void foo() {
long long b = 1;
int Y = bar(4);
printf("%d\n", Y);
}

while clang generates correct IR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71410 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
a5c8a4e4e6b2478675bf55007a3adc34dceb74ea 11-May-2009 Bill Wendling <isanbard@gmail.com> This is a large rewrite of how Dwarf info for inlined functions is handled.

The DwarfWriter expects DbgScopes and DIEs to behave themselves according to
DwarfWriter's rules. However, inlined functions violate these rules. There are
two different types of DIEs associated with an inlined function: an abstract
instance, which has information about the original source code for the function
being inlined; and concrete instances, which are created for each place the
function was inlined and point back to the abstract instance.

This patch tries to stay true to this schema. It bypasses how regular DbgScopes
and DIEs are created and used when necessary. It provides special handling for
DIEs of abstract and concrete instances.

This doesn't take care of all of the problems with debug info for inlined
functions, but it's a step in the right direction. For one thing, llvm-gcc
generates wrong IR (it's missing some llvm.dbg intrinsics at the point where the
function's inlined) for this example:

#include <stdio.h>
static __inline__ __attribute__((always_inline)) int bar(int x) { return 4; }
void foo() {
long long b = 1;
int Y = bar(4);
printf("%d\n", Y);
}

while clang generates correct IR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71410 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
9f5cd6ac683b552c750e10741d654b5c75dd61a7 10-May-2009 Bill Wendling <isanbard@gmail.com> --- Reverse-merging r71370 into '.':
U lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp

Revert r71370.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
c677fe5abaf903a3a5cb8fbd8e515c46e9e7a537 10-May-2009 Bill Wendling <isanbard@gmail.com> --- Reverse-merging r71370 into '.':
U lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp

Revert r71370.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ff1fe04ab0bf21cd4e91bc13ad181bf5e5fdbee9 10-May-2009 Bill Wendling <isanbard@gmail.com> A debug function start was not being recorded when the optimization level wasn't
None. However, we were always recording the region end. There's no longer a good
reason for this code to be separated out between the different opt levels, as it
was doing pretty much the same thing anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71370 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
e34b723d3ef31463210dcc538b3873d3841133f3 10-May-2009 Bill Wendling <isanbard@gmail.com> A debug function start was not being recorded when the optimization level wasn't
None. However, we were always recording the region end. There's no longer a good
reason for this code to be separated out between the different opt levels, as it
was doing pretty much the same thing anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71370 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ae8fc330f0b16d4453c66a4445d2ebc340532772 09-May-2009 Evan Cheng <evan.cheng@apple.com> Oops. Don't forget to align single bb loops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71363 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
5374405dc12673e6c07869132faf7b837e95dc79 09-May-2009 Evan Cheng <evan.cheng@apple.com> Oops. Don't forget to align single bb loops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71363 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
ec4f97dd91023f63e05e94a333cdd2d4c57efedf 09-May-2009 Duncan Sands <baldrick@free.fr> Rename PaddedSize to AllocSize, in the hope that this
will make it more obvious what it represents, and stop
it being confused with the StoreSize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71349 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
achOWriter.cpp
achOWriter.h
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
777d2306b36816a53bc1ae1244c0dc7d998ae691 09-May-2009 Duncan Sands <baldrick@free.fr> Rename PaddedSize to AllocSize, in the hope that this
will make it more obvious what it represents, and stop
it being confused with the StoreSize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71349 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
achOWriter.cpp
achOWriter.h
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
5cae0f2f762a1d620879f332a79803cc2fc8f0e7 09-May-2009 Evan Cheng <evan.cheng@apple.com> Enable loop bb placement optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71291 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
f045f80ba9af29fc8e0409201ad66c8f2e1a527c 09-May-2009 Evan Cheng <evan.cheng@apple.com> Enable loop bb placement optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71291 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
c28dd52a62a4b92eeb825cff3bec28e4f66df7e0 09-May-2009 Mike Stump <mrs@apple.com> Avoid warning in release-asserts build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71275 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
1e8f072f1948de43a0c1c71e00e83e7bb192d7cb 09-May-2009 Mike Stump <mrs@apple.com> Avoid warning in release-asserts build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71275 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
06b55d4444a31f816fb2ee27c5811a7382c0f9ab 08-May-2009 Bill Wendling <isanbard@gmail.com> Mirror how Fast ISel determines if a region.end intrinsic is the end of an
inlined function or the end of a function. Before, this was never executing the
"inlined" version of the Record method.

This will become important once the inlined Dwarf writer patch lands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71268 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
6c4311dddbb57b0e4cdd30c37863706efe70cf9d 08-May-2009 Bill Wendling <isanbard@gmail.com> Mirror how Fast ISel determines if a region.end intrinsic is the end of an
inlined function or the end of a function. Before, this was never executing the
"inlined" version of the Record method.

This will become important once the inlined Dwarf writer patch lands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71268 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f7e625587a1af7c6d27133644fa80e205473d41e 08-May-2009 Bill Wendling <isanbard@gmail.com> Compute the offsets of the compile units. We need this so that when we emit a
concrete instance of an inlined function, we can get the actual address of the
abstract instance inside of the compile unit.

This isn't currently used, but will be by a future check-in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71263 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e688fafd3802aabab827293a520f18ec27d00fd7 08-May-2009 Bill Wendling <isanbard@gmail.com> Compute the offsets of the compile units. We need this so that when we emit a
concrete instance of an inlined function, we can get the actual address of the
abstract instance inside of the compile unit.

This isn't currently used, but will be by a future check-in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71263 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
c2f701adef998a9673140708a1b9525cc9e676f8 08-May-2009 Bill Wendling <isanbard@gmail.com> Minor clean ups. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71256 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
a9519579b7134343b9b9520f8b1862baf8d872d5 08-May-2009 Bill Wendling <isanbard@gmail.com> Minor clean ups. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71256 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
460fd7c9b0fa2e9e722164d77e4d542b1f3e11c1 08-May-2009 Evan Cheng <evan.cheng@apple.com> Don't align loop header unless the loop back edge is below the header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71242 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
0269d3cbf37227c48b7ce0f9710f0c6a15ff6fa9 08-May-2009 Evan Cheng <evan.cheng@apple.com> Don't align loop header unless the loop back edge is below the header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71242 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
da76d3224301c785aa971e60c20a75dd1bd8f52b 08-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Factor out cycle-finder code and make it generic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71241 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c1c6ef8f74fc550f29cfec1f2fb699dd8c2fb94e 08-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Factor out cycle-finder code and make it generic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71241 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3dfbdffbcff49319156b0f5c8910cfbb9c926ca8 08-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Do not emit bit tests if target does not support natively left shift

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71240 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
d34167a4abbe576bef7dbe1b88771f09afc82a72 08-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Do not emit bit tests if target does not support natively left shift

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71240 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
5ee420258bca87825efaad969a5441f9367b231d 08-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Properly expand libcalls for urem / srem. Also make code more straightforward.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71238 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
58c04e149629956185cdaa3b021793189008c0d2 08-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Properly expand libcalls for urem / srem. Also make code more straightforward.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71238 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ba8652dbb02911c1e43c3dd6ad21813021a2f4ed 08-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71237 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
fb3f84fe16219467cef4ed181530e846177cb4df 08-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71237 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6e7ac420dfc4c65af9f5deb8f7280e8164144bfe 08-May-2009 Evan Cheng <evan.cheng@apple.com> Reverse branch condition only when there is a conditional branch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71214 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
4b7f7a6e1f3eacf116472c1b0d0eaddf01fa4495 08-May-2009 Evan Cheng <evan.cheng@apple.com> Reverse branch condition only when there is a conditional branch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71214 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
c6368b6c0d6cb635be3a12698af0e97609f30fe5 08-May-2009 Nick Lewycky <nicholas@mxc.ca> Add explicit braces to disambiguate nested if/else. Removes a warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71211 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
0ab2dcee5bf751211ca1fc49decb1540b4cb427c 08-May-2009 Nick Lewycky <nicholas@mxc.ca> Add explicit braces to disambiguate nested if/else. Removes a warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71211 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
67bf8e2b3944b74e0a0c483c54b12f2c02a4b758 08-May-2009 Evan Cheng <evan.cheng@apple.com> Optimize code placement in loop to eliminate unconditional branches or move unconditional branch to the outside of the loop. e.g.

/// A:
/// ...
/// <fallthrough to B>
///
/// B: --> loop header
/// ...
/// jcc <cond> C, [exit]
///
/// C:
/// ...
/// jmp B
///
/// ==>
///
/// A:
/// ...
/// jmp B
///
/// C: --> new loop header
/// ...
/// <fallthough to B>
///
/// B:
/// ...
/// jcc <cond> C, [exit]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71209 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
45e0010e14d419ebeca9266b9b705867fd251b83 08-May-2009 Evan Cheng <evan.cheng@apple.com> Optimize code placement in loop to eliminate unconditional branches or move unconditional branch to the outside of the loop. e.g.

/// A:
/// ...
/// <fallthrough to B>
///
/// B: --> loop header
/// ...
/// jcc <cond> C, [exit]
///
/// C:
/// ...
/// jmp B
///
/// ==>
///
/// A:
/// ...
/// jmp B
///
/// C: --> new loop header
/// ...
/// <fallthough to B>
///
/// B:
/// ...
/// jcc <cond> C, [exit]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71209 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
a43eb6bb7064b0fe2d441a05e9d13bc811bd729b 08-May-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4100. Do not remove no-op copies when they are dead. The register
scavenger gets confused about register liveness if it doesn't see them.
I'm not thrilled with this solution, but it only comes up when there are dead
copies in the code, which is something that hopefully doesn't happen much.

Here is what happens in pr4100: As shown in the following excerpt from the
debug output of llc, the source of a move gets reloaded from the stack,
inserting a new load instruction before the move. Since that source operand
is a kill, the physical register is free to be reused for the destination
of the move. The move ends up being a no-op, copying R3 to R3, so it is
deleted. But, it leaves behind the load to reload %reg1028 into R3, and
that load is not updated to show that it's destination operand (R3) is dead.
The scavenger gets confused by that load because it thinks that R3 is live.

Starting RegAlloc of: %reg1025<def,dead> = MOVr %reg1028<kill>, 14, %reg0, %reg0
Regs have values:
Reloading %reg1028 into R3
Last use of R3[%reg1028], removing it from live set
Assigning R3 to %reg1025
Register R3 [%reg1025] is never used, removing it from live set

Alternative solutions might be either marking the load as dead, or zapping
the load along with the no-op copy. I couldn't see an easy way to do
either of those, though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71196 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
9d928c223fce575edb67273823f6d76ae05166f2 08-May-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4100. Do not remove no-op copies when they are dead. The register
scavenger gets confused about register liveness if it doesn't see them.
I'm not thrilled with this solution, but it only comes up when there are dead
copies in the code, which is something that hopefully doesn't happen much.

Here is what happens in pr4100: As shown in the following excerpt from the
debug output of llc, the source of a move gets reloaded from the stack,
inserting a new load instruction before the move. Since that source operand
is a kill, the physical register is free to be reused for the destination
of the move. The move ends up being a no-op, copying R3 to R3, so it is
deleted. But, it leaves behind the load to reload %reg1028 into R3, and
that load is not updated to show that it's destination operand (R3) is dead.
The scavenger gets confused by that load because it thinks that R3 is live.

Starting RegAlloc of: %reg1025<def,dead> = MOVr %reg1028<kill>, 14, %reg0, %reg0
Regs have values:
Reloading %reg1028 into R3
Last use of R3[%reg1028], removing it from live set
Assigning R3 to %reg1025
Register R3 [%reg1025] is never used, removing it from live set

Alternative solutions might be either marking the load as dead, or zapping
the load along with the no-op copy. I couldn't see an easy way to do
either of those, though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71196 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
219866c4588318c77387bb64eb2a91f728cd183a 07-May-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment (again).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71180 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
8d24f4124ea7478fa289f581681c9dff61368c8f 07-May-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment (again).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71180 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
d983fb418f8ba28824a7c0632460ac5513800d34 07-May-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71179 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
e0f745b54e1e54f67e3419ea976736817b61e1ed 07-May-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71179 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
d46dc02a07aa1fe353174d8b73aa1541bb0c1ec6 07-May-2009 Dan Gohman <gohman@apple.com> Revert 71165. It did more than just revert 71158 and it introduced
several regressions. The problem due to 71158 is now fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71176 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
9a38e3e3991ea443e555d8060f91202a786acdd4 07-May-2009 Dan Gohman <gohman@apple.com> Revert 71165. It did more than just revert 71158 and it introduced
several regressions. The problem due to 71158 is now fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71176 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
d32c972780409e0415302847e3969acbb9ed9ad9 07-May-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r71158. It was causing a failure during a full bootstrap:

checking for bcopy... no
checking for getc_unlocked... Assertion failed: (0 && "Unknown SCEV kind!"), function operator(), file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/src/lib/Analysis/ScalarEvolution.cpp, line 511.
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/libdecnumber/decUtility.c:360: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
make[4]: *** [decUtility.o] Error 1
make[4]: *** Waiting for unfinished jobs....
Assertion failed: (0 && "Unknown SCEV kind!"), function operator(), file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/src/lib/Analysis/ScalarEvolution.cpp, line 511.
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/libdecnumber/decNumber.c:5591: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
make[4]: *** [decNumber.o] Error 1
make[3]: *** [all-stage2-libdecnumber] Error 2
make[3]: *** Waiting for unfinished jobs....



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71165 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
5b8479c38532a28d86dea8ded09a30ff68f26912 07-May-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r71158. It was causing a failure during a full bootstrap:

checking for bcopy... no
checking for getc_unlocked... Assertion failed: (0 && "Unknown SCEV kind!"), function operator(), file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/src/lib/Analysis/ScalarEvolution.cpp, line 511.
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/libdecnumber/decUtility.c:360: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
make[4]: *** [decUtility.o] Error 1
make[4]: *** Waiting for unfinished jobs....
Assertion failed: (0 && "Unknown SCEV kind!"), function operator(), file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/src/lib/Analysis/ScalarEvolution.cpp, line 511.
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/libdecnumber/decNumber.c:5591: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
make[4]: *** [decNumber.o] Error 1
make[3]: *** [all-stage2-libdecnumber] Error 2
make[3]: *** Waiting for unfinished jobs....



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71165 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
3f997f8f132bb391d17ac2bf2db4009338783c07 07-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Move the tablegen-produced DebugLoc handling into a AsmWriter::processDebugLoc function.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71156 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cd76240f3d0f6c5f8c80e4762a8fe3a4de22e059 07-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move the tablegen-produced DebugLoc handling into a AsmWriter::processDebugLoc function.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71156 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6cc194500cc0f5c8c7b3072eda7004981dc35bf7 07-May-2009 Evan Cheng <evan.cheng@apple.com> Code refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71151 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
7132e12ee5658aa2b8ba6cdd81adb7944ddcb33e 07-May-2009 Evan Cheng <evan.cheng@apple.com> Code refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71151 91177308-0d34-0410-b5e6-96231b3b80d8
odePlacementOpt.cpp
02482c89f1293a98133573bed5f1c3d48be94021 07-May-2009 Evan Cheng <evan.cheng@apple.com> Rename "loop aligner" pass to "code placement optimization" pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71150 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odePlacementOpt.cpp
LVMTargetMachine.cpp
oopAligner.cpp
bbf1db72133e9cf986e4da6260736335533067db 07-May-2009 Evan Cheng <evan.cheng@apple.com> Rename "loop aligner" pass to "code placement optimization" pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71150 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
odePlacementOpt.cpp
LVMTargetMachine.cpp
oopAligner.cpp
b1de00511ca998864d4277a998b0b27a8cf0aa1b 07-May-2009 Bill Wendling <isanbard@gmail.com> Just turn aggressive stack coloring off at -O3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71140 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackSlotColoring.cpp
2c1d7726f25b6b219a1518b411351b99d25c1a02 07-May-2009 Bill Wendling <isanbard@gmail.com> Just turn aggressive stack coloring off at -O3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71140 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackSlotColoring.cpp
c42b73dd10fdcd8f42c13502073ae2d0d89b780e 07-May-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r71010. It was causing massive failures during self-hosting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71138 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackSlotColoring.cpp
d0c1f9c932e9da29ea4c6e9a863f1567c6e61477 07-May-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r71010. It was causing massive failures during self-hosting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71138 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackSlotColoring.cpp
f4510c09b01ed377583bd9ce57756f5a45fba00b 07-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Make DwarfWriter::RecordInlinedFnStart more like the other DwarfWriter's methods:
-Have it return a label ID
-Remove the unused Instruction parameter

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71132 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
116b27444a206a2831d88fea5ce34ced8184ceca 07-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make DwarfWriter::RecordInlinedFnStart more like the other DwarfWriter's methods:
-Have it return a label ID
-Remove the unused Instruction parameter

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71132 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
74940d1b6928655713f4b56f33e682b950eaf81e 06-May-2009 Bill Wendling <isanbard@gmail.com> - Move some debug fields to coincide with how GCC emits them. No functionality
change.
- Reformatting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71118 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
3f500d935884332f23e9a1a10689aef12e332f9e 06-May-2009 Bill Wendling <isanbard@gmail.com> - Move some debug fields to coincide with how GCC emits them. No functionality
change.
- Reformatting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71118 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
427a8cc209def787169e2b2d7f54cdbdfab2d8ee 06-May-2009 Evan Cheng <evan.cheng@apple.com> Do not use register as base ptr of pre- and post- inc/dec load / store nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71098 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
caab129cd19441817906ea5ca69e341e81c598e3 06-May-2009 Evan Cheng <evan.cheng@apple.com> Do not use register as base ptr of pre- and post- inc/dec load / store nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71098 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
053276c6a5b3011f0114ce41e0ae0dc415b99c59 06-May-2009 Oscar Fuentes <ofv@wanadoo.es> CMake: Updated lib/CodeGen/CMakeLists.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71085 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
5dcf50bd03008804a7af3089e8f494f0bd8bf547 06-May-2009 Oscar Fuentes <ofv@wanadoo.es> CMake: Updated lib/CodeGen/CMakeLists.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71085 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
cad542c6e68d975a35847b2a85f233ad34a004f5 06-May-2009 Duncan Sands <baldrick@free.fr> Add generic expansion of SUB when ADD and XOR
are legal. Based on a patch by Micah Villmow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71078 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a9cad0e7e09e6d34de2fccb4f1294b7f0b8f3b68 06-May-2009 Duncan Sands <baldrick@free.fr> Add generic expansion of SUB when ADD and XOR
are legal. Based on a patch by Micah Villmow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71078 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7cf0bfd61f42c892f1f47f731ace51a9edfc0f80 06-May-2009 Lang Hames <lhames@gmail.com> Renamed Spiller classes (plus uses and related files) to VirtRegRewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71057 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
egAllocPBQP.cpp
piller.cpp
piller.h
irtRegRewriter.cpp
irtRegRewriter.h
87e3bcab736e5af501b1cfbf880563d3d2244497 06-May-2009 Lang Hames <lhames@gmail.com> Renamed Spiller classes (plus uses and related files) to VirtRegRewriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71057 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
egAllocPBQP.cpp
piller.cpp
piller.h
irtRegRewriter.cpp
irtRegRewriter.h
710011c102a0d72b1db25fa3bf49d4848bfc64a5 05-May-2009 Dan Gohman <gohman@apple.com> If a MachineBasicBlock has multiple ways of reaching another block,
allow it to have multiple CFG edges to that block. This is needed
to allow MachineBasicBlock::isOnlyReachableByFallthrough to work
correctly. This fixes PR4126.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71018 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
achineBasicBlock.cpp
5412d06e9c352c9795f4a71b91c4f869585866eb 05-May-2009 Dan Gohman <gohman@apple.com> If a MachineBasicBlock has multiple ways of reaching another block,
allow it to have multiple CFG edges to that block. This is needed
to allow MachineBasicBlock::isOnlyReachableByFallthrough to work
correctly. This fixes PR4126.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71018 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
achineBasicBlock.cpp
b4093593a76c81520893762e237f55d86f6b5191 05-May-2009 Evan Cheng <evan.cheng@apple.com> Enable stack coloring with regs at -O3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71010 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackSlotColoring.cpp
f9a9b51429b284ad85f1162592a10918c5665733 05-May-2009 Evan Cheng <evan.cheng@apple.com> Enable stack coloring with regs at -O3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71010 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackSlotColoring.cpp
88ab97408d8c4041d8bf4a2a5a8c10cae0cd565c 05-May-2009 Chris Lattner <sabre@nondot.org> Do not require variable debug info nodes to have a compile unit.
For implicit decls like "self" and "_cmd" in ObjC, these decls
should not have a location.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70964 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e3f6cea9e9fc65e3429a28812460841c93fd75a5 05-May-2009 Chris Lattner <sabre@nondot.org> Do not require variable debug info nodes to have a compile unit.
For implicit decls like "self" and "_cmd" in ObjC, these decls
should not have a location.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70964 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
4669f7d6ee8f83e171df13736a54eca7a5f0776f 05-May-2009 Evan Cheng <evan.cheng@apple.com> Do not substitute if the new register isn't in the register class of the operand being updated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70953 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
bef60d38045dbde1971f3721e0787eaa5f1d511f 05-May-2009 Evan Cheng <evan.cheng@apple.com> Do not substitute if the new register isn't in the register class of the operand being updated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70953 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
8058d70a45ea6f2da3ce0b8bae81a30acfe83395 05-May-2009 Evan Cheng <evan.cheng@apple.com> Move getInstrOperandRegClass from the scheduler to TargetInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70950 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
d923fc621ff5b5e500977edf9236c9e34e8d7ebc 05-May-2009 Evan Cheng <evan.cheng@apple.com> Move getInstrOperandRegClass from the scheduler to TargetInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70950 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
f7e8339e6f44a7ebec84cf2a5916cc74144cd070 05-May-2009 Evan Cheng <evan.cheng@apple.com> Do forward and backward substitution to eliminate loads and stores when possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70937 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
c3806ea3bc3718d1f72de60e791c771c602189dc 05-May-2009 Evan Cheng <evan.cheng@apple.com> Do forward and backward substitution to eliminate loads and stores when possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70937 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
d4c82b7b89758e475f5dedcf488deed0b0e531e9 05-May-2009 Chris Lattner <sabre@nondot.org> Make DBG_STOPPOINT nodes, and therefore DBG_LABEL labels, get a DebugLoc, so that it
shows up in -print-machineinstrs. This doesn't appear to affect anything, but it was
weird for some DBG_LABELs to have DebugLocs but not all of them.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70921 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
af29a5235d3a1a09e9fc2989a5d504f00fa9aaf3 05-May-2009 Chris Lattner <sabre@nondot.org> Make DBG_STOPPOINT nodes, and therefore DBG_LABEL labels, get a DebugLoc, so that it
shows up in -print-machineinstrs. This doesn't appear to affect anything, but it was
weird for some DBG_LABELs to have DebugLocs but not all of them.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70921 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
8cac493bc70438232671b5821e31aa0f086af8b9 04-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Restore a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70900 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
28f1412c97fc0740d6743c5226a4ddd65b72c891 04-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Restore a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70900 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7a969d8c47d8916099ff7a2dcb87cf42137e03c4 04-May-2009 asl <asl@91177308-0d34-0410-b5e6-96231b3b80d8> Fix code emission for conditional branches.
Patch by Collin Winter!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70898 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
fe095f39e7009c51d1c86769792ccbcad8cdd2ec 04-May-2009 Mike Stump <mrs@apple.com> Restore minor deletion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70892 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
tackSlotColoring.cpp
irtRegMap.cpp
irtRegMap.h
5277da7e316ea656c2b18f5f0d7b2e72bcda4a1a 04-May-2009 Evan Cheng <evan.cheng@apple.com> Make sure to color with only allocatable registers for the specific register class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70821 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
59a6e9b905b4843174cebe31324fad97926d74d5 04-May-2009 Evan Cheng <evan.cheng@apple.com> The stack slots which share the same stack slot after coloring can, but do not have to, use the same register. In fact, they each may have different register class requirements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70815 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
5e3ef11e85fa7208d4b08dea296680f93a46fbe0 04-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Revert r70803 for now, it causes a regression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70811 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
1d783f9f34d2bef7772a07fe69e6d65e49182a7e 04-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> -Remove the DwarfWriter::RecordSourceLine calls from the instruction selectors.
-Depend on DebugLocs for source line info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70803 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
04fa35ab13afbbc5b2f12437a256db84a27485d2 03-May-2009 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70792 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
f102719b65afb422e9fefca3e1934e7a62be7a52 03-May-2009 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70792 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
c781a243a3d17e7e763515794168d8fa6043f565 03-May-2009 Evan Cheng <evan.cheng@apple.com> In some rare cases, the register allocator can spill registers but end up not utilizing registers at all. The fundamental problem is linearscan's backtracking can end up freeing more than one allocated registers. However, reloads and restores might be folded into uses / defs and freed registers might not be used at all.

VirtRegMap keeps track of allocations so it knows what's not used. As a horrible hack, the stack coloring can color spill slots with *free* registers. That is, it replace reload and spills with copies from and to the free register. It unfold instructions that load and store the spill slot and replace them with register using variants.

Not yet enabled. This is part 1. More coming.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70787 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
tackSlotColoring.cpp
irtRegMap.cpp
irtRegMap.h
97c5f1ff450a19fe244fb62a35c8e36ed590670f 03-May-2009 Evan Cheng <evan.cheng@apple.com> In some rare cases, the register allocator can spill registers but end up not utilizing registers at all. The fundamental problem is linearscan's backtracking can end up freeing more than one allocated registers. However, reloads and restores might be folded into uses / defs and freed registers might not be used at all.

VirtRegMap keeps track of allocations so it knows what's not used. As a horrible hack, the stack coloring can color spill slots with *free* registers. That is, it replace reload and spills with copies from and to the free register. It unfold instructions that load and store the spill slot and replace them with register using variants.

Not yet enabled. This is part 1. More coming.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70787 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
tackSlotColoring.cpp
irtRegMap.cpp
irtRegMap.h
9fe9c8ec7d7d1e260927cb66e91d5e69db8a6feb 03-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70770 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6e8496f2a174ad9bcd0fa147a22e8e4e9ef3a583 03-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70770 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
813090cf891325c715b9f6fb1546e6ce67fa8c8b 03-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Properly handle sdiv / udiv / srem / urem libcalls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70764 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
38da80d0f58caa6b1a4709b1c614494360c1273c 03-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Properly handle sdiv / udiv / srem / urem libcalls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70764 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
c31642f7af64bfaed36064b52a5cb2366fd01064 03-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Proper name 16 bit libcalls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70750 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
eaef815cbd29e458410cac3ab0a3cd0811a13fa6 03-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Proper name 16 bit libcalls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70750 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
2f25c2c63fdc46c3b5b093b5cbdc6729f12a413a 03-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Add libcall expansion for 16 and 128 bit muls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
55e0249a9e49c060a94ace9c6bd36546ff24620f 03-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Add libcall expansion for 16 and 128 bit muls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
77eaa6880b8209acc05de733ebaba5d146c321a0 03-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Move the DwarfWriter::ValidDebugInfo check to a static DIDescriptor::ValidDebugInfo
-Create DebugLocs without the need to have a DwarfWriter around


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70682 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
2565734a60b19b69d83ca44e4a07d14e9ecb59b7 03-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> -Move the DwarfWriter::ValidDebugInfo check to a static DIDescriptor::ValidDebugInfo
-Create DebugLocs without the need to have a DwarfWriter around


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70682 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
5ee24e54d76ab86279fe196c03d6e03f5b4b3b3b 01-May-2009 Bob Wilson <bob.wilson@apple.com> Allow CONCAT_VECTORS nodes to be legal or have custom lowering for some targets.
Changes to take advantage of this will come later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70560 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
7bc6b7a57b1252c6b79b32f331bc78bf01262b58 01-May-2009 Bob Wilson <bob.wilson@apple.com> Allow CONCAT_VECTORS nodes to be legal or have custom lowering for some targets.
Changes to take advantage of this will come later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70560 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
d5a6381195c392d41bf8084213f8fe6b308a00b6 01-May-2009 Bill Wendling <isanbard@gmail.com> Simplify more code and add timer stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70539 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
b183d0c46a9ed38cf6e7ebf608492b7c35f9ae84 01-May-2009 Bill Wendling <isanbard@gmail.com> Simplify more code and add timer stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70539 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
ff86ef33e215e833efbdb04858b716e61020cb17 01-May-2009 Bill Wendling <isanbard@gmail.com> Simplify more code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70537 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
86c053ca375fb4ee8d60983fccb37cbf37af7601 01-May-2009 Bill Wendling <isanbard@gmail.com> Simplify more code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70537 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
ef956fc784dc43ba58c8d68df64c9f68e662a22e 01-May-2009 Bill Wendling <isanbard@gmail.com> Simplify some code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70534 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
0cfbd9b927ac4d133bbc092e28a141a844c59138 01-May-2009 Bill Wendling <isanbard@gmail.com> Simplify some code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70534 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7fa8162f08e299744c2fc381eb83465d21b9cf69 01-May-2009 Bill Wendling <isanbard@gmail.com> Fix whitespace. It was confusing me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70533 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
821048d4c31954e832de1eecbfe70569f65e07e9 01-May-2009 Bill Wendling <isanbard@gmail.com> Fix whitespace. It was confusing me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70533 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
5b16cd2cdd6ed607dbd5051d4452503bc0238d60 01-May-2009 Evan Cheng <evan.cheng@apple.com> Code clean up. Bye bye PhysRegTracker.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70524 91177308-0d34-0410-b5e6-96231b3b80d8
hysRegTracker.h
egAllocLinearScan.cpp
99aece70efb73bd7ab08ab11c7401f8cbaa33e8c 01-May-2009 Evan Cheng <evan.cheng@apple.com> Code clean up. Bye bye PhysRegTracker.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70524 91177308-0d34-0410-b5e6-96231b3b80d8
hysRegTracker.h
egAllocLinearScan.cpp
a26eae64ddf607549f9e47046d46ea5b9ec648b4 01-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make DebugLoc independent of DwarfWriter.

-Replace DebugLocTuple's Source ID with CompileUnit's GlobalVariable*
-Remove DwarfWriter::getOrCreateSourceID
-Make necessary changes for the above (fix callsites, etc.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70520 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
achineFunction.cpp
achineInstr.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
5b02f4c65921e7f0f0cc997aa6f0b614259e4aea 01-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Make DebugLoc independent of DwarfWriter.

-Replace DebugLocTuple's Source ID with CompileUnit's GlobalVariable*
-Remove DwarfWriter::getOrCreateSourceID
-Make necessary changes for the above (fix callsites, etc.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70520 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
achineFunction.cpp
achineInstr.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
3a155f0e34f3d33920b6a9308ae3464f5c506438 30-Apr-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Join cross class copies using getCommonSubClass()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70513 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
52576a32cf2601973d93ba48f7e4e3131d1df51c 30-Apr-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Join cross class copies using getCommonSubClass()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70513 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0490dcb1b73f2668ad12b7f45962500aaa3fc471 30-Apr-2009 Evan Cheng <evan.cheng@apple.com> Add a smarter heuristic to determine when to coalesce a virtual register with a physical one. More specifically, it avoid tying a virtual register in the loop with a physical register defined / used outside the loop. When it determines it's not profitable, it will use the physical register as the allocation preference instead.

This is *not* turned on by default. Testing indicates this is just as likely to pessimize code. The main issue seems to be allocation preference doesn't work effectively. That will change once I've taught register allocator "swapping".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70503 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
3aa6d9c41bb389f6d5e973d94ef5280daea68523 30-Apr-2009 Evan Cheng <evan.cheng@apple.com> Add a smarter heuristic to determine when to coalesce a virtual register with a physical one. More specifically, it avoid tying a virtual register in the loop with a physical register defined / used outside the loop. When it determines it's not profitable, it will use the physical register as the allocation preference instead.

This is *not* turned on by default. Testing indicates this is just as likely to pessimize code. The main issue seems to be allocation preference doesn't work effectively. That will change once I've taught register allocator "swapping".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70503 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
4e5ea553d055512b0b8aa098e363ae17bafda957 30-Apr-2009 Jay Foad <jay.foad@gmail.com> Move helper functions for optimizing division by constant into the APInt
class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70488 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
56b11f9f93622a04dffaa9ac1697ef92ca3469dc 30-Apr-2009 Jay Foad <jay.foad@gmail.com> Move helper functions for optimizing division by constant into the APInt
class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70488 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6c147293d63e836e3677eb933ff0513c7cad1e6a 30-Apr-2009 Chris Lattner <sabre@nondot.org> fix a regression handling indirect results: these need to be considered
memory operands otherwise the writebacks get lost when the inline asm
doesn't otherwise have side effects. This fixes rdar://6839427, though
clang really shouldn't generate these anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70455 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
7bf555c9b91af340207cfe4581b61cc983d40b52 30-Apr-2009 Chris Lattner <sabre@nondot.org> fix a regression handling indirect results: these need to be considered
memory operands otherwise the writebacks get lost when the inline asm
doesn't otherwise have side effects. This fixes rdar://6839427, though
clang really shouldn't generate these anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70455 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
98a366d547772010e94609e4584489b3e5ce0043 30-Apr-2009 Bill Wendling <isanbard@gmail.com> Instead of passing in an unsigned value for the optimization level, use an enum,
which better identifies what the optimization is doing. And is more flexible for
future uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70440 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
LVMTargetMachine.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
5ed22ac54c2530a1d0d140d259f881f3b2040e56 30-Apr-2009 Bill Wendling <isanbard@gmail.com> Instead of passing in an unsigned value for the optimization level, use an enum,
which better identifies what the optimization is doing. And is more flexible for
future uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70440 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
LVMTargetMachine.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
ec8eee2d3a402dd001daae3865bc5c10b41c323e 30-Apr-2009 Nate Begeman <natebegeman@mac.com> Fix infinite recursion in the C++ code which handles movddup by making it unnecessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70425 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b44aad7c75421736354c1f04cd7f824d4720e6ae 30-Apr-2009 Nate Begeman <natebegeman@mac.com> Fix infinite recursion in the C++ code which handles movddup by making it unnecessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70425 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ce9be2cf5dc84865f6b819bd3f9be16944426268 29-Apr-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> MachineInstr::isRegTiedTo{Use,Def}Operand can safely be made const.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70408 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
cb9f5b5de94fbc70e20943731bceb29095025722 29-Apr-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> MachineInstr::isRegTiedTo{Use,Def}Operand can safely be made const.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70408 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a641575828192c741531d431fbf191e6c1ba17c5 29-Apr-2009 Nate Begeman <natebegeman@mac.com> Update comment, replace theoretically impossible check with an assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70391 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4da7620a38a361d4a28e3a5e267c8cfe13c8873f 29-Apr-2009 Nate Begeman <natebegeman@mac.com> Update comment, replace theoretically impossible check with an assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70391 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
96f3fd9a7fa709bc1ae738f6f6f82b73d4a93628 29-Apr-2009 Evan Cheng <evan.cheng@apple.com> spillPhysRegAroundRegDefsUses() may have invalidated iterators stored in fixed_ IntervalPtrs. Reset them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70378 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
70c67fd7f30d0bed83191d07bbec8def4e12a260 29-Apr-2009 Evan Cheng <evan.cheng@apple.com> spillPhysRegAroundRegDefsUses() may have invalidated iterators stored in fixed_ IntervalPtrs. Reset them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70378 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
5a5ca1519e04310f585197c20e7ae584b7f2d11f 29-Apr-2009 Nate Begeman <natebegeman@mac.com> Implement review feedback for vector shuffle work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
e8f61cb78f84e6fd82dabd4a5ab85691e70a7e88 29-Apr-2009 Nate Begeman <natebegeman@mac.com> Implement review feedback for vector shuffle work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
a3518a1d6a6a9a7519d3a8d434cde51617c1dc22 29-Apr-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Add a public method called getAddressSpace() to the GlobalAddressSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70366 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
babc5c414464598c321c9889ad4cfa35581cbd53 29-Apr-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Add a public method called getAddressSpace() to the GlobalAddressSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70366 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
672452d5a0dace689d7f9df9837c03afe3a74281 29-Apr-2009 Chris Lattner <sabre@nondot.org> Disable the load-shrinking optimization from looking at
anything larger than 64-bits, avoiding a crash. This should
really be fixed to use APInts, though type legalization happens
to help us out and we get good code on the attached testcase at
least.

This fixes rdar://6836460


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70360 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
fc447d9b3b0d8ddfbc4b39e2932baa1327e4eece 29-Apr-2009 Chris Lattner <sabre@nondot.org> Disable the load-shrinking optimization from looking at
anything larger than 64-bits, avoiding a crash. This should
really be fixed to use APInts, though type legalization happens
to help us out and we get good code on the attached testcase at
least.

This fixes rdar://6836460


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70360 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
1c2f6da3319ed97f5a0927970f656295c0c22632 29-Apr-2009 Evan Cheng <evan.cheng@apple.com> Determine allocation 'preference' with right register class. I haven't seen this changing codegen so no test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70351 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
b10cd051c0c00bac2eee2744bdc5de42a5ef8842 29-Apr-2009 Evan Cheng <evan.cheng@apple.com> Determine allocation 'preference' with right register class. I haven't seen this changing codegen so no test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70351 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
be8cc2a3dedeb7685f07e68cdc4b9502eb97eb2b 29-Apr-2009 Bill Wendling <isanbard@gmail.com> Second attempt:

Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.

Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'll change the JIT with a follow-up patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70343 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
LVMTargetMachine.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
58ed5d27258df9688ac2694cf5e3d31f7dbdeef6 29-Apr-2009 Bill Wendling <isanbard@gmail.com> Second attempt:

Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.

Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'll change the JIT with a follow-up patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70343 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
LVMTargetMachine.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
8a8a0dfc3b200e193db14ea1e6f1a18bf4187866 28-Apr-2009 Evan Cheng <evan.cheng@apple.com> Move getMatchingSuperReg() out of coalescer and into TargetRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70309 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b92e64548514e9f9d7588d7e0bcd216a8431d96f 28-Apr-2009 Evan Cheng <evan.cheng@apple.com> Move getMatchingSuperReg() out of coalescer and into TargetRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70309 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
08e791fdb301d3a4c6c9fa6b7f5c3e33921f38a6 28-Apr-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't coalesce a physical register with an incompatible virtual register.

If the physical register does not belong to the virtual register's regclass,
don't coalesce. The physical register could be an invalid operand for an
instruction using the vreg.

The regclass matching is done after determining the actual subregisters being copied.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70298 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f78c6fadc28652a0e28507765a34173d23789591 28-Apr-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't coalesce a physical register with an incompatible virtual register.

If the physical register does not belong to the virtual register's regclass,
don't coalesce. The physical register could be an invalid operand for an
instruction using the vreg.

The regclass matching is done after determining the actual subregisters being copied.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70298 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d3d965714b89c5d5aeb65fb5ce06e081f0b3c049 28-Apr-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Initialized arrays can be in any address space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70297 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c1f8d9caa22135f3f56b2dd4a6e76fcc88f83b42 28-Apr-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Initialized arrays can be in any address space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70297 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
fa4677b483b85217ac216f7e8d401c40cbe348aa 28-Apr-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Move getSubRegisterRegClass from ScheduleDagSDNodesEmit.cpp to a TargetRegisterClass method.
Also make the method non-asserting. It will return NULL when given an invalid subreg index.

The method is needed by an upcoming patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70296 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
016eb210814b38d998775c26672e23dc84401f5d 28-Apr-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Move getSubRegisterRegClass from ScheduleDagSDNodesEmit.cpp to a TargetRegisterClass method.
Also make the method non-asserting. It will return NULL when given an invalid subreg index.

The method is needed by an upcoming patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70296 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
30590f502325321958b35bec7295159e3948291a 28-Apr-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4034. Bug in LiveInterval::join when it's compacting new valno's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70291 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
ffba3de0f51e0d93dcc692e9af3853de8ede9dd8 28-Apr-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4034. Bug in LiveInterval::join when it's compacting new valno's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70291 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
e9ccb3a7d43009de0b40b445db71d53177d88ff2 28-Apr-2009 Evan Cheng <evan.cheng@apple.com> Fix for PR4051. When 2address pass delete an instruction, update kill info when necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70279 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
71bd038f3d8cfb675bdfd83a25109110056b5159 28-Apr-2009 Evan Cheng <evan.cheng@apple.com> Fix for PR4051. When 2address pass delete an instruction, update kill info when necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70279 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
c69d56f1154342a57c9bdd4c17a10333e3520127 28-Apr-2009 Bill Wendling <isanbard@gmail.com> r70270 isn't ready yet. Back this out. Sorry for the noise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70275 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
LVMTargetMachine.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
f4d0c73cc3d9ae305b162f336dc14fbe7972e2e8 28-Apr-2009 Bill Wendling <isanbard@gmail.com> r70270 isn't ready yet. Back this out. Sorry for the noise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70275 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
LVMTargetMachine.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
2e9d5f912a9841d3685ba0241abe1131943fed29 28-Apr-2009 Bill Wendling <isanbard@gmail.com> Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.

Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'm not 100% sure if it's necessary to change it there...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70270 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
LVMTargetMachine.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
11a01bfa097cfe006de022154709b545ee125523 28-Apr-2009 Bill Wendling <isanbard@gmail.com> Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.

Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'm not 100% sure if it's necessary to change it there...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70270 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
LVMTargetMachine.cpp
electionDAG/DAGCombiner.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
c45288e06bfe7d0b0e74eff350d280fa6c944373 27-Apr-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4076. Correctly create live interval of physical register with two-address update.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70245 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3be003c0423fc3a064d43891d7221b461fc205f0 27-Apr-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4076. Correctly create live interval of physical register with two-address update.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70245 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
82fd3f3d3ad44b7e3d0e7efc51a6498731746f79 27-Apr-2009 Owen Anderson <resistor@mac.com> Don't skip the CopyMI when removing kill markers.
This should have no effect on generated code, but makes the intermediate state
of the coalescer more sane.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70238 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f352b9b4eccb35e0bef0539a1dcb3b0aa544eb3b 27-Apr-2009 Owen Anderson <resistor@mac.com> Don't skip the CopyMI when removing kill markers.
This should have no effect on generated code, but makes the intermediate state
of the coalescer more sane.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70238 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9771b91c2b4ce3baefdb9ba4ddfd9a9dd5077004 27-Apr-2009 Duncan Sands <baldrick@free.fr> Now that PR2957 is resolved, remove a bunch of
no-longer needed workarounds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70234 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
a52554e58e82a1e43ddf41ac96706b7c817b5dcc 27-Apr-2009 Duncan Sands <baldrick@free.fr> Now that PR2957 is resolved, remove a bunch of
no-longer needed workarounds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70234 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
9008ca6b6b4f638cfafccb593cbc5b1d3f5ab877 27-Apr-2009 Nate Begeman <natebegeman@mac.com> 2nd attempt, fixing SSE4.1 issues and implementing feedback from duncan.

PR2957

ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle
mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes
as the shuffle mask. A value of -1 represents UNDEF.

In addition to eliminating the creation of illegal BUILD_VECTORS just to
represent shuffle masks, we are better about canonicalizing the shuffle mask,
resulting in substantially better code for some classes of shuffles.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70225 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
543d214c596c7c0f186038ddfe00462563b75ca8 27-Apr-2009 Nate Begeman <natebegeman@mac.com> 2nd attempt, fixing SSE4.1 issues and implementing feedback from duncan.

PR2957

ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle
mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes
as the shuffle mask. A value of -1 represents UNDEF.

In addition to eliminating the creation of illegal BUILD_VECTORS just to
represent shuffle masks, we are better about canonicalizing the shuffle mask,
resulting in substantially better code for some classes of shuffles.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70225 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
d521bc983b32da71b85d42dd30da87079afa5728 27-Apr-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4056. It's possible a physical register def is dead if its implicit use is deleted by two-address pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70213 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5431d9ca8b642dcbc0f5cb05ac10782a7b17ff8b 27-Apr-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4056. It's possible a physical register def is dead if its implicit use is deleted by two-address pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70213 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
27e4666c20650f2b10d93b98b7a0625a363df9df 27-Apr-2009 Evan Cheng <evan.cheng@apple.com> Also delete last unused val#.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70212 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
a6458fede5fee9d0f761249c48f537496f7b5356 27-Apr-2009 Evan Cheng <evan.cheng@apple.com> Also delete last unused val#.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70212 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
c7b3444095f9aa5398d134c780e327a187cda231 27-Apr-2009 Dan Gohman <gohman@apple.com> When transforming sext(trunc(load(x))) into sext(smaller load(x)),
the trunc is directly replaced with the smaller load, so don't
try to create a new sext node. This fixes PR4050.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70179 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
66f593ebed83919f2884d0cf5e200d0f4cbdd005 27-Apr-2009 Dan Gohman <gohman@apple.com> When transforming sext(trunc(load(x))) into sext(smaller load(x)),
the trunc is directly replaced with the smaller load, so don't
try to create a new sext node. This fixes PR4050.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70179 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a4b2bab23313b1d45e1f3e6c9610a1e83fce4005 25-Apr-2009 Evan Cheng <evan.cheng@apple.com> Reuse unused val#'s to avoid running out of memory in extreme cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70069 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
4cc387ffb2420301155c6df1fa4abc5d7bc52c9c 25-Apr-2009 Evan Cheng <evan.cheng@apple.com> Reuse unused val#'s to avoid running out of memory in extreme cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70069 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
2bee0afb7d023e029975abf7d3157759fa797d37 25-Apr-2009 Dan Gohman <gohman@apple.com> Refactor the code to grab the low and high parts of a value
using EXTRACT_ELEMENT into a utility function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70056 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
ee7b6098003f3c61bd233b0ce99e7e95e6539cf7 25-Apr-2009 Dan Gohman <gohman@apple.com> Refactor the code to grab the low and high parts of a value
using EXTRACT_ELEMENT into a utility function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70056 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
4128700ab11d0db62e5ba7ed8a8fc301c7aaa8b1 25-Apr-2009 Dan Gohman <gohman@apple.com> Add a top-level comment about DAGCombiner's role in the compiler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70052 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a0754aca17517c539c61408d6cc0c4facf165cd4 25-Apr-2009 Dan Gohman <gohman@apple.com> Add a top-level comment about DAGCombiner's role in the compiler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70052 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0adb527d169e1f557676fda35bc9abb735e5c912 25-Apr-2009 Evan Cheng <evan.cheng@apple.com> Do not share a single unknown val# for all the live ranges merged into a physical sub-register live interval. When coalescer is merging in clobbered virtaul register live interval into a physical register live interval, give each virtual register val# a separate val# in the physical register live interval. Otherwise, the coalescer would have lost track of the definitions information it needs to make correct coalescing decisions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70026 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
1068b72ec6c6d7ec5634c4998e654d04d4d4418f 25-Apr-2009 Evan Cheng <evan.cheng@apple.com> Do not share a single unknown val# for all the live ranges merged into a physical sub-register live interval. When coalescer is merging in clobbered virtaul register live interval into a physical register live interval, give each virtual register val# a separate val# in the physical register live interval. Otherwise, the coalescer would have lost track of the definitions information it needs to make correct coalescing decisions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70026 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
2f91f30b932ad56cd82398d872d4874facf84220 24-Apr-2009 Dale Johannesen <dalej@apple.com> Fix PR 4057, a crash doing float->char const folding.
This particular one is undefined behavior (although this
isn't related to the crash), so it will no longer do it
at compile time, which seems better.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
63d4503dc11f83298c82a64d21214b481a967e3f 24-Apr-2009 Dale Johannesen <dalej@apple.com> Fix PR 4057, a crash doing float->char const folding.
This particular one is undefined behavior (although this
isn't related to the crash), so it will no longer do it
at compile time, which seems better.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
15684b29552393553524171bff1913e750f390f8 24-Apr-2009 Rafael Espindola <rafael.espindola@gmail.com> Revert 69952. Causes testsuite failures on linux x86-64.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
37f8e8ace433a675e90a9c45ded7827a4d06f21b 24-Apr-2009 Rafael Espindola <rafael.espindola@gmail.com> Revert 69952. Causes testsuite failures on linux x86-64.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
b706d29f9c5ed3ed9acc82f7ab46205ba56b92dc 24-Apr-2009 Nate Begeman <natebegeman@mac.com> PR2957

ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle
mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes
as the shuffle mask. A value of -1 represents UNDEF.

In addition to eliminating the creation of illegal BUILD_VECTORS just to
represent shuffle masks, we are better about canonicalizing the shuffle mask,
resulting in substantially better code for some classes of shuffles.

A clean up of x86 shuffle code, and some canonicalizing in DAGCombiner is next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
da17a81c88162e6dfc070f18b14e34f194697407 24-Apr-2009 Nate Begeman <natebegeman@mac.com> PR2957

ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle
mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes
as the shuffle mask. A value of -1 represents UNDEF.

In addition to eliminating the creation of illegal BUILD_VECTORS just to
represent shuffle masks, we are better about canonicalizing the shuffle mask,
resulting in substantially better code for some classes of shuffles.

A clean up of x86 shuffle code, and some canonicalizing in DAGCombiner is next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
98d07102d67971118c73e7db84d8a05d58dcf3df 24-Apr-2009 Dan Gohman <gohman@apple.com> Instead of requiring TLI.LowerCallTo to return an ISD::BUILD_PAIR,
use ISD::EXTRACT_ELEMENT. SelectionDAG has a special fast-path for
the cast of an EXTRACT_ELEMENT with a BUILD_PAIR operand, for the
common case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69948 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
bbb69ba45e6b90251bebed4f3a76456d9d51f903 24-Apr-2009 Dan Gohman <gohman@apple.com> Instead of requiring TLI.LowerCallTo to return an ISD::BUILD_PAIR,
use ISD::EXTRACT_ELEMENT. SelectionDAG has a special fast-path for
the cast of an EXTRACT_ELEMENT with a BUILD_PAIR operand, for the
common case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69948 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
ad62f53795ac3da0353afba7e83464679c91ce5c 24-Apr-2009 Dan Gohman <gohman@apple.com> Factor out a bit of code that appears in several places into a
utility function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69937 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
d4760a5133c4c5547d1656035cd5c32ec53f0b28 24-Apr-2009 Dan Gohman <gohman@apple.com> Factor out a bit of code that appears in several places into a
utility function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69937 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
5e5558bc66d593605ece81502bc310b7cf9e87f0 24-Apr-2009 Dan Gohman <gohman@apple.com> Handle Void types in ComputeValueVTs. This doesn't currently occur,
but this change makes the code more general and easier to adapt for
new purposes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69935 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
a9e5bc4df356b074e280ad444ffd5364272d37ec 24-Apr-2009 Dan Gohman <gohman@apple.com> Handle Void types in ComputeValueVTs. This doesn't currently occur,
but this change makes the code more general and easier to adapt for
new purposes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69935 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
aa809fbde12dda27943bafb631fbad22130814e2 23-Apr-2009 Evan Cheng <evan.cheng@apple.com> Update comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69919 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
1a0de0ea46e8e5b6d256aa6ecf42625201179430 23-Apr-2009 Evan Cheng <evan.cheng@apple.com> Update comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69919 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c2cee14a8c30201696dc340be36ea0ed66783062 23-Apr-2009 Evan Cheng <evan.cheng@apple.com> Fix an obvious type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69918 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
8c82047aa5a8070bb5691b02c4f7b4729ca8a3e8 23-Apr-2009 Evan Cheng <evan.cheng@apple.com> Fix an obvious type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69918 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5b69ebac857104770b1a751bf7a463fda4330a62 22-Apr-2009 Evan Cheng <evan.cheng@apple.com> It has finally happened. Spiller is now using live interval info.

This fixes a very subtle bug. vr defined by an implicit_def is allowed overlap with any register since it doesn't actually modify anything. However, if it's used as a two-address use, its live range can be extended and it can be spilled. The spiller must take care not to emit a reload for the vn number that's defined by the implicit_def. This is both a correctness and performance issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69743 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
piller.cpp
piller.h
047e9d1fa34f28a3db20f841eec1d194abf2a1da 22-Apr-2009 Evan Cheng <evan.cheng@apple.com> It has finally happened. Spiller is now using live interval info.

This fixes a very subtle bug. vr defined by an implicit_def is allowed overlap with any register since it doesn't actually modify anything. However, if it's used as a two-address use, its live range can be extended and it can be spilled. The spiller must take care not to emit a reload for the vn number that's defined by the implicit_def. This is both a correctness and performance issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69743 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
egAllocPBQP.cpp
piller.cpp
piller.h
3e3702d00b2ce4c9c1fed41c05f9968414ff5819 21-Apr-2009 Devang Patel <dpatel@apple.com> Fix Visual Studio 2008 build failure.
Patch by Marius Wachtler



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69637 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
da96ca5d8a194b702da0e44ddfa80c654048c122 21-Apr-2009 Devang Patel <dpatel@apple.com> Fix Visual Studio 2008 build failure.
Patch by Marius Wachtler



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69637 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
70bc17dbf5a991ce8f8f5285f61c352fb55b533d 21-Apr-2009 Dan Gohman <gohman@apple.com> Make X86's copyRegToReg able to handle copies to and from subclasses.
This makes the extra copyRegToReg calls in ScheduleDAGSDNodesEmit.cpp
unnecessary. Derived from a patch by Jakob Stoklund Olesen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
d4df625c05d6c54e623ed32aa75b90c35f116624 21-Apr-2009 Dan Gohman <gohman@apple.com> Make X86's copyRegToReg able to handle copies to and from subclasses.
This makes the extra copyRegToReg calls in ScheduleDAGSDNodesEmit.cpp
unnecessary. Derived from a patch by Jakob Stoklund Olesen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
bd209ab9bc0f6ad667c15df4453955c2ed4c2434 21-Apr-2009 Dan Gohman <gohman@apple.com> Simplify this code. getConstant knows how to make
broadcasted vector constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0b8972d71412db2496153ec28ed06ec43697b8ad 21-Apr-2009 Dan Gohman <gohman@apple.com> Simplify this code. getConstant knows how to make
broadcasted vector constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
998e125a87d49f28c714d8223a37746850401057 20-Apr-2009 Bob Wilson <bob.wilson@apple.com> Move duplicated AddLiveIn function from X86 and ARM backends to be a method
in the MachineFunction class, renaming it to addLiveIn for consistency with
the same method in MachineBasicBlock. Thanks for Anton for suggesting this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69615 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
b6737aa5c91184d77e9569d5fe829674a358b90d 20-Apr-2009 Bob Wilson <bob.wilson@apple.com> Move duplicated AddLiveIn function from X86 and ARM backends to be a method
in the MachineFunction class, renaming it to addLiveIn for consistency with
the same method in MachineBasicBlock. Thanks for Anton for suggesting this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69615 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
c885165e664f3b465403e1b6ce57ba63f57c5f0c 20-Apr-2009 Bob Wilson <bob.wilson@apple.com> Revise my previous change 68996 as suggested by Duncan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69607 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
c21b202ac837dfeaf8de89fc9c930c47bd4501ae 20-Apr-2009 Bob Wilson <bob.wilson@apple.com> Revise my previous change 68996 as suggested by Duncan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69607 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
c4f718a3a7990a13888836902ecac034a9d6a235 20-Apr-2009 Evan Cheng <evan.cheng@apple.com> - Remove an arbitrary spill weight tweak that should not have been there.
- Find more reloads from SS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69606 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
355ac07119849b25ee5b062822f22c46e9d8e62d 20-Apr-2009 Evan Cheng <evan.cheng@apple.com> - Remove an arbitrary spill weight tweak that should not have been there.
- Find more reloads from SS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69606 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
206d1856ad80e58a3a9e01b7c0d3fef66b3cacc2 20-Apr-2009 Evan Cheng <evan.cheng@apple.com> Added a linearscan register allocation optimization. When the register allocator spill an interval with multiple uses in the same basic block, it creates a different virtual register for each of the reloads. e.g.

%reg1498<def> = MOV32rm %reg1024, 1, %reg0, 12, %reg0, Mem:LD(4,4) [sunkaddr39 + 0]
%reg1506<def> = MOV32rm %reg1024, 1, %reg0, 8, %reg0, Mem:LD(4,4) [sunkaddr42 + 0]
%reg1486<def> = MOV32rr %reg1506
%reg1486<def> = XOR32rr %reg1486, %reg1498, %EFLAGS<imp-def,dead>
%reg1510<def> = MOV32rm %reg1024, 1, %reg0, 4, %reg0, Mem:LD(4,4) [sunkaddr45 + 0]

=>

%reg1498<def> = MOV32rm %reg2036, 1, %reg0, 12, %reg0, Mem:LD(4,4) [sunkaddr39 + 0]
%reg1506<def> = MOV32rm %reg2037, 1, %reg0, 8, %reg0, Mem:LD(4,4) [sunkaddr42 + 0]
%reg1486<def> = MOV32rr %reg1506
%reg1486<def> = XOR32rr %reg1486, %reg1498, %EFLAGS<imp-def,dead>
%reg1510<def> = MOV32rm %reg2038, 1, %reg0, 4, %reg0, Mem:LD(4,4) [sunkaddr45 + 0]

From linearscan's point of view, each of reg2036, 2037, and 2038 are separate registers, each is "killed" after a single use. The reloaded register is available and it's often clobbered right away. e.g. In thise case reg1498 is allocated EAX while reg2036 is allocated RAX. This means we end up with multiple reloads from the same stack slot in the same basic block.

Now linearscan recognize there are other reloads from same SS in the same BB. So it'll "downgrade" RAX (and its aliases) after reg2036 is allocated until the next reload (reg2037) is done. This greatly increase the likihood reloads from SS are reused.

This speeds up sha1 from OpenSSL by 5.8%. It is also an across the board win for SPEC2000 and 2006.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69585 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
29b4cf635b5fe0b9f9641539fd7361bed60ad155 20-Apr-2009 Evan Cheng <evan.cheng@apple.com> Added a linearscan register allocation optimization. When the register allocator spill an interval with multiple uses in the same basic block, it creates a different virtual register for each of the reloads. e.g.

%reg1498<def> = MOV32rm %reg1024, 1, %reg0, 12, %reg0, Mem:LD(4,4) [sunkaddr39 + 0]
%reg1506<def> = MOV32rm %reg1024, 1, %reg0, 8, %reg0, Mem:LD(4,4) [sunkaddr42 + 0]
%reg1486<def> = MOV32rr %reg1506
%reg1486<def> = XOR32rr %reg1486, %reg1498, %EFLAGS<imp-def,dead>
%reg1510<def> = MOV32rm %reg1024, 1, %reg0, 4, %reg0, Mem:LD(4,4) [sunkaddr45 + 0]

=>

%reg1498<def> = MOV32rm %reg2036, 1, %reg0, 12, %reg0, Mem:LD(4,4) [sunkaddr39 + 0]
%reg1506<def> = MOV32rm %reg2037, 1, %reg0, 8, %reg0, Mem:LD(4,4) [sunkaddr42 + 0]
%reg1486<def> = MOV32rr %reg1506
%reg1486<def> = XOR32rr %reg1486, %reg1498, %EFLAGS<imp-def,dead>
%reg1510<def> = MOV32rm %reg2038, 1, %reg0, 4, %reg0, Mem:LD(4,4) [sunkaddr45 + 0]

From linearscan's point of view, each of reg2036, 2037, and 2038 are separate registers, each is "killed" after a single use. The reloaded register is available and it's often clobbered right away. e.g. In thise case reg1498 is allocated EAX while reg2036 is allocated RAX. This means we end up with multiple reloads from the same stack slot in the same basic block.

Now linearscan recognize there are other reloads from same SS in the same BB. So it'll "downgrade" RAX (and its aliases) after reg2036 is allocated until the next reload (reg2037) is done. This greatly increase the likihood reloads from SS are reused.

This speeds up sha1 from OpenSSL by 5.8%. It is also an across the board win for SPEC2000 and 2006.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69585 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
a507e5538f7fe999b18fd0403c5806cc5ae0b64f 19-Apr-2009 Duncan Sands <baldrick@free.fr> Now that BUILD_VECTOR operands are allowed to be
bigger than the vector element type, turn checking
of the operand type back on again, appropriately
adjusted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69516 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
66f891e387a22d184ddb5e2b2ef0810dc923675d 19-Apr-2009 Duncan Sands <baldrick@free.fr> Now that BUILD_VECTOR operands are allowed to be
bigger than the vector element type, turn checking
of the operand type back on again, appropriately
adjusted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69516 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2f992d13ea0ccfe3f9ce359b4c534d9b34b0e7cd 18-Apr-2009 Chris Lattner <sabre@nondot.org> Fix PR3898, which manifests as failures on are an Xcore,
patch by Jakob Stoklund Olesen!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69472 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
abbee9c4f6195e670775cb2fe3a0decbe626e1db 18-Apr-2009 Chris Lattner <sabre@nondot.org> Fix PR3898, which manifests as failures on are an Xcore,
patch by Jakob Stoklund Olesen!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69472 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b10b5ac8d9da43ca2db61401a20af6b676c98438 18-Apr-2009 Duncan Sands <baldrick@free.fr> Don't try to make BUILD_VECTOR operands have the same
type as the vector element type: allow them to be of
a wider integer type than the element type all the way
through the system, and not just as far as LegalizeDAG.
This should be safe because it used to be this way
(the old type legalizer would produce such nodes), so
backends should be able to handle it. In fact only
targets which have legal vector types with an illegal
promoted element type will ever see this (eg: <4 x i16>
on ppc). This fixes a regression with the new type
legalizer (vec_splat.ll). Also, treat SCALAR_TO_VECTOR
the same as BUILD_VECTOR. After all, it is just a
special case of BUILD_VECTOR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69467 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
6a3a01eb07a391628766d95b3c4baeb3802b5b96 18-Apr-2009 Duncan Sands <baldrick@free.fr> Don't try to make BUILD_VECTOR operands have the same
type as the vector element type: allow them to be of
a wider integer type than the element type all the way
through the system, and not just as far as LegalizeDAG.
This should be safe because it used to be this way
(the old type legalizer would produce such nodes), so
backends should be able to handle it. In fact only
targets which have legal vector types with an illegal
promoted element type will ever see this (eg: <4 x i16>
on ppc). This fixes a regression with the new type
legalizer (vec_splat.ll). Also, treat SCALAR_TO_VECTOR
the same as BUILD_VECTOR. After all, it is just a
special case of BUILD_VECTOR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69467 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
cccdb2b602cf421d8890130308945163620ebc68 18-Apr-2009 Evan Cheng <evan.cheng@apple.com> Add a new LiveInterval::overlaps(). It checks if the live interval overlaps a range specified by [Start, End).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69434 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
60c15e5295626797de6c2ba7f566c87e751485b0 18-Apr-2009 Evan Cheng <evan.cheng@apple.com> Add a new LiveInterval::overlaps(). It checks if the live interval overlaps a range specified by [Start, End).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69434 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
97d14fcb6aa54b66e8513fccea0d0470afa4056a 18-Apr-2009 Dale Johannesen <dalej@apple.com> Inline asm's were still introducing bogus dependencies;
my earlier patch to this code only fixed half of it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69408 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ac68b7b4ed36c550398bae5be995b2ea0296119c 18-Apr-2009 Dale Johannesen <dalej@apple.com> Inline asm's were still introducing bogus dependencies;
my earlier patch to this code only fixed half of it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69408 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
276b77e66c538264d79b78c00bbad9f890f58011 17-Apr-2009 Evan Cheng <evan.cheng@apple.com> Teach spiller to unfold instructions which modref spill slot when a scratch
register is available and when it's profitable.

e.g.
xorq %r12<kill>, %r13
addq %rax, -184(%rbp)
addq %r13, -184(%rbp)
==>
xorq %r12<kill>, %r13
movq -184(%rbp), %r12
addq %rax, %r12
addq %r13, %r12
movq %r12, -184(%rbp)

Two more instructions, but fewer memory accesses. It can also open up
opportunities for more optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69341 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
piller.h
5d01be39fd1e900dd65e60a20c481f95c8c7f3f4 17-Apr-2009 Evan Cheng <evan.cheng@apple.com> Teach spiller to unfold instructions which modref spill slot when a scratch
register is available and when it's profitable.

e.g.
xorq %r12<kill>, %r13
addq %rax, -184(%rbp)
addq %r13, -184(%rbp)
==>
xorq %r12<kill>, %r13
movq -184(%rbp), %r12
addq %rax, %r12
addq %r13, %r12
movq %r12, -184(%rbp)

Two more instructions, but fewer memory accesses. It can also open up
opportunities for more optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69341 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
piller.h
0e4042d30b2b47329166f5f784ef3c70f6b408cc 16-Apr-2009 Dan Gohman <gohman@apple.com> In the list-burr's pseudo two-addr dependency heuristics, don't
add dependencies on nodes with exactly one successor which is a
COPY_TO_REGCLASS node. In the case that the copy is coalesced
away, the dependence should be on the user of the copy, rather
than the copy itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69309 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
ba6a6125f561d92163491c8756c816d5a3666452 16-Apr-2009 Dan Gohman <gohman@apple.com> In the list-burr's pseudo two-addr dependency heuristics, don't
add dependencies on nodes with exactly one successor which is a
COPY_TO_REGCLASS node. In the case that the copy is coalesced
away, the dependence should be on the user of the copy, rather
than the copy itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69309 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
8af808a3d64dfdcc5d126e6ad762f57b1483671c 16-Apr-2009 Dan Gohman <gohman@apple.com> Handle SUBREG_TO_REG instructions with the same heuristics
as INSERT_SUBREG instructions in the list-burr scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69308 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
0b33cd55d1cfaa98fe4571d48caae4946a5e3a54 16-Apr-2009 Dan Gohman <gohman@apple.com> Handle SUBREG_TO_REG instructions with the same heuristics
as INSERT_SUBREG instructions in the list-burr scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69308 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
02f8c410148ba3b6009ed67df41e2c97c1c07c3a 16-Apr-2009 Devang Patel <dpatel@apple.com> Do not treat beginning of inlined scope as beginning of normal function scope if the location info is missing.

Insetad of doing ...
if (inlined_subroutine && known_location)
DW_TAG_inline_subroutine
else
DW_TAG_subprogram

do

if (inlined_subroutine) {
if (known_location)
DW_TAG_inline_subroutine
} else {
DW_TAG_subprogram
}



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
ee9a58a24345acba20ecf8762bfcabf8840c20fd 16-Apr-2009 Devang Patel <dpatel@apple.com> Do not treat beginning of inlined scope as beginning of normal function scope if the location info is missing.

Insetad of doing ...
if (inlined_subroutine && known_location)
DW_TAG_inline_subroutine
else
DW_TAG_subprogram

do

if (inlined_subroutine) {
if (known_location)
DW_TAG_inline_subroutine
} else {
DW_TAG_subprogram
}



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
906caf2ae45455a12696bb950429da28d7d63422 16-Apr-2009 Devang Patel <dpatel@apple.com> Record line number at the beginning of a func.start.

This line was accidently lost yesterday.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69286 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
faa55f17b8fd2071b69b1104f5921f02d2f31ecc 16-Apr-2009 Devang Patel <dpatel@apple.com> Record line number at the beginning of a func.start.

This line was accidently lost yesterday.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69286 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
16f2ffd1580a168a7fdd78bf48b26f0995e1c109 16-Apr-2009 Devang Patel <dpatel@apple.com> In -fast mode do what FastISel does.
This code could use some refactoring help!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
b519081460eba4406b23f69c9b41d565910b7af5 16-Apr-2009 Devang Patel <dpatel@apple.com> In -fast mode do what FastISel does.
This code could use some refactoring help!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
390f3ace34855a3d4c9e0adf468976375f8c6dc1 16-Apr-2009 Devang Patel <dpatel@apple.com> If FastISel is run and it has known DebugLoc then use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69253 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
6bfb20561180e71214d12edd65c768829759b222 16-Apr-2009 Devang Patel <dpatel@apple.com> If FastISel is run and it has known DebugLoc then use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69253 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
682e0e6a72af42f31e6fcf329c7bb5cfaff7459d 16-Apr-2009 Devang Patel <dpatel@apple.com> If location where the function was inlined is not know then do not emit debug info describing inlinied region.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69252 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
9205f3870d58064a1c9f5d38fc3e35d8e05fa19c 16-Apr-2009 Devang Patel <dpatel@apple.com> If location where the function was inlined is not know then do not emit debug info describing inlinied region.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69252 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
7d2f972f596b671586365d17cdadb44e5eb03574 15-Apr-2009 Devang Patel <dpatel@apple.com> s/RootDbgScope/FunctionDbgScope/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69216 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7b60d5545d671ec46bf6419762520e3659fb1c45 15-Apr-2009 Devang Patel <dpatel@apple.com> s/RootDbgScope/FunctionDbgScope/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69216 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
8818b8f4437a56fc8f75a134f015c3b807e61f10 15-Apr-2009 Devang Patel <dpatel@apple.com> Add DISubprogram is not null check.
This fixes test/CodeGen//2009-01-21-invalid-debug-info.m test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69210 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
12e528beb5b91114ccdc12e7ff1b6e6597202321 15-Apr-2009 Devang Patel <dpatel@apple.com> Add DISubprogram is not null check.
This fixes test/CodeGen//2009-01-21-invalid-debug-info.m test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69210 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c23e4968790395053f3f52aeb3342637fcaafdbf 15-Apr-2009 Dan Gohman <gohman@apple.com> Generalize one of the SelectionDAG::ReplaceAllUsesWith overloads
to support replacing a node with another that has a superset of
the result types. Use this instead of calling
ReplaceAllUsesOfValueWith for each value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69209 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
3209ac36502042636679ef030d609964891ccf57 15-Apr-2009 Dan Gohman <gohman@apple.com> Generalize one of the SelectionDAG::ReplaceAllUsesWith overloads
to support replacing a node with another that has a superset of
the result types. Use this instead of calling
ReplaceAllUsesOfValueWith for each value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69209 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
c782ad055e7d1ed11bf0b7cbd17b5a8b6efdde7e 15-Apr-2009 Devang Patel <dpatel@apple.com> Check isInlinedSubroutine() before creating DW_TAG_inlined_subroutine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69202 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
88bcc9edae209d39c4ca646406af5c5879d729c0 15-Apr-2009 Devang Patel <dpatel@apple.com> Check isInlinedSubroutine() before creating DW_TAG_inlined_subroutine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69202 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
9407cd4ede3e2c090b958778d0fdbdac8b2dbec4 15-Apr-2009 Dan Gohman <gohman@apple.com> Fix MachineInstr::getNumExplicitOperands to count
variadic operands correctly. Patch by Jakob Stoklund Olesen!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69190 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
3d88001b45157c4fe9c5ada554e7ddd7fe6fbce8 15-Apr-2009 Dan Gohman <gohman@apple.com> Fix MachineInstr::getNumExplicitOperands to count
variadic operands correctly. Patch by Jakob Stoklund Olesen!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69190 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
33f1c68cba4e905fdd2bf7d2848c52052d46fbff 15-Apr-2009 Dan Gohman <gohman@apple.com> Move MachineRegisterInfo::setRegClass out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69126 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
6cfe4b03398e3eacf83c1e24f0382d9093b85aca 15-Apr-2009 Dan Gohman <gohman@apple.com> Move MachineRegisterInfo::setRegClass out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69126 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
593ea05957b98472a916278d64229ceda223c50b 15-Apr-2009 Dan Gohman <gohman@apple.com> Move MachineJumpTableInfo::ReplaceMBBInJumpTables out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69125 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
352406d8db90a602b5a2b24126903e7b464bcbf9 15-Apr-2009 Dan Gohman <gohman@apple.com> Move MachineJumpTableInfo::ReplaceMBBInJumpTables out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69125 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
3bc1a3735f216f4a122fe4a05d39f63888ab205a 15-Apr-2009 Dan Gohman <gohman@apple.com> Give RemoveRegOperandFromRegInfo a comment and move the
code out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69124 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
8ff914cdcac983c8d6a38095db2949aabe15ea46 15-Apr-2009 Dan Gohman <gohman@apple.com> Give RemoveRegOperandFromRegInfo a comment and move the
code out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69124 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1be3eccecbd2fa50ed9008ffee01f6351df5d8f7 15-Apr-2009 Devang Patel <dpatel@apple.com> Construct and emit DW_TAG_inlined_subroutine DIEs for inlined subroutine scopes (only in FastISel mode).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69116 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
8a9a7dc7ad2516b37f9d947a6b97ad62c24ff9b5 15-Apr-2009 Devang Patel <dpatel@apple.com> Construct and emit DW_TAG_inlined_subroutine DIEs for inlined subroutine scopes (only in FastISel mode).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69116 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
5ec3b427c850d8c61aaa29e3421019bdff9b77f1 15-Apr-2009 Dan Gohman <gohman@apple.com> When the result of an EXTRACT_SUBREG, INSERT_SUBREG, or SUBREG_TO_REG
operator is used by a CopyToReg to export the value to a different
block, don't reuse the CopyToReg's register for the subreg operation
result if the register isn't precisely the right class for the
subreg operation.

Also, rename the h-registers.ll test, now that there are more
than one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69087 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
31faeea6af95895a3a2d643e89dba18781a564a9 15-Apr-2009 Dan Gohman <gohman@apple.com> When the result of an EXTRACT_SUBREG, INSERT_SUBREG, or SUBREG_TO_REG
operator is used by a CopyToReg to export the value to a different
block, don't reuse the CopyToReg's register for the subreg operation
result if the register isn't precisely the right class for the
subreg operation.

Also, rename the h-registers.ll test, now that there are more
than one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69087 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
ec65a7d89b3c23183433c69f43220a93f3573551 14-Apr-2009 Dale Johannesen <dalej@apple.com> Do not force asm's to be chained if they don't touch
memory and aren't volatile. This was interfering with
good scheduling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69008 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
49fb89488e691cd78643d19bee08d7f617317332 14-Apr-2009 Dale Johannesen <dalej@apple.com> Do not force asm's to be chained if they don't touch
memory and aren't volatile. This was interfering with
good scheduling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69008 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
87d696a4d2f0b43a0e927bffb13ceb4c67cc0f3b 14-Apr-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3934 part 2. findOnlyInterestingUse() was not setting IsCopy and IsDstPhys which are returned by value and used by callee. This happened to work on the earlier test cases because of a logic error in the caller side.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69006 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
e65047a0975b4a0e0df7e1ef9ac3ed3427a9575d 14-Apr-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3934 part 2. findOnlyInterestingUse() was not setting IsCopy and IsDstPhys which are returned by value and used by callee. This happened to work on the earlier test cases because of a logic error in the caller side.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69006 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4cbb173d6cbf0196f3d2c817186fe6b599e68cf4 14-Apr-2009 Daniel Dunbar <daniel@zuster.org> Make these errors more noticable in build logs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68998 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
74da6f45b8fedb879ff11b66af6db79260cb18b8 14-Apr-2009 Daniel Dunbar <daniel@zuster.org> Make these errors more noticable in build logs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68998 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
b1303d05a89972195de023fda432cc621375a27c 14-Apr-2009 Bob Wilson <bob.wilson@apple.com> Change SelectionDAG type legalization to allow BUILD_VECTOR operands to be
promoted to legal types without changing the type of the vector. This is
following a suggestion from Duncan
(http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-February/019923.html).
The transformation that used to be done during type legalization is now
postponed to DAG legalization. This allows the BUILD_VECTORs to be optimized
and potentially handled specially by target-specific code.

It turns out that this is also consistent with an optimization done by the
DAG combiner: a BUILD_VECTOR and INSERT_VECTOR_ELT may be combined by
replacing one of the BUILD_VECTOR operands with the newly inserted element;
but INSERT_VECTOR_ELT allows its scalar operand to be larger than the
element type, with any extra high bits being implicitly truncated. The
result is a BUILD_VECTOR where one of the operands has a type larger the
the vector element type.

Any code that operates on BUILD_VECTORs may now need to be aware of the
potential type discrepancy between the vector element type and the
BUILD_VECTOR operands. This patch updates all of the places that I could
find to handle that case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68996 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/SelectionDAG.cpp
2b570bb741732deda2e9d7fdbf0a4ba72033942b 14-Apr-2009 Bob Wilson <bob.wilson@apple.com> Change SelectionDAG type legalization to allow BUILD_VECTOR operands to be
promoted to legal types without changing the type of the vector. This is
following a suggestion from Duncan
(http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-February/019923.html).
The transformation that used to be done during type legalization is now
postponed to DAG legalization. This allows the BUILD_VECTORs to be optimized
and potentially handled specially by target-specific code.

It turns out that this is also consistent with an optimization done by the
DAG combiner: a BUILD_VECTOR and INSERT_VECTOR_ELT may be combined by
replacing one of the BUILD_VECTOR operands with the newly inserted element;
but INSERT_VECTOR_ELT allows its scalar operand to be larger than the
element type, with any extra high bits being implicitly truncated. The
result is a BUILD_VECTOR where one of the operands has a type larger the
the vector element type.

Any code that operates on BUILD_VECTORs may now need to be aware of the
potential type discrepancy between the vector element type and the
BUILD_VECTOR operands. This patch updates all of the places that I could
find to handle that case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68996 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/SelectionDAG.cpp
88c7af096b09ad26cbcebfdf40151e04094b7460 13-Apr-2009 Dan Gohman <gohman@apple.com> Rename COPY_TO_SUBCLASS to COPY_TO_REGCLASS, and generalize
it accordingly. Thanks to Jakob Stoklund Olesen for pointing
out how this might be useful.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68986 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
4c10fc7e94c9dc543db53c319a83de95896340b0 13-Apr-2009 Dan Gohman <gohman@apple.com> Rename COPY_TO_SUBCLASS to COPY_TO_REGCLASS, and generalize
it accordingly. Thanks to Jakob Stoklund Olesen for pointing
out how this might be useful.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68986 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
26cbf9eb99c779b8992f4865c6cf308318d39723 13-Apr-2009 Bob Wilson <bob.wilson@apple.com> Refactor some code in SelectionDAGLegalize::ExpandBUILD_VECTOR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68981 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
27b4133f65fbea82ecc520035bafcb1559a4bbe4 13-Apr-2009 Bob Wilson <bob.wilson@apple.com> Refactor some code in SelectionDAGLegalize::ExpandBUILD_VECTOR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68981 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3005ed604835834534b61ea4a8f8be29f6868627 13-Apr-2009 Evan Cheng <evan.cheng@apple.com> PR3934: Fix a bogus two-address pass assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68979 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4bdceb841063ac3a8f5050a92f7b0feba094f4cc 13-Apr-2009 Evan Cheng <evan.cheng@apple.com> PR3934: Fix a bogus two-address pass assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68979 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
48c7fa21a3b5e491bdf0ffc41fe7aa9687450c5f 13-Apr-2009 Devang Patel <dpatel@apple.com> Right now, Debugging information to encode scopes (DW_TAG_lexical_block) relies on DBG_LABEL. Unfortunately this intefers with the quality of optimized code.
This patch updates dwarf writer to encode scoping information in DWARF only in FastISel mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68973 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
1899292055e88f11ae05c2e22e01b1b9e1485bf9 13-Apr-2009 Devang Patel <dpatel@apple.com> Right now, Debugging information to encode scopes (DW_TAG_lexical_block) relies on DBG_LABEL. Unfortunately this intefers with the quality of optimized code.
This patch updates dwarf writer to encode scoping information in DWARF only in FastISel mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68973 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
0f7fef3872a37d09c806f52f1d03d74ebc73c171 13-Apr-2009 Devang Patel <dpatel@apple.com> Reapply 68847.
Now debug_inlined section is covered by TAI->doesDwarfUsesInlineInfoSection(), which is false by default.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68964 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
88bf96e5db9d7fa999ad190277610595540dc3e0 13-Apr-2009 Devang Patel <dpatel@apple.com> Reapply 68847.
Now debug_inlined section is covered by TAI->doesDwarfUsesInlineInfoSection(), which is false by default.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68964 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
f8c7394781f7cf27ac52ca087e289436d36844da 13-Apr-2009 Dan Gohman <gohman@apple.com> Add a new TargetInstrInfo MachineInstr opcode, COPY_TO_SUBCLASS.
This will be used to replace things like X86's MOV32to32_.

Enhance ScheduleDAGSDNodesEmit to be more flexible and robust
in the presense of subregister superclasses and subclasses. It
can now cope with the definition of a virtual register being in
a subclass of a use.

Re-introduce the code for recording register superreg classes and
subreg classes. This is needed because when subreg extracts and
inserts get coalesced away, the virtual registers are left in
the correct subclass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68961 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
1aeb5dbe7ba14a4684f65f85f15f7d312c2eeeaf 13-Apr-2009 Dan Gohman <gohman@apple.com> Add a new TargetInstrInfo MachineInstr opcode, COPY_TO_SUBCLASS.
This will be used to replace things like X86's MOV32to32_.

Enhance ScheduleDAGSDNodesEmit to be more flexible and robust
in the presense of subregister superclasses and subclasses. It
can now cope with the definition of a virtual register being in
a subclass of a use.

Re-introduce the code for recording register superreg classes and
subreg classes. This is needed because when subreg extracts and
inserts get coalesced away, the virtual registers are left in
the correct subclass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68961 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
70f2f65aacdbc96fe158b2860b5f0bad075ee548 13-Apr-2009 Dan Gohman <gohman@apple.com> Don't abort on an aliasing physical register that does not have
a live interval. This is needed for some upcoming subreg changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68956 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
86a85d666feabdd3355acea01e0ef1e3fcd8a629 13-Apr-2009 Dan Gohman <gohman@apple.com> Don't abort on an aliasing physical register that does not have
a live interval. This is needed for some upcoming subreg changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68956 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9a77a92859b609a767d65b91ac7eb86a1a3ae680 13-Apr-2009 Dan Gohman <gohman@apple.com> When assigning a physical register to a MachineOperand, set
the subreg field to 0, since the subreg field is only used
for virtual register subregs. This doesn't change
current functionality; it just eliminates bogus noise from
debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68955 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
3126db2d78656ab6358080b25eee10f877343410 13-Apr-2009 Dan Gohman <gohman@apple.com> When assigning a physical register to a MachineOperand, set
the subreg field to 0, since the subreg field is only used
for virtual register subregs. This doesn't change
current functionality; it just eliminates bogus noise from
debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68955 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
6ed0e20eb2dee4b08d33917ba569ad448aa0f047 13-Apr-2009 Dan Gohman <gohman@apple.com> Add an assertion to verify that a copy was actually emitted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68953 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
6082c7ef89a9411194eb3f2a1f0338755d23ce06 13-Apr-2009 Dan Gohman <gohman@apple.com> Add an assertion to verify that a copy was actually emitted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68953 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
266c7bbbbcc4b326dea82e577de1a415d6acc23e 13-Apr-2009 Chris Lattner <sabre@nondot.org> Add a new "available_externally" linkage type. This is intended
to support C99 inline, GNU extern inline, etc. Related bugzilla's
include PR3517, PR3100, & PR2933. Nothing uses this yet, but it
appears to work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68940 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
achineFunction.cpp
6843344e1399eee254f39c3660e2b227c2511a9e 13-Apr-2009 Chris Lattner <sabre@nondot.org> Add a new "available_externally" linkage type. This is intended
to support C99 inline, GNU extern inline, etc. Related bugzilla's
include PR3517, PR3100, & PR2933. Nothing uses this yet, but it
appears to work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68940 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
achineFunction.cpp
36e3946ac2f30a0bda66538ef2b974b1c8fbdc97 12-Apr-2009 Chris Lattner <sabre@nondot.org> make UpdateValueMap handle the possiblity that we could be
copying into the right register, avoiding a copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68889 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
f0e7da2b3b5dd42770791b7f30d105c08321a93f 12-Apr-2009 Chris Lattner <sabre@nondot.org> make UpdateValueMap handle the possiblity that we could be
copying into the right register, avoiding a copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68889 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c5040ab6065d5c569a1af0848b6e672b22b174b7 12-Apr-2009 Chris Lattner <sabre@nondot.org> optimize FastISel::UpdateValueMap to avoid duplicate map lookups,
and make it return the assigned register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68888 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
bc846230e533883273d3a6d44b303ce421b6ba02 12-Apr-2009 Chris Lattner <sabre@nondot.org> optimize FastISel::UpdateValueMap to avoid duplicate map lookups,
and make it return the assigned register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68888 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c6fa3ff0bddca92e443ef9ff454d2a74cac867bd 11-Apr-2009 Dan Gohman <gohman@apple.com> Revert r68847. It breaks the build on non-Darwin targets, with this message
from the assembler:

Error: unknown pseudo-op: `.debug_inlined'


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68863 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
a82ffb5c9866520ace26792d8d15094c3ea520e9 11-Apr-2009 Dan Gohman <gohman@apple.com> Revert r68847. It breaks the build on non-Darwin targets, with this message
from the assembler:

Error: unknown pseudo-op: `.debug_inlined'


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68863 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
2057532679fc1045cfeb38b477ac9e749e6b1dd8 11-Apr-2009 Devang Patel <dpatel@apple.com> Keep track of inlined functions and their locations. This information is collected when nested llvm.dbg.func.start intrinsics are seen. (Right now, inliner removes nested llvm.dbg.func.start intrinisics during inlining.)

Create debug_inlined dwarf section using these information. This info is used by gdb, at least on Darwin, to enable better experience debugging inlined functions. See DwarfWriter.cpp for more information on structure of debug_inlined section.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68847 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
962aaafe60b3a60b3bd5b97a82a48da0fe4d41b9 11-Apr-2009 Devang Patel <dpatel@apple.com> Keep track of inlined functions and their locations. This information is collected when nested llvm.dbg.func.start intrinsics are seen. (Right now, inliner removes nested llvm.dbg.func.start intrinisics during inlining.)

Create debug_inlined dwarf section using these information. This info is used by gdb, at least on Darwin, to enable better experience debugging inlined functions. See DwarfWriter.cpp for more information on structure of debug_inlined section.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68847 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
03f0a2fba0e0ad80db4cebb977ec331c493637b7 10-Apr-2009 Devang Patel <dpatel@apple.com> DebugLabelFolder ruthlessly deletes redundant labels. However, sometimes the redundant labels is referenced by debug info somewhere else. This patch provies a way so that dwarf writer can mark labels as used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68813 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
9a72741914cb4717b53f5106f6a06fdd446a63ec 10-Apr-2009 Devang Patel <dpatel@apple.com> DebugLabelFolder ruthlessly deletes redundant labels. However, sometimes the redundant labels is referenced by debug info somewhere else. This patch provies a way so that dwarf writer can mark labels as used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68813 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
ec15bbfd2f8a3667313dcfa0f9a11497ae6732b8 10-Apr-2009 Bob Wilson <bob.wilson@apple.com> Clean up a bunch of whitespace issues and fix a comment typo.
No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68808 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2e958a4285feeac673a3837ea2fd36bd9402cbcf 10-Apr-2009 Bob Wilson <bob.wilson@apple.com> Clean up a bunch of whitespace issues and fix a comment typo.
No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68808 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
296185c264a47cadd52c8d3290a54837cc32cbe5 10-Apr-2009 Chris Lattner <sabre@nondot.org> fix two problems with machine sinking:
1. Sinking would crash when the first instruction of a block was
sunk due to iterator problems.
2. Instructions could be sunk to their current block, causing an
infinite loop.

This fixes PR3968


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68787 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
d990f57a4171a26b5c1b4e3b63581fe54fa11ad7 10-Apr-2009 Chris Lattner <sabre@nondot.org> fix two problems with machine sinking:
1. Sinking would crash when the first instruction of a block was
sunk due to iterator problems.
2. Instructions could be sunk to their current block, causing an
infinite loop.

This fixes PR3968


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68787 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
0355862f712ce23ebb82e9e9378e92ef3b34027b 10-Apr-2009 Dan Gohman <gohman@apple.com> Now that register classes have names, include the name in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
b646b51e9fb0d5faf8f3705cc1d0eab54afb782f 10-Apr-2009 Dan Gohman <gohman@apple.com> Now that register classes have names, include the name in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
7d16e85bfc2c6423c81ce87a177bf3b1b1012a04 10-Apr-2009 Bill Wendling <isanbard@gmail.com> Pass in the std::string parameter instead of returning it by value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68747 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
26a8ab932b9a48bf21af71cabbfe695d1554f1e4 10-Apr-2009 Bill Wendling <isanbard@gmail.com> Pass in the std::string parameter instead of returning it by value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68747 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
a6f02fbb7523535da75d27c113a0e308cb05ac8c 10-Apr-2009 Bill Wendling <isanbard@gmail.com> Constify getter methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68745 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
4226f4f0f9da548c575e6b7a423429627262529f 10-Apr-2009 Bill Wendling <isanbard@gmail.com> Constify getter methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68745 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
fc1665793e62eb4f26d24b8a19eecf59cd872e2a 10-Apr-2009 Dan Gohman <gohman@apple.com> Remove the obsolete SelectionDAG::getNodeValueTypes and simplify
code that uses it by using SelectionDAG::getVTList instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68744 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
ee03628d9fad683197b1839e23f23057e506de99 10-Apr-2009 Dan Gohman <gohman@apple.com> Remove the obsolete SelectionDAG::getNodeValueTypes and simplify
code that uses it by using SelectionDAG::getVTList instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68744 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
f34be827ac3bb257939e31575fcfc9ef27b94306 10-Apr-2009 Bill Wendling <isanbard@gmail.com> StringMap<DIE*>::iterator::first() returns a pointer to the first character of
the key. This will cause it to create a new std::string, which isn't
wanted. Instead, pass back the "const char*". Modify the EmitString() method to
take a "const char*".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68741 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
3f94b4106c44640306f2448ffad7a69aea665734 10-Apr-2009 Bill Wendling <isanbard@gmail.com> StringMap<DIE*>::iterator::first() returns a pointer to the first character of
the key. This will cause it to create a new std::string, which isn't
wanted. Instead, pass back the "const char*". Modify the EmitString() method to
take a "const char*".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68741 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
923838533a005154c3a30271aa3186a633102a9c 10-Apr-2009 Devang Patel <dpatel@apple.com> Silence unused variable warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68735 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
18dbad8536b3f4407f40fd71e937922337ac550e 10-Apr-2009 Devang Patel <dpatel@apple.com> Silence unused variable warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68735 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c30aa7b3de0ce8c37e9630e8e7a73cb83c808c62 10-Apr-2009 Chris Lattner <sabre@nondot.org> ignore register zero in isRegTiedToUseOperand, following the example of
isRegTiedToDefOperand. Thanks to Bob for pointing this out!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68734 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b1e84233e04bf86e8421be1502cb38b9822cf5a8 10-Apr-2009 Chris Lattner <sabre@nondot.org> ignore register zero in isRegTiedToUseOperand, following the example of
isRegTiedToDefOperand. Thanks to Bob for pointing this out!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68734 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
972bbac789d1ca00c39b258a6262286a3551da13 09-Apr-2009 Bill Wendling <isanbard@gmail.com> Use a StringMap instead of std::map for storing std::string->DIE* maps. This
gives a micro speedup in the Dwarf writer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68728 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e06da4494b282d63bb488d83443a6628e1dd567d 09-Apr-2009 Bill Wendling <isanbard@gmail.com> Use a StringMap instead of std::map for storing std::string->DIE* maps. This
gives a micro speedup in the Dwarf writer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68728 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
b396992f68711e473d0cae2ac9c04569f20147b4 09-Apr-2009 Devang Patel <dpatel@apple.com> llvm.dbg.func_start also defines beginning of function scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
212307165fb4a13be73ca36f6487dd43770127f1 09-Apr-2009 Devang Patel <dpatel@apple.com> llvm.dbg.func_start also defines beginning of function scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d9df5017040489303acb57bdd8697ef0f8bafc08 09-Apr-2009 Bob Wilson <bob.wilson@apple.com> Fix pr3954. The register scavenger asserts for inline assembly with
register destinations that are tied to source operands. The
TargetInstrDescr::findTiedToSrcOperand method silently fails for inline
assembly. The existing MachineInstr::isRegReDefinedByTwoAddr was very
close to doing what is needed, so this revision makes a few changes to
that method and also renames it to isRegTiedToUseOperand (for consistency
with the very similar isRegTiedToDefOperand and because it handles both
two-address instructions and inline assembly with tied registers).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68714 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
ostRASchedulerList.cpp
reAllocSplitting.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterScavenging.cpp
piller.cpp
aded995fd1ea26db2191622c7c1d352662c06b8d 09-Apr-2009 Bob Wilson <bob.wilson@apple.com> Fix pr3954. The register scavenger asserts for inline assembly with
register destinations that are tied to source operands. The
TargetInstrDescr::findTiedToSrcOperand method silently fails for inline
assembly. The existing MachineInstr::isRegReDefinedByTwoAddr was very
close to doing what is needed, so this revision makes a few changes to
that method and also renames it to isRegTiedToUseOperand (for consistency
with the very similar isRegTiedToDefOperand and because it handles both
two-address instructions and inline assembly with tied registers).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68714 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
ostRASchedulerList.cpp
reAllocSplitting.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterScavenging.cpp
piller.cpp
0c8382ce9a96e36325b17d242fd1af16564d8a85 09-Apr-2009 Chris Lattner <sabre@nondot.org> reg0 references are not real registers. This fixes a crash on the
attached testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68712 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
0d0e8a9831d6f4c9ea7cf329749ffa151e877789 09-Apr-2009 Chris Lattner <sabre@nondot.org> reg0 references are not real registers. This fixes a crash on the
attached testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68712 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
57fc82d409022e793446c1c5d7d6d8b0d7579f83 09-Apr-2009 Dan Gohman <gohman@apple.com> Generalize ExtendUsesToFormExtLoad to be usable for ANY_EXTEND,
in addition to ZERO_EXTEND and SIGN_EXTEND. Fix a bug in the
way it checked for live-out values, and simplify the way it
find users by using SDNode::use_iterator's (relatively) new
features. Also, make it slightly more permissive on targets
with free truncates.

In SelectionDAGBuild, avoid creating ANY_EXTEND nodes that are
larger than necessary. If the target's SwitchAmountTy has
enough bits, use it. This exposes the truncate to optimization
early, enabling more optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68670 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGBuild.cpp
2eaea5996426c98d09fbd200c756587abce1a11a 09-Apr-2009 Dan Gohman <gohman@apple.com> Generalize ExtendUsesToFormExtLoad to be usable for ANY_EXTEND,
in addition to ZERO_EXTEND and SIGN_EXTEND. Fix a bug in the
way it checked for live-out values, and simplify the way it
find users by using SDNode::use_iterator's (relatively) new
features. Also, make it slightly more permissive on targets
with free truncates.

In SelectionDAGBuild, avoid creating ANY_EXTEND nodes that are
larger than necessary. If the target's SwitchAmountTy has
enough bits, use it. This exposes the truncate to optimization
early, enabling more optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68670 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGBuild.cpp
8e5c0da84892649254def8782dc041539209d4db 09-Apr-2009 Dan Gohman <gohman@apple.com> Don't copy the operand of a SwitchInst into virtual registers as
eagerly. This helps avoid CopyToReg nodes in some cases where they
aren't needed, and also helps subsequent optimizer heuristics
in cases where the extra nodes would cause the node to appear
to have multiple results. This doesn't have a significant impact
currently; it'll help an upcoming change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ecb0ece7f75d85f3dd2a952fed979131534f9ebc 09-Apr-2009 Dan Gohman <gohman@apple.com> Don't copy the operand of a SwitchInst into virtual registers as
eagerly. This helps avoid CopyToReg nodes in some cases where they
aren't needed, and also helps subsequent optimizer heuristics
in cases where the extra nodes would cause the node to appear
to have multiple results. This doesn't have a significant impact
currently; it'll help an upcoming change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
75b2738d7397639490e6dca231335925f74b8fac 09-Apr-2009 Devang Patel <dpatel@apple.com> If subprogram type is not tagged as DW_TAG_subroutine_type then use it directly as a return value type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68647 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
6e199966ef24f2e79a85572b91303a371c76f071 09-Apr-2009 Devang Patel <dpatel@apple.com> If subprogram type is not tagged as DW_TAG_subroutine_type then use it directly as a return value type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68647 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
3d0355b825fa707f76dda05bd19730c096ae743c 08-Apr-2009 Duncan Sands <baldrick@free.fr> Soft float support for FREM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68614 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
05bb215cb10fab8a4da75fc78ff04623ccd0f688 08-Apr-2009 Duncan Sands <baldrick@free.fr> Soft float support for FREM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68614 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
7beb1ec2988d6d223714c6bcc239fb2a89db7f67 08-Apr-2009 Duncan Sands <baldrick@free.fr> Soft float support for undef. Reported by Xerxes RÃ¥nby.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68607 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
cf3ce0867ab1a6de36bbd59f5a9220c745a778f5 08-Apr-2009 Duncan Sands <baldrick@free.fr> Soft float support for undef. Reported by Xerxes RÃ¥nby.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68607 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
a118c2ee89842346ef2fd332c0fea6b931d79483 08-Apr-2009 Chris Lattner <sabre@nondot.org> change printStringChar to emit characters as unsigned char instead of char,
avoiding sign extension for the top octet. For "negative" chars, we'd print
stuff like:

.asciz "\702...
now we print:
.asciz "\302...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68577 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e2d4bf7738f0b4af58de7283543f600d1ca8bfc3 08-Apr-2009 Chris Lattner <sabre@nondot.org> change printStringChar to emit characters as unsigned char instead of char,
avoiding sign extension for the top octet. For "negative" chars, we'd print
stuff like:

.asciz "\702...
now we print:
.asciz "\302...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68577 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
97121ba2afb8d566ff1bf5c4e8fc5d4077940a7f 08-Apr-2009 Dan Gohman <gohman@apple.com> Implement support for using modeling implicit-zero-extension on x86-64
with SUBREG_TO_REG, teach SimpleRegisterCoalescing to coalesce
SUBREG_TO_REG instructions (which are similar to INSERT_SUBREG
instructions), and teach the DAGCombiner to take advantage of this on
targets which support it. This eliminates many redundant
zero-extension operations on x86-64.

This adds a new TargetLowering hook, isZExtFree. It's similar to
isTruncateFree, except it only applies to actual definitions, and not
no-op truncates which may not zero the high bits.

Also, this adds a new optimization to SimplifyDemandedBits: transform
operations like x+y into (zext (add (trunc x), (trunc y))) on targets
where all the casts are no-ops. In contexts where the high part of the
add is explicitly masked off, this allows the mask operation to be
eliminated. Fix the DAGCombiner to avoid undoing these transformations
to eliminate casts on targets where the casts are no-ops.

Also, this adds a new two-address lowering heuristic. Since
two-address lowering runs before coalescing, it helps to be able to
look through copies when deciding whether commuting and/or
three-address conversion are profitable.

Also, fix a bug in LiveInterval::MergeInClobberRanges. It didn't handle
the case that a clobber range extended both before and beyond an
existing live range. In that case, multiple live ranges need to be
added. This was exposed by the new subreg coalescing code.

Remove 2008-05-06-SpillerBug.ll. It was bugpoint-reduced, and the
spiller behavior it was looking for no longer occurrs with the new
instruction selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68576 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
4cedb1c3efcf949dd5c719a282a2ffadda9af200 08-Apr-2009 Dan Gohman <gohman@apple.com> Implement support for using modeling implicit-zero-extension on x86-64
with SUBREG_TO_REG, teach SimpleRegisterCoalescing to coalesce
SUBREG_TO_REG instructions (which are similar to INSERT_SUBREG
instructions), and teach the DAGCombiner to take advantage of this on
targets which support it. This eliminates many redundant
zero-extension operations on x86-64.

This adds a new TargetLowering hook, isZExtFree. It's similar to
isTruncateFree, except it only applies to actual definitions, and not
no-op truncates which may not zero the high bits.

Also, this adds a new optimization to SimplifyDemandedBits: transform
operations like x+y into (zext (add (trunc x), (trunc y))) on targets
where all the casts are no-ops. In contexts where the high part of the
add is explicitly masked off, this allows the mask operation to be
eliminated. Fix the DAGCombiner to avoid undoing these transformations
to eliminate casts on targets where the casts are no-ops.

Also, this adds a new two-address lowering heuristic. Since
two-address lowering runs before coalescing, it helps to be able to
look through copies when deciding whether commuting and/or
three-address conversion are profitable.

Also, fix a bug in LiveInterval::MergeInClobberRanges. It didn't handle
the case that a clobber range extended both before and beyond an
existing live range. In that case, multiple live ranges need to be
added. This was exposed by the new subreg coalescing code.

Remove 2008-05-06-SpillerBug.ll. It was bugpoint-reduced, and the
spiller behavior it was looking for no longer occurrs with the new
instruction selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68576 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
a49a671efe24aa6e2e9e2280cf714ef97a40f177 08-Apr-2009 Devang Patel <dpatel@apple.com> Revert prev. patch for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68569 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
6d3db037bbc4aaa6631f4b001e644238b71d24e6 08-Apr-2009 Devang Patel <dpatel@apple.com> Revert prev. patch for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68569 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
caf6129aba729cc6b085e3271c94af6fb33baf4d 08-Apr-2009 Devang Patel <dpatel@apple.com> Right now DBG_LABEL are required for llvm.dbg.region_start and llvm.dbg.region_end in non-fast mode also.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
4e1bcaaa9f36fdc2563733e37df516cf14479240 08-Apr-2009 Devang Patel <dpatel@apple.com> Right now DBG_LABEL are required for llvm.dbg.region_start and llvm.dbg.region_end in non-fast mode also.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
4fd552880c9f42f117bd79929ea0179f99bd6bb7 07-Apr-2009 Dan Gohman <gohman@apple.com> Don't attempt to handle aggregate argument values in FastISel; let
SelectionDAG do those. This fixes PR3955.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
09532df84390ed3a68f551033f38b3bee755d349 07-Apr-2009 Dan Gohman <gohman@apple.com> Don't attempt to handle aggregate argument values in FastISel; let
SelectionDAG do those. This fixes PR3955.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
f50c7981ae9b81f1212d72a06d1c05e20d0559af 03-Apr-2009 Dan Gohman <gohman@apple.com> Fix a TargetLowering optimization so that it doesn't duplicate
loads when an input node has multiple uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
563db99a7e374e4498c62cc7705bd57f269c3878 03-Apr-2009 Dan Gohman <gohman@apple.com> Fix a TargetLowering optimization so that it doesn't duplicate
loads when an input node has multiple uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
8f9643f0f768d5dcff0ffea1de6191dba1b5b083 03-Apr-2009 Dan Gohman <gohman@apple.com> Delete ISD::INSERT_SUBREG and ISD::EXTRACT_SUBREG, which are unused.
Note that these are distinct from TargetInstrInfo::INSERT_SUBREG
and TargetInstrInfo::EXTRACT_SUBREG, which are used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
dc7c052506a20c64e2d5f8eff6478ff1370063e8 03-Apr-2009 Dan Gohman <gohman@apple.com> Delete ISD::INSERT_SUBREG and ISD::EXTRACT_SUBREG, which are unused.
Note that these are distinct from TargetInstrInfo::INSERT_SUBREG
and TargetInstrInfo::EXTRACT_SUBREG, which are used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
5274a4afb720858bf1ab927fc90068f1a8f12eb2 02-Apr-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> To convert the StopPoint insn into an assembler directive by ISel, we need to have access to the line number field. So we convert that info as an operand by custom handling DBG_STOPPOINT in legalize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68329 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ec7cef48d6cfd4b864b5b815f0773806d6ac15dc 02-Apr-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> To convert the StopPoint insn into an assembler directive by ISel, we need to have access to the line number field. So we convert that info as an operand by custom handling DBG_STOPPOINT in legalize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68329 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6fb2168aaed06e4685d064b6f63dc4c668b42728 31-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fully general expansion of integer shift of any size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68134 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
dd72a3fc2a15a0e8e2fec286ff97ac5c9e349542 31-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fully general expansion of integer shift of any size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68134 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
968dc7a2077d5c4a0b2fca9810b0fdf9cd62991b 31-Mar-2009 Dan Gohman <gohman@apple.com> Reapply 68073, with fixes. EH Landing-pad basic blocks are not
entered via fall-through. Don't miss fallthroughs from blocks
terminated by conditional branches. Also, move
isOnlyReachableByFallthrough out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68129 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
d38f8766fa87a60c59fa28877702d0e733d70fa9 31-Mar-2009 Dan Gohman <gohman@apple.com> Reapply 68073, with fixes. EH Landing-pad basic blocks are not
entered via fall-through. Don't miss fallthroughs from blocks
terminated by conditional branches. Also, move
isOnlyReachableByFallthrough out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68129 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
456e281c11914034558f9878f88688ab7873647a 31-Mar-2009 Dan Gohman <gohman@apple.com> Minor top-level comment fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68113 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
f17684ec1e0a48745c7f5dc5b5192d490f743399 31-Mar-2009 Dan Gohman <gohman@apple.com> Minor top-level comment fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68113 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
e67f5e42734199a1f4771773417699262491eb86 31-Mar-2009 Bill Wendling <isanbard@gmail.com> Oy! When reverting r68073, I added in experimental code. Sorry...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68099 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
piller.h
irtRegMap.cpp
irtRegMap.h
fbdad53f9e2f40ef0624390eef0ea3ccef782f71 31-Mar-2009 Bill Wendling <isanbard@gmail.com> Oy! When reverting r68073, I added in experimental code. Sorry...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68099 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
piller.h
irtRegMap.cpp
irtRegMap.h
696a1307ba5e98fe813d21cecb9dbfd72be8562c 31-Mar-2009 Owen Anderson <resistor@mac.com> Remove the "fast" cases for spill and restore point determination, as these were subtlely wrong in obscure cases. Patch the testcase
to account for this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68093 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
99a19b6314ac11b77e643309e57150d5a38c1e40 31-Mar-2009 Owen Anderson <resistor@mac.com> Remove the "fast" cases for spill and restore point determination, as these were subtlely wrong in obscure cases. Patch the testcase
to account for this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68093 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
8fe00540fc6e1531d909d0688cc75a77b7dfa330 31-Mar-2009 Bill Wendling <isanbard@gmail.com> Revert r68073. It's causing a failure in the Apple-style builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68092 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
piller.h
irtRegMap.cpp
irtRegMap.h
9193518e774925af5b64215b71d939337db5b1fb 31-Mar-2009 Bill Wendling <isanbard@gmail.com> Revert r68073. It's causing a failure in the Apple-style builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68092 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
piller.h
irtRegMap.cpp
irtRegMap.h
07c26ee87e4060f487867f1e283801bd8ced62d1 31-Mar-2009 Dan Gohman <gohman@apple.com> Fix live-out reg logic to not insert over-aggressive AssertZExt
instructions. This fixes lua.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68083 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
133762779dc3727a80f73f2d03eebe3bc0853695 31-Mar-2009 Dan Gohman <gohman@apple.com> Fix live-out reg logic to not insert over-aggressive AssertZExt
instructions. This fixes lua.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68083 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
e6f350d7558f2db6c39c0a9fc8beafb796d9919a 30-Mar-2009 Evan Cheng <evan.cheng@apple.com> Turn a 2-address instruction into a 3-address one when it's profitable even if the two-address operand is killed.
e.g.
%reg1024<def> = MOV r1
%reg1025<def> = ADD %reg1024, %reg1026
r0 = MOV %reg1025

If it's not possible / profitable to commute ADD, then turning ADD into a LEA saves a copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68065 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
dd21b3f323e45e7729a09840637c418d3470111b 30-Mar-2009 Evan Cheng <evan.cheng@apple.com> Turn a 2-address instruction into a 3-address one when it's profitable even if the two-address operand is killed.
e.g.
%reg1024<def> = MOV r1
%reg1025<def> = ADD %reg1024, %reg1026
r0 = MOV %reg1025

If it's not possible / profitable to commute ADD, then turning ADD into a LEA saves a copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68065 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
fd302b7056b9fab0b54f2fcad8e942500de2a50e 30-Mar-2009 Bill Wendling <isanbard@gmail.com> Balance out quote in debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68059 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
a5f5ea9e330283b0a31925eba368a550d5eef1fb 30-Mar-2009 Bill Wendling <isanbard@gmail.com> Balance out quote in debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68059 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
430d423e4b85ab6bd008874e8db3c12adabfc39f 30-Mar-2009 Bill Wendling <isanbard@gmail.com> Fix grammar-o in comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68057 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0e151d2dab8d38113b62a089c2b101f80d7ebd4f 30-Mar-2009 Bill Wendling <isanbard@gmail.com> Fix grammar-o in comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68057 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
6d1b89e74f98470d05666ca9f59a8ec5d04b5eb4 30-Mar-2009 Dan Gohman <gohman@apple.com> Constify arguments in isSuccessor and isLayoutSuccessor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68054 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
bca75228dacc438232f07241753249fe79cd21c9 30-Mar-2009 Dan Gohman <gohman@apple.com> Constify arguments in isSuccessor and isLayoutSuccessor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68054 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
004e27cc1bba070f013589cc8e434b03589c3c22 29-Mar-2009 Duncan Sands <baldrick@free.fr> Fix PR3899: add support for extracting floats from vectors
when using -soft-float.
Based on a patch by Jakob Stoklund Olesen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67996 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
754fad1088715119c7a5b404548582bde7d8419e 29-Mar-2009 Duncan Sands <baldrick@free.fr> Fix PR3899: add support for extracting floats from vectors
when using -soft-float.
Based on a patch by Jakob Stoklund Olesen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67996 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
11ff97801b93af0d36244fd5877b1552cdfa0a86 28-Mar-2009 Arnold Schwaighofer <arnold.schwaighofer@gmail.com> Make check in CheckTailCallReturnConstraints for ignorable instructions between
a CALL and a RET node more generic. Add a test for tail calls with a void
return.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67943 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e46f5508dcf45c7f4833913a49dfa3cd95ea74b3 28-Mar-2009 Arnold Schwaighofer <arnold.schwaighofer@gmail.com> Make check in CheckTailCallReturnConstraints for ignorable instructions between
a CALL and a RET node more generic. Add a test for tail calls with a void
return.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67943 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e75fd69f15dc1b35d20b12d0e765ea6f2b9ffe0b 28-Mar-2009 Arnold Schwaighofer <arnold.schwaighofer@gmail.com> Enable tail call optimization for functions that return a struct (bug 3664) and for functions that return types that need extending (e.g i1).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
219f13d4d668ce168c20767ce52793359ad2e3f9 28-Mar-2009 Arnold Schwaighofer <arnold.schwaighofer@gmail.com> Enable tail call optimization for functions that return a struct (bug 3664) and for functions that return types that need extending (e.g i1).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
0b0cd9113af42c422c829563c3b12e6e52bd2d79 28-Mar-2009 Evan Cheng <evan.cheng@apple.com> Optimize some 64-bit multiplication by constants into two lea's or one lea + shl since imulq is slow (latency 5). e.g.
x * 40
=>
shlq $3, %rdi
leaq (%rdi,%rdi,4), %rax

This has the added benefit of allowing more multiply to be folded into addressing mode. e.g.
a * 24 + b
=>
leaq (%rdi,%rdi,2), %rax
leaq (%rsi,%rax,8), %rax


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
04ecee185c120cc4a5bcdcbef9c66ba3f017e136 28-Mar-2009 Evan Cheng <evan.cheng@apple.com> Optimize some 64-bit multiplication by constants into two lea's or one lea + shl since imulq is slow (latency 5). e.g.
x * 40
=>
shlq $3, %rdi
leaq (%rdi,%rdi,4), %rax

This has the added benefit of allowing more multiply to be folded into addressing mode. e.g.
a * 24 + b
=>
leaq (%rdi,%rdi,2), %rax
leaq (%rsi,%rax,8), %rax


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a80efceb93211a22e13dfc68198da4a25c1a7762 28-Mar-2009 Dan Gohman <gohman@apple.com> Fix what surely must be a copy+pasto.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67881 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d38e97f8f5604a6e487633e94b489647c49ad733 28-Mar-2009 Dan Gohman <gohman@apple.com> Fix what surely must be a copy+pasto.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67881 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
84d08db733f64d9c3da4d534a3c9b553e0f77ed8 28-Mar-2009 Dan Gohman <gohman@apple.com> Initialize LiveOutInfo's APInt members to zero, as APInt's
default constructor produces an uninitialized APInt.
This fixes PR3896.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.h
c6a39145b11356be3fcc21f17b4f2e7e27b41408 28-Mar-2009 Dan Gohman <gohman@apple.com> Initialize LiveOutInfo's APInt members to zero, as APInt's
default constructor produces an uninitialized APInt.
This fixes PR3896.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.h
ea4d351fc690bd6558fe9ca61db88ee809f0572f 27-Mar-2009 John Mosby <ojomojo@gmail.com> Shrink wrapping in PEI: initial release. Finishing development, enable with --shrink-wrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67828 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
d629ccf4289831de1ae354f8ec1cce0c201a4853 27-Mar-2009 John Mosby <ojomojo@gmail.com> Shrink wrapping in PEI: initial release. Finishing development, enable with --shrink-wrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67828 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
b98bbb7597495fb401b020679a94389298175506 26-Mar-2009 Owen Anderson <resistor@mac.com> Don't assign a new stack slot if the pre-alloc splitter already assigned one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67764 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5bfe6e8673cc52383c0184fe08bdb39a70625630 26-Mar-2009 Owen Anderson <resistor@mac.com> Don't assign a new stack slot if the pre-alloc splitter already assigned one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67764 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a02a3dda5652995afaaf11148c11d98c9b9d908f 26-Mar-2009 Bill Wendling <isanbard@gmail.com> Pull transform from target-dependent code into target-independent code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6ee0c45ef81ed447d4624f2dbc5b36c9f729f2e2 26-Mar-2009 Bill Wendling <isanbard@gmail.com> Pull transform from target-dependent code into target-independent code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3927f438b5a9fdadc17257802b09430b16d225f9 25-Mar-2009 Evan Cheng <evan.cheng@apple.com> Revert 67132. This is breaking some objective-c apps.
Also fixes SDISel so it *does not* force promote return value if the function is not marked signext / zeroext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
025098e3b1305b511b9d8b5286996c68e52b4dde 25-Mar-2009 Evan Cheng <evan.cheng@apple.com> Revert 67132. This is breaking some objective-c apps.
Also fixes SDISel so it *does not* force promote return value if the function is not marked signext / zeroext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
beaec4cbf6cfd756084eff1ee2ad18ee17c33284 25-Mar-2009 Dale Johannesen <dalej@apple.com> When optimizing with debug info, don't keep the
stoppoint nodes around until Legalize; doing this
imposed an ordering on a sequence of loads that
came from different lines, interfering with scheduling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
db7b8a14081487faf549a0bf112d379ff8d8a664 25-Mar-2009 Dale Johannesen <dalej@apple.com> When optimizing with debug info, don't keep the
stoppoint nodes around until Legalize; doing this
imposed an ordering on a sequence of loads that
came from different lines, interfering with scheduling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
42bf74be1402df7409efbea089310d4c276fde37 25-Mar-2009 Evan Cheng <evan.cheng@apple.com> CodeGen still defaults to non-verbose asm, but llc now overrides it and default to verbose.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67668 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
LVMTargetMachine.cpp
42ceb47150b2d423f9668c7b128b90927ac22cb0 25-Mar-2009 Evan Cheng <evan.cheng@apple.com> CodeGen still defaults to non-verbose asm, but llc now overrides it and default to verbose.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67668 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
LVMTargetMachine.cpp
86bda4174a90eff1305e51b0407a47a8dcecbe7b 25-Mar-2009 Devang Patel <dpatel@apple.com> Do not ignore DW_TAG_class_type!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67661 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
093536027f0958cae15fde9db70042826cb6f718 25-Mar-2009 Devang Patel <dpatel@apple.com> Do not ignore DW_TAG_class_type!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67661 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
78a5bd5dbd4d99d916c69d89ceaabd83c0e52469 24-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3845: Avoid stale MachineInstruction pointer reference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67649 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
834b8776328d456574642e7cc6657aa57931fc9f 24-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3845: Avoid stale MachineInstruction pointer reference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67649 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
e2f7bf8e2d273e94487f06094e3619250a485b51 24-Mar-2009 Chris Lattner <sabre@nondot.org> more tidying: name the components of PhysReg in the case when
the target constraint specifies a specific physreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67618 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
2c723b76a8813224c31d1e66c690ca2c4736afe6 24-Mar-2009 Chris Lattner <sabre@nondot.org> more tidying: name the components of PhysReg in the case when
the target constraint specifies a specific physreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67618 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
b3b4484e3d9e36c4c24a5409f2272a806b7af908 24-Mar-2009 Chris Lattner <sabre@nondot.org> Tidy a bit more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67617 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
2cfec3239cbf4f7c18d8ffe3a29450e3d1740d7d 24-Mar-2009 Chris Lattner <sabre@nondot.org> Tidy a bit more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67617 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
fc9d161f16933498d572463edf952c03bc5b1ec0 24-Mar-2009 Chris Lattner <sabre@nondot.org> simplify this code a bit now that "allocation to a vreg class" can never
fail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67616 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
94b006b29b6e3ebf6b12f44cb944e061bdadfab4 24-Mar-2009 Chris Lattner <sabre@nondot.org> simplify this code a bit now that "allocation to a vreg class" can never
fail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67616 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
8f4aa333d02d0f48f90f4604d894a73ee53edcb5 24-Mar-2009 Dan Gohman <gohman@apple.com> Minor compile-time optimization; don't bother checking
canClobberPhysRegDefs if the successor node doesn't
clobber any physical registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67587 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
8d14eecb05cad7ac34eb6661546af4d5de88be4f 24-Mar-2009 Dan Gohman <gohman@apple.com> Minor compile-time optimization; don't bother checking
canClobberPhysRegDefs if the successor node doesn't
clobber any physical registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67587 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
002b44f1d7c0b301b78dec1f24d406d4b351fdaa 24-Mar-2009 Dan Gohman <gohman@apple.com> Add a pre-pass to the burr-list scheduler which makes adjustments to
help out the register pressure reduction heuristics in the case of
nodes with multiple uses. Currently this uses very conservative
heuristics, so it doesn't have a broad impact, but in cases where it
does help it can make a big difference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67586 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
190f233ef60b1dba27124bcc839cdb107926e74a 24-Mar-2009 Dan Gohman <gohman@apple.com> Add a pre-pass to the burr-list scheduler which makes adjustments to
help out the register pressure reduction heuristics in the case of
nodes with multiple uses. Currently this uses very conservative
heuristics, so it doesn't have a broad impact, but in cases where it
does help it can make a big difference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67586 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f1c0ae9de5365a578fbdfebe4625fb281b0be592 24-Mar-2009 Evan Cheng <evan.cheng@apple.com> Do not emit comments unless -asm-verbose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67580 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
11db8142e9de9bec53cf8dda1a2ac5eb85796805 24-Mar-2009 Evan Cheng <evan.cheng@apple.com> Do not emit comments unless -asm-verbose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67580 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5d088fee7cf20309669f85d2027e2b010b40025b 23-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix a bug in spill weight computation. If the alias is a super-register, and the super-register is in the register class we are trying to allocate. Then add the weight to all sub-registers of the super-register even if they are not aliases.
e.g. allocating for GR32, bh is not used, updating bl spill weight.
bl should get the same spill weight otherwise it will be choosen
as a spill candidate since spilling bh doesn't make ebx available.
This fix PR2866.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67574 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
c8a4a885604902d9372df1d64421a8a547ddddc6 23-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix a bug in spill weight computation. If the alias is a super-register, and the super-register is in the register class we are trying to allocate. Then add the weight to all sub-registers of the super-register even if they are not aliases.
e.g. allocating for GR32, bh is not used, updating bl spill weight.
bl should get the same spill weight otherwise it will be choosen
as a spill candidate since spilling bh doesn't make ebx available.
This fix PR2866.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67574 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
1b25cb2416c46a6cebf2a6c52235e9fe46a10d11 23-Mar-2009 Dale Johannesen <dalej@apple.com> Fix internal representation of fp80 to be the
same as a normal i80 {low64, high16} rather
than its own {high64, low16}. A depressing number
of places know about this; I think I got them all.
Bitcode readers and writers convert back to the old
form to avoid breaking compatibility.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67562 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0a92eac9ca4726f6abae09da011f6b6c708efb42 23-Mar-2009 Dale Johannesen <dalej@apple.com> Fix internal representation of fp80 to be the
same as a normal i80 {low64, high16} rather
than its own {high64, low16}. A depressing number
of places know about this; I think I got them all.
Bitcode readers and writers convert back to the old
form to avoid breaking compatibility.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67562 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
fa9afef7eaa0865fb9f3489a68a04332b232ed82 23-Mar-2009 Dan Gohman <gohman@apple.com> When unfolding a load during scheduling, the new operator node has
a data dependency on the load node, so it really needs a
data-dependence edge to the load node, even if the load previously
existed.

And add a few comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67554 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f30c6d266f1b764cc54d81a9233fca50a16436cc 23-Mar-2009 Dan Gohman <gohman@apple.com> When unfolding a load during scheduling, the new operator node has
a data dependency on the load node, so it really needs a
data-dependence edge to the load node, even if the load previously
existed.

And add a few comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67554 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
2824a655509577127d221eecd1425de196f80320 23-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3391 and PR3864. Reg allocator infinite looping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67544 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
973473b30002b407cea635e0a44029265490496a 23-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3391 and PR3864. Reg allocator infinite looping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67544 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
8cccf0ef0ced7f4d75ca574b596036a9b6cd4315 23-Mar-2009 Dan Gohman <gohman@apple.com> Don't set SUnit::hasPhysRegDefs to true unless the defs are
actually have uses, which reflects the way it's used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67540 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
945014267f0187b7921472ab05e576b1354c07fb 23-Mar-2009 Dan Gohman <gohman@apple.com> Don't set SUnit::hasPhysRegDefs to true unless the defs are
actually have uses, which reflects the way it's used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67540 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
a5c8ae233ebaef270b8fa96565ca7bf4fdcb3e15 23-Mar-2009 Dan Gohman <gohman@apple.com> Fix canClobberPhysRegDefs to check all SDNodes grouped together
in an SUnit, instead of just the first one. This fix is needed
by some upcoming scheduler changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67531 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
c205518ef378865564b65ed216f27eb74763b5dc 23-Mar-2009 Dan Gohman <gohman@apple.com> Fix canClobberPhysRegDefs to check all SDNodes grouped together
in an SUnit, instead of just the first one. This fix is needed
by some upcoming scheduler changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67531 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3974667c1a6d48686e92f85bc4463bb239af7442 23-Mar-2009 Dan Gohman <gohman@apple.com> Add a new bit to SUnit to record whether a node has implicit physreg
defs, regardless of whether they are actually used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67528 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
b872c7c9784c3b9a6c965379ed3ed2115c55f5b3 23-Mar-2009 Dan Gohman <gohman@apple.com> Add a new bit to SUnit to record whether a node has implicit physreg
defs, regardless of whether they are actually used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67528 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
f871ccb853a2ccbe8675c912330c041b318be8cd 23-Mar-2009 Dan Gohman <gohman@apple.com> Now that errs() is properly non-buffered, there's no need to
explicitly flush it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67526 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
seudoSourceValue.cpp
electionDAG/SelectionDAG.cpp
e7d7b0fd48792ea131995c5d55002ee14fdb6bc5 23-Mar-2009 Dan Gohman <gohman@apple.com> Now that errs() is properly non-buffered, there's no need to
explicitly flush it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67526 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
seudoSourceValue.cpp
electionDAG/SelectionDAG.cpp
fb11288109329cb736d9f49769581a0d0c23fe19 23-Mar-2009 Evan Cheng <evan.cheng@apple.com> Model inline asm constraint which ties an input to an output register as machine operand TIED_TO constraint. This eliminated the need to pre-allocate registers for these. This also allows register allocator can eliminate the unneeded copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67512 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
electionDAG/SelectionDAGBuild.cpp
woAddressInstructionPass.cpp
2682ea07a439718636fb7f2d841dc1095331244f 23-Mar-2009 Evan Cheng <evan.cheng@apple.com> Model inline asm constraint which ties an input to an output register as machine operand TIED_TO constraint. This eliminated the need to pre-allocate registers for these. This also allows register allocator can eliminate the unneeded copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67512 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
electionDAG/SelectionDAGBuild.cpp
woAddressInstructionPass.cpp
7d6d4b360fb8c1895b57eeb1284e792f953ea7ee 23-Mar-2009 Evan Cheng <evan.cheng@apple.com> Do not fold away subreg_to_reg if the source register has a sub-register index. That means the source register is taking a sub-register of a larger register. e.g. On x86
%RAX<def> = ...
%RAX<def> = SUBREG_TO_REG 0, %EAX:3<kill>, 3
The first def is defining RAX, not EAX so the top bits were not zero-extended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67511 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
e8746322b19a60d50897ea85943a13a6ce8758e7 23-Mar-2009 Evan Cheng <evan.cheng@apple.com> Do not fold away subreg_to_reg if the source register has a sub-register index. That means the source register is taking a sub-register of a larger register. e.g. On x86
%RAX<def> = ...
%RAX<def> = SUBREG_TO_REG 0, %EAX:3<kill>, 3
The first def is defining RAX, not EAX so the top bits were not zero-extended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67511 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
db95fa131a229652f925794ca7a5b84e9490050b 20-Mar-2009 Dan Gohman <gohman@apple.com> Simplify this code; use a while instead of an if and a do-while.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67400 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
8c8d09e7eb3e6ea2276d24ba009831d11bb62a9d 20-Mar-2009 Dan Gohman <gohman@apple.com> Simplify this code; use a while instead of an if and a do-while.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67400 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
697cbbfb00c318f98d6eb51945f077e2bfe8781e 20-Mar-2009 Evan Cheng <evan.cheng@apple.com> For inline asm output operand that matches an input. Encode the input operand index in the high bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67387 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
9216740fcc17e9442241a19034e9c1ad9cd65bc2 20-Mar-2009 Evan Cheng <evan.cheng@apple.com> For inline asm output operand that matches an input. Encode the input operand index in the high bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67387 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
91520ea5854d3506b95a3d7a9a2b1f7cbb9a1c87 20-Mar-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Fixed build warnings for unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67372 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
3178133b59294f53b19d2c4ff487ba56d72802dd 20-Mar-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Fixed build warnings for unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67372 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
b169426272b85ce28a9a56d13154e61b158fc47a 20-Mar-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Fixed the comment. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67370 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
dd5d7fe66802b6687af835c57b17a06c37d5f315 20-Mar-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Fixed the comment. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67370 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
8fc2d0ee8dd4e077ee90a1fcc36fd0101c2947a2 20-Mar-2009 Chris Lattner <sabre@nondot.org> Apply the patch requested in PR3846.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67364 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
1af9ebc6907e9c7fe66263bc7e4ff0a7609270fa 20-Mar-2009 Chris Lattner <sabre@nondot.org> Apply the patch requested in PR3846.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67364 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
48fe63526e35ddaee7e98879596a569911f41319 20-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Fix the Win32 VS2008 build:
- Make type declarations match the struct/class keyword of the definition.
- Move AddSignalHandler into the namespace where it belongs.
- Correctly call functions from template base.
- Some other small changes.
With this patch, LLVM and Clang should build properly and with far less noise under VS2008.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67347 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
2aa4c4e0b21990367ef15cd6d42ab9f9dd9ff29f 20-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Fix the Win32 VS2008 build:
- Make type declarations match the struct/class keyword of the definition.
- Move AddSignalHandler into the namespace where it belongs.
- Correctly call functions from template base.
- Some other small changes.
With this patch, LLVM and Clang should build properly and with far less noise under VS2008.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67347 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a24752ff43dc1ad8c18c5d9e78549c45f62b980e 19-Mar-2009 Evan Cheng <evan.cheng@apple.com> Added MachineInstr::isRegTiedToDefOperand to check for two-addressness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67335 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
egAllocLocal.cpp
piller.cpp
woAddressInstructionPass.cpp
48555e87376e895bb596dd3f4879c6eb3f46ce4a 19-Mar-2009 Evan Cheng <evan.cheng@apple.com> Added MachineInstr::isRegTiedToDefOperand to check for two-addressness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67335 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
egAllocLocal.cpp
piller.cpp
woAddressInstructionPass.cpp
5e6345bde0f3a6405ec1ea852f1e5e5df8642f9c 19-Mar-2009 Chris Lattner <sabre@nondot.org> Fix PEI to not walk off the start of a block when an updated instruction
is the first in its block. This is PR3842.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67304 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
10a9d0cf6a5549593899e683a3644954a62530d3 19-Mar-2009 Chris Lattner <sabre@nondot.org> Fix PEI to not walk off the start of a block when an updated instruction
is the first in its block. This is PR3842.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67304 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
aa9df0b0c3cef33514095bde2eedead986677955 18-Mar-2009 Mon P Wang <wangmp@apple.com> Added missing support for widening when splitting an unary op (PR3683)
and expanding a bit convert (PR3711). In both cases, we extract the
valid part of the widen vector and then do the conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67175 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
1b127eaad4867eb33176b5d65c0f043cf015e365 18-Mar-2009 Mon P Wang <wangmp@apple.com> Added missing support for widening when splitting an unary op (PR3683)
and expanding a bit convert (PR3711). In both cases, we extract the
valid part of the widen vector and then do the conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67175 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
152932b71c488a6522c541f847eb3081cffb3793 18-Mar-2009 Rafael Espindola <rafael.espindola@gmail.com> Don't force promotion of return arguments on the callee.
Some architectures (like x86) don't require it.
This fixes bug 3779.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67132 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
0c9872bc2ab82f4f3f105962da546679be3f2eb7 18-Mar-2009 Rafael Espindola <rafael.espindola@gmail.com> Don't force promotion of return arguments on the callee.
Some architectures (like x86) don't require it.
This fixes bug 3779.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67132 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
0b18e59336dcb18e036540dd667fed8d17c3cc09 17-Mar-2009 Chris Lattner <sabre@nondot.org> Fix codegen to compute the size of an allocation by multiplying the
size by the array amount as an i32 value instead of promoting from
i32 to i64 then doing the multiply. Not doing this broke wrap-around
assumptions that the optimizers (validly) made. The ultimate real
fix for this is to introduce i64 version of alloca and remove mallocinst.

This fixes PR3829


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67093 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
6ccad3bf0602e4771d53bb7d81ad26f37a6ea285 17-Mar-2009 Chris Lattner <sabre@nondot.org> Fix codegen to compute the size of an allocation by multiplying the
size by the array amount as an i32 value instead of promoting from
i32 to i64 then doing the multiply. Not doing this broke wrap-around
assumptions that the optimizers (validly) made. The ultimate real
fix for this is to introduce i64 version of alloca and remove mallocinst.

This fixes PR3829


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67093 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
12a9dc8c14301ae199f2c2d6ab55cc5c995101cd 17-Mar-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> r66870 missed this out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67082 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
78224b1f53d916863f4882c5c1a5fe2a6c57c700 17-Mar-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> r66870 missed this out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67082 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
a5fec0dba34206274041543b5924d2565fb10f9b 17-Mar-2009 Duncan Sands <baldrick@free.fr> Reapply r67049, with the test adjusted for darwin
(which produces "call L_f$stub" rather than "call f").


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67079 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
5ce58d008f2f60dd51f2ad353db0fba856068254 17-Mar-2009 Duncan Sands <baldrick@free.fr> Reapply r67049, with the test adjusted for darwin
(which produces "call L_f$stub" rather than "call f").


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67079 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
93b7415f4cc9a83126f1d89b2d2f51a204b09dd6 17-Mar-2009 Mon P Wang <wangmp@apple.com> Fix a problem with DAGCombine where we were building an illegal build
vector shuffle mask. Forced the mask to be built using i32. Note: this will
be irrelevant once vector_shuffle no longer takes a build vector for the
shuffle mask.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67076 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c9f167263d9a4e1a9b71497593b3c9bc42280eb5 17-Mar-2009 Mon P Wang <wangmp@apple.com> Fix a problem with DAGCombine where we were building an illegal build
vector shuffle mask. Forced the mask to be built using i32. Note: this will
be irrelevant once vector_shuffle no longer takes a build vector for the
shuffle mask.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67076 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e47b0089d92497e7726516610ff6f925d6828569 17-Mar-2009 Evan Cheng <evan.cheng@apple.com> Spiller may unfold load / mod / store instructions as an optimization when the would be loaded value is available in a register. It needs to check if it's legal to clobber the register. Also, the register can contain values of multiple spill slots, make sure to check all instead of just the one being unfolded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67068 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
piller.h
b6add9bb73de38c021bebe858f088382396831df 17-Mar-2009 Evan Cheng <evan.cheng@apple.com> Spiller may unfold load / mod / store instructions as an optimization when the would be loaded value is available in a register. It needs to check if it's legal to clobber the register. Also, the register can contain values of multiple spill slots, make sure to check all instead of just the one being unfolded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67068 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
piller.h
db14d63ceac6d667dc1669d199c01a8d3246203c 16-Mar-2009 Bill Wendling <isanbard@gmail.com> --- Reverse-merging (from foreign repository) r67049 into '.':
U test/CodeGen/X86/2009-03-13-PHIElimBug.ll
D test/CodeGen/X86/2009-03-16-PHIElimInLPad.ll
U lib/CodeGen/PHIElimination.cpp

r67049 was causing this failure:

Running /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/X86/dg.exp ...
FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/X86/2009-03-13-PHIElimBug.ll for PR3784
Failed with exit(1) at line 1
while running: llvm-as < /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/X86/2009-03-13-PHIElimBug.ll | llc -march=x86 | /usr/bin/grep -A 2 {call f} | /usr/bin/grep movl
child process exited abnormally


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67051 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
a5c9c245bc37529d3e58c4a2557dc570dc981bbc 16-Mar-2009 Bill Wendling <isanbard@gmail.com> --- Reverse-merging (from foreign repository) r67049 into '.':
U test/CodeGen/X86/2009-03-13-PHIElimBug.ll
D test/CodeGen/X86/2009-03-16-PHIElimInLPad.ll
U lib/CodeGen/PHIElimination.cpp

r67049 was causing this failure:

Running /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/X86/dg.exp ...
FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/X86/2009-03-13-PHIElimBug.ll for PR3784
Failed with exit(1) at line 1
while running: llvm-as < /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/X86/2009-03-13-PHIElimBug.ll | llc -march=x86 | /usr/bin/grep -A 2 {call f} | /usr/bin/grep movl
child process exited abnormally


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67051 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
dfec24c87711bac1564465742012d47bd5984c30 16-Mar-2009 Duncan Sands <baldrick@free.fr> Tweak the fix for PR3784: be less sensitive about just
how invokes are set up. The fix could be disturbed by
register copies coming after the EH_LABEL, and also didn't
behave quite right when it was the invoke result that
was used in a phi node. Also (see new testcase) fix
another phi elimination bug while there: register copies
in the landing pad need to come after the EH_LABEL, because
that's where execution branches to when unwinding. If they
come before the EH_LABEL then they will never be executed...
Also tweak the original testcase so it doesn't use a no-longer
existing counter.
The accumulated phi elimination changes fix two of seven Ada
testsuite failures that turned up after landing pad critical
edge splitting was turned off. So there's probably more to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67049 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
02ef9cad0f37ca0ebfbcd6fa810ab97165039edf 16-Mar-2009 Duncan Sands <baldrick@free.fr> Tweak the fix for PR3784: be less sensitive about just
how invokes are set up. The fix could be disturbed by
register copies coming after the EH_LABEL, and also didn't
behave quite right when it was the invoke result that
was used in a phi node. Also (see new testcase) fix
another phi elimination bug while there: register copies
in the landing pad need to come after the EH_LABEL, because
that's where execution branches to when unwinding. If they
come before the EH_LABEL then they will never be executed...
Also tweak the original testcase so it doesn't use a no-longer
existing counter.
The accumulated phi elimination changes fix two of seven Ada
testsuite failures that turned up after landing pad critical
edge splitting was turned off. So there's probably more to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67049 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
420dd3732633986267996e76650422c0fa6f4993 14-Mar-2009 Owen Anderson <resistor@mac.com> Give the pre-alloc splitter access to the VirtRegMap. It doesn't do anything
useful with it at the moment, but it will in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67012 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
14579cc542e52439b1768244822eb241938104c6 14-Mar-2009 Owen Anderson <resistor@mac.com> Give the pre-alloc splitter access to the VirtRegMap. It doesn't do anything
useful with it at the moment, but it will in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67012 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
cfbf05ef03806e6b11520b95eb33adda27241c47 14-Mar-2009 Daniel Dunbar <daniel@zuster.org> Add newlines at end of file (this can annoy gcov)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67000 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
irtRegMap.cpp
c863a614daecc1f092407143d8064a4c94680b6b 14-Mar-2009 Daniel Dunbar <daniel@zuster.org> Add newlines at end of file (this can annoy gcov)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67000 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
irtRegMap.cpp
0b7a786842fd6601b99b1073e5393ebc928c1e6c 14-Mar-2009 Mon P Wang <wangmp@apple.com> Avoid doing the transformation c ? 1.0 : 2.0 as load { 2.0, 1.0 } + c*4
if FPConstant is legal because if the FPConstant doesn't need to be stored
in a constant pool, the transformation is unlikely to be profitable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b9491a9aa3966c3be969284f4e92f4a087061505 14-Mar-2009 Mon P Wang <wangmp@apple.com> Avoid doing the transformation c ? 1.0 : 2.0 as load { 2.0, 1.0 } + c*4
if FPConstant is legal because if the FPConstant doesn't need to be stored
in a constant pool, the transformation is unlikely to be profitable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
474d3b3f40e117a66946e9fb9d2016b4c05caef0 14-Mar-2009 Dan Gohman <gohman@apple.com> Improve FastISel's handling of truncates to i1, and implement
ptrtoint and inttoptr in X86FastISel. These casts aren't always
handled in the generic FastISel code because X86 sometimes needs
custom code to do truncation and zero-extension.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66988 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
94fc47afe6e708020394a53e7f435583e97b75db 14-Mar-2009 Dan Gohman <gohman@apple.com> Improve FastISel's handling of truncates to i1, and implement
ptrtoint and inttoptr in X86FastISel. These casts aren't always
handled in the generic FastISel code because X86 sometimes needs
custom code to do truncation and zero-extension.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66988 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
fc0b80d9746e5fd4b45057ab814c67371fb0f9ea 13-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3784: If the source of a phi comes from a bb ended with an invoke, make sure the copy is inserted before the try range (unless it's used as an input to the invoke, then insert it after the last use), not at the end of the bb.

Also re-apply r66140 which was disabled as a workaround.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66976 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
81b4435c4f05f7248cfcf2ac178dfd0b75ece3b5 13-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3784: If the source of a phi comes from a bb ended with an invoke, make sure the copy is inserted before the try range (unless it's used as an input to the invoke, then insert it after the last use), not at the end of the bb.

Also re-apply r66140 which was disabled as a workaround.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66976 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
14ea1ec2324cb595f2e035bbf54ddcd483f17c11 13-Mar-2009 Dan Gohman <gohman@apple.com> Fix FastISel's assumption that i1 values are always zero-extended
by inserting explicit zero extensions where necessary. Included
is a testcase where SelectionDAG produces a virtual register
holding an i1 value which FastISel previously mistakenly assumed
to be zero-extended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
01648d9b73e596f3620e6177db7c1783547a74e4 13-Mar-2009 Dan Gohman <gohman@apple.com> Fix FastISel's assumption that i1 values are always zero-extended
by inserting explicit zero extensions where necessary. Included
is a testcase where SelectionDAG produces a virtual register
holding an i1 value which FastISel previously mistakenly assumed
to be zero-extended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
1606e8e4cd937e6de6681f686c266cf61722d972 13-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix some significant problems with constant pools that resulted in unnecessary paddings between constant pool entries, larger than necessary alignments (e.g. 8 byte alignment for .literal4 sections), and potentially other issues.

1. ConstantPoolSDNode alignment field is log2 value of the alignment requirement. This is not consistent with other SDNode variants.
2. MachineConstantPool alignment field is also a log2 value.
3. However, some places are creating ConstantPoolSDNode with alignment value rather than log2 values. This creates entries with artificially large alignments, e.g. 256 for SSE vector values.
4. Constant pool entry offsets are computed when they are created. However, asm printer group them by sections. That means the offsets are no longer valid. However, asm printer uses them to determine size of padding between entries.
5. Asm printer uses expensive data structure multimap to track constant pool entries by sections.
6. Asm printer iterate over SmallPtrSet when it's emitting constant pool entries. This is non-deterministic.


Solutions:
1. ConstantPoolSDNode alignment field is changed to keep non-log2 value.
2. MachineConstantPool alignment field is also changed to keep non-log2 value.
3. Functions that create ConstantPool nodes are passing in non-log2 alignments.
4. MachineConstantPoolEntry no longer keeps an offset field. It's replaced with an alignment field. Offsets are not computed when constant pool entries are created. They are computed on the fly in asm printer and JIT.
5. Asm printer uses cheaper data structure to group constant pool entries.
6. Asm printer compute entry offsets after grouping is done.
7. Change JIT code to compute entry offsets on the fly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66875 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
68c1868c4bdc04cd319ea92662aa5aaccf6ac378 13-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix some significant problems with constant pools that resulted in unnecessary paddings between constant pool entries, larger than necessary alignments (e.g. 8 byte alignment for .literal4 sections), and potentially other issues.

1. ConstantPoolSDNode alignment field is log2 value of the alignment requirement. This is not consistent with other SDNode variants.
2. MachineConstantPool alignment field is also a log2 value.
3. However, some places are creating ConstantPoolSDNode with alignment value rather than log2 values. This creates entries with artificially large alignments, e.g. 256 for SSE vector values.
4. Constant pool entry offsets are computed when they are created. However, asm printer group them by sections. That means the offsets are no longer valid. However, asm printer uses them to determine size of padding between entries.
5. Asm printer uses expensive data structure multimap to track constant pool entries by sections.
6. Asm printer iterate over SmallPtrSet when it's emitting constant pool entries. This is non-deterministic.


Solutions:
1. ConstantPoolSDNode alignment field is changed to keep non-log2 value.
2. MachineConstantPool alignment field is also changed to keep non-log2 value.
3. Functions that create ConstantPool nodes are passing in non-log2 alignments.
4. MachineConstantPoolEntry no longer keeps an offset field. It's replaced with an alignment field. Offsets are not computed when constant pool entries are created. They are computed on the fly in asm printer and JIT.
5. Asm printer uses cheaper data structure to group constant pool entries.
6. Asm printer compute entry offsets after grouping is done.
7. Change JIT code to compute entry offsets on the fly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66875 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achineFunction.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
49c8aa0d8b2824c70d178c5d55cda64d6613c0d8 13-Mar-2009 Owen Anderson <resistor@mac.com> Convert VirtRegMap to a MachineFunctionPass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66870 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
egAllocPBQP.cpp
irtRegMap.cpp
irtRegMap.h
dd56ab74dc5d05c3eb05814f2009e41b34e1a095 13-Mar-2009 Owen Anderson <resistor@mac.com> Convert VirtRegMap to a MachineFunctionPass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66870 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
egAllocPBQP.cpp
irtRegMap.cpp
irtRegMap.h
0582ae99ba75a556d6ff63b254da327d32ba036f 13-Mar-2009 Bill Wendling <isanbard@gmail.com> Oops...I committed too much.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66867 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGPrinter.cpp
f3f16e873f4ab3369a996f2c07c84df94dca2d82 13-Mar-2009 Bill Wendling <isanbard@gmail.com> Oops...I committed too much.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66867 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGPrinter.cpp
c7a09ab3110b9462ad9646cb60c22c8527491ad9 13-Mar-2009 Bill Wendling <isanbard@gmail.com> Temporarily XFAIL this test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66866 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGPrinter.cpp
ec6ffc713f5f6e584debda7c55e1b37652e63617 13-Mar-2009 Bill Wendling <isanbard@gmail.com> Temporarily XFAIL this test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66866 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGPrinter.cpp
b398fca15bcca895526699f20336fa6c6a624013 13-Mar-2009 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
e68e538c04032fa0dfba8d59456b48281be12091 13-Mar-2009 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
0ff4e2105ba0d8e378cbd01bf9f4db935d1bf39f 12-Mar-2009 Owen Anderson <resistor@mac.com> Reorganize some #include's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66780 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
piller.h
205ff2900080635cdf37084a548cc3ae0e75a0a2 12-Mar-2009 Owen Anderson <resistor@mac.com> Reorganize some #include's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66780 91177308-0d34-0410-b5e6-96231b3b80d8
piller.cpp
piller.h
d1980a5acd8509ea34ee2dec5e13de5dbe16af2d 12-Mar-2009 Chris Lattner <sabre@nondot.org> Move 3 "(add (select cc, 0, c), x) -> (select cc, x, (add, x, c))"
related transformations out of target-specific dag combine into the
ARM backend. These were added by Evan in r37685 with no testcases
and only seems to help ARM (e.g. test/CodeGen/ARM/select_xform.ll).

Add some simple X86-specific (for now) DAG combines that turn things
like cond ? 8 : 0 -> (zext(cond) << 3). This happens frequently
with the recently added cp constant select optimization, but is a
very general xform. For example, we now compile the second example
in const-select.ll to:

_test:
movsd LCPI2_0, %xmm0
ucomisd 8(%esp), %xmm0
seta %al
movzbl %al, %eax
movl 4(%esp), %ecx
movsbl (%ecx,%eax,4), %eax
ret

instead of:

_test:
movl 4(%esp), %eax
leal 4(%eax), %ecx
movsd LCPI2_0, %xmm0
ucomisd 8(%esp), %xmm0
cmovbe %eax, %ecx
movsbl (%ecx), %eax
ret

This passes multisource and dejagnu.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e4577dcdb3554eb8306dff4731eda1fd695eee4b 12-Mar-2009 Chris Lattner <sabre@nondot.org> Move 3 "(add (select cc, 0, c), x) -> (select cc, x, (add, x, c))"
related transformations out of target-specific dag combine into the
ARM backend. These were added by Evan in r37685 with no testcases
and only seems to help ARM (e.g. test/CodeGen/ARM/select_xform.ll).

Add some simple X86-specific (for now) DAG combines that turn things
like cond ? 8 : 0 -> (zext(cond) << 3). This happens frequently
with the recently added cp constant select optimization, but is a
very general xform. For example, we now compile the second example
in const-select.ll to:

_test:
movsd LCPI2_0, %xmm0
ucomisd 8(%esp), %xmm0
seta %al
movzbl %al, %eax
movl 4(%esp), %ecx
movsbl (%ecx,%eax,4), %eax
ret

instead of:

_test:
movl 4(%esp), %eax
leal 4(%eax), %ecx
movsd LCPI2_0, %xmm0
ucomisd 8(%esp), %xmm0
cmovbe %eax, %ecx
movsbl (%ecx), %eax
ret

This passes multisource and dejagnu.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8042255118ddaf49ac940805b95f77eddecc70e5 12-Mar-2009 Evan Cheng <evan.cheng@apple.com> Enable Chris' value propagation change. It make available known sign, zero, one bits information for values that are live out of basic blocks. The goal is to eliminate unnecessary sext, zext, truncate of values that are live-in to blocks. This does not handle PHI nodes yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66777 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
48d23f62f30393c0a0226b91b7ddcfe40cf84a65 12-Mar-2009 Evan Cheng <evan.cheng@apple.com> Enable Chris' value propagation change. It make available known sign, zero, one bits information for values that are live out of basic blocks. The goal is to eliminate unnecessary sext, zext, truncate of values that are live-in to blocks. This does not handle PHI nodes yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66777 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c40d4f85ddd6f822480f91dacd9646eec055c4ca 11-Mar-2009 Gabor Greif <ggreif@gmail.com> update

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66733 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
fff4f8deefdc5fd9f991866427bc02afc0f5cf18 11-Mar-2009 Gabor Greif <ggreif@gmail.com> update

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66733 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
1ed5b714f1c98b370145fdebb6c21bbc7caa52d5 11-Mar-2009 Owen Anderson <resistor@mac.com> Reorganization: Move the Spiller out of VirtRegMap.cpp into its own files. No (intended) functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66720 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
egAllocPBQP.cpp
piller.cpp
piller.h
irtRegMap.cpp
irtRegMap.h
860d482b5940d0e7fff09f50f2df409de4b989ff 11-Mar-2009 Owen Anderson <resistor@mac.com> Reorganization: Move the Spiller out of VirtRegMap.cpp into its own files. No (intended) functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66720 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
egAllocPBQP.cpp
piller.cpp
piller.h
irtRegMap.cpp
irtRegMap.h
a597a9761845652807c311e6622d6d727a5f1725 11-Mar-2009 Evan Cheng <evan.cheng@apple.com> My last coalescer fix introduced a subtler one. It's aborting a commuting optimization too late and left the live intervals to be out of sync with instructions. This fixes 8b10b.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66715 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
fcb6ccae9bec2676af2a6b126a0a2ff32176fa16 11-Mar-2009 Evan Cheng <evan.cheng@apple.com> My last coalescer fix introduced a subtler one. It's aborting a commuting optimization too late and left the live intervals to be out of sync with instructions. This fixes 8b10b.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66715 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
4dc2b39bf89d7c87868008ef8a0f807e0419aca6 11-Mar-2009 Duncan Sands <baldrick@free.fr> It makes no sense to have a ODR version of common
linkage, so remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66690 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
b95df796a8a89e5817148cf229fb0152bff9d105 11-Mar-2009 Duncan Sands <baldrick@free.fr> It makes no sense to have a ODR version of common
linkage, so remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66690 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
9e8bd0b362c034e629b9ee1f32e4e1adf037f529 11-Mar-2009 Duncan Sands <baldrick@free.fr> Add parentheses to pacify gcc-4.3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66653 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
344685446a17406b82c41daac8daa8b5c4306b6c 11-Mar-2009 Duncan Sands <baldrick@free.fr> Add parentheses to pacify gcc-4.3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66653 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
600fec3cea2d1d894496cdb8dd4ae280a2395179 11-Mar-2009 Chris Lattner <sabre@nondot.org> reapply my previous patch (r66358) with a tweak to set the
alignment of the generated constant pool entry to the
desired alignment of a type. If we don't do this, we end up
trying to do movsd from 4-byte alignment memory. This fixes
450.soplex and 456.hmmer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66641 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
00fc17c744dfddfc6b9a41029024f262e49c2b17 11-Mar-2009 Chris Lattner <sabre@nondot.org> reapply my previous patch (r66358) with a tweak to set the
alignment of the generated constant pool entry to the
desired alignment of a type. If we don't do this, we end up
trying to do movsd from 4-byte alignment memory. This fixes
450.soplex and 456.hmmer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66641 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1362f97018a81f169f7b3a78236c0da6700bdbba 11-Mar-2009 Bill Wendling <isanbard@gmail.com> Put the assignment back at the top of this method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66611 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
c1d211d9a99f24a7b810af03cbaf1cef9196e302 11-Mar-2009 Bill Wendling <isanbard@gmail.com> Put the assignment back at the top of this method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66611 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
a2e6435e483f30e00382a5758f6dcc67e213b57a 11-Mar-2009 Evan Cheng <evan.cheng@apple.com> Two coalescer fixes in one.
1. Use the same value# to represent unknown values being merged into sub-registers.
2. When coalescer commute an instruction and the destination is a physical register, update its sub-registers by merging in the extended ranges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66610 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
ed642cb0cc7a046d2e7f0ef5d49627b4434ac6d8 11-Mar-2009 Evan Cheng <evan.cheng@apple.com> Two coalescer fixes in one.
1. Use the same value# to represent unknown values being merged into sub-registers.
2. When coalescer commute an instruction and the destination is a physical register, update its sub-registers by merging in the extended ranges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66610 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
dd446324982c1b54d6ecc756d2eff9ce37e6e5c1 11-Mar-2009 Bill Wendling <isanbard@gmail.com> Make ivars private. Other cleanup. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66607 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
15afa0070717e7319d7e5eaf246bf7bfca5baf90 11-Mar-2009 Bill Wendling <isanbard@gmail.com> Make ivars private. Other cleanup. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66607 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
68edf5f68a9e25120f06ab30e064a869eb83018e 10-Mar-2009 Bill Wendling <isanbard@gmail.com> Just make the Dwarf timer group static inside of the getter function. No need to alloc/dealloc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66591 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
148ecc436873b2226d15f5a51a2428819c0f65d4 10-Mar-2009 Bill Wendling <isanbard@gmail.com> Just make the Dwarf timer group static inside of the getter function. No need to alloc/dealloc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66591 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
fc232b08f348f778e34e98e70168cf2dd1074f63 10-Mar-2009 Bill Wendling <isanbard@gmail.com> Don't put static functions in anonymous namespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66589 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e0e2df4cc3f9f31920640c6992396b7296bc2fa6 10-Mar-2009 Bill Wendling <isanbard@gmail.com> Don't put static functions in anonymous namespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66589 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7b69720ff42cad9b3eabe273a21948d23e220caf 10-Mar-2009 Bill Wendling <isanbard@gmail.com> These should *stop* the timer, not start it again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66586 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
0be24759002b31127bd7a6004d2275925cad28c9 10-Mar-2009 Bill Wendling <isanbard@gmail.com> These should *stop* the timer, not start it again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66586 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e9e960ff55594d503d59b3ccc002d2cd5e4ffa67 10-Mar-2009 Bill Wendling <isanbard@gmail.com> - Fix misspelled method name.
- Remove unused method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66585 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
df25fd6da2e09fd625995ac4cb912e04485b8a9c 10-Mar-2009 Bill Wendling <isanbard@gmail.com> - Fix misspelled method name.
- Remove unused method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66585 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
c8615e4d3955dc14f78fc426dbfe3e9e9dc8c009 10-Mar-2009 Bill Wendling <isanbard@gmail.com> - Create GetOrCreateSourceID from getOrCreateSourceID. GetOrCreateSourceID is
the untimed version of getOrCreateSourceID. getOrCreateSourceID calls
GetOrCreateSourceID, of course.

- Move some methods into the "private" section. Constify at least one method.

- General clean-ups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66582 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
278a392595eebca8a7252e52bf771eb443bd2f6a 10-Mar-2009 Bill Wendling <isanbard@gmail.com> - Create GetOrCreateSourceID from getOrCreateSourceID. GetOrCreateSourceID is
the untimed version of getOrCreateSourceID. getOrCreateSourceID calls
GetOrCreateSourceID, of course.

- Move some methods into the "private" section. Constify at least one method.

- General clean-ups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66582 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
163ba3fa39f015b694f43915e829df7c03fe9a5c 10-Mar-2009 Bill Wendling <isanbard@gmail.com> Refine the Dwarf writer timers so that they measure exception writing and debug
writing individually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66577 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
d9308a66615a9d3f2a1cc829885f8fb31493a19e 10-Mar-2009 Bill Wendling <isanbard@gmail.com> Refine the Dwarf writer timers so that they measure exception writing and debug
writing individually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66577 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
41d88d2ac07d1ccbb3c0d1430d57102aada89390 10-Mar-2009 Evan Cheng <evan.cheng@apple.com> Revert 66358 for now. It's breaking povray, 450.soplex, and 456.hmmer on x86 / Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c34b4449be37df98eaf09e4c88e5648cb2a1f2c6 10-Mar-2009 Evan Cheng <evan.cheng@apple.com> Revert 66358 for now. It's breaking povray, 450.soplex, and 456.hmmer on x86 / Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
91b8b8010a55ca2969f379e6a110420afbbac12e 10-Mar-2009 Bill Wendling <isanbard@gmail.com> Add a timer to the DwarfWriter pass that measures the total time it takes to
emit exception and debug Dwarf info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66571 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
cb3661fd9d448bfd7b7e7e10a8cd01d3acf8c2a7 10-Mar-2009 Bill Wendling <isanbard@gmail.com> Add a timer to the DwarfWriter pass that measures the total time it takes to
emit exception and debug Dwarf info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66571 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
1274ced8a3f0fd1e9a6f7c7e17d69368c4f78b90 10-Mar-2009 Dan Gohman <gohman@apple.com> Fix a post-RA scheduling liveness bug. When a basic block is being
scheduled in multiple regions, liveness data used by the
anti-dependence breaker is carried from one region to the next, however
the information reflects the state of the instructions before scheduling.
After scheduling, there may be new live range overlaps. Handle this by
pessimizing the liveness data carried between regions to the point where
it will be conservatively correct now matter how the earlier region is
scheduled. This fixes a miscompilation in 176.gcc with the post-RA
scheduler enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66558 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
68ade7b4321ef3210f94ccf6a5802ef3f70280ac 10-Mar-2009 Dan Gohman <gohman@apple.com> Fix a post-RA scheduling liveness bug. When a basic block is being
scheduled in multiple regions, liveness data used by the
anti-dependence breaker is carried from one region to the next, however
the information reflects the state of the instructions before scheduling.
After scheduling, there may be new live range overlaps. Handle this by
pessimizing the liveness data carried between regions to the point where
it will be conservatively correct now matter how the earlier region is
scheduled. This fixes a miscompilation in 176.gcc with the post-RA
scheduler enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66558 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
3e0cc2634e861b789850b5103efcc8898bf14c4c 10-Mar-2009 Chris Lattner <sabre@nondot.org> wire up support for emitting "special" values from inline asm
format strings with the standard ${:foo} syntax.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66527 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
6af4803b03c1af7c326678d4af641f76a4ffbed6 10-Mar-2009 Chris Lattner <sabre@nondot.org> wire up support for emitting "special" values from inline asm
format strings with the standard ${:foo} syntax.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66527 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
66b8bc3289b872cd4b7480710a530f718cc536de 09-Mar-2009 Chris Lattner <sabre@nondot.org> Fix PR3763 by using proper APInt methods instead of uint64_t's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66434 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
12e5aa81e6d5fed4ec2a96f0fe69d42699139133 09-Mar-2009 Chris Lattner <sabre@nondot.org> Fix PR3763 by using proper APInt methods instead of uint64_t's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66434 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0d8fc52ed37af612dae62868727b840b8936efb2 09-Mar-2009 Evan Cheng <evan.cheng@apple.com> Yet another case where the spiller marked two uses of the same register on the same instruction as kill. This fixes PR3706.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66428 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
19119ac4939178efefbd5abc6e3fe7ba776aef8c 09-Mar-2009 Evan Cheng <evan.cheng@apple.com> Yet another case where the spiller marked two uses of the same register on the same instruction as kill. This fixes PR3706.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66428 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
ea3a9ff53d699bc22fcff52dbbce8aab6578a020 09-Mar-2009 Chris Lattner <sabre@nondot.org> just remove the use_empty() check entirely, the only reason it
existed was for llvm-gcc 3.4 (which used the __main hack) which
is really really long dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66417 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1e0e4896a635b3a82eab996f58e77e0a5ba537bd 09-Mar-2009 Chris Lattner <sabre@nondot.org> just remove the use_empty() check entirely, the only reason it
existed was for llvm-gcc 3.4 (which used the __main hack) which
is really really long dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66417 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f231c07228deb75b6cd5ae7c9c057bc8303c6998 09-Mar-2009 Chris Lattner <sabre@nondot.org> Make the code generator rip of dead constant expr uses before deciding
whether a global is dead or not. This should fix PR3749 - linker adds
spurious use to appending globals. I can't reasonably add a testcase
for this, because the bc writer/reader strip dead constant users.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66404 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0c433e93020a7c1ab9edfcae3073a9322daa7225 09-Mar-2009 Chris Lattner <sabre@nondot.org> Make the code generator rip of dead constant expr uses before deciding
whether a global is dead or not. This should fix PR3749 - linker adds
spurious use to appending globals. I can't reasonably add a testcase
for this, because the bc writer/reader strip dead constant users.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66404 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ccbdc7ab82792ac5d7863ef086f11fb010d88073 09-Mar-2009 Bill Wendling <isanbard@gmail.com> Pass in a std::string when getting the names of debugging things. This cuts down
on the number of times a std::string is created and copied.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66396 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGPrinter.cpp
1c5842ba9921d6e1360ad6c859da81186545473a 09-Mar-2009 Bill Wendling <isanbard@gmail.com> Pass in a std::string when getting the names of debugging things. This cuts down
on the number of times a std::string is created and copied.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66396 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGPrinter.cpp
821b8560e735613dfcf7670866f9142e4845037e 08-Mar-2009 Evan Cheng <evan.cheng@apple.com> If a MI uses the same register more than once, only mark one of them as 'kill'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66363 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
0ba746f9630d53f7b06bb6fd12225352ef91b24d 08-Mar-2009 Evan Cheng <evan.cheng@apple.com> If a MI uses the same register more than once, only mark one of them as 'kill'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66363 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
476769498e9d2f406a9f9f64218f513636734422 08-Mar-2009 Chris Lattner <sabre@nondot.org> implement an optimization to codegen c ? 1.0 : 2.0 as load { 2.0, 1.0 } + c*4.
For 2009-03-07-FPConstSelect.ll we now produce:

_f:
xorl %eax, %eax
testl %edi, %edi
movl $4, %ecx
cmovne %rax, %rcx
leaq LCPI1_0(%rip), %rax
movss (%rcx,%rax), %xmm0
ret

previously we produced:

_f:
subl $4, %esp
cmpl $0, 8(%esp)
movss LCPI1_0, %xmm0
je LBB1_2 ## entry
LBB1_1: ## entry
movss LCPI1_1, %xmm0
LBB1_2: ## entry
movss %xmm0, (%esp)
flds (%esp)
addl $4, %esp
ret

on PPC the code also improves to:

_f:
cntlzw r2, r3
srwi r2, r2, 5
li r3, lo16(LCPI1_0)
slwi r2, r2, 2
addis r3, r3, ha16(LCPI1_0)
lfsx f1, r3, r2
blr

from:

_f:
li r2, lo16(LCPI1_1)
cmplwi cr0, r3, 0
addis r2, r2, ha16(LCPI1_1)
beq cr0, LBB1_2 ; entry
LBB1_1: ; entry
li r2, lo16(LCPI1_0)
addis r2, r2, ha16(LCPI1_0)
LBB1_2: ; entry
lfs f1, 0(r2)
blr

This also improves the existing pic-cpool case from:

foo:
subl $12, %esp
call .Lllvm$1.$piclabel
.Lllvm$1.$piclabel:
popl %eax
addl $_GLOBAL_OFFSET_TABLE_ + [.-.Lllvm$1.$piclabel], %eax
cmpl $0, 16(%esp)
movsd .LCPI1_0@GOTOFF(%eax), %xmm0
je .LBB1_2 # entry
.LBB1_1: # entry
movsd .LCPI1_1@GOTOFF(%eax), %xmm0
.LBB1_2: # entry
movsd %xmm0, (%esp)
fldl (%esp)
addl $12, %esp
ret

to:

foo:
call .Lllvm$1.$piclabel
.Lllvm$1.$piclabel:
popl %eax
addl $_GLOBAL_OFFSET_TABLE_ + [.-.Lllvm$1.$piclabel], %eax
xorl %ecx, %ecx
cmpl $0, 4(%esp)
movl $8, %edx
cmovne %ecx, %edx
fldl .LCPI1_0@GOTOFF(%eax,%edx)
ret

This triggers a few dozen times in spec FP 2000.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66358 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2a4a70ad09a0328888ad0b014c7f2361eb90d284 08-Mar-2009 Chris Lattner <sabre@nondot.org> implement an optimization to codegen c ? 1.0 : 2.0 as load { 2.0, 1.0 } + c*4.
For 2009-03-07-FPConstSelect.ll we now produce:

_f:
xorl %eax, %eax
testl %edi, %edi
movl $4, %ecx
cmovne %rax, %rcx
leaq LCPI1_0(%rip), %rax
movss (%rcx,%rax), %xmm0
ret

previously we produced:

_f:
subl $4, %esp
cmpl $0, 8(%esp)
movss LCPI1_0, %xmm0
je LBB1_2 ## entry
LBB1_1: ## entry
movss LCPI1_1, %xmm0
LBB1_2: ## entry
movss %xmm0, (%esp)
flds (%esp)
addl $4, %esp
ret

on PPC the code also improves to:

_f:
cntlzw r2, r3
srwi r2, r2, 5
li r3, lo16(LCPI1_0)
slwi r2, r2, 2
addis r3, r3, ha16(LCPI1_0)
lfsx f1, r3, r2
blr

from:

_f:
li r2, lo16(LCPI1_1)
cmplwi cr0, r3, 0
addis r2, r2, ha16(LCPI1_1)
beq cr0, LBB1_2 ; entry
LBB1_1: ; entry
li r2, lo16(LCPI1_0)
addis r2, r2, ha16(LCPI1_0)
LBB1_2: ; entry
lfs f1, 0(r2)
blr

This also improves the existing pic-cpool case from:

foo:
subl $12, %esp
call .Lllvm$1.$piclabel
.Lllvm$1.$piclabel:
popl %eax
addl $_GLOBAL_OFFSET_TABLE_ + [.-.Lllvm$1.$piclabel], %eax
cmpl $0, 16(%esp)
movsd .LCPI1_0@GOTOFF(%eax), %xmm0
je .LBB1_2 # entry
.LBB1_1: # entry
movsd .LCPI1_1@GOTOFF(%eax), %xmm0
.LBB1_2: # entry
movsd %xmm0, (%esp)
fldl (%esp)
addl $12, %esp
ret

to:

foo:
call .Lllvm$1.$piclabel
.Lllvm$1.$piclabel:
popl %eax
addl $_GLOBAL_OFFSET_TABLE_ + [.-.Lllvm$1.$piclabel], %eax
xorl %ecx, %ecx
cmpl $0, 4(%esp)
movl $8, %edx
cmovne %ecx, %edx
fldl .LCPI1_0@GOTOFF(%eax,%edx)
ret

This triggers a few dozen times in spec FP 2000.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66358 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d2e936a513b01b2c5df91a9c0d80070e8c752ace 08-Mar-2009 Chris Lattner <sabre@nondot.org> random cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
50ce834a58fc70fe5755ee147f02a2bdee936190 08-Mar-2009 Chris Lattner <sabre@nondot.org> random cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
667d4b8de6dea70195ff12ef39a4deebffa2f5c7 07-Mar-2009 Duncan Sands <baldrick@free.fr> Introduce new linkage types linkonce_odr, weak_odr, common_odr
and extern_weak_odr. These are the same as the non-odr versions,
except that they indicate that the global will only be overridden
by an *equivalent* global. In C, a function with weak linkage can
be overridden by a function which behaves completely differently.
This means that IP passes have to skip weak functions, since any
deductions made from the function definition might be wrong, since
the definition could be replaced by something completely different
at link time. This is not allowed in C++, thanks to the ODR
(One-Definition-Rule): if a function is replaced by another at
link-time, then the new function must be the same as the original
function. If a language knows that a function or other global can
only be overridden by an equivalent global, it can give it the
weak_odr linkage type, and the optimizers will understand that it
is alright to make deductions based on the function body. The
code generators on the other hand map weak and weak_odr linkage
to the same thing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66339 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
LFWriter.cpp
ntrinsicLowering.cpp
achOWriter.cpp
electionDAG/TargetLowering.cpp
hadowStackGC.cpp
19d161f714b83cd850fe489aa3fdaa3d3744157b 07-Mar-2009 Duncan Sands <baldrick@free.fr> Introduce new linkage types linkonce_odr, weak_odr, common_odr
and extern_weak_odr. These are the same as the non-odr versions,
except that they indicate that the global will only be overridden
by an *equivalent* global. In C, a function with weak linkage can
be overridden by a function which behaves completely differently.
This means that IP passes have to skip weak functions, since any
deductions made from the function definition might be wrong, since
the definition could be replaced by something completely different
at link time. This is not allowed in C++, thanks to the ODR
(One-Definition-Rule): if a function is replaced by another at
link-time, then the new function must be the same as the original
function. If a language knows that a function or other global can
only be overridden by an equivalent global, it can give it the
weak_odr linkage type, and the optimizers will understand that it
is alright to make deductions based on the function body. The
code generators on the other hand map weak and weak_odr linkage
to the same thing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66339 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
LFWriter.cpp
ntrinsicLowering.cpp
achOWriter.cpp
electionDAG/TargetLowering.cpp
hadowStackGC.cpp
16e8eda4b8b0825d38ba37d31c99edba0fb25482 06-Mar-2009 Dan Gohman <gohman@apple.com> Fix ScheduleDAGRRList::CopyAndMoveSuccessors' handling of nodes
with multiple chain operands. This can occur when the scheduler
has added chain operands to a node that already has a chain
operand, in order to handle physical register dependencies.

This fixes an llvm-gcc bootstrap failure on x86-64 introduced
in r66058.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66240 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
4e1187fbc7e8f8046311487c0801a010f3c20a75 06-Mar-2009 Dan Gohman <gohman@apple.com> Fix ScheduleDAGRRList::CopyAndMoveSuccessors' handling of nodes
with multiple chain operands. This can occur when the scheduler
has added chain operands to a node that already has a chain
operand, in order to handle physical register dependencies.

This fixes an llvm-gcc bootstrap failure on x86-64 introduced
in r66058.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66240 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
5601699d7c36b819179a7d89270100c34b3d0a32 06-Mar-2009 Bill Wendling <isanbard@gmail.com> When we split a basic block, there's a default branch to the newly created BB.
Delete this default branch, because we're going to generate our own.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66234 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
4e14b6588e441534f2b2fc806261a9fe126ae520 06-Mar-2009 Bill Wendling <isanbard@gmail.com> When we split a basic block, there's a default branch to the newly created BB.
Delete this default branch, because we're going to generate our own.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66234 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
a2bfb54e4dd671c5f9ef32cd91b7133d424d9ee4 05-Mar-2009 Owen Anderson <resistor@mac.com> (Hopefully) silence a warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66158 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
d6e3f9b8faebdd8b6d23b94adda3a867b30672aa 05-Mar-2009 Owen Anderson <resistor@mac.com> (Hopefully) silence a warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66158 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
323c58d862cca19e45d07996a5abacd0667f264d 05-Mar-2009 Owen Anderson <resistor@mac.com> Be more careful about choosing restore points when doing restore folding. This fixes some subtle miscompilations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66147 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
170e4990c3eca3ac77f6ba50ab7732c70d0aff2c 05-Mar-2009 Owen Anderson <resistor@mac.com> Be more careful about choosing restore points when doing restore folding. This fixes some subtle miscompilations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66147 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
0076c616e8abc2ecf36600a7ac20ec784420cdc4 05-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix how livein live intervals are handled. Previously it could end at MBB start. Sorry, no small test case possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66129 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1e16ae4713d647ab8fe267d1ab3c2028f9a19fbf 05-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix how livein live intervals are handled. Previously it could end at MBB start. Sorry, no small test case possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66129 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d344b884dd6e1fde91c631f99413b9553f3c5c59 04-Mar-2009 Bob Wilson <bob.wilson@apple.com> Fix BuildVectorSDNode::isConstantSplat to handle one-element vectors.
It is an error to call APInt::zext with a size that is equal to the value's
current size, so use zextOrTrunc instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66039 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0e94e91f8140a123512e7a658fcd9f54c7758c48 04-Mar-2009 Bob Wilson <bob.wilson@apple.com> Fix BuildVectorSDNode::isConstantSplat to handle one-element vectors.
It is an error to call APInt::zext with a size that is equal to the value's
current size, so use zextOrTrunc instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66039 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c93023a89e9f3c4937a4b23db13f974afac94e50 04-Mar-2009 Owen Anderson <resistor@mac.com> Add a restore folder, which shaves a dozen or so machineinstrs off oggenc. Update a testcase to check this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66029 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
060d65ef50888e0cd3504830cb6612d9b1130387 04-Mar-2009 Owen Anderson <resistor@mac.com> Add a restore folder, which shaves a dozen or so machineinstrs off oggenc. Update a testcase to check this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66029 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
27759f41ca1c930e2860275c9ba2567a5890d7d2 04-Mar-2009 Eli Friedman <eli.friedman@gmail.com> PR3686: make the legalizer handle bitcast from i80 to x86 long double.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66021 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
360dc9c99f00f7e767fbedfe022c135ce6b117c4 04-Mar-2009 Eli Friedman <eli.friedman@gmail.com> PR3686: make the legalizer handle bitcast from i80 to x86 long double.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66021 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
599a6a88ce1925a6349ac7af9a9638aad1d832cc 04-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3701. 1. X86 target renamed eflags register to flags. This matches what llvm-gcc generates so codegen knows flags register is being clobbered by inline asm. 2. BURR scheduler should also check if inline asm nodes can clobber "live" physical registers. Previously it was only checking target nodes with implicit defs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65996 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
45be09ac15f81d34999bb276a24021d8fb91bca1 04-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3701. 1. X86 target renamed eflags register to flags. This matches what llvm-gcc generates so codegen knows flags register is being clobbered by inline asm. 2. BURR scheduler should also check if inline asm nodes can clobber "live" physical registers. Previously it was only checking target nodes with implicit defs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65996 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
36ae6c182759871a4af71d9af85f970b29a669f1 04-Mar-2009 Bill Wendling <isanbard@gmail.com> The DAG combiner was performing a BT combine. The BT combine had a value of -1,
so it changed it into a 31 via the TLO.ShrinkDemandedConstant() call. Then it
would go through the DAG combiner again. This time it had a value of 31, which
was turned into a -1 by TLI.SimplifyDemandedBits(). This would ping pong
forever.

Teach the TLO.ShrinkDemandedConstant() call not to lower a value if the demanded
value is an XOR of all ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65985 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e16c4334eec988ae3573f48fd8fe1a748316eb46 04-Mar-2009 Bill Wendling <isanbard@gmail.com> The DAG combiner was performing a BT combine. The BT combine had a value of -1,
so it changed it into a 31 via the TLO.ShrinkDemandedConstant() call. Then it
would go through the DAG combiner again. This time it had a value of 31, which
was turned into a -1 by TLI.SimplifyDemandedBits(). This would ping pong
forever.

Teach the TLO.ShrinkDemandedConstant() call not to lower a value if the demanded
value is an XOR of all ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65985 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
24e338e8a3dab2923db30fe63d77a5ac95456ff9 03-Mar-2009 Bob Wilson <bob.wilson@apple.com> Generalize BuildVectorSDNode::isConstantSplat to use APInts and handle
arbitrary vector sizes. Add an optional MinSplatBits parameter to specify
a minimum for the splat element size. Update the PPC target to use the
revised interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65899 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e653968fa9cb34ee29cee7abb82607fe28608daf 03-Mar-2009 Bob Wilson <bob.wilson@apple.com> Generalize BuildVectorSDNode::isConstantSplat to use APInts and handle
arbitrary vector sizes. Add an optional MinSplatBits parameter to specify
a minimum for the splat element size. Update the PPC target to use the
revised interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65899 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
cbd88adea66261a2f4372906fe1e08c2093d8718 02-Mar-2009 Nate Begeman <natebegeman@mac.com> Fix a problem with DAGCombine on 64b targets where folding
extracts + build_vector into a shuffle would fail, because the
type of the new build_vector would not be legal. Try harder to
create a legal build_vector type. Note: this will be totally
irrelevant once vector_shuffle no longer takes a build_vector for
shuffle mask.

New:
_foo:
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
subps %xmm1, %xmm1
mulps %xmm0, %xmm1
addps %xmm0, %xmm1
movaps %xmm1, 0

Old:
_foo:
xorps %xmm0, %xmm0
movss %xmm0, %xmm1
xorps %xmm2, %xmm2
unpcklps %xmm1, %xmm2
pshufd $80, %xmm1, %xmm1
unpcklps %xmm1, %xmm2
pslldq $16, %xmm2
pshufd $57, %xmm2, %xmm1
subps %xmm0, %xmm1
mulps %xmm0, %xmm1
addps %xmm0, %xmm1
movaps %xmm1, 0



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65791 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1e06eca05d16f2776c9da8f48e198b986b331a75 02-Mar-2009 Nate Begeman <natebegeman@mac.com> Fix a problem with DAGCombine on 64b targets where folding
extracts + build_vector into a shuffle would fail, because the
type of the new build_vector would not be legal. Try harder to
create a legal build_vector type. Note: this will be totally
irrelevant once vector_shuffle no longer takes a build_vector for
shuffle mask.

New:
_foo:
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
subps %xmm1, %xmm1
mulps %xmm0, %xmm1
addps %xmm0, %xmm1
movaps %xmm1, 0

Old:
_foo:
xorps %xmm0, %xmm0
movss %xmm0, %xmm1
xorps %xmm2, %xmm2
unpcklps %xmm1, %xmm2
pshufd $80, %xmm1, %xmm1
unpcklps %xmm1, %xmm2
pslldq $16, %xmm2
pshufd $57, %xmm2, %xmm1
subps %xmm0, %xmm1
mulps %xmm0, %xmm1
addps %xmm0, %xmm1
movaps %xmm1, 0



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65791 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
870b80722f7ce3232dd45e95cff663d177e0acc0 01-Mar-2009 Evan Cheng <evan.cheng@apple.com> Minor optimization:

Look for situations like this:
%reg1024<def> = MOV r1
%reg1025<def> = MOV r0
%reg1026<def> = ADD %reg1024, %reg1025
r0 = MOV %reg1026
Commute the ADD to hopefully eliminate an otherwise unavoidable copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65752 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
819200f486405544088935ffd281beb78357db47 01-Mar-2009 Evan Cheng <evan.cheng@apple.com> Minor optimization:

Look for situations like this:
%reg1024<def> = MOV r1
%reg1025<def> = MOV r0
%reg1026<def> = ADD %reg1024, %reg1025
r0 = MOV %reg1026
Commute the ADD to hopefully eliminate an otherwise unavoidable copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65752 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
a27ea9e89f38e9bcca4d67defb0bae887a16d72c 01-Mar-2009 Bob Wilson <bob.wilson@apple.com> Combine PPC's GetConstantBuildVectorBits and isConstantSplat functions to a new
method in a BuildVectorSDNode "pseudo-class".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b6fc1fb5613d4ba9b41a74e9b86b9c4d0d395bb3 01-Mar-2009 Bob Wilson <bob.wilson@apple.com> Combine PPC's GetConstantBuildVectorBits and isConstantSplat functions to a new
method in a BuildVectorSDNode "pseudo-class".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c8bb37a50a7f5e5627523d2eab3e4860d1796dcc 28-Feb-2009 Evan Cheng <evan.cheng@apple.com> Last commit accidentially deleted this code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65679 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
18a46c348777c36a8fc49e2b40b0a5a8afe2f129 28-Feb-2009 Evan Cheng <evan.cheng@apple.com> Last commit accidentially deleted this code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65679 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
9ac08d6a67a66c4f5deea23f152629756defcaf1 27-Feb-2009 Devang Patel <dpatel@apple.com> It is possible that subprgoram definition is only encoding return value directly, instsad of an DIArray of all argument types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65643 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
688a19fa3d7f9b5d746d402408a97de51af00b27 27-Feb-2009 Devang Patel <dpatel@apple.com> It is possible that subprgoram definition is only encoding return value directly, instsad of an DIArray of all argument types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65643 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
9a58023c6ce1e77447a21d07a3de4c1ac98a3d24 27-Feb-2009 Rafael Espindola <rafael.espindola@gmail.com> Refactor TLS code and add some tests. The tests and expected results are:

pic | declaration | linkage | visibility |

!pic | declaration | external | default | tls1.ll tls2.ll | local exec
pic | declaration | external | default | tls1-pic.ll tls2-pic.ll | general dynamic
!pic | !declaration | external | default | tls3.ll tls4.ll | initial exec
pic | !declaration | external | default | tls3-pic.ll tls4-pic.ll | general dynamic

!pic | declaration | external | hidden | tls7.ll tls8.ll | local exec
pic | declaration | external | hidden | X | local dynamic
!pic | !declaration | external | hidden | tls9.ll tls10.ll | local exec
pic | !declaration | external | hidden | X | local dynamic

!pic | declaration | internal | default | tls5.ll tls6.ll | local exec
pic | declaration | internal | default | X | local dynamic

The ones marked with an X have not been implemented since local dynamic is not implemented.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7b620afb60382e26ea0c974175b50414f19fc0ff 27-Feb-2009 Rafael Espindola <rafael.espindola@gmail.com> Refactor TLS code and add some tests. The tests and expected results are:

pic | declaration | linkage | visibility |

!pic | declaration | external | default | tls1.ll tls2.ll | local exec
pic | declaration | external | default | tls1-pic.ll tls2-pic.ll | general dynamic
!pic | !declaration | external | default | tls3.ll tls4.ll | initial exec
pic | !declaration | external | default | tls3-pic.ll tls4-pic.ll | general dynamic

!pic | declaration | external | hidden | tls7.ll tls8.ll | local exec
pic | declaration | external | hidden | X | local dynamic
!pic | !declaration | external | hidden | tls9.ll tls10.ll | local exec
pic | !declaration | external | hidden | X | local dynamic

!pic | declaration | internal | default | tls5.ll tls6.ll | local exec
pic | declaration | internal | default | X | local dynamic

The ones marked with an X have not been implemented since local dynamic is not implemented.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
efc783951c0ab801601aeaeae07ef2a7305d37b0 27-Feb-2009 Evan Cheng <evan.cheng@apple.com> MachineLICM CSE should match destination register classes; avoid hoisting implicit_def's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65592 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
7795d0bb4b82069f986e8fd5cbfad246f8fe2053 27-Feb-2009 Evan Cheng <evan.cheng@apple.com> MachineLICM CSE should match destination register classes; avoid hoisting implicit_def's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65592 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
130abb29cc9306a9d447d0e46041e242583e01fd 26-Feb-2009 Owen Anderson <resistor@mac.com> Enable stack slot coloring DCE. Evan's spiller fixes were needed before this could happen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65501 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
02352c49a3527ae24045fb91ff28cc371c2df8ca 26-Feb-2009 Owen Anderson <resistor@mac.com> Enable stack slot coloring DCE. Evan's spiller fixes were needed before this could happen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65501 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
04cf3e39f3895434c75dd9fbe9070cd33fe6cbc0 26-Feb-2009 Evan Cheng <evan.cheng@apple.com> The last commit was overly conservative. It's ok to reuse value that's already marked livein.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65498 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
de5f09b0d6ede4066134f767630df52c418d5ab7 26-Feb-2009 Evan Cheng <evan.cheng@apple.com> The last commit was overly conservative. It's ok to reuse value that's already marked livein.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65498 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
f792352c25880ee0c61b2da2d03927b9356b77e8 26-Feb-2009 Evan Cheng <evan.cheng@apple.com> If an available register falls through to a succ block, unset the last kill. Sorry, it's impossible to reduce a sensible test case. It basically requires the moon and stars to align in order to cause a failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65497 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
a51e838d36b571c779425464529d1b4555652989 26-Feb-2009 Evan Cheng <evan.cheng@apple.com> If an available register falls through to a succ block, unset the last kill. Sorry, it's impossible to reduce a sensible test case. It basically requires the moon and stars to align in order to cause a failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65497 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
a87008d90b7d894cfca53d407642acfd7be2af3c 25-Feb-2009 Evan Cheng <evan.cheng@apple.com> Revert BuildVectorSDNode related patches: 65426, 65427, and 65296.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
907a2d20d36fb0bee4fb5e0cd1b37d4a94d6ec06 25-Feb-2009 Evan Cheng <evan.cheng@apple.com> Revert BuildVectorSDNode related patches: 65426, 65427, and 65296.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
8a36f509cd0fd4c503c8564000f77713e1676c56 25-Feb-2009 Dale Johannesen <dalej@apple.com> Fix big-endian codegen bug. We're splitting up
overly long ints, e.g. i96, into pieces at PHIs
and the nodes that feed into them; however big-endian
reverses the order of the pieces (for some reason), and
wasn't doing it the same way on both sides, so
the pieces didn't match and runtime failures ensued.
Fixes 188.ammp and sqlite3 on ppc32.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65481 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
2a4f1714597272e1369a16deb6025ffed3bab7e6 25-Feb-2009 Dale Johannesen <dalej@apple.com> Fix big-endian codegen bug. We're splitting up
overly long ints, e.g. i96, into pieces at PHIs
and the nodes that feed into them; however big-endian
reverses the order of the pieces (for some reason), and
wasn't doing it the same way on both sides, so
the pieces didn't match and runtime failures ensued.
Fixes 188.ammp and sqlite3 on ppc32.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65481 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
053372dc3c25c5442b7349c612104e15c41233e8 25-Feb-2009 Devang Patel <dpatel@apple.com> Print variable's display name in dwarf DIE.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65468 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
906baaff77cc9fe453b986d63887a308f322fc24 25-Feb-2009 Devang Patel <dpatel@apple.com> Print variable's display name in dwarf DIE.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65468 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e3d423244ae288b2c9021dbb3cd7fb973d1cfc31 25-Feb-2009 Evan Cheng <evan.cheng@apple.com> Clean up dwarf writer, part 1. This eliminated the horrible recursive getGlobalVariablesUsing and replaced it something readable. It eliminated use of slow UniqueVector and replaced it with StringMap, SmallVector, and DenseMap, etc. It also fixed some non-deterministic behavior.

This is a very minor compile time win.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65438 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
3e2889135e4b11ec59744f6aae9d8f4ed64a28bb 25-Feb-2009 Evan Cheng <evan.cheng@apple.com> Clean up dwarf writer, part 1. This eliminated the horrible recursive getGlobalVariablesUsing and replaced it something readable. It eliminated use of slow UniqueVector and replaced it with StringMap, SmallVector, and DenseMap, etc. It also fixed some non-deterministic behavior.

This is a very minor compile time win.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65438 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
8f1579aedca03f089e239552ba7f1398e657c6f5 25-Feb-2009 Scott Michel <scottm@aero.org> Expand tabs to spaces (overlooked in previous commit)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65427 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
aef14ab1f83f6095eb2026b5ff4c5fbc35e008dd 25-Feb-2009 Scott Michel <scottm@aero.org> Expand tabs to spaces (overlooked in previous commit)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65427 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
df38043a46b873acb98e7ce0c700d82c1d888772 25-Feb-2009 Scott Michel <scottm@aero.org> Remove all "cached" data from BuildVectorSDNode, preferring to retrieve
results via reference parameters.

This patch also appears to fix Evan's reported problem supplied as a
reduced bugpoint test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65426 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0f73ff6a4a8cc66baf9c504b8a99953f3448fb55 25-Feb-2009 Scott Michel <scottm@aero.org> Remove all "cached" data from BuildVectorSDNode, preferring to retrieve
results via reference parameters.

This patch also appears to fix Evan's reported problem supplied as a
reduced bugpoint test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65426 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
57f0db833dc30404f1f5d28b23df326e520698ec 24-Feb-2009 Bill Wendling <isanbard@gmail.com> Overhaul my earlier submission due to feedback. It's a large patch, but most of
them are generic changes.

- Use the "fast" flag that's already being passed into the asm printers instead
of shoving it into the DwarfWriter.

- Instead of calling "MI->getParent()->getParent()" for every MI, set the
machine function when calling "runOnMachineFunction" in the asm printers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65379 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
4f40531823c2b995149ff3a1b721171ad6942363 24-Feb-2009 Bill Wendling <isanbard@gmail.com> Overhaul my earlier submission due to feedback. It's a large patch, but most of
them are generic changes.

- Use the "fast" flag that's already being passed into the asm printers instead
of shoving it into the DwarfWriter.

- Instead of calling "MI->getParent()->getParent()" for every MI, set the
machine function when calling "runOnMachineFunction" in the asm printers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65379 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
3d8bde8dfb2177dabbc6225a451889305d3756dd 24-Feb-2009 Owen Anderson <resistor@mac.com> Add a debugging option for SSC DCE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65375 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
a8b04a1f436ca87663de0be701ba9b998ad3ad8c 24-Feb-2009 Owen Anderson <resistor@mac.com> Add a debugging option for SSC DCE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65375 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
5aa4977fba97e816b5735f0bc53f16a46b24de63 24-Feb-2009 Bill Wendling <isanbard@gmail.com> - Use the "Fast" flag instead of "OptimizeForSize" to determine whether to emit
a DBG_LABEL or not. We want to fall back to the original way of emitting debug
info when we're in -O0/-fast mode.
- Add plumbing in to pass the "Fast" flag to places that need it.
- XFAIL DebugInfo/deaddebuglabel.ll. This is finding 11 labels instead of 8. I
need to investigate still.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65367 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
123374a4e21a05824aaf8535c5a59987818a18e5 24-Feb-2009 Bill Wendling <isanbard@gmail.com> - Use the "Fast" flag instead of "OptimizeForSize" to determine whether to emit
a DBG_LABEL or not. We want to fall back to the original way of emitting debug
info when we're in -O0/-fast mode.
- Add plumbing in to pass the "Fast" flag to places that need it.
- XFAIL DebugInfo/deaddebuglabel.ll. This is finding 11 labels instead of 8. I
need to investigate still.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65367 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
0001e56f15215ae4bc5fffb82eec5c4828b888f0 24-Feb-2009 Dan Gohman <gohman@apple.com> Fix a ValueTracking rule: RHS means operand 1, not 0. Add a simple
ashr instcombine to help expose this code. And apply the fix to
SelectionDAG's copy of this code too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
843649e3c242c13a5710e7eb4c7d8da5b3965fb9 24-Feb-2009 Dan Gohman <gohman@apple.com> Fix a ValueTracking rule: RHS means operand 1, not 0. Add a simple
ashr instcombine to help expose this code. And apply the fix to
SelectionDAG's copy of this code too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
002ec1482c83003c6aef841395271aa5993d916a 24-Feb-2009 Devang Patel <dpatel@apple.com> gdb uses DW_AT_prototyped to identify K&R style in C based languages.
This fixes objc.dg/dwarf-prototypes.m scan-assembler DW_AT_prototyped from llvmgcc42 test suite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65357 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e075e070412587f083cdca3cb2708a61ab87eaa5 24-Feb-2009 Devang Patel <dpatel@apple.com> gdb uses DW_AT_prototyped to identify K&R style in C based languages.
This fixes objc.dg/dwarf-prototypes.m scan-assembler DW_AT_prototyped from llvmgcc42 test suite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65357 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
53cac18cca61265304056de670cea39870f28315 24-Feb-2009 Devang Patel <dpatel@apple.com> If there is not any debug info available for any global variables and any subprograms then there is not any debug info to emit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65352 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
a9169c3c829dbafa8fe0a95efafa9e26791f3e57 24-Feb-2009 Devang Patel <dpatel@apple.com> If there is not any debug info available for any global variables and any subprograms then there is not any debug info to emit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65352 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
4214a5531cdbe538a358033f1847e55c4436be1b 23-Feb-2009 Scott Michel <scottm@aero.org> Introduce the BuildVectorSDNode class that encapsulates the ISD::BUILD_VECTOR
instruction. The class also consolidates the code for detecting constant
splats that's shared across PowerPC and the CellSPU backends (and might be
useful for other backends.) Also introduces SelectionDAG::getBUID_VECTOR() for
generating new BUILD_VECTOR nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65296 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
78c70a063ae08cf2bae5a8316cb607ceb57defad 23-Feb-2009 Scott Michel <scottm@aero.org> Introduce the BuildVectorSDNode class that encapsulates the ISD::BUILD_VECTOR
instruction. The class also consolidates the code for detecting constant
splats that's shared across PowerPC and the CellSPU backends (and might be
useful for other backends.) Also introduces SelectionDAG::getBUID_VECTOR() for
generating new BUILD_VECTOR nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65296 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
58207f12eefcb9cbfb6d9dc05a4efc6fa68fce28 22-Feb-2009 Evan Cheng <evan.cheng@apple.com> If a use operand is marked isKill, don't forget to add kill to its live interval as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65279 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d3b26864fa8f1d0e8bbc69cf8ba87f119745337a 22-Feb-2009 Evan Cheng <evan.cheng@apple.com> If a use operand is marked isKill, don't forget to add kill to its live interval as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65279 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
278f83daebd1d2072a4ce6892fa3481db5cdefbe 21-Feb-2009 Richard Pennington <rich@pennware.com> bug 3610: Floating point vaarg not softened.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65239 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
53e6b892e6db27ee44d65f1e740fe9adbcc37297 21-Feb-2009 Richard Pennington <rich@pennware.com> bug 3610: Floating point vaarg not softened.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65239 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
b5bd026a756d8650f2a94607c9b1dc34cf1c024a 21-Feb-2009 Anton Korobeynikov <asl@math.spbu.ru> Drop bunch of half-working stuff in the ext_weak linkage support.
Now we're using one gross, but quite robust hack :) (previous ones
did not work, for example, when ext_weak symbol was used deep inside
constant expression in the initializer).

The proper fix of this problem will require some quite huge asmprinter
changes and that's why was postponed. This fixes PR3629 by the way :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65230 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
480218b6bdd0a22638a7ff7d9db757753f1c2dc4 21-Feb-2009 Anton Korobeynikov <asl@math.spbu.ru> Drop bunch of half-working stuff in the ext_weak linkage support.
Now we're using one gross, but quite robust hack :) (previous ones
did not work, for example, when ext_weak symbol was used deep inside
constant expression in the initializer).

The proper fix of this problem will require some quite huge asmprinter
changes and that's why was postponed. This fixes PR3629 by the way :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65230 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
28c7ce3fd44143b595f05436edbaebea9e5d47c3 21-Feb-2009 Evan Cheng <evan.cheng@apple.com> If two-address def is dead and the instruction does not define other registers, and it doesn't produce side effects, just delete the instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65218 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
6f856b9d7c01dba2399a6681ba9a875d5ccece70 21-Feb-2009 Evan Cheng <evan.cheng@apple.com> If two-address def is dead and the instruction does not define other registers, and it doesn't produce side effects, just delete the instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65218 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
1ba519b7265397ab5a1f8d87ef5f573f7a2e6b83 21-Feb-2009 Dan Gohman <gohman@apple.com> Fix a bug that David Greene found in the DAGCombiner's logic
that checks whether it's safe to transform a store of a bitcast
value into a store of the original value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65201 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4e06178d99a68d447d3a64400b5342ee54a10aa8 21-Feb-2009 Dan Gohman <gohman@apple.com> Fix a bug that David Greene found in the DAGCombiner's logic
that checks whether it's safe to transform a store of a bitcast
value into a store of the original value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65201 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9a65cfe7dd7662558b45bcba46b11ee52c4bbf6c 20-Feb-2009 Bill Wendling <isanbard@gmail.com> - Early exit a nested block.
- Correct comment.
- Whitespace changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65149 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e0f3a26a0e0ada020daa3eab30022116d96c691e 20-Feb-2009 Bill Wendling <isanbard@gmail.com> - Early exit a nested block.
- Correct comment.
- Whitespace changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65149 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
4cafbb58e2c54138f05b9857db4a098a15e914ca 20-Feb-2009 Owen Anderson <resistor@mac.com> Fix a crash in the pre-alloc splitter exposed by recent codegen changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65121 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
83ecf4f7e96d2e76b8e135a06176054ec8575483 20-Feb-2009 Owen Anderson <resistor@mac.com> Fix a crash in the pre-alloc splitter exposed by recent codegen changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65121 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
3b2c01723c2f7270e357f3b8502bb80572b3e644 20-Feb-2009 Owen Anderson <resistor@mac.com> Add a quick pass to the stack slot colorer to eliminate some trivially redundant spills after coloring.
Ideally these would never get created in the first place, but until we enhance the spiller to have a more
global picture of what's happening, this is necessary for code quality in some circumstances.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65120 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
1edf7ee80259c8a99c5544405cb2746443fab832 20-Feb-2009 Owen Anderson <resistor@mac.com> Add a quick pass to the stack slot colorer to eliminate some trivially redundant spills after coloring.
Ideally these would never get created in the first place, but until we enhance the spiller to have a more
global picture of what's happening, this is necessary for code quality in some circumstances.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65120 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
4ed0c5fb07a2a4db3dd1e6a266ba961429aba2ec 20-Feb-2009 Bill Wendling <isanbard@gmail.com> Add an accessor method to DwarfWriter to tell of debugging info should be emitted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65092 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
50db0795c6592773206fbbda4d8cd73f7ecd9eb7 20-Feb-2009 Bill Wendling <isanbard@gmail.com> Add an accessor method to DwarfWriter to tell of debugging info should be emitted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65092 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
14a2e1eda01367d7f28cc39e59fb71822d32222f 19-Feb-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r65065. It was causing test failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65068 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
a3d6d9ccd2116ba27b25feaec0a8490d798adb73 19-Feb-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r65065. It was causing test failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65068 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
b5ef27375731ece13a8ae0102b3f3233351036af 19-Feb-2009 Bill Wendling <isanbard@gmail.com> Print out debug info when printing the machine instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65067 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b7596d2b13212e23f89e47a8fd508a6fffd186c1 19-Feb-2009 Bill Wendling <isanbard@gmail.com> Print out debug info when printing the machine instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65067 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
490359d6879a903a9d496cda317c0d21ff1deacf 19-Feb-2009 Bill Wendling <isanbard@gmail.com> Check for -fast here too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65065 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
4f68d2f17ded55c56dece65671425e974859effb 19-Feb-2009 Bill Wendling <isanbard@gmail.com> Check for -fast here too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65065 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
dfdacee2abd53d71a5b9a9f4d38c7973cc722663 19-Feb-2009 Bill Wendling <isanbard@gmail.com> Generate these labels when we're in "fast" mode, not simply when we're no in
"optimize-for-size" mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65064 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
9a48eb0c5cfd820a8eb3d0edb5b989ba2d26d7b0 19-Feb-2009 Bill Wendling <isanbard@gmail.com> Generate these labels when we're in "fast" mode, not simply when we're no in
"optimize-for-size" mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65064 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
f2ec7e4a20c1d3b0cd84943f1b37af196f15667b 18-Feb-2009 Devang Patel <dpatel@apple.com> The subprogram die may not exist while creating "default" scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64920 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7f3f1983980c71b854821c3f27cf8e71eb3a2810 18-Feb-2009 Devang Patel <dpatel@apple.com> The subprogram die may not exist while creating "default" scope.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64920 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
d6b7a242d345fd79a337afd384bb586c5619cfe7 18-Feb-2009 Nate Begeman <natebegeman@mac.com> Add support to the JIT for true non-lazy operation. When a call to a function
that has not been JIT'd yet, the callee is put on a list of pending functions
to JIT. The call is directed through a stub, which is updated with the address
of the function after it has been JIT'd. A new interface for allocating and
updating empty stubs is provided.

Add support for removing the ModuleProvider the JIT was created with, which
would otherwise invalidate the JIT's PassManager, which is initialized with the
ModuleProvider's Module.

Add support under a new ExecutionEngine flag for emitting the infomration
necessary to update Function and GlobalVariable stubs after JITing them, by
recording the address of the stub and the name of the GlobalValue. This allows
code to be copied from one address space to another, where libraries may live
at different virtual addresses, and have the stubs updated with their new
correct target addresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64906 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
7b1a847006d1bae5bfc8e44a2e352a0a3d302e00 18-Feb-2009 Nate Begeman <natebegeman@mac.com> Add support to the JIT for true non-lazy operation. When a call to a function
that has not been JIT'd yet, the callee is put on a list of pending functions
to JIT. The call is directed through a stub, which is updated with the address
of the function after it has been JIT'd. A new interface for allocating and
updating empty stubs is provided.

Add support for removing the ModuleProvider the JIT was created with, which
would otherwise invalidate the JIT's PassManager, which is initialized with the
ModuleProvider's Module.

Add support under a new ExecutionEngine flag for emitting the infomration
necessary to update Function and GlobalVariable stubs after JITing them, by
recording the address of the stub and the name of the GlobalValue. This allows
code to be copied from one address space to another, where libraries may live
at different virtual addresses, and have the stubs updated with their new
correct target addresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64906 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
865f006bb45a609e1cb6acb653af3fe5442ee4dc 18-Feb-2009 Dan Gohman <gohman@apple.com> Eliminate several more unnecessary intptr_t casts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64888 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
CStrategy.cpp
achineDominators.cpp
c74a197153dae0577209a2e12b9bc984f9f4df45 18-Feb-2009 Dan Gohman <gohman@apple.com> Eliminate several more unnecessary intptr_t casts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64888 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
CStrategy.cpp
achineDominators.cpp
13319ceffdd99d153e62011c5dda08b95e3279e3 17-Feb-2009 Devang Patel <dpatel@apple.com> The debugger sometimes lookup dynamically in the runtime to find ivar info of any Objective-C classes. It would be very helpful to debugger if the compiler encodes runtime version number in DWARF.

Add support for two additional DWARF attributes to encode Objective-C runtime version number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64834 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
74193d7985574276506f66644ae06ab2f8db1484 17-Feb-2009 Devang Patel <dpatel@apple.com> The debugger sometimes lookup dynamically in the runtime to find ivar info of any Objective-C classes. It would be very helpful to debugger if the compiler encodes runtime version number in DWARF.

Add support for two additional DWARF attributes to encode Objective-C runtime version number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64834 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
fdc40a0a696c658d550d894ea03772e5f8af2c94 17-Feb-2009 Scott Michel <scottm@aero.org> Remove trailing whitespace to reduce later commit patch noise.

(Note: Eventually, commits like this will be handled via a pre-commit hook that
does this automagically, as well as expand tabs to spaces and look for 80-col
violations.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64827 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
91099d69c3f33ae818f27ae0f8f7f499b94ff95a 17-Feb-2009 Scott Michel <scottm@aero.org> Remove trailing whitespace to reduce later commit patch noise.

(Note: Eventually, commits like this will be handled via a pre-commit hook that
does this automagically, as well as expand tabs to spaces and look for 80-col
violations.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64827 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
36375ee7a584343fabaf20630326f1848263bce6 17-Feb-2009 Devang Patel <dpatel@apple.com> Emit debug info for bitfields.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64815 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
f1f30d4f47a32392c93f4d00e47af7519f331fa7 17-Feb-2009 Devang Patel <dpatel@apple.com> Emit debug info for bitfields.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64815 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
bf18939180afcd8d0c8c422f86b170e036544be6 17-Feb-2009 Evan Cheng <evan.cheng@apple.com> A couple of places where reused use operands should be marked kill. This is exposed by recent availability fallthrough changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64745 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
19fb06e74b84acd238aec9e48c6c9a8f476d1ee8 17-Feb-2009 Evan Cheng <evan.cheng@apple.com> A couple of places where reused use operands should be marked kill. This is exposed by recent availability fallthrough changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64745 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
86e6cb924b85e7a288a4d8bfde5d1a8fb9810c88 17-Feb-2009 Bill Wendling <isanbard@gmail.com> --- Merging (from foreign repository) r64714 into '.':
U include/llvm/CodeGen/DebugLoc.h
U lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp

Enable debug location generation at -Os. This goes with the reapplication of the
r63639 patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64715 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
e3f43e53315441b0598d3ba528dd6ea62e1fa60a 17-Feb-2009 Bill Wendling <isanbard@gmail.com> --- Merging (from foreign repository) r64714 into '.':
U include/llvm/CodeGen/DebugLoc.h
U lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp

Enable debug location generation at -Os. This goes with the reapplication of the
r63639 patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64715 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
97d116346cdf47ce0c8536a69ff6c606309cb4c0 16-Feb-2009 Dan Gohman <gohman@apple.com> Don't assume that a left-shift of a value with one bit set will have
one bit set, because the bit may be shifted off the end. Instead,
just check for a constant 1 being shifted. This is still sufficient
to handle all the cases in test/CodeGen/X86/bt.ll. This fixes PR3583.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64622 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
faab1fb9432740e076dff915265c30dacdc4c3f2 16-Feb-2009 Dan Gohman <gohman@apple.com> Don't assume that a left-shift of a value with one bit set will have
one bit set, because the bit may be shifted off the end. Instead,
just check for a constant 1 being shifted. This is still sufficient
to handle all the cases in test/CodeGen/X86/bt.ll. This fixes PR3583.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64622 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b599979ab591a6f4557337a4190153094725ef45 15-Feb-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3522. It's not safe to sink into landing pad BB's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64582 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
4d025f3f7031613b2fc7cd0ac30b8dd1bfaa1591 15-Feb-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3522. It's not safe to sink into landing pad BB's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64582 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
aff9c270de8de7d1a0bc138d391bc67136bad58e 14-Feb-2009 Cedric Venet <cedric.venet@laposte.net> Unbreak the build on win32.
Cleanup some warning.

Remark: when struct/class are declared differently than they are defined, this make problem for VC++ since it seems to mangle class differently that struct. These error are very hard to understand and find. So please, try to keep your definition/declaration in sync.

Only tested with VS2008. hope it does not break anything. feel free to revert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64554 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ee2a3eb01b2d0f66b49bfb7d705ef36751bfc5ff 14-Feb-2009 Cédric Venet <cedric.venet@laposte.net> Unbreak the build on win32.
Cleanup some warning.

Remark: when struct/class are declared differently than they are defined, this make problem for VC++ since it seems to mangle class differently that struct. These error are very hard to understand and find. So please, try to keep your definition/declaration in sync.

Only tested with VS2008. hope it does not break anything. feel free to revert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64554 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
92c1e126473dfa93eeb4c9a124af4fedb40f0d5b 13-Feb-2009 Bill Wendling <isanbard@gmail.com> Revert this. It was breaking stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
irtRegMap.cpp
b094016854943591284b7230d466cecc9bcce9ef 13-Feb-2009 Bill Wendling <isanbard@gmail.com> Revert this. It was breaking stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
irtRegMap.cpp
54fc7d67146b2b95ae2d1c93ed59008d4338d8c8 13-Feb-2009 Bill Wendling <isanbard@gmail.com> Turn off the old way of handling debug information in the code generator. Use
the new way, where all of the information is passed on SDNodes and machine
instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64427 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
irtRegMap.cpp
2ca91b1efb155855e8a02b7db90301c90394128b 13-Feb-2009 Bill Wendling <isanbard@gmail.com> Turn off the old way of handling debug information in the code generator. Use
the new way, where all of the information is passed on SDNodes and machine
instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64427 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
irtRegMap.cpp
78e3e521cd90e5f6382c14b6e4d809fb59610ed6 12-Feb-2009 Dale Johannesen <dalej@apple.com> Arrange to print constants that match "n" and "i" constraints
in inline asm as signed (what gcc does). Add partial support
for x86-specific "e" and "Z" constraints, with appropriate
signedness for printing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64400 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
f190a030835622ec1d15e32f30939f9495827e39 12-Feb-2009 Dale Johannesen <dalej@apple.com> Arrange to print constants that match "n" and "i" constraints
in inline asm as signed (what gcc does). Add partial support
for x86-specific "e" and "Z" constraints, with appropriate
signedness for printing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64400 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
4ed76e76bb3d9a7504b22ae3952b541ff68925d3 12-Feb-2009 Dan Gohman <gohman@apple.com> Adjust the sizes for a few SmallVectors to reflect their usage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64381 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
irtRegMap.cpp
f8d52f2c23e2bfec7d6ec4f4ed63fa6a1fed5086 12-Feb-2009 Dan Gohman <gohman@apple.com> Adjust the sizes for a few SmallVectors to reflect their usage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64381 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
irtRegMap.cpp
14c4c1ec0eca7f2f91957571288b4d918ed8c394 12-Feb-2009 Chris Lattner <sabre@nondot.org> make fast isel fall back to selectiondags for VLA llvm.declare intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64379 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d369addb615472147c45d6fe30509e7da9fc7246 12-Feb-2009 Chris Lattner <sabre@nondot.org> make fast isel fall back to selectiondags for VLA llvm.declare intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64379 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8679119f4b686d141462bf6d18f4ae0eb0bd0841 12-Feb-2009 Evan Cheng <evan.cheng@apple.com> It's (currently) not safe to keep certain physical registers live across basic blocks, e.g. x86 fp stack registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64374 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
249c428fad8699369263e57054c8d52de86c2032 12-Feb-2009 Evan Cheng <evan.cheng@apple.com> It's (currently) not safe to keep certain physical registers live across basic blocks, e.g. x86 fp stack registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64374 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
f2b14715d11e52adbb17a5860d1ce42f82f85a0c 12-Feb-2009 Evan Cheng <evan.cheng@apple.com> Oops. Last second clean up messed things up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f11f9578e0e34d42ba884472968c5a649b9e3918 12-Feb-2009 Evan Cheng <evan.cheng@apple.com> Oops. Last second clean up messed things up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
6d209c413e3be5640f14af136e8b112e85c79cab 12-Feb-2009 Evan Cheng <evan.cheng@apple.com> If availability info is kept when fallthrough into a bb, add the available registers to live-in set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64372 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
1eff330f5672b44a6aa94f36c0803e7002970193 12-Feb-2009 Evan Cheng <evan.cheng@apple.com> If availability info is kept when fallthrough into a bb, add the available registers to live-in set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64372 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
8182347d70413174f2e80ea429801e887aee5cc3 12-Feb-2009 Evan Cheng <evan.cheng@apple.com> Replace one of burr scheduling heuristic with something more sensible. Now calcMaxScratches simply compute the number of true data dependencies. This actually improve a couple of tests in dejagnu suite as many tests in llvm nightly test suite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64369 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
1c71ffb3d277087f53e44cc81e270b9d85a36557 12-Feb-2009 Evan Cheng <evan.cheng@apple.com> Replace one of burr scheduling heuristic with something more sensible. Now calcMaxScratches simply compute the number of true data dependencies. This actually improve a couple of tests in dejagnu suite as many tests in llvm nightly test suite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64369 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f412f7c417eb4836ce875b0d214ee91026eba894 12-Feb-2009 Evan Cheng <evan.cheng@apple.com> Apparently some MachineBasicBlock's don't have corresponding llvm basic blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64340 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGPrinter.cpp
0f1ac09fd99095e2b3aac887a876467af08408de 12-Feb-2009 Evan Cheng <evan.cheng@apple.com> Apparently some MachineBasicBlock's don't have corresponding llvm basic blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64340 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGPrinter.cpp
ce7f5a1e50fa312ce27e41030dd1b2e02ba8d604 12-Feb-2009 Evan Cheng <evan.cheng@apple.com> Remove a bogus assertion. It's possible a live-in available value is used by a previous instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64339 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
e8ca4595895a4de02a0ae8027db41072b53e24e4 12-Feb-2009 Evan Cheng <evan.cheng@apple.com> Remove a bogus assertion. It's possible a live-in available value is used by a previous instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64339 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
c7fa16f782b0ef1d51bff0f88bffbbe37d03adf5 11-Feb-2009 Dan Gohman <gohman@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64328 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
b3eeffe7ee7dc62c5d9fed323567b797184addb0 11-Feb-2009 Dan Gohman <gohman@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64328 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
c8db34cb07fea88c4b8f3e0f095fd8aed568b28e 11-Feb-2009 Dan Gohman <gohman@apple.com> Don't use special heuristics for nodes with no data predecessors
unless they actually have data successors, and likewise for nodes
with no data successors unless they actually have data precessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64327 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
58e1af36a2e7e0e6ab0edc6a21f8105983ffd969 11-Feb-2009 Dan Gohman <gohman@apple.com> Don't use special heuristics for nodes with no data predecessors
unless they actually have data successors, and likewise for nodes
with no data successors unless they actually have data precessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64327 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
cc994ea36bd6f501334d8be4219fc23caff025d9 11-Feb-2009 Dan Gohman <gohman@apple.com> Delete the heuristic for non-livein CopyFromReg nodes. Non-liveinness
is determined by whether the node has a Flag operand. However, if the
node does have a Flag operand, it will be glued to its register's
def, so the heuristic would end up spuriously applying to whatever
node is the def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64319 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3ea665c6357708b34e5fcacf7b882de1bd51a3c6 11-Feb-2009 Dan Gohman <gohman@apple.com> Delete the heuristic for non-livein CopyFromReg nodes. Non-liveinness
is determined by whether the node has a Flag operand. However, if the
node does have a Flag operand, it will be glued to its register's
def, so the heuristic would end up spuriously applying to whatever
node is the def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64319 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
85b0edec4672f6ac6c15f757b119d04232a61861 11-Feb-2009 Dale Johannesen <dalej@apple.com> Make a transformation added in 63266 a bit less aggressive.
It was transforming (x&y)==y to (x&y)!=0 in the case where
y is variable and known to have at most one bit set (e.g. z&1).
This is not correct; the expressions are not equivalent when y==0.
I believe this patch salvages what can be salvaged, including
all the cases in bt.ll. Dan, please review.
Fixes gcc.c-torture/execute/20040709-[12].c



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64314 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
0ca3f130fadb912319a80c849ffa0eae16f0ecb4 11-Feb-2009 Dale Johannesen <dalej@apple.com> Make a transformation added in 63266 a bit less aggressive.
It was transforming (x&y)==y to (x&y)!=0 in the case where
y is variable and known to have at most one bit set (e.g. z&1).
This is not correct; the expressions are not equivalent when y==0.
I believe this patch salvages what can be salvaged, including
all the cases in bt.ll. Dan, please review.
Fixes gcc.c-torture/execute/20040709-[12].c



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64314 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
752272a5e553313f7b0397a06a23b4fe8ac013c4 11-Feb-2009 Evan Cheng <evan.cheng@apple.com> Implement PR3495: local spiller optimization. The local spiller can now keep availability information over BB boundaries. It visits BB's in depth first order. After visiting a BB if it find a successor which has a single predecessor it visits the successor next without clearing the availability information. This allows the successor to omit reloads or change them into copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64298 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
fc201f33dd4e18edd9675ed7cd36579ccead6f71 11-Feb-2009 Evan Cheng <evan.cheng@apple.com> Implement PR3495: local spiller optimization. The local spiller can now keep availability information over BB boundaries. It visits BB's in depth first order. After visiting a BB if it find a successor which has a single predecessor it visits the successor next without clearing the availability information. This allows the successor to omit reloads or change them into copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64298 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
47ac0f0c7c39289f5970688154e385be22b7f293 11-Feb-2009 Dan Gohman <gohman@apple.com> When scheduling a block in parts, keep track of the overall
instruction index across each part. Instruction indices are used
to make live range queries, and live ranges can extend beyond
scheduling region boundaries.

Refactor the ScheduleDAGSDNodes class some more so that it
doesn't have to worry about this additional information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64288 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGISel.cpp
7c968a8b1f4168e54fda5f3c418be83d86dcc68f 11-Feb-2009 Dan Gohman <gohman@apple.com> When scheduling a block in parts, keep track of the overall
instruction index across each part. Instruction indices are used
to make live range queries, and live ranges can extend beyond
scheduling region boundaries.

Refactor the ScheduleDAGSDNodes class some more so that it
doesn't have to worry about this additional information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64288 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGISel.cpp
5cffa6fe271351a8fd80e7767b5d61a999acfa9b 11-Feb-2009 Dan Gohman <gohman@apple.com> Use iterators to iterate through the Preds array instead of
an index. This code is on the hot-path because the current
way SDep edges are uniqued has quadratic complexity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64262 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
b8f1ff3969e9d194f51f4905e8ca80ef75fb827f 11-Feb-2009 Dan Gohman <gohman@apple.com> Use iterators to iterate through the Preds array instead of
an index. This code is on the hot-path because the current
way SDep edges are uniqued has quadratic complexity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64262 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
bed353d0163a6b17beecc20c23b67de9b06e7b5c 11-Feb-2009 Dan Gohman <gohman@apple.com> Consider any instruction that modifies the stack pointer to be
a scheduling region boundary. This isn't necessary for
correctness; it helps with compile time, as it avoids the need
for data- and anti-dependencies from all spills and reloads on
the stack-pointer modification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64255 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
75cc17f713d324005aff947361c1115370f047ec 11-Feb-2009 Dan Gohman <gohman@apple.com> Consider any instruction that modifies the stack pointer to be
a scheduling region boundary. This isn't necessary for
correctness; it helps with compile time, as it avoids the need
for data- and anti-dependencies from all spills and reloads on
the stack-pointer modification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64255 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
9e64bbb322417c09f27afdf08e3946287c9df5aa 11-Feb-2009 Dan Gohman <gohman@apple.com> Factor out more code for computing register live-range informationfor
scheduling, and generalize is so that preserves state across
scheduling regions. This fixes incorrect live-range information around
terminators and labels, which are effective region boundaries.

In place of looking for terminators to anchor inter-block dependencies,
introduce special entry and exit scheduling units for this purpose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64254 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
a91eb05e88bd1afe30ac1e0ecb0eb718648e28bf 11-Feb-2009 Dan Gohman <gohman@apple.com> Factor out more code for computing register live-range informationfor
scheduling, and generalize is so that preserves state across
scheduling regions. This fixes incorrect live-range information around
terminators and labels, which are effective region boundaries.

In place of looking for terminators to anchor inter-block dependencies,
introduce special entry and exit scheduling units for this purpose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64254 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
f0e366a929a1acb4bc14df5ef831cce74607a967 10-Feb-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3457: Ignore control successors when looking for closest scheduled successor. A control successor doesn't read result(s) produced by the scheduling unit being evaluated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64210 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
4b38e9aa014d2d3fdb682b7f23b8a702fcbdd068 10-Feb-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3457: Ignore control successors when looking for closest scheduled successor. A control successor doesn't read result(s) produced by the scheduling unit being evaluated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64210 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
2303df96b05077b085db64274cd0e3ade452e715 10-Feb-2009 Devang Patel <dpatel@apple.com> Validate file id.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64204 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
d94b693c76dfd3c6815a6bef51748f645098650d 10-Feb-2009 Devang Patel <dpatel@apple.com> Validate file id.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64204 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
4ded02f8bd31bad439f78c6d485babe932a18fc5 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> If the target cannot issue a copy for the given source and dest registers, abort instead of silently continue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64184 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
4b5c3f7da51afc15962dd4ff4dc819edf7dbcde7 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> If the target cannot issue a copy for the given source and dest registers, abort instead of silently continue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64184 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
65b52dffe02d6ffce8d63b4fe2d7714d69968476 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Simplify code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
c2541dd7d7246af95c0c6207e8769e47f4669623 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Simplify code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
b1032a8a2f322e031f7c0947c3fb60fe9e8a10e6 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Make sure constant subscript is truncated to ptr size if it may not fit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64163 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
5c23d3c2cf096d7f4d50e44baf9423261d3646bd 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Make sure constant subscript is truncated to ptr size if it may not fit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64163 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
8f0d99e463a2dcb5a40d14f0481a0e322bcf79e4 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Re-enable machine sinking pass now that the coalescer bugs and the AnalyzeBrnach bug are fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64126 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
23cf3d1d824dc7938ca893fd6bfee3d386ed0b89 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Re-enable machine sinking pass now that the coalescer bugs and the AnalyzeBrnach bug are fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64126 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
190424edcdbb6dcb1b6197b0cc79e2a1cbaa3fb6 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Fix another case ShortenDeadCopySrcLiveRange is shortening too much. No test case possible since I don't know what to grep for. :-(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64125 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
e430f21f8a5dccefc73e6d7c34cf1ff1c6e568c8 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Fix another case ShortenDeadCopySrcLiveRange is shortening too much. No test case possible since I don't know what to grep for. :-(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64125 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
dc54d317e7a381ef8e4aca80d54ad1466bb85dda 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Turns out AnalyzeBranch can modify the mbb being analyzed. This is a nasty
suprise to some callers, e.g. register coalescer. For now, add an parameter
that tells AnalyzeBranch whether it's safe to modify the mbb. A better
solution is out there, but I don't have time to deal with it right now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64124 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
eac316468ad31a7bf286528ff9970c5794ba8539 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Turns out AnalyzeBranch can modify the mbb being analyzed. This is a nasty
suprise to some callers, e.g. register coalescer. For now, add an parameter
that tells AnalyzeBranch whether it's safe to modify the mbb. A better
solution is out there, but I don't have time to deal with it right now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64124 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
0a1fcce09230e9b4bd30a8f07447aa075dce7470 08-Feb-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3486. Fix a bug in code that manually patch physical register live interval after its sub-register is coalesced with a virtual register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64082 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
87597227873f779774eb56dd0561d77eeda43a88 08-Feb-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3486. Fix a bug in code that manually patch physical register live interval after its sub-register is coalesced with a virtual register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64082 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
86fb9fdb2000213d3cd5a082e8501cb8fe974a14 08-Feb-2009 Evan Cheng <evan.cheng@apple.com> Strengthen the previous check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64076 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b81461a91833f129dfa46fbe47445fb0b7155483 08-Feb-2009 Evan Cheng <evan.cheng@apple.com> Strengthen the previous check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64076 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f18134a1ae4cc8e064c3a30ece4d23a5ec75286a 08-Feb-2009 Evan Cheng <evan.cheng@apple.com> r64073 commit message is lost. Here it is:
Right now if the coalesced copy def is dead and its src is a kill, and that
there are now other uses within the live range, the coalescer would mark the
def of the source register as dead. But it should also check if there are
other kills which means the value has other uses not in the live range.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64075 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f1162978c6e979010cf65a8ecaa7d3f644f8d31a 08-Feb-2009 Evan Cheng <evan.cheng@apple.com> r64073 commit message is lost. Here it is:
Right now if the coalesced copy def is dead and its src is a kill, and that
there are now other uses within the live range, the coalescer would mark the
def of the source register as dead. But it should also check if there are
other kills which means the value has other uses not in the live range.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64075 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
77fde2cbb1fbf9daf5235fa734c6c09b2d530617 08-Feb-2009 Evan Cheng <evan.cheng@apple.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64073 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
69b8873a33af59f7ded4f5e1924bfe3f4cdd48e5 08-Feb-2009 Evan Cheng <evan.cheng@apple.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64073 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
7f51fd3ea93232658388757fcc8121f14f4454bc 08-Feb-2009 Bill Wendling <isanbard@gmail.com> Revert r63999. It was breaking self-hosting builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64062 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
7576d7bc4752d7ae65195a32629cf2c76d10b1d1 08-Feb-2009 Bill Wendling <isanbard@gmail.com> Revert r63999. It was breaking self-hosting builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64062 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
556b4a6385d34b77e58ff5a3ce51ddae5ae6112c 07-Feb-2009 Chris Lattner <sabre@nondot.org> Add missing break statements, fixing PR3503.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64040 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
ba44385abd7be8cbcfc74571052334f2fb263d44 07-Feb-2009 Chris Lattner <sabre@nondot.org> Add missing break statements, fixing PR3503.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64040 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
6f38cb61a94b3abab70f0ee463bdcf55d86d334e 07-Feb-2009 Dale Johannesen <dalej@apple.com> Use getDebugLoc forwarder instead of getNode()->getDebugLoc.
No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
2dbdb0ea777a13c6fa8e9fe708e728a84752c20a 07-Feb-2009 Dale Johannesen <dalej@apple.com> Use getDebugLoc forwarder instead of getNode()->getDebugLoc.
No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
1fdbc1dd4e9cb42c79a30e8dc308c322e923cc52 07-Feb-2009 Dan Gohman <gohman@apple.com> Constify TargetInstrInfo::EmitInstrWithCustomInserter, allowing
ScheduleDAG's TLI member to use const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64018 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
96d60921d8568680bad2788b80a163fecb1dbdbe 07-Feb-2009 Dan Gohman <gohman@apple.com> Constify TargetInstrInfo::EmitInstrWithCustomInserter, allowing
ScheduleDAG's TLI member to use const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64018 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
92570c4a1a11cbdaf5ffb13547428dbee1103875 07-Feb-2009 Dale Johannesen <dalej@apple.com> Make SDNode constructors take a DebugLoc always.
Adjust derived classes to pass UnknownLoc where
a DebugLoc does not make sense. Pick one of
DebugLoc and non-DebugLoc variants to survive
for all such classes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64000 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f89c5ca0230558def61ded2a11d38c1539eeba2d 07-Feb-2009 Dale Johannesen <dalej@apple.com> Make SDNode constructors take a DebugLoc always.
Adjust derived classes to pass UnknownLoc where
a DebugLoc does not make sense. Pick one of
DebugLoc and non-DebugLoc variants to survive
for all such classes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64000 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c963b638c783beb2252e8a6c580c2d15c36c9be9 07-Feb-2009 Evan Cheng <evan.cheng@apple.com> Enable machine sinking pass in non-fast mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63999 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
9401aff952e9cc39c61ff85c36968c8df8edfea1 07-Feb-2009 Evan Cheng <evan.cheng@apple.com> Enable machine sinking pass in non-fast mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63999 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
edb62c484e00daab09db92a2e512bb50752d9e50 07-Feb-2009 Dale Johannesen <dalej@apple.com> Remove now-unused constructors.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
be31a6ae340687d341333eec18c2c5cc8c15ebf7 07-Feb-2009 Dale Johannesen <dalej@apple.com> Remove now-unused constructors.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b6f5417edb8ad11e06d3a6527e452945e5349a97 07-Feb-2009 Evan Cheng <evan.cheng@apple.com> Don't sink the instruction if TargetRegisterInfo::isSafeToMoveRegClassDefs doesn't think it's safe. This works around PR1911.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63994 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
eea6355c121eac6cbcf7d7ecc62b37969c70fe61 07-Feb-2009 Evan Cheng <evan.cheng@apple.com> Don't sink the instruction if TargetRegisterInfo::isSafeToMoveRegClassDefs doesn't think it's safe. This works around PR1911.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63994 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
b300d2aa3ef08b5074449e2c05804717f488f4e4 07-Feb-2009 Dale Johannesen <dalej@apple.com> Get rid of the last non-DebugLoc versions of getNode!

Many targets build placeholder nodes for special operands, e.g.
GlobalBaseReg on X86 and PPC for the PIC base. There's no
sensible way to associate debug info with these. I've left
them built with getNode calls with explicit DebugLoc::getUnknownLoc operands.
I'm not too happy about this but don't see a good improvement;
I considered adding a getPseudoOperand or something, but it
seems to me that'll just make it harder to read.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
24dd9a56e50b4c931ae96a93e67c4ed85e65d989 07-Feb-2009 Dale Johannesen <dalej@apple.com> Get rid of the last non-DebugLoc versions of getNode!

Many targets build placeholder nodes for special operands, e.g.
GlobalBaseReg on X86 and PPC for the PIC base. There's no
sensible way to associate debug info with these. I've left
them built with getNode calls with explicit DebugLoc::getUnknownLoc operands.
I'm not too happy about this but don't see a good improvement;
I considered adding a getPseudoOperand or something, but it
seems to me that'll just make it harder to read.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
e8d7230f480654cdb8ff1c3d0a38e1e9ab0bd55f 07-Feb-2009 Dale Johannesen <dalej@apple.com> Remove more non-DebugLoc getNode variants. Use
getCALLSEQ_{END,START} to permit passing no DebugLoc
there. UNDEF doesn't logically have DebugLoc; add
getUNDEF to encapsulate this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63978 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
9bfc017ed383685dbc2f7db5b7f79763057effea 07-Feb-2009 Dale Johannesen <dalej@apple.com> Remove more non-DebugLoc getNode variants. Use
getCALLSEQ_{END,START} to permit passing no DebugLoc
there. UNDEF doesn't logically have DebugLoc; add
getUNDEF to encapsulate this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63978 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
e72c5964d5263f2489bf2c7e9d32f71271d205fc 06-Feb-2009 Dale Johannesen <dalej@apple.com> And one more file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
18ae8afcca76dffc019ee213c8d84b30f97c3c54 06-Feb-2009 Dale Johannesen <dalej@apple.com> And one more file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
de06470330260f5937e7ca558f5f5b3e171f2ee5 06-Feb-2009 Dale Johannesen <dalej@apple.com> Remove more non-DebugLoc versions of getNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
175fdefc4fe809d3d58c98a8172e63696e0e79e0 06-Feb-2009 Dale Johannesen <dalej@apple.com> Remove more non-DebugLoc versions of getNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
8fcf170a66de974989f730d1e0d01d5fc63d6b8b 06-Feb-2009 Bill Wendling <isanbard@gmail.com> Clear out the CurDebugLoc info when doing a 'clear' on the SDL object.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
a1f8ff40a4e457df77517503aabdc694419dc511 06-Feb-2009 Bill Wendling <isanbard@gmail.com> Clear out the CurDebugLoc info when doing a 'clear' on the SDL object.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f5f5dce897269885754fc79adeb809194da52942 06-Feb-2009 Dale Johannesen <dalej@apple.com> Eliminate remaining non-DebugLoc version of getTargetNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63951 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5d398a378ab7be40fc3ea01e846f33b3dc83e265 06-Feb-2009 Dale Johannesen <dalej@apple.com> Eliminate remaining non-DebugLoc version of getTargetNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63951 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0a3776dc6f702d4e3f4a189df7f43d8f99957773 06-Feb-2009 Dan Gohman <gohman@apple.com> Rename SelectionDAGISel::Schedule to
SelectionDAGISel::CreateScheduler, and make it just create the
scheduler. Leave running the scheduler to the higher-level code.
This makes the higher-level code a little more explicit and
easier to follow, and will help enable some future refactoring.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63944 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
29800e286ab59a83bb621de09a94344e04e6f2a9 06-Feb-2009 Dan Gohman <gohman@apple.com> Rename SelectionDAGISel::Schedule to
SelectionDAGISel::CreateScheduler, and make it just create the
scheduler. Leave running the scheduler to the higher-level code.
This makes the higher-level code a little more explicit and
easier to follow, and will help enable some future refactoring.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63944 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
56774d2b0d865b597f47235ad708e772636e6834 06-Feb-2009 Dan Gohman <gohman@apple.com> Delete an unused member function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.h
2d7ded0b58014b081bc1e3cdc1bdbad2479d8915 06-Feb-2009 Dan Gohman <gohman@apple.com> Delete an unused member function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.h
770bcc7b15adbc978800db70dbb1c3c22913b52c 06-Feb-2009 Evan Cheng <evan.cheng@apple.com> Move getPointerRegClass from TargetInstrInfo to TargetRegisterInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63938 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
afca4630b4689e3fd3997682add43f86a6e67a5c 06-Feb-2009 Evan Cheng <evan.cheng@apple.com> Move getPointerRegClass from TargetInstrInfo to TargetRegisterInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63938 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
84fbac580941548a6ab1121ed3b0ffdc4e2bc080 06-Feb-2009 Dan Gohman <gohman@apple.com> Move ScheduleDAGSDNodes.h to be a private header. Front-ends
that previously included this header should include
SchedulerRegistry.h instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63937 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
8afcc1df3a862d9e7b1d55e3040ddd16e9e2f7cb 06-Feb-2009 Dan Gohman <gohman@apple.com> Move ScheduleDAGSDNodes.h to be a private header. Front-ends
that previously included this header should include
SchedulerRegistry.h instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63937 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodes.h
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
4350eb86a7cdc83fa6a5f4819a7f0534ace5cd58 06-Feb-2009 Evan Cheng <evan.cheng@apple.com> Add TargetInstrInfo::isSafeToMoveRegisterClassDefs. It returns true if it's safe to move an instruction which defines a value in the register class. Replace pre-splitting specific IgnoreRegisterClassBarriers with this new hook.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63936 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
f5a8a3611f4de6e820ddebb1cebb241b7812d8d9 06-Feb-2009 Evan Cheng <evan.cheng@apple.com> Add TargetInstrInfo::isSafeToMoveRegisterClassDefs. It returns true if it's safe to move an instruction which defines a value in the register class. Replace pre-splitting specific IgnoreRegisterClassBarriers with this new hook.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63936 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
6dc75fe5279e2c12bda13dcc4a1a13908de8596f 06-Feb-2009 Dan Gohman <gohman@apple.com> Move ScheduleDAGInstrs.h to be a private header. Front-ends
that used this header to select a scheduling policy should
use SchedulerRegistry.h instead (llvm-gcc and clang were
updated a while ago).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63934 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
98c6cb3f5ab20bb7d06f3edf28470b2196ea0d3c 06-Feb-2009 Dan Gohman <gohman@apple.com> Move ScheduleDAGInstrs.h to be a private header. Front-ends
that used this header to select a scheduling policy should
use SchedulerRegistry.h instead (llvm-gcc and clang were
updated a while ago).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63934 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
cheduleDAGInstrs.h
f90b2a7742ddeddc448586cc050818a664419e74 06-Feb-2009 Dale Johannesen <dalej@apple.com> get rid of some non-DebugLoc getTargetNode variants.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63909 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b556ed0ac5ed6d7514adaaeafaefec51840d6458 06-Feb-2009 Dale Johannesen <dalej@apple.com> get rid of some non-DebugLoc getTargetNode variants.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63909 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ed2eee63a6858312ed17582d8cb85a6856d8eb34 06-Feb-2009 Dale Johannesen <dalej@apple.com> Get rid of one more non-DebugLoc getNode and
its corresponding getTargetNode. Lots of
caller changes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63904 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
913ba76a560da1419879168a4a61e0739d636b18 06-Feb-2009 Dale Johannesen <dalej@apple.com> Get rid of one more non-DebugLoc getNode and
its corresponding getTargetNode. Lots of
caller changes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63904 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
54801f78b1ed0078a4c07cbb5472830335987f66 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> isAsCheapAsMove instructions can have register src operands. Check if they are really re-materializable.
This fixes sse.expandfft and sse.stepfft.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63890 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
25f57cd47d0893cb624c21f589902515c32cf33b 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> isAsCheapAsMove instructions can have register src operands. Check if they are really re-materializable.
This fixes sse.expandfft and sse.stepfft.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63890 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
3484c09e0da3c05c8a78946e090c7610208d937b 05-Feb-2009 Dale Johannesen <dalej@apple.com> Remove a non-DebugLoc version of getNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63889 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8a423f7fcba0ff1bbb0748a9f3b62c8074f5097f 05-Feb-2009 Dale Johannesen <dalej@apple.com> Remove a non-DebugLoc version of getNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63889 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9b36c631ebb9c68678b7ec5b9407a9b4d127e0f7 05-Feb-2009 Dale Johannesen <dalej@apple.com> Remove 3 non-DebugLoc variants of getNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63886 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b57c48758fb557d6e6fb526bcc4ddbf8751384e3 05-Feb-2009 Dale Johannesen <dalej@apple.com> Remove 3 non-DebugLoc variants of getNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63886 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
740854bb1974642af77bec5e7f835e15115ad639 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> Machine LICM increases register pressure and it almost always increase code size. For now, disable it for optimizing for size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63856 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
e06018e76ebdd3874a2bc278d1e1a16d72c8fb34 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> Machine LICM increases register pressure and it almost always increase code size. For now, disable it for optimizing for size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63856 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
c5d1a4ffd96528b49a9e34e06706f1499cd0fe80 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> Turn on machine LICM in non-fast mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63855 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
1be1216fa8353c5da53fc5b3bb197034e936c55b 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> Turn on machine LICM in non-fast mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63855 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
af6949d0b1e1545dff21c5e492fbf1760aa74b59 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> Teach machine licm to CSE hoisted instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63854 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
e6ba0287d7c9a8b7fc7fee66ce3091bb27639c3b 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> Teach machine licm to CSE hoisted instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63854 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
961154f2db1953d747313fe62399dfcc24f54a9b 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> ReMaterializeTrivialDef need to trim the live interval to the last kill if the copy kills the source register. This fixes uint64tof64.ll after ARM::MOVi is marked as isAsCheapAsAMove.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63853 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
cfcdc236689701055fe0299e95b779b6bd00be60 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> ReMaterializeTrivialDef need to trim the live interval to the last kill if the copy kills the source register. This fixes uint64tof64.ll after ARM::MOVi is marked as isAsCheapAsAMove.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63853 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
4798bbeaf5a76a83f2aa923b0abc792e01ac3be7 05-Feb-2009 Chris Lattner <sabre@nondot.org> if we have a large GEP offset on a 32-bit or other target, make
sure to print the value properly sext'd to the right pointer size.
This fixes PR3481.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63843 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
911129a738ab05b01cdd058b1f7e3c162a172251 05-Feb-2009 Chris Lattner <sabre@nondot.org> if we have a large GEP offset on a 32-bit or other target, make
sure to print the value properly sext'd to the right pointer size.
This fixes PR3481.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63843 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5734c94ec24a6f4ee940e0b146df48c647c7a4dc 05-Feb-2009 Owen Anderson <resistor@mac.com> Pre-alloc splitting needs to be more careful to avoid inserting spills/restores
between call frame setup/restore points. Unfortunately, this regresses
code size a bit, but at least it's correct now!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63837 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
54abf8c1b285bf8c70ace736dc6adb917404b50e 05-Feb-2009 Owen Anderson <resistor@mac.com> Pre-alloc splitting needs to be more careful to avoid inserting spills/restores
between call frame setup/restore points. Unfortunately, this regresses
code size a bit, but at least it's correct now!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63837 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
b0e341bca13cc4c729ba577cfcc6257bb1da0b33 05-Feb-2009 Mon P Wang <wangmp@apple.com> Fix a bug where we were not emitting a cvt rnd sat node for converting
between a unsigned integer and signed integer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63831 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8a443d7da86c8e21dca4f102ba513714d2211cb3 05-Feb-2009 Mon P Wang <wangmp@apple.com> Fix a bug where we were not emitting a cvt rnd sat node for converting
between a unsigned integer and signed integer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63831 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
49de98214b82fefeb8f16efbf8cdd8813a85469b 05-Feb-2009 Dale Johannesen <dalej@apple.com> Reapply 63765. Patches for clang and llvm-gcc to follow.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63812 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
fe5921a58b697ce8d9c423aaba11dc15bca9b8b1 05-Feb-2009 Dale Johannesen <dalej@apple.com> Reapply 63765. Patches for clang and llvm-gcc to follow.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63812 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
2fabcb27761e0f07368f065fda0144d824e1e51c 05-Feb-2009 Dale Johannesen <dalej@apple.com> Get rid of 3 non-DebugLoc getNode variants.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63808 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c0b654dd9ae78311a0c89dee815eb7be66416fd2 05-Feb-2009 Dale Johannesen <dalej@apple.com> Get rid of 3 non-DebugLoc getNode variants.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63808 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4be0bdf7c1162824927dd3de89e016ae4934d0d6 05-Feb-2009 Dale Johannesen <dalej@apple.com> Remove non-DebugLoc versions of getMergeValues, ZeroExtendInReg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63800 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
2bfdee3625932d6590f6e45f4aba79faeb29988e 05-Feb-2009 Dale Johannesen <dalej@apple.com> Remove non-DebugLoc versions of getMergeValues, ZeroExtendInReg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63800 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
a05dca4f9e051fad19fe9b5f6cce2715c1e5d505 05-Feb-2009 Dale Johannesen <dalej@apple.com> Remove non-DebugLoc forms of CopyToReg and CopyFromReg.
Adjust callers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63789 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b03cc3f88f4585859ea7031f5c5bbecb64202f96 05-Feb-2009 Dale Johannesen <dalej@apple.com> Remove non-DebugLoc forms of CopyToReg and CopyFromReg.
Adjust callers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63789 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4d452de1506344bf1d28bb4a8c4ddb78c51a28c8 04-Feb-2009 Dale Johannesen <dalej@apple.com> Reverting 63765. This broke the build of both clang
and llvm-gcc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
04c5fb64efecd366ef202f682d1d73ee215f0893 04-Feb-2009 Dale Johannesen <dalej@apple.com> Reverting 63765. This broke the build of both clang
and llvm-gcc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
4caa0427bfae369854ecdfe60b94238e566a5475 04-Feb-2009 Stuart Hastings <stuart@apple.com> 80 column rule.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
620a4d1aabde8cd05a56257b2f77618b11497345 04-Feb-2009 Stuart Hastings <stuart@apple.com> 80 column rule.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
33c960f523f2308482d5b2816af46a7ec90a6d3d 04-Feb-2009 Dale Johannesen <dalej@apple.com> Remove non-DebugLoc versions of getLoad and getStore.
Adjust the many callers of those versions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63767 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
ea99692c6c7dac4b4280286323c548c778de9993 04-Feb-2009 Dale Johannesen <dalej@apple.com> Remove non-DebugLoc versions of getLoad and getStore.
Adjust the many callers of those versions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63767 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
d24479730a8790d82c4859dc477bc2416d7a6bda 04-Feb-2009 Nate Begeman <natebegeman@mac.com> New feature: add support for target intrinsics being defined in the
target directories themselves. This also means that VMCore no longer
needs to know about every target's list of intrinsics. Future work
will include converting the PowerPC target to this interface as an
example implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63765 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
08e1f78b7874bf9fdff5fa6ce9d9ec61d61cb796 04-Feb-2009 Nate Begeman <natebegeman@mac.com> New feature: add support for target intrinsics being defined in the
target directories themselves. This also means that VMCore no longer
needs to know about every target's list of intrinsics. Future work
will include converting the PowerPC target to this interface as an
example implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63765 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
e5ab34e05d701da042619bf540046efc3c7bc41f 04-Feb-2009 Mon P Wang <wangmp@apple.com> Avoids generating a legalization assert for the case where a vector type is legal
but when legalizing the operation, we split the vector type and generate a library
call whose type needs to be promoted. For example, X86 with SSE on but MMX off,
a divide v2i64 will be scalarized to 2 calls to a library using i64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63760 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7cba39473f88d1552f9bae5b27ad08014e610020 04-Feb-2009 Mon P Wang <wangmp@apple.com> Avoids generating a legalization assert for the case where a vector type is legal
but when legalizing the operation, we split the vector type and generate a library
call whose type needs to be promoted. For example, X86 with SSE on but MMX off,
a divide v2i64 will be scalarized to 2 calls to a library using i64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63760 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6792e90fec54921fc5ec72f876b80edd47636cd0 04-Feb-2009 Evan Cheng <evan.cheng@apple.com> Skip over zero registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63748 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
e616c05e0cd4a8ee11af8aed659789073d2aec0a 04-Feb-2009 Evan Cheng <evan.cheng@apple.com> Skip over zero registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63748 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
80d6977e90c22313d5a62ac28811e0386a806aff 04-Feb-2009 Stuart Hastings <stuart@apple.com> Since I'm obliged to work with a development OS that currently doesn't
support GraphViz, I've been using the foo->dump() facility. This
patch is a minor rewrite to the SelectionDAG dump() stuff to make it a
little more helpful. The existing foo->dump() functionality does not
change; this patch adds foo->dumpr(). All of this is only useful when
running LLVM under a debugger.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63736 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c625028753a5e4e500b164d91950a3641880074a 04-Feb-2009 Stuart Hastings <stuart@apple.com> Since I'm obliged to work with a development OS that currently doesn't
support GraphViz, I've been using the foo->dump() facility. This
patch is a minor rewrite to the SelectionDAG dump() stuff to make it a
little more helpful. The existing foo->dump() functionality does not
change; this patch adds foo->dumpr(). All of this is only useful when
running LLVM under a debugger.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63736 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5caa883afc2c768c293757d4ca30d85b9094e876 04-Feb-2009 Evan Cheng <evan.cheng@apple.com> Don't call isInvariantLoad twice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63729 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
d7b8b37d5fc9f447f471cf6560fea97763176727 04-Feb-2009 Evan Cheng <evan.cheng@apple.com> Don't call isInvariantLoad twice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63729 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
45e94d68d7c99235cf4decc72812445b214df40e 04-Feb-2009 Evan Cheng <evan.cheng@apple.com> Don't bother hoisting out a "cheap" instruction if all of its uses are PHIs. LICM "cheap" instructions are not particularly beneficial to start with. This will just end up making the copies harder to coalesce.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63728 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
51e32f87f4df220f4efa5bfd29318ffce2c6da33 04-Feb-2009 Evan Cheng <evan.cheng@apple.com> Don't bother hoisting out a "cheap" instruction if all of its uses are PHIs. LICM "cheap" instructions are not particularly beneficial to start with. This will just end up making the copies harder to coalesce.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63728 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
9b61f33351a92f6a87065adae713c02497780887 04-Feb-2009 Evan Cheng <evan.cheng@apple.com> For now, only hoist re-materilizable instructions. LICM will increase register pressure. We want to avoid spilling more instructions if it's possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63725 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
6cad113f9d7ddc2bc1e25290a1a1910932a2c477 04-Feb-2009 Evan Cheng <evan.cheng@apple.com> For now, only hoist re-materilizable instructions. LICM will increase register pressure. We want to avoid spilling more instructions if it's possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63725 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
39355f9fea790c5a1b12ef0fdcfeac3f533232ea 04-Feb-2009 Dale Johannesen <dalej@apple.com> Remove non-DebugLoc forms of the exotic forms
of Lod and Sto; patch uses.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63716 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
3c4fb2211e7d04bd7abc2bc9dd5385928305841e 04-Feb-2009 Dale Johannesen <dalej@apple.com> Remove non-DebugLoc forms of the exotic forms
of Lod and Sto; patch uses.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63716 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
f5d9789a7fddc9173cee104c8f25a7564bad3f28 04-Feb-2009 Dale Johannesen <dalej@apple.com> Remove some more non-DebugLoc versions of construction
functions, with callers adjusted to fit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63705 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
85fc093918bb2bcb76d5ff8ef53d5f36f5515286 04-Feb-2009 Dale Johannesen <dalej@apple.com> Remove some more non-DebugLoc versions of construction
functions, with callers adjusted to fit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63705 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
f8d3ec2c5725a2010f11de4ba78f6127712a5fe7 04-Feb-2009 Dale Johannesen <dalej@apple.com> Check in file I forgot.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63704 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
9f6079fd9db5614db7c3fdfd2d2142192eba7c66 04-Feb-2009 Dale Johannesen <dalej@apple.com> Check in file I forgot.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63704 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
8ad9b43e690e8773cf836b30e8da26bc71e18844 04-Feb-2009 Dale Johannesen <dalej@apple.com> Remove a few non-DebugLoc versions of node creation
functions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
e234ef920183f88af1fc0b57a4d5e83f8e5f7990 04-Feb-2009 Dale Johannesen <dalej@apple.com> Remove a few non-DebugLoc versions of node creation
functions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
c460ae90019ddb19d4c07b2cd2fbaecfa7adf67d 04-Feb-2009 Dale Johannesen <dalej@apple.com> Fill in more omissions in DebugLog propagation.
I think that's it for this directory.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63690 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAGISel.cpp
564036cdd7ebd2084d554536ac8fd5cdf6f32013 04-Feb-2009 Dale Johannesen <dalej@apple.com> Fill in more omissions in DebugLog propagation.
I think that's it for this directory.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63690 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAGISel.cpp
a929c68bfcbe840bd26d336efaa80a6a275e802c 04-Feb-2009 Bill Wendling <isanbard@gmail.com> Constify and don't return a reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63689 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
acf9574dfc5bc2d35a336ac8af5c80356bd42872 04-Feb-2009 Bill Wendling <isanbard@gmail.com> Constify and don't return a reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63689 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
a04b75710910278334192b389c4c4c62600e162f 04-Feb-2009 Dale Johannesen <dalej@apple.com> DebugLoc propagation; adjustment to things omitted
from SelectionDagBuild.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63680 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
7140aaa0c46838fe2192026009fbb396bd020338 04-Feb-2009 Dale Johannesen <dalej@apple.com> DebugLoc propagation; adjustment to things omitted
from SelectionDagBuild.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63680 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
44f6ac640ab5181f9da1fc3b507df4ef2e4f1fd4 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Erm. Would be nice to initialize this variable. . .


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63677 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
c607509ccd79d5953ddda3942f5bf29d17b127df 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Erm. Would be nice to initialize this variable. . .


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63677 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
85e3af9b70cc48535b3d41049bae907335f184ab 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Add getDebugLocTuple to retrieve the DebugLocTuple for a given DebugLoc object.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63676 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
4756f3b7c233c919df42ea652a7f071505375d51 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Add getDebugLocTuple to retrieve the DebugLocTuple for a given DebugLoc object.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63676 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
0f502f6f44f2756f5cb7b17d8f1d8eae000d51b4 03-Feb-2009 Dale Johannesen <dalej@apple.com> Add some DL propagation to places that didn't
have it yet. More coming.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63673 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7f2abf4d0113aca037317ea1d1674ee00f3b1f84 03-Feb-2009 Dale Johannesen <dalej@apple.com> Add some DL propagation to places that didn't
have it yet. More coming.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63673 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ef7e18e60ca10d63ce64bfc9aba918d35717926b 03-Feb-2009 Bill Wendling <isanbard@gmail.com> More whitespace fixin'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63663 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
6baa18d426d0cea4dd9f722d903289a72f541041 03-Feb-2009 Bill Wendling <isanbard@gmail.com> More whitespace fixin'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63663 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
b9dcef2a00f1ac35442393c951c21272527c8625 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Whitespace and comment changes. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63660 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
CStrategy.cpp
824a8bfab684b9d7579d10d9478afaf69399a075 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Whitespace and comment changes. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63660 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
CStrategy.cpp
6268d69d7386bdd4ba1db5586feedeb0b7e6ddb6 03-Feb-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63653 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
00a1ee0ab18a9a91c1738d72a2aa0a509e869ef6 03-Feb-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63653 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
43f07fb6c3e3d775d8e5f1eaeb380b93bb3bc09d 03-Feb-2009 Dan Gohman <gohman@apple.com> Change the post-RA scheduler to iterate through the
basic-block segments bottom-up instead of top down. This
is the first step in a general restructuring of the way
register liveness is tracked in the post-RA scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63643 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
0dcda31cb40614d1adec10aad1a40a57ad581c69 03-Feb-2009 Dan Gohman <gohman@apple.com> Change the post-RA scheduler to iterate through the
basic-block segments bottom-up instead of top down. This
is the first step in a general restructuring of the way
register liveness is tracked in the post-RA scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63643 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
b51d40cf40eac676dda3ae9dfeb55822fa403394 03-Feb-2009 Devang Patel <dpatel@apple.com> First initialize DAG otherwise dwarf writer is used uninitialized.
Duncan spotted this. Thanks!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63641 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
eb4e0bd2d76bccc2c06b88fd21206917713c36bf 03-Feb-2009 Devang Patel <dpatel@apple.com> First initialize DAG otherwise dwarf writer is used uninitialized.
Duncan spotted this. Thanks!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63641 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
95c5f05641e0afdfcbeb430090e1cd0356dddfbc 03-Feb-2009 Duncan Sands <baldrick@free.fr> Fix PR3411. When replacing values, nodes are analyzed
in any old order. Since analyzing a node analyzes its
operands also, this can mean that when we pop a node
off the list of nodes to be analyzed, it may already
have been analyzed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
b3de15d2f4924e5e0f1f0eada3064dcb057bb14a 03-Feb-2009 Duncan Sands <baldrick@free.fr> Fix PR3411. When replacing values, nodes are analyzed
in any old order. Since analyzing a node analyzes its
operands also, this can mean that when we pop a node
off the list of nodes to be analyzed, it may already
have been analyzed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
d62e06c53b8b7e555617dc9b24b98c007d63de5d 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Explicitly pass in debug location information to BuildMI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63599 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
HIElimination.cpp
argetInstrInfoImpl.cpp
irtRegMap.cpp
57c81153e044b2ee5eb6e9cb6ab86d585cad1df3 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Explicitly pass in debug location information to BuildMI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63599 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
HIElimination.cpp
argetInstrInfoImpl.cpp
irtRegMap.cpp
6a8a0d74cb73956a9452943d4d4102ebede1f69e 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Pass in something sensible for the debug location information when creating the
initial PHI nodes of the machine function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63598 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
9391e1fb893c9a79957f6e95c5d2cfd3c2d73c00 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Pass in something sensible for the debug location information when creating the
initial PHI nodes of the machine function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63598 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
dbfd8dbdee81d016557dc77d34090492eda55562 03-Feb-2009 Dale Johannesen <dalej@apple.com> Fill in some missing DL propagation in getNode()s.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63595 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f2103eedc60790603693c35704e38135c904a8df 03-Feb-2009 Dale Johannesen <dalej@apple.com> Fill in some missing DL propagation in getNode()s.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63595 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b288487a8e2291dd802e19b1a9bc930368f448bf 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Use SDL->getCurDebugLoc() instead of unknown loc for landing pads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63594 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
eb4536c3d693518b2400060fced51676b6a0d360 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Use SDL->getCurDebugLoc() instead of unknown loc for landing pads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63594 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ec37e98b3d943328795a06a3184a125583dec151 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Explicitly pass in the "unknown" debug location. This is probably not
correct. We need more infrastructure before we can get the DebugLoc info for
these instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63593 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
2dae940597f756f61ea953326646bc6a0c694b95 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Explicitly pass in the "unknown" debug location. This is probably not
correct. We need more infrastructure before we can get the DebugLoc info for
these instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63593 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
0eb96fd94bce94df680f1fc436c1d3d1c510f937 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Alphabetize includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63591 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.h
50293da508e4d9fe430290c630855174c4224245 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Alphabetize includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63591 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.h
f2ad58d930aa18c8710cbd094eaf987eca0f2c1b 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info during SDNode -> machine instr creation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63585 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
1cb1c838c8a183fb57fd2396f8000a6b9644bb0b 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info during SDNode -> machine instr creation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63585 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
9bc96a57206cbebaa9b0ba9979f949eb10c1592c 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Create DebugLoc information in FastISel. Several temporary methods were
created. Specifically, those BuildMIs which use
"DebugLoc::getUnknownLoc()". I'll remove them soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63584 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
5aa0ddb0f8b15d4d0f3e6385908593e977360812 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Create DebugLoc information in FastISel. Several temporary methods were
created. Specifically, those BuildMIs which use
"DebugLoc::getUnknownLoc()". I'll remove them soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63584 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
ff97d4fe81ef0dcee9fe490bed8ab08e40251905 03-Feb-2009 Dale Johannesen <dalej@apple.com> Propagation in TargetLowering. Includes passing a DL
into SimplifySetCC which gets called elsewhere.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63583 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
38496ebf6f1efb9d29960d40cb9ee9877472cfb5 03-Feb-2009 Dale Johannesen <dalej@apple.com> Propagation in TargetLowering. Includes passing a DL
into SimplifySetCC which gets called elsewhere.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63583 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
a7ce741ff0ab02510833854bfa6a1c8c265faee3 03-Feb-2009 Dan Gohman <gohman@apple.com> Use the SubclassData field to hold ExtType, isTrunc, and MemIndexedMode
information. This eliminates the need for the Flags field in MemSDNode,
so this makes LoadSDNode and StoreSDNode smaller. Also, it makes
FoldingSetNodeIDs for loads and stores two AddIntegers smaller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63577 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9d0f5020ac67131972cb9229f0749df139b7d254 03-Feb-2009 Dan Gohman <gohman@apple.com> Use the SubclassData field to hold ExtType, isTrunc, and MemIndexedMode
information. This eliminates the need for the Flags field in MemSDNode,
so this makes LoadSDNode and StoreSDNode smaller. Also, it makes
FoldingSetNodeIDs for loads and stores two AddIntegers smaller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63577 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ca57b84729303d6f0c5abf951563efcde97010cd 03-Feb-2009 Dale Johannesen <dalej@apple.com> Last DebugLoc propagation for this file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bbf56a2eecbb8b46421be084874ed2935b2960d6 03-Feb-2009 Dale Johannesen <dalej@apple.com> Last DebugLoc propagation for this file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c6be110f9127982760f09f17b4910c51962d8d67 02-Feb-2009 Dale Johannesen <dalej@apple.com> More DebugLoc propagation. This should be everything
except LegalizeOp itself.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63560 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d8fd5342565f882e8cf423253b1eb236e874289b 02-Feb-2009 Dale Johannesen <dalej@apple.com> More DebugLoc propagation. This should be everything
except LegalizeOp itself.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63560 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5b93f6fa82e33b17d618b3e24da513f547861481 02-Feb-2009 Owen Anderson <resistor@mac.com> MergeValueInto is too smart: it might choose to do the merge the opposite direction.
Live interval reconstruction needs to account for this, and scour its maps to
prevent dangling references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63558 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
reAllocSplitting.cpp
85f86f3b4f75dbbcb69df866552d0f5d1eb0bed7 02-Feb-2009 Owen Anderson <resistor@mac.com> MergeValueInto is too smart: it might choose to do the merge the opposite direction.
Live interval reconstruction needs to account for this, and scour its maps to
prevent dangling references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63558 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
reAllocSplitting.cpp
8a782a2a8c2f0c82f292d03a3f707232b0bae27b 02-Feb-2009 Dale Johannesen <dalej@apple.com> DebugLoc propagation. ExpandOp and PromoteOp,
among others.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63555 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
82b5b72ad782a1d5054583206d2e2584c1f1694e 02-Feb-2009 Dale Johannesen <dalej@apple.com> DebugLoc propagation. ExpandOp and PromoteOp,
among others.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63555 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
54c94525f420cab274af60e98a77f081f96e59c2 02-Feb-2009 Dale Johannesen <dalej@apple.com> Commit missing files.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f3b911359a674bb471a39c8ea96887e02138f9fa 02-Feb-2009 Dale Johannesen <dalej@apple.com> Commit missing files.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bb5da918545efb54857a09c983a5a7f22a7e04d4 02-Feb-2009 Dale Johannesen <dalej@apple.com> More DebugLoc propagation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63543 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
352c47e94c41411529e4f96cfbf559c0bfcf8513 02-Feb-2009 Dale Johannesen <dalej@apple.com> More DebugLoc propagation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63543 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7fb085871857134f8cbeb17499d4ab771ba8da42 02-Feb-2009 Duncan Sands <baldrick@free.fr> Remove trailing spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63540 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
5f9fbe3b2dde9942e1d6d80fbf7f9da14ac131fc 02-Feb-2009 Duncan Sands <baldrick@free.fr> Remove trailing spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63540 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
af435274e56af687b51f33b5bc6f005fe99ad46f 02-Feb-2009 Dale Johannesen <dalej@apple.com> DebugLoc propagation for int<->fp conversions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63537 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9972b639ede7c1b0fc564e99383249971b41ded2 02-Feb-2009 Dale Johannesen <dalej@apple.com> DebugLoc propagation for int<->fp conversions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63537 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
19a725851da989131f6840b3c6450dfc25df9194 02-Feb-2009 Evan Cheng <evan.cheng@apple.com> Refactor PerformPHIConstruction, no functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63536 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
42789b765245ae6ad54e3290a2e3625489d02ef3 02-Feb-2009 Evan Cheng <evan.cheng@apple.com> Refactor PerformPHIConstruction, no functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63536 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
d5863dd9a806300bd020b80de3067fd36ac213c6 02-Feb-2009 Devang Patel <dpatel@apple.com> Do not add redundant arguments in a method definition DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63527 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
ace2cf616a50de819a4f16e1b438e723ab9feee2 02-Feb-2009 Devang Patel <dpatel@apple.com> Do not add redundant arguments in a method definition DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63527 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
55467af31620c9d027e071ebcd9746b7593cff17 02-Feb-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Duncan's patch. Further to 64382. Takes care of illegal types for shift amount.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63523 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
90e6ba2124fa09fbdcdfdfb34053a2042879ce2e 02-Feb-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Duncan's patch. Further to 64382. Takes care of illegal types for shift amount.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63523 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
c82bf9b268eb63f7cf6f435d9ea222ddb8e3c5a8 02-Feb-2009 Mon P Wang <wangmp@apple.com> Preserve more SourceValue information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63498 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
bfdf00409b65f485463733a373aeb92603b41c7a 02-Feb-2009 Mon P Wang <wangmp@apple.com> Preserve more SourceValue information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63498 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
b0d5cdd52e8448f769cd71aaee6a4b8592dc08b1 01-Feb-2009 Duncan Sands <baldrick@free.fr> Fix PR3453 and probably a bunch of other potential
crashes or wrong code with codegen of large integers:
eliminate the legacy getIntegerVTBitMask and
getIntegerVTSignBit methods, which returned their
value as a uint64_t, so couldn't handle huge types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63494 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
505ba94e7557c4396dcbcd3ca8ec3d37fc280958 01-Feb-2009 Duncan Sands <baldrick@free.fr> Fix PR3453 and probably a bunch of other potential
crashes or wrong code with codegen of large integers:
eliminate the legacy getIntegerVTBitMask and
getIntegerVTSignBit methods, which returned their
value as a uint64_t, so couldn't handle huge types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63494 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
fc4b677cd526f1f6a3d6487782557af99fbf6c32 01-Feb-2009 Bill Wendling <isanbard@gmail.com> Forgot some more DebugLoc propagations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63493 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
55b2b9d20c04019c67efeb9fcc7045b11f8e23b3 01-Feb-2009 Bill Wendling <isanbard@gmail.com> Forgot some more DebugLoc propagations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63493 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4a6d13e8fbbdc3fe6b783905a303368d13321611 01-Feb-2009 Owen Anderson <resistor@mac.com> Fix test failures causes by my previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63492 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
0f6690e8ed392edd091bdd811315c897c959a37e 01-Feb-2009 Owen Anderson <resistor@mac.com> Fix test failures causes by my previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63492 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
5caedc0f0905bfc5472282cf56f92ebf14fb1c66 01-Feb-2009 Owen Anderson <resistor@mac.com> Fix an issue in PHI construction that was exposed by GCC 4.2 producing a different set iteration order for the reg_iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63490 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
464c1b86acb15bf69ca623452899dae6a949fff9 01-Feb-2009 Owen Anderson <resistor@mac.com> Fix an issue in PHI construction that was exposed by GCC 4.2 producing a different set iteration order for the reg_iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63490 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
644f6f875ee6dae47a56692f36ae566c27008e07 31-Jan-2009 Dale Johannesen <dalej@apple.com> DebugLoc propagation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63488 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
701fa3918740cbb9d9c72bee19645d91feec672d 31-Jan-2009 Dale Johannesen <dalej@apple.com> DebugLoc propagation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63488 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
35ba3d463834f83e2bf8e8ad631ffc4d73a0203c 31-Jan-2009 Dale Johannesen <dalej@apple.com> DebugLoc propagation. Done with file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63486 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
a2f51e597fd5fc0e53a9e25c6fd6ac6f0f199e5e 31-Jan-2009 Dale Johannesen <dalej@apple.com> DebugLoc propagation. Done with file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63486 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
9c8ac447c464eedefa6acd8d71a3aff8280bb9d1 31-Jan-2009 Dale Johannesen <dalej@apple.com> DebugLoc propagation. Done with file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63485 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
2784232ef760a13015a35533153d19493d002629 31-Jan-2009 Dale Johannesen <dalej@apple.com> DebugLoc propagation. Done with file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63485 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
92abc62399881ba9c525be80362c134ad836e2d9 31-Jan-2009 Duncan Sands <baldrick@free.fr> Fix PR3401: when using large integers, the type
returned by getShiftAmountTy may be too small
to hold shift values (it is an i8 on x86-32).
Before and during type legalization, use a large
but legal type for shift amounts: getPointerTy;
afterwards use getShiftAmountTy, fixing up any
shift amounts with a big type during operation
legalization. Thanks to Dan for writing the
original patch (which I shamelessly pillaged).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
7d9e36100672b722b01c73fbb98ce2b6579dda3f 31-Jan-2009 Duncan Sands <baldrick@free.fr> Fix PR3401: when using large integers, the type
returned by getShiftAmountTy may be too small
to hold shift values (it is an i8 on x86-32).
Before and during type legalization, use a large
but legal type for shift amounts: getPointerTy;
afterwards use getShiftAmountTy, fixing up any
shift amounts with a big type during operation
legalization. Thanks to Dan for writing the
original patch (which I shamelessly pillaged).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
a7b6cff99f5015120f828c316823cb32eed93901 31-Jan-2009 Mon P Wang <wangmp@apple.com> If unsafe FP optimization is not set, don't allow -(A-B) => B-A because
when A==B, -0.0 != +0.0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63474 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4340d5da667ec32596dab97b636dce35ff58b175 31-Jan-2009 Mon P Wang <wangmp@apple.com> If unsafe FP optimization is not set, don't allow -(A-B) => B-A because
when A==B, -0.0 != +0.0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63474 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9729c5ad3413d3b69d4bc41aa918a7a8dd6bf9f0 31-Jan-2009 Bill Wendling <isanbard@gmail.com> Don't use DebugLoc::getUnknownLoc(). Default to something hopefully sensible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63473 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bd0cd9f1f5a1732a1fa8b839a9687d250c445787 31-Jan-2009 Bill Wendling <isanbard@gmail.com> Don't use DebugLoc::getUnknownLoc(). Default to something hopefully sensible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63473 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
66978ee97773aa76c3f15bee2fc77e5905aaf068 31-Jan-2009 Dale Johannesen <dalej@apple.com> Move CurDebugLoc into SelectionDAGLowering.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63468 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
3222146f4603812cbb91f376017e2c67ed77df34 31-Jan-2009 Dale Johannesen <dalej@apple.com> Move CurDebugLoc into SelectionDAGLowering.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63468 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
91b49b910c088b332869ccfb3e35735be2000b57 31-Jan-2009 Dale Johannesen <dalej@apple.com> Propagate debug info in LegalizeFloatTypes.
Complete (modulo bugs).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63458 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
1bea540b3dd3d0719cbbfeaabdfa871504de4c37 31-Jan-2009 Dale Johannesen <dalej@apple.com> Propagate debug info in LegalizeFloatTypes.
Complete (modulo bugs).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63458 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
786fd4dded6a42561c0d82bbd9d13b9a4d8d9675 31-Jan-2009 Dale Johannesen <dalej@apple.com> Propagate debug info. This file complete
(modulo bugs)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63457 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
e6c2a8329d13cf67e91852d40f848fbb21edb401 31-Jan-2009 Dale Johannesen <dalej@apple.com> Propagate debug info. This file complete
(modulo bugs)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63457 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
c8fc99d66a03dc603f49d653937ad1d94e833006 31-Jan-2009 Dale Johannesen <dalej@apple.com> Propagate debug info through MakeLibCall and a
couple of things that use it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63456 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
f52bf3eb8a0f4f8787b2c80083e3b74a31764f61 31-Jan-2009 Dale Johannesen <dalej@apple.com> Propagate debug info through MakeLibCall and a
couple of things that use it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63456 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
836ca7dc6e0dbffa83095ccf110ccd9f2bcfdb05 31-Jan-2009 Bill Wendling <isanbard@gmail.com> More DebugLoc propagation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e64b4632096bf3bd21413f0cd9131903146b2069 31-Jan-2009 Bill Wendling <isanbard@gmail.com> More DebugLoc propagation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c144a57e14faf52fd2223548922dc4174827df03 31-Jan-2009 Bill Wendling <isanbard@gmail.com> More DebugLoc propagation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63452 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3b1141d3f00eabc3c618d004f4af7fac4082154e 31-Jan-2009 Bill Wendling <isanbard@gmail.com> More DebugLoc propagation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63452 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c0debad7168e252c34631a04f62577d792c71e07 31-Jan-2009 Bill Wendling <isanbard@gmail.com> More DebugLoc propagation in LOAD etc. methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63451 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0be345950ad41f6035478b2a00910f26256a22ce 31-Jan-2009 Bill Wendling <isanbard@gmail.com> More DebugLoc propagation in LOAD etc. methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63451 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0225a1dcb1b1324192bf34c532c6d18503017cd4 31-Jan-2009 Bill Wendling <isanbard@gmail.com> More DebugLoc propagation in floating-point methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63446 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fe063884f1789373b8779ebeeb7fcb7dff4f7f6c 31-Jan-2009 Bill Wendling <isanbard@gmail.com> More DebugLoc propagation in floating-point methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63446 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7d2ad624fa749a6d3edac0d94e9c107989c16304 31-Jan-2009 Dale Johannesen <dalej@apple.com> Make LowerCallTo and LowerArguments take a DebugLoc
argument. Adjust all callers and overloaded versions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63444 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
ca6237b16a68ff5256d47b79908cc3a3a4b61889 31-Jan-2009 Dale Johannesen <dalej@apple.com> Make LowerCallTo and LowerArguments take a DebugLoc
argument. Adjust all callers and overloaded versions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63444 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
d34470c4f76483f0f1098527d416cd065d46d950 31-Jan-2009 Bill Wendling <isanbard@gmail.com> Standardize comments about folding xforms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9cf9d38c8dbf76354faf51668911eb007fd3b03d 31-Jan-2009 Bill Wendling <isanbard@gmail.com> Standardize comments about folding xforms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7581bfa2757a3149c6d17c0fe592e5c3808aa843 31-Jan-2009 Bill Wendling <isanbard@gmail.com> Get rid of the non-DebugLoc-ified getNOT() method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63442 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
fcfb47d11cb9071e35ce52a8fee893676f364221 31-Jan-2009 Bill Wendling <isanbard@gmail.com> Get rid of the non-DebugLoc-ified getNOT() method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63442 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
a03e74bf6795478fd0b8d8d09b86ab517cda84b5 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for some FP arithmetic methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63441 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e2bf56b1fbf7cefd6d936a03d43dda569ddd4a5d 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for some FP arithmetic methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63441 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b0162f58c4dc07e325f47befcbb31c72d894bc1f 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for some FP arithmetic methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63440 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
323674b28e207a1496c3405a915248746f700cb5 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for some FP arithmetic methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63440 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
67a6768375d29bfda9ebf79edd1d9089f6fea9f5 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for BIT_CONVERT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63439 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
043d2c6ff8d2aba14e63a4931b096b6a5ac9fbb7 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for BIT_CONVERT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63439 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8509c90a206eb04ed11da44d357f7250db3df346 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for more *_EXTEND methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63437 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
49bff0a5626eab6c64426e0fe027f5724315920a 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for more *_EXTEND methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63437 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
683c95764aa519ba21686e631fa8d2231c8dbd74 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for ANY_EXTEND.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fb6f17d342bbe402fa745762f2f51fdb41dfb8e6 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for ANY_EXTEND.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6ce610f04bb232ce8b57e50e885f30f65d19e1a6 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for some of the *_EXTEND functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63434 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
085b207e3dd5ceb2810bb4a07d718a1cb7bac39c 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for some of the *_EXTEND functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63434 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
41b9d278add97c744930aa2a0048ff1c01e48c4f 30-Jan-2009 Bill Wendling <isanbard@gmail.com> DebugLoc form of getNOT().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63433 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4b8dd44da84e0c9d7a130073c73fbefb5d3b0a10 30-Jan-2009 Bill Wendling <isanbard@gmail.com> DebugLoc form of getNOT().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63433 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
34584e6aedf02a4123ac7605486093e798cdcb71 30-Jan-2009 Bill Wendling <isanbard@gmail.com> - Propagate debug loc info for SELECT.
- Added xform for (select X, 1, Y) and (select X, Y, 0), which was commented on,
but missing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d079e9fed642e22829d31f449ccf849f3d6a1530 30-Jan-2009 Bill Wendling <isanbard@gmail.com> - Propagate debug loc info for SELECT.
- Added xform for (select X, 1, Y) and (select X, Y, 0), which was commented on,
but missing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8810337e36fd56dacad557b016dfaacfc732730a 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for Shifts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63424 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c73b8c2ef0aa388032e855d0e28f77c36e9f3027 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for Shifts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63424 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
317bd709bdd119a286e4c2e10b59202dc7e81a13 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for XOR and MatchRotate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63420 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2e1865c0e88ef208aadab3599435291d5216f399 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for XOR and MatchRotate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63420 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
09025644791ca400242c51a61aa633f3ded3f3a3 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for OR. Also clean up some comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
43f24b97050e83c75b523e3d1b68b259da54b74a 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for OR. Also clean up some comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6af7618b2378a3af378d681914976483b5b60c36 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Perform obvious constant arithmetic folding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f8bc78488c1884b7916cc3206e8b21a1c149d86d 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Perform obvious constant arithmetic folding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2627a881e1ba1c7821537d607dbd80c0ef4d2363 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for AND. Also clean up some comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63416 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d32f852eb99e80ac707faa5d00033fdac957be81 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for AND. Also clean up some comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63416 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b74c8675b11db86c115f698f3d182f9039131161 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info in SimplifyBinOpWithSameOpcodeHands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63411 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c93d72a164a326080318e3d8f599ed84789b8252 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info in SimplifyBinOpWithSameOpcodeHands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63411 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
dd9db6688283639a0c95f8ed67beb1bd54b5fff4 30-Jan-2009 Devang Patel <dpatel@apple.com> Each input file is encoded as a separate compile unit in LLVM debugging
information output. However, many target specific tool chains prefer to encode
only one compile unit in an object file. In this situation, the LLVM code
generator will include debugging information entities in the compile unit
that is marked as main compile unit. The code generator accepts maximum one main
compile unit per module. If a module does not contain any main compile unit
then the code generator will emit multiple compile units in the output object
file.

[Part 1]

Update DebugInfo APIs to accept optional boolean value while creating DICompileUnit to mark the unit as "main" unit. By defaults all units are considered non-main. Update SourceLevelDebugging.html to document "main" compile unit.

Update DebugInfo APIs to not accept and encode separate source file/directory entries while creating various llvm.dbg.* entities. There was a recent, yet to be documented, change to include this additional information so no documentation changes are required here.

Update DwarfDebug to handle "main" compile unit. If "main" compile unit is seen then all DIEs are inserted into "main" compile unit. All other compile units are used to find source location for llvm.dbg.* values. If there is not any "main" compile unit then create unique compile unit DIEs for each llvm.dbg.compile_unit.

[Part 2]

Create separate llvm.dbg.compile_unit for each input file. Mark compile unit create for main_input_filename as "main" compile unit. Use appropriate compile unit, based on source location information collected from the tree node, while creating llvm.dbg.* values using DebugInfo APIs.

---

This is Part 1.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63400 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
2ae1db58fa5fe9e7e76809e2038188f90d1421bf 30-Jan-2009 Devang Patel <dpatel@apple.com> Each input file is encoded as a separate compile unit in LLVM debugging
information output. However, many target specific tool chains prefer to encode
only one compile unit in an object file. In this situation, the LLVM code
generator will include debugging information entities in the compile unit
that is marked as main compile unit. The code generator accepts maximum one main
compile unit per module. If a module does not contain any main compile unit
then the code generator will emit multiple compile units in the output object
file.

[Part 1]

Update DebugInfo APIs to accept optional boolean value while creating DICompileUnit to mark the unit as "main" unit. By defaults all units are considered non-main. Update SourceLevelDebugging.html to document "main" compile unit.

Update DebugInfo APIs to not accept and encode separate source file/directory entries while creating various llvm.dbg.* entities. There was a recent, yet to be documented, change to include this additional information so no documentation changes are required here.

Update DwarfDebug to handle "main" compile unit. If "main" compile unit is seen then all DIEs are inserted into "main" compile unit. All other compile units are used to find source location for llvm.dbg.* values. If there is not any "main" compile unit then create unique compile unit DIEs for each llvm.dbg.compile_unit.

[Part 2]

Create separate llvm.dbg.compile_unit for each input file. Mark compile unit create for main_input_filename as "main" compile unit. Use appropriate compile unit, based on source location information collected from the tree node, while creating llvm.dbg.* values using DebugInfo APIs.

---

This is Part 1.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63400 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
c0425b646f726de9b2422bc48ec316c4be9f6d7f 30-Jan-2009 Zhou Sheng <zhousheng00@gmail.com> As Duncan suggested, add braces for the one-line "else branch".
Thanks, Duncan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63389 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
7f6457a0b640b17180f8dc56b775d25d3bf86618 30-Jan-2009 Zhou Sheng <zhousheng00@gmail.com> As Duncan suggested, add braces for the one-line "else branch".
Thanks, Duncan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63389 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
904ebf9bf4e6487892cda2e89b8e6d40803e4733 30-Jan-2009 Zhou Sheng <zhousheng00@gmail.com> This is to fix the bug in IntrinsicLowering.cpp,
the LowerPartSet(). It didn't handle the situation correctly when
the low, high argument values are in reverse order (low > high)
with 'Val' type i32 (a corner case).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63388 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
e4e9d2c6809280b4bf85baed3b87e8dab2b738f4 30-Jan-2009 Zhou Sheng <zhousheng00@gmail.com> This is to fix the bug in IntrinsicLowering.cpp,
the LowerPartSet(). It didn't handle the situation correctly when
the low, high argument values are in reverse order (low > high)
with 'Val' type i32 (a corner case).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63388 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
c8d7bc850ddf5a5df503a173b0bc0f8c03ffec96 30-Jan-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Enable emitting of constant values in non-default address space as well. The APIs emitting constants now take an additional parameter signifying the address space in which to emit. The APIs like getData8BitsDirective() etc are made virtual enabling targets to be able to define appropirate directivers for various sizes and address spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
dc2943d9f6c2f65a39d9d71c12f09f7c49d59839 30-Jan-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Enable emitting of constant values in non-default address space as well. The APIs emitting constants now take an additional parameter signifying the address space in which to emit. The APIs like getData8BitsDirective() etc are made virtual enabling targets to be able to define appropirate directivers for various sizes and address spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
826d11463b3fb0ecadae532821e6d11170276dc1 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info in SimplifyNodeWithTwoResults.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63376 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
24ecb1b093539263f59298177088231004d72ed9 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info in SimplifyNodeWithTwoResults.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63376 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
326411dc69db3ff6335a2b1351e05c80d20c2b3c 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for MULHS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63375 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ff9beb9c31b526acc4b9c85a37a10f3d1b778983 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for MULHS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63375 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6d3bf8c4c3a1917f255df4ff0d47f4f51261bcc0 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for SREM and UREM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63374 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ceba88e7b4087634905939b7aff0c9f872fa36d9 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for SREM and UREM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63374 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
07d85140497a8fb58d9d2daa723c6c8b64948b73 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for UDIV.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b3552a58e84a840575f0b60903a766b96ed629e5 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for UDIV.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
944d34bfe8c79ddcb96516d3ba867be09ebf2890 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for SDIV.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
09f5dc803d3301f8564ae44107bad7861b7070f6 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for SDIV.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
73e16b2869fbc75ccb3506620b0342b6085fe843 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Forgot to propagate debug loc info here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c80e5c4fa6810a0ef892aec3f6a0b343a73ce5a4 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Forgot to propagate debug loc info here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3311a1f8f0d8a2c6d940802bbb95eba0b801a615 30-Jan-2009 Dan Gohman <gohman@apple.com> Fix a post-RA scheduling dependency bug.

If a MachineInstr doesn't have a memoperand but has an opcode that
is known to load or store, assume its memory reference may alias
*anything*, including stack slots which the compiler completely
controls.

To partially compensate for this, teach the ScheduleDAG building
code to do basic getUnderlyingValue analysis. This greatly
reduces the number of instructions that require restrictive
dependencies. This code will need to be revisited when we start
doing real alias analysis, but it should suffice for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63370 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
24196cf51a4ce4da2c7f3d6d4c378db12c685f0e 30-Jan-2009 Dan Gohman <gohman@apple.com> Fix a post-RA scheduling dependency bug.

If a MachineInstr doesn't have a memoperand but has an opcode that
is known to load or store, assume its memory reference may alias
*anything*, including stack slots which the compiler completely
controls.

To partially compensate for this, teach the ScheduleDAG building
code to do basic getUnderlyingValue analysis. This greatly
reduces the number of instructions that require restrictive
dependencies. This code will need to be revisited when we start
doing real alias analysis, but it should suffice for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63370 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
9c8148ac93835b7d53c81c554cde2e6da3730771 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for MUL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63369 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
db4984aebf62890ea2280115f6be096403d1e738 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info for MUL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63369 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b0702e0b7e4a9b0a0b4e707512d25ab5a1204408 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info in SUB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63368 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
697795ac6cdf2df227b894556b6c55ae3612d7c8 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info in SUB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63368 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
14036c00c0b3a83805695afb50b6d42430b70979 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info in ADDC and ADDE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63367 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4c196babb6a261e41aba4ced7656500ef042ee21 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info in ADDC and ADDE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63367 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f4eb2269eba50a68d0227edc8c4b8872428fab33 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info in DAG combine's "ADD".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63366 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d850aa53fc72f0196b52cedd2af859a077701791 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info in DAG combine's "ADD".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63366 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d69c3141ed6d237ad19fdfbfcef8901491b24c2e 30-Jan-2009 Bill Wendling <isanbard@gmail.com> - Propagate debug loc info in combineSelectAndUse().
- Modify ReassociateOps so that the resulting SDValue is what the comment claims
it is.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63365 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e165f5a20b055825a342afb14872400f0e2b621d 30-Jan-2009 Bill Wendling <isanbard@gmail.com> - Propagate debug loc info in combineSelectAndUse().
- Modify ReassociateOps so that the resulting SDValue is what the comment claims
it is.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63365 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fa42dea48b76b32a17f2d777115790f364f1984f 30-Jan-2009 Dale Johannesen <dalej@apple.com> Propagate debug info when building SelectionDAG.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
2fa55f8cca36bfaab433e4b8493d2686629765be 30-Jan-2009 Dale Johannesen <dalej@apple.com> Propagate debug info when building SelectionDAG.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
6360089d632fcb90c001b81f4735364c36848246 30-Jan-2009 Devang Patel <dpatel@apple.com> Remove dead code, again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63358 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
003ccbd68e5ab92944fcaba4c0fb4f536ba73e3e 30-Jan-2009 Devang Patel <dpatel@apple.com> Remove dead code, again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63358 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
425b64ecef77ff30154aeea9a8be14938be5f6a6 30-Jan-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63357 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
24f9fb268b6d3e547812c1c23ee11778c812a15c 30-Jan-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63357 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
d234e59e577ef93fc52492b92f613898a96d9f24 30-Jan-2009 Devang Patel <dpatel@apple.com> Add DW_AT_declaration for class methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63356 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
922d159cbd130103ab085ed469e680aa93ec1bfc 30-Jan-2009 Devang Patel <dpatel@apple.com> Add DW_AT_declaration for class methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63356 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
5c71acfb0600ea9272a2dcce00e1610a5b8ee081 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug location info for the token factor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
131d6e9c6492a719b8cd0c6bee7f89cfe82e08a0 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Propagate debug location info for the token factor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
35247c35136232bb30aa17543dbcf9c92fa24d29 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Add DebugLoc propagation to some of the methods in DAG combiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
abb33a2414314ec94b3c72ec2a42b71715bc43f9 30-Jan-2009 Bill Wendling <isanbard@gmail.com> Add DebugLoc propagation to some of the methods in DAG combiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3ef4549d9d03146a23971f44155eca6330fb308e 29-Jan-2009 Owen Anderson <resistor@mac.com> Correct the algorithms for choosing spill and restore points so that we don't try to insert loads/stores between call frame setup and the actual call.

This fixes the last known failure for the pre-alloc-splitter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63339 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
5da495d4a1edb598e86477d8873bc88b700d7350 29-Jan-2009 Owen Anderson <resistor@mac.com> Correct the algorithms for choosing spill and restore points so that we don't try to insert loads/stores between call frame setup and the actual call.

This fixes the last known failure for the pre-alloc-splitter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63339 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
15b3830bcda4f9958abf1c65e6e1c64c5cbb484d 29-Jan-2009 Dan Gohman <gohman@apple.com> Explicitly add PseudoSourceValue information when lowering
BUILD_VECTOR and conversions to stack operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63333 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8a8251aa84e32adc485310cf3428fb2383cb9a02 29-Jan-2009 Dan Gohman <gohman@apple.com> Explicitly add PseudoSourceValue information when lowering
BUILD_VECTOR and conversions to stack operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63333 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1cc6b8ee787c183a7c88fec8fbb96c1404cf34e8 29-Jan-2009 Dan Gohman <gohman@apple.com> Make a few things const, fix some comments, and simplify
some assertions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63328 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
2867582126f112605e4205622165e440eb52c05a 29-Jan-2009 Dan Gohman <gohman@apple.com> Make a few things const, fix some comments, and simplify
some assertions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63328 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d5a480270898166d512fe49fc61328211fd7c6b2 29-Jan-2009 Evan Cheng <evan.cheng@apple.com> Local register allocator shouldn't assume only the entry and landing pad basic blocks have live-ins.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63323 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
b0f4d5f6b857f54384b7e8d23846d0b0e9e55d0a 29-Jan-2009 Evan Cheng <evan.cheng@apple.com> Local register allocator shouldn't assume only the entry and landing pad basic blocks have live-ins.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63323 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
2c65c3dfe6589a630d1bdde085aec1b9cdc43ea8 29-Jan-2009 Dan Gohman <gohman@apple.com> Fix two typos that Duncan spotted in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63312 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
8710f1c88efd7461a75ed6af8a3d313bb5b83f22 29-Jan-2009 Dan Gohman <gohman@apple.com> Fix two typos that Duncan spotted in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63312 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
197e88f7963946dfdb4770ed27ee246eb087ca10 29-Jan-2009 Dan Gohman <gohman@apple.com> In the case of an extractelement on an insertelement value,
the element indices may be equal if either one is not a
constant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b38eabfc63c1a3741ff0057fe48abe9ee92cd3c7 29-Jan-2009 Dan Gohman <gohman@apple.com> In the case of an extractelement on an insertelement value,
the element indices may be equal if either one is not a
constant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
56ab1a281511dde8c173cd2dc8ef55a916049037 29-Jan-2009 Bill Wendling <isanbard@gmail.com> Revert r63273. This was already implemented by Dale. There's no need for my
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63301 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6ed1f08a168e25dadd8c5e37ac97c1aad9dc8721 29-Jan-2009 Bill Wendling <isanbard@gmail.com> Revert r63273. This was already implemented by Dale. There's no need for my
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63301 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c0f3a0353c7bbde87d9430ba9e1f352dd38ff62e 29-Jan-2009 Owen Anderson <resistor@mac.com> Fix an issue where restores could be inserted after a terminator instruction,
and an iterator invalidation issue.

FreeBench/pifft no longer miscompiles with these fixes!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63293 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
c70f0a93bded74d6c5906a01b49035b8880f9613 29-Jan-2009 Owen Anderson <resistor@mac.com> Fix an issue where restores could be inserted after a terminator instruction,
and an iterator invalidation issue.

FreeBench/pifft no longer miscompiles with these fixes!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63293 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
4bfc2097218e2386807336d3fc885905edbd7215 29-Jan-2009 Owen Anderson <resistor@mac.com> Comments are good. :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63276 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
f97d61244fd710c9e3ef8c1c07e61018a69b602f 29-Jan-2009 Owen Anderson <resistor@mac.com> Comments are good. :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63276 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
45e6855ea2d1df527e0468469d693fa0c276f235 29-Jan-2009 Owen Anderson <resistor@mac.com> Add support for aggressive load-use-store folding. This takes care of the
vast majority of code size regressions introduced by pre-alloc-splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63274 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
ea81c8a8d5a5e17d1bccd044933be431ba8a7d7d 29-Jan-2009 Owen Anderson <resistor@mac.com> Add support for aggressive load-use-store folding. This takes care of the
vast majority of code size regressions introduced by pre-alloc-splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63274 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
6e1bb38fb8dd64ece28ea5779a8bbf9b5ff7fb96 29-Jan-2009 Bill Wendling <isanbard@gmail.com> - Add DebugLoc to getTargetNode().
- Modify TableGen to add the DebugLoc when calling getTargetNode.

(The light-weight wrappers are only temporary. The non-DebugLoc version will be
removed once the whole debug info stuff is finished with.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
66968015fbe5c43c457b486bd6918f15626a5535 29-Jan-2009 Bill Wendling <isanbard@gmail.com> - Add DebugLoc to getTargetNode().
- Modify TableGen to add the DebugLoc when calling getTargetNode.

(The light-weight wrappers are only temporary. The non-DebugLoc version will be
removed once the whole debug info stuff is finished with.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5a3c6a87b0173b9d367f7b55e7c99e5110ede057 29-Jan-2009 Evan Cheng <evan.cheng@apple.com> Exit with nice warnings when register allocator run out of registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63267 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
egAllocLocal.cpp
548bc503a39311d62d31b7d07c3da748f5a3961e 29-Jan-2009 Evan Cheng <evan.cheng@apple.com> Exit with nice warnings when register allocator run out of registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63267 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
egAllocLocal.cpp
e5af2d3a224d4b38760a26d237cde040cb6e14eb 29-Jan-2009 Dan Gohman <gohman@apple.com> Make x86's BT instruction matching more thorough, and add some
dagcombines that help it match in several more cases. Add
several more cases to test/CodeGen/X86/bt.ll. This doesn't
yet include matching for BT with an immediate operand, it
just covers more register+register cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63266 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
22cefb0de0d6b2dff668fd276a4650a6ce01c797 29-Jan-2009 Dan Gohman <gohman@apple.com> Make x86's BT instruction matching more thorough, and add some
dagcombines that help it match in several more cases. Add
several more cases to test/CodeGen/X86/bt.ll. This doesn't
yet include matching for BT with an immediate operand, it
just covers more register+register cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63266 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
7ddee0ad249e69753a08356708fe3bfbedbb7712 29-Jan-2009 Evan Cheng <evan.cheng@apple.com> A slight compile time optimization. If the caller knows there isn't a free register getReg() should not call getFreeReg().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63263 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
308d18591fcae2842c420aad22bb150ea234e80d 29-Jan-2009 Evan Cheng <evan.cheng@apple.com> A slight compile time optimization. If the caller knows there isn't a free register getReg() should not call getFreeReg().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63263 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
e8c17335c53f0f37262ee342f46b0d00ac0c1493 29-Jan-2009 Dale Johannesen <dalej@apple.com> Add DebugLoc-sensitive versions of many node creation
functions. Currently omitted: memcpy, memmove, memset.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63259 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ba9d87fffb3ac331ec143eeeb555524abb76eff1 29-Jan-2009 Dale Johannesen <dalej@apple.com> Add DebugLoc-sensitive versions of many node creation
functions. Currently omitted: memcpy, memmove, memset.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63259 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
42cc6e33ec0f63560c31f1928c56b4b0465d537c 29-Jan-2009 Evan Cheng <evan.cheng@apple.com> Fix comment about removeRange.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63255 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
eb80af64fec00ccea18eb393a66d93965fcd696c 29-Jan-2009 Evan Cheng <evan.cheng@apple.com> Fix comment about removeRange.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63255 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
7ade28cd62f5188951387e1056a46001388a21f9 28-Jan-2009 Bill Wendling <isanbard@gmail.com> Add DebugLoc to the getNode() methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63245 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
df4de11679f71f3290834f21bdfc142407093fb0 28-Jan-2009 Bill Wendling <isanbard@gmail.com> Add DebugLoc to the getNode() methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63245 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3edb43e6208493dec85a2e87942f7a4d59073727 28-Jan-2009 Dale Johannesen <dalej@apple.com> Add DebugLoc-aware constructors for SDNode derived
classes (those that reasonably have a DebugLoc
associated with them).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63236 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
08f344e789728a1b7dc8bf1b608a2eca6b49b53e 28-Jan-2009 Dale Johannesen <dalej@apple.com> Add DebugLoc-aware constructors for SDNode derived
classes (those that reasonably have a DebugLoc
associated with them).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63236 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f9235748567e065b3b3c3bd48c3d4dfe1d664e8b 28-Jan-2009 Devang Patel <dpatel@apple.com> Do not forget to derived type while constructing an array type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63233 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
6ab30e5d7b61abcbf12520db6fc3a59cd38fbff4 28-Jan-2009 Devang Patel <dpatel@apple.com> Do not forget to derived type while constructing an array type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63233 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
f7eef6811c8b701b815c64e754a174691953a35f 28-Jan-2009 Mon P Wang <wangmp@apple.com> Fixed extract element when the result needs to be promoted and the input widened.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63217 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
6394215c89316b9ecf56761dbd67c39c8a714edf 28-Jan-2009 Mon P Wang <wangmp@apple.com> Fixed extract element when the result needs to be promoted and the input widened.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63217 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
f560ffae1f1f6591859c7b70636a3eca6c03f083 28-Jan-2009 Dan Gohman <gohman@apple.com> Make isOperationLegal do what its name suggests, and introduce a
new isOperationLegalOrCustom, which does what isOperationLegal
previously did.

Update a bunch of callers to use isOperationLegalOrCustom
instead of isOperationLegal. In some case it wasn't obvious
which behavior is desired; when in doubt I changed then to
isOperationLegalOrCustom as that preserves their previous
behavior.

This is for the second half of PR3376.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63212 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
52c51aab80e1ab56ad29ba2c5bf5d5e74e0574a6 28-Jan-2009 Dan Gohman <gohman@apple.com> Make isOperationLegal do what its name suggests, and introduce a
new isOperationLegalOrCustom, which does what isOperationLegal
previously did.

Update a bunch of callers to use isOperationLegalOrCustom
instead of isOperationLegal. In some case it wasn't obvious
which behavior is desired; when in doubt I changed then to
isOperationLegalOrCustom as that preserves their previous
behavior.

This is for the second half of PR3376.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63212 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
0b3aa26384ff37597f1d686a834252f97a619380 28-Jan-2009 Duncan Sands <baldrick@free.fr> Formatting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63199 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
d5443caee8088bea5ba0c874bb85d227ab4fe074 28-Jan-2009 Duncan Sands <baldrick@free.fr> Formatting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63199 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
1465d61bdd36cfd6021036a527895f0dd358e97d 28-Jan-2009 Duncan Sands <baldrick@free.fr> Rename getAnalysisToUpdate to getAnalysisIfAvailable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63198 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
CMetadata.cpp
CStrategy.cpp
achineModuleInfo.cpp
HIElimination.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAGISel.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
4e0d6a7d48464188a1a25b544a6355326d3fd3bf 28-Jan-2009 Duncan Sands <baldrick@free.fr> Rename getAnalysisToUpdate to getAnalysisIfAvailable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63198 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
CMetadata.cpp
CStrategy.cpp
achineModuleInfo.cpp
HIElimination.cpp
rologEpilogInserter.cpp
electionDAG/SelectionDAGISel.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
f83c81acbe5923ab6e0572f272d203d795e28185 28-Jan-2009 Dan Gohman <gohman@apple.com> Use ValueType::bitsLT to simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63170 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
783a32c383a47fe8e34df27f1d75b0b206e89e3c 28-Jan-2009 Dan Gohman <gohman@apple.com> Use ValueType::bitsLT to simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63170 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
77f7a5771e01ec5ec5fdbb3af8fcc2ce31e1d4f7 28-Jan-2009 Dan Gohman <gohman@apple.com> Use ZERO_EXTEND instead of ANY_EXTEND when promoting
shift amounts, to avoid implicitly assuming that
target architectures will ignore the high bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
34a8b45f9767286b0158f6a62c1d43777fc84287 28-Jan-2009 Dan Gohman <gohman@apple.com> Use ZERO_EXTEND instead of ANY_EXTEND when promoting
shift amounts, to avoid implicitly assuming that
target architectures will ignore the high bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
7009d24e8157dbe3689f7f44b64cedf6e1371b84 28-Jan-2009 Devang Patel <dpatel@apple.com> Add type DIE into appropriate context DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63154 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
b0cb07ce1d39aaf9253b1d35dc442a6ea895bce3 28-Jan-2009 Devang Patel <dpatel@apple.com> Add type DIE into appropriate context DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63154 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
06efc02854a96a9f92edc3bf46b0451f488cf2e6 28-Jan-2009 Dale Johannesen <dalej@apple.com> Add a DebugLoc field and some simple accessors.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63152 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
7899a6dceb53d58330def030522f380a76fd4fd4 28-Jan-2009 Dale Johannesen <dalej@apple.com> Add a DebugLoc field and some simple accessors.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63152 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
aaeea9e64f7c0f45380d323a32501c4da59a2c4d 27-Jan-2009 Evan Cheng <evan.cheng@apple.com> Refine DebugLoc per review comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63132 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
c611f1d881c25889d6343c0bd41ea73a5157ae66 27-Jan-2009 evancheng <evancheng@91177308-0d34-0410-b5e6-96231b3b80d8> Refine DebugLoc per review comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63132 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
ce9bc12c6f3c3544f7518c0c60203f2f9dff342f 27-Jan-2009 Dan Gohman <gohman@apple.com> Add an assertion to the form of SelectionDAG::getConstant that takes
a uint64_t to verify that the value is in range for the given type,
to help catch accidental overflow. Fix a few places that relied on
getConstant implicitly truncating the value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63128 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
51bef2e7f3b8bd4bafc8b4e4e6d42d0b2ede47ee 27-Jan-2009 djg <djg@91177308-0d34-0410-b5e6-96231b3b80d8> Add an assertion to the form of SelectionDAG::getConstant that takes
a uint64_t to verify that the value is in range for the given type,
to help catch accidental overflow. Fix a few places that relied on
getConstant implicitly truncating the value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63128 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
daac99cdfb7b730d4317a0152c7ef27cc19bdab9 27-Jan-2009 Dan Gohman <gohman@apple.com> Delete redundant return statements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63120 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
0c797921a28ee71536ba20b7685edccc7ecb75a0 27-Jan-2009 djg <djg@91177308-0d34-0410-b5e6-96231b3b80d8> Delete redundant return statements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63120 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
26562de2efa73446dbb8ae4cb6fb6b08f1c252a9 27-Jan-2009 Owen Anderson <resistor@mac.com> Make the pre-split-limit option more useful by using a per-function counter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63091 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
922b8d77fb62b71b460ec718171ffbdeb43dd6d8 27-Jan-2009 Owen Anderson <resistor@mac.com> Make the pre-split-limit option more useful by using a per-function counter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63091 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
ad165bec1d9c685b21abbc9a7f9b217a748528dd 27-Jan-2009 Devang Patel <dpatel@apple.com> Assorted debug info fixes.
- DW_AT_bit_size is only suitable for bitfields.
- Encode source location info for derived types.
- Source location and type size info is not useful for subroutine_type (info is included in respective DISubprogram) and array_type.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63077 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e34e08820dead3fe7f94fd98c41c3e3ea6995e6b 27-Jan-2009 Devang Patel <dpatel@apple.com> Assorted debug info fixes.
- DW_AT_bit_size is only suitable for bitfields.
- Encode source location info for derived types.
- Source location and type size info is not useful for subroutine_type (info is included in respective DISubprogram) and array_type.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63077 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
b9f66cfadf6b1551192ee4a6e9b70f564c5ed8be 27-Jan-2009 Evan Cheng <evan.cheng@apple.com> No need to keep size of DebugLocations vector separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63070 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
a40c3dd5c4a08b59dc9b0634f1ba1355b038b59a 27-Jan-2009 Evan Cheng <evan.cheng@apple.com> No need to keep size of DebugLocations vector separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63070 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
210de72cd7b139378f48dafbdac3d3379dd93c56 26-Jan-2009 Scott Michel <scottm@aero.org> Make the Dwarf macro information section optional; CellSPU's assembler
doesn't support it. The default is set to 'true', so this should not
impact any other target backends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63058 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
79f01f5229a51c64b92e8ee56f9a1d8edf95ee57 26-Jan-2009 Scott Michel <scottm@aero.org> Make the Dwarf macro information section optional; CellSPU's assembler
doesn't support it. The default is set to 'true', so this should not
impact any other target backends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63058 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
b4b84363819546095b62005a1e6ee26348557ce4 26-Jan-2009 Owen Anderson <resistor@mac.com> Reapply r63025 and r63026, with fixes for the failing testcases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63049 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
5bc4884438cd7085c41c12c0b1a592d07deaa9a5 26-Jan-2009 Owen Anderson <resistor@mac.com> Reapply r63025 and r63026, with fixes for the failing testcases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63049 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
5bb11b89ddbc0f47eee9743b93df5aa872750d13 26-Jan-2009 Duncan Sands <baldrick@free.fr> Fix PR3393, which amounts to a bug in the expensive
checking logic. Rather than make the checking more
complicated, I've tweaked some logic to make things
conform to how the checking thought things ought to
be, since this results in a simpler "mental model".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63048 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
bd2b182f54dacfd73bb5a67ee30d0af5c89e5d89 26-Jan-2009 Duncan Sands <baldrick@free.fr> Fix PR3393, which amounts to a bug in the expensive
checking logic. Rather than make the checking more
complicated, I've tweaked some logic to make things
conform to how the checking thought things ought to
be, since this results in a simpler "mental model".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63048 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
826f0935177b0183383701ae40e3d802a184fbf4 26-Jan-2009 Bill Wendling <isanbard@gmail.com> Also revert r63206

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63041 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
807630e41f5d927565c541a5b1c56e8740db2d69 26-Jan-2009 Bill Wendling <isanbard@gmail.com> Also revert r63206

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63041 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
34b946b8fbb6bb04e6bac5146314f86baaa893ae 26-Jan-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r63025 until the testsuite failures can be fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63040 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
21f563649d9859a1bdc424fecb18cbdd7807aa05 26-Jan-2009 Bill Wendling <isanbard@gmail.com> Temporarily revert r63025 until the testsuite failures can be fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63040 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
36c826ad958f74e1078cbe2ecfd07ae0a7170543 26-Jan-2009 Anton Korobeynikov <asl@math.spbu.ru> During bittest switch lowering emit shift in the test block, which should (theoretically)
allow us to generate more efficient code. We don't do this now though :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63027 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
bb1518f1f7125bf4bfe2235f8700e01d11d8c0cb 26-Jan-2009 asl <asl@91177308-0d34-0410-b5e6-96231b3b80d8> During bittest switch lowering emit shift in the test block, which should (theoretically)
allow us to generate more efficient code. We don't do this now though :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63027 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
d7250517b06250ca942847dfd6e51ede261c24c9 26-Jan-2009 Owen Anderson <resistor@mac.com> Get rid of a bunch of dead code now that interval reconstruction is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63026 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
8ae20cfd634ec4d3fb2242eca53fbe52df0058fd 26-Jan-2009 resistor <resistor@91177308-0d34-0410-b5e6-96231b3b80d8> Get rid of a bunch of dead code now that interval reconstruction is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63026 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
8af1e761f824ca46088780c2fbe1de9e4278f06c 26-Jan-2009 Owen Anderson <resistor@mac.com> Fix an issue where LiveIntervals was trying to be smart about removing kill
markers, and ended up foiling the interval reconstruction.

This allows us to turn on reconstruction in the pre alloc splitter, which
fixes a number of miscompilations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63025 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
f58b90ad63a7d0ea810a9fd503314e97df264517 26-Jan-2009 resistor <resistor@91177308-0d34-0410-b5e6-96231b3b80d8> Fix an issue where LiveIntervals was trying to be smart about removing kill
markers, and ended up foiling the interval reconstruction.

This allows us to turn on reconstruction in the pre alloc splitter, which
fixes a number of miscompilations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63025 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
b964f3387350184431f90f14050be943236c8fcd 26-Jan-2009 Evan Cheng <evan.cheng@apple.com> Silence a bogus compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63021 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
bc7d476160a95ac524c472e3d06f7c586a9f6d19 26-Jan-2009 evancheng <evancheng@91177308-0d34-0410-b5e6-96231b3b80d8> Silence a bogus compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63021 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
c4b1abd81e4de314880110c5d58917d4747fb978 26-Jan-2009 Evan Cheng <evan.cheng@apple.com> Actually source file has already been uniquified into an id during isel. Eliminate the StringMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63009 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
4e4168febaeb82433a8611803b696d0b9458e616 26-Jan-2009 evancheng <evancheng@91177308-0d34-0410-b5e6-96231b3b80d8> Actually source file has already been uniquified into an id during isel. Eliminate the StringMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63009 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
d0adbb5b7da2d1238fdf1a30734a001a0103aab0 26-Jan-2009 Evan Cheng <evan.cheng@apple.com> Add data structure to define and track debug location during codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63008 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
2dbde507ec0cf5abb4a88ab96fb997e39ec0a046 26-Jan-2009 evancheng <evancheng@91177308-0d34-0410-b5e6-96231b3b80d8> Add data structure to define and track debug location during codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63008 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
e7852d014432a06c783de3c350eb96e686f10f92 26-Jan-2009 Dan Gohman <gohman@apple.com> Take the next steps in making SDUse more consistent with LLVM Use, and
tidy up SDUse and related code.
- Replace the operator= member functions with a set method, like
LLVM Use has, and variants setInitial and setNode, which take
care up updating use lists, like LLVM Use's does. This simplifies
code that calls these functions.
- getSDValue() is renamed to get(), as in LLVM Use, though most
places can either use the implicit conversion to SDValue or the
convenience functions instead.
- Fix some more node vs. value terminology issues.

Also, eliminate the one remaining use of SDOperandPtr, and
SDOperandPtr itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
c2517d3c633e362d4fc340b29902b90544302646 26-Jan-2009 djg <djg@91177308-0d34-0410-b5e6-96231b3b80d8> Take the next steps in making SDUse more consistent with LLVM Use, and
tidy up SDUse and related code.
- Replace the operator= member functions with a set method, like
LLVM Use has, and variants setInitial and setNode, which take
care up updating use lists, like LLVM Use's does. This simplifies
code that calls these functions.
- getSDValue() is renamed to get(), as in LLVM Use, though most
places can either use the implicit conversion to SDValue or the
convenience functions instead.
- Fix some more node vs. value terminology issues.

Also, eliminate the one remaining use of SDOperandPtr, and
SDOperandPtr itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
399461095b033438d1f5863cd0d6f82a616f74dc 25-Jan-2009 Dan Gohman <gohman@apple.com> Eliminate the loop that searches through each of the operands
of each use in the SelectionDAG ReplaceAllUses* functions. Thanks
to Chris for spotting this opportunity.

Also, factor out code from all 5 of the ReplaceAllUses* functions
into AddNonLeafNodeToCSEMaps, which is now renamed
AddModifiedNodeToCSEMaps to more accurately reflect its purpose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
943376a6cd1f5a793ea99fbdebbe69112c173895 25-Jan-2009 djg <djg@91177308-0d34-0410-b5e6-96231b3b80d8> Eliminate the loop that searches through each of the operands
of each use in the SelectionDAG ReplaceAllUses* functions. Thanks
to Chris for spotting this opportunity.

Also, factor out code from all 5 of the ReplaceAllUses* functions
into AddNonLeafNodeToCSEMaps, which is now renamed
AddModifiedNodeToCSEMaps to more accurately reflect its purpose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
74692c0d65d92865674ff8e0491a21b98950284a 25-Jan-2009 Dan Gohman <gohman@apple.com> Whitespace tidiments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
08f48f53cb06d0d011f697744efc33ebe5ba4068 25-Jan-2009 djg <djg@91177308-0d34-0410-b5e6-96231b3b80d8> Whitespace tidiments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e77f89de8cb6690ac45b87b03c588e9d287c1eeb 25-Jan-2009 Dan Gohman <gohman@apple.com> Move the N->use_empty() assert from DeleteNode to
DeleteNodeNotInCSEMaps, since DeleteNode just calls
DeleteNodeNotInCSEMaps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62962 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f03abfe8766b6ef802f6a470a056d40a33a8252d 25-Jan-2009 djg <djg@91177308-0d34-0410-b5e6-96231b3b80d8> Move the N->use_empty() assert from DeleteNode to
DeleteNodeNotInCSEMaps, since DeleteNode just calls
DeleteNodeNotInCSEMaps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62962 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d498c8f2c8eb5598bf2e0c3ab30016734e490c6b 25-Jan-2009 Evan Cheng <evan.cheng@apple.com> Teach 2addr pass to be do more commuting. If both uses of a two-address instruction are killed, but the first operand has a use before and after the def, commute if the second operand does not suffer from the same issue.
%reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1
%reg1029<def> = MOV8rr %reg1028
%reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>
insert => %reg1030<def> = MOV8rr %reg1028
%reg1030<def> = ADD8rr %reg1028<kill>, %reg1029<kill>, %EFLAGS<imp-def,dead>

In this case, it might not be possible to coalesce the second MOV8rr
instruction if the first one is coalesced. So it would be profitable to
commute it:
%reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1
%reg1029<def> = MOV8rr %reg1028
%reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>
insert => %reg1030<def> = MOV8rr %reg1029
%reg1030<def> = ADD8rr %reg1029<kill>, %reg1028<kill>, %EFLAGS<imp-def,dead>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62954 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
58d5ef24fd6c26a0b95c1adead41702b12a59f35 25-Jan-2009 evancheng <evancheng@91177308-0d34-0410-b5e6-96231b3b80d8> Teach 2addr pass to be do more commuting. If both uses of a two-address instruction are killed, but the first operand has a use before and after the def, commute if the second operand does not suffer from the same issue.
%reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1
%reg1029<def> = MOV8rr %reg1028
%reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>
insert => %reg1030<def> = MOV8rr %reg1028
%reg1030<def> = ADD8rr %reg1028<kill>, %reg1029<kill>, %EFLAGS<imp-def,dead>

In this case, it might not be possible to coalesce the second MOV8rr
instruction if the first one is coalesced. So it would be profitable to
commute it:
%reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1
%reg1029<def> = MOV8rr %reg1028
%reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>
insert => %reg1030<def> = MOV8rr %reg1029
%reg1030<def> = ADD8rr %reg1029<kill>, %reg1028<kill>, %EFLAGS<imp-def,dead>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62954 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
9b9948507474acd3c5941ad7d33a37cb066803ad 24-Jan-2009 Nate Begeman <natebegeman@mac.com> Fix an indent and a typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62940 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a0d77375cb66caf9235a698526f2b2aae389f723 24-Jan-2009 sampo <sampo@91177308-0d34-0410-b5e6-96231b3b80d8> Fix an indent and a typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62940 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
32ca8657b8c1ef21225370b7b7e159a92413bc6e 24-Jan-2009 Owen Anderson <resistor@mac.com> Some cleanups. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62917 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
22c9d8c314f0e708ca4943db5841b2d01154398e 24-Jan-2009 resistor <resistor@91177308-0d34-0410-b5e6-96231b3b80d8> Some cleanups. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62917 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
8191371f87495dea2abd733bf63224b6209fdb12 24-Jan-2009 Evan Cheng <evan.cheng@apple.com> Refactor code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62893 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b473d2ec1cc84bac97b3804872e0856ea7232c3a 24-Jan-2009 Evan Cheng <evan.cheng@apple.com> Refactor code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62893 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
3b64c6bc2916bc62a99ef8a2995a426d994e1a04 23-Jan-2009 Devang Patel <dpatel@apple.com> Introduce two DWARF attribute extentions DW_AT_APPLE_optimized, DW_AT_APPLE_flags.

DW_AT_APPLE_optimized flag is set when a compile_unit is optimized. The debugger takes advantage of this information some way.

DW_AT_APPLE_flags encodes command line options when certain env. variable is set. This is used by build engineers to track various gcc command lines used by by a project, irrespective of whether the project used makefile, Xcode or something else.

llvm-gcc patch is next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62888 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
a880b1e4f308b64f45997f6eb5f8cd64a88d7a96 23-Jan-2009 Devang Patel <dpatel@apple.com> Introduce two DWARF attribute extentions DW_AT_APPLE_optimized, DW_AT_APPLE_flags.

DW_AT_APPLE_optimized flag is set when a compile_unit is optimized. The debugger takes advantage of this information some way.

DW_AT_APPLE_flags encodes command line options when certain env. variable is set. This is used by build engineers to track various gcc command lines used by by a project, irrespective of whether the project used makefile, Xcode or something else.

llvm-gcc patch is next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62888 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
80303aade2b473004bde914db6c368a77af0f8a8 23-Jan-2009 Devang Patel <dpatel@apple.com> Empty DIType represents void. In this case no need to construct any type DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62861 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
165ed51875baf34e005543dfeabb6816685a0cfc 23-Jan-2009 Devang Patel <dpatel@apple.com> Empty DIType represents void. In this case no need to construct any type DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62861 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
a90c8e690bd9103bb4a5d943f98279a55bf42ad1 23-Jan-2009 Dan Gohman <gohman@apple.com> Fold x-0 to x in unsafe-fp-math mode. This comes up in the
testcase from PR3376, and in fact is sufficient to completely
avoid the problem in that testcase.

There's an underlying problem though; TLI.isOperationLegal
considers Custom to be Legal, which might be ok in some
cases, but that's what DAGCombiner is using in many places
to test if something is legal when LegalOperations is true.
When DAGCombiner is running after legalize, this isn't
sufficient. I'll address this in a separate commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62860 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
46ef3eba061054be925fd2fe3ff0e3433d6cf31a 23-Jan-2009 Dan Gohman <gohman@apple.com> Fold x-0 to x in unsafe-fp-math mode. This comes up in the
testcase from PR3376, and in fact is sufficient to completely
avoid the problem in that testcase.

There's an underlying problem though; TLI.isOperationLegal
considers Custom to be Legal, which might be ok in some
cases, but that's what DAGCombiner is using in many places
to test if something is legal when LegalOperations is true.
When DAGCombiner is running after legalize, this isn't
sufficient. I'll address this in a separate commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62860 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
c16d37ead0f07cc250d06e5cdbb3836f2f6082cd 23-Jan-2009 Evan Cheng <evan.cheng@apple.com> Only check if coalescing is worthwhile when the result is targeting a more restrictive register class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62837 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c212aa822cf9a01eb1b190e3fcdb62b327303ec1 23-Jan-2009 Evan Cheng <evan.cheng@apple.com> Only check if coalescing is worthwhile when the result is targeting a more restrictive register class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62837 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9ce499ab3663a3a5dda964c2d905e4ff05af976c 23-Jan-2009 Owen Anderson <resistor@mac.com> Stage two of fixing pre-alloc-splitting's code size issues: filter out restores that are just
going to be re-spilled again.

This also helps performance. Pre-alloc-splitting now seems to be an overall win on SPEC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62834 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
bd555359c691475bb1f7b401aa76fd8af103c8c4 23-Jan-2009 Owen Anderson <resistor@mac.com> Stage two of fixing pre-alloc-splitting's code size issues: filter out restores that are just
going to be re-spilled again.

This also helps performance. Pre-alloc-splitting now seems to be an overall win on SPEC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62834 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
8c08d8c77c45d4721e7d3ef746cca9e39b28e379 23-Jan-2009 Evan Cheng <evan.cheng@apple.com> Cross register class coalescing. Not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62832 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
38ae3aa149ff304e0a8b39f1b133e8a8adc504f0 23-Jan-2009 Evan Cheng <evan.cheng@apple.com> Cross register class coalescing. Not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62832 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
a608687f3ebaec77250efd1bff645e1b1b274b99 23-Jan-2009 Devang Patel <dpatel@apple.com> Code did not follow associated comment. not a good idea.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62828 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
b80597aae8896dbe1a7a90d58611b27e9076e3f6 23-Jan-2009 Devang Patel <dpatel@apple.com> Code did not follow associated comment. not a good idea.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62828 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
49f38cb32ff49ae165a97e3e71ac7e941231e251 23-Jan-2009 Devang Patel <dpatel@apple.com> Set appropriate tag for the composite type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62827 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
8050bd7227a0b9717fe2cc42128de806efeedbba 23-Jan-2009 Devang Patel <dpatel@apple.com> Set appropriate tag for the composite type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62827 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
956ec27a99bdb22c97d571c65aeff4cf5c2adc3f 23-Jan-2009 Owen Anderson <resistor@mac.com> Add an initial pass at dead spill/restore removal for pre alloc splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62821 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
ecaf7ca2ce7d27c6756265342eb73955e6c7cd25 23-Jan-2009 Owen Anderson <resistor@mac.com> Add an initial pass at dead spill/restore removal for pre alloc splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62821 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
bbfa244b2fa986c53a1bcf38b6dd0fea082afaaa 23-Jan-2009 Chris Lattner <sabre@nondot.org> do not sign extend characters input to isprint. This improves
compatibility with VC++. Patch by Max Burke!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62813 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
07ec1469b9a4dc1fef0a4bd92f49a417f8eb9a54 23-Jan-2009 Chris Lattner <sabre@nondot.org> do not sign extend characters input to isprint. This improves
compatibility with VC++. Patch by Max Burke!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62813 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
67ba22318b49200ffdedb1f50a8d89f08e6c710c 22-Jan-2009 Bob Wilson <bob.wilson@apple.com> Fix a minor bug in DAGCombiner's folding of SELECT. Folding "select C, 0, 1"
to "C ^ 1" is only valid when C is known to be either 0 or 1. Most of the
similar foldings in this function only handle "i1" types, but this one appears
intentionally written to handle larger integer types. If C has an integer
type larger than "i1", this needs to check if the high bits of a boolean
are known to be zero. I also changed the comment to describe this folding as
"C ^ 1" instead of "~C", since that is what the code does and since the latter
would only be valid for "i1" types. The good news is that most LLVM targets
use TargetLowering::ZeroOrOneBooleanContent so this change will not disable
the optimization; the bad news is that I've been unable to come up with a
testcase to demonstrate the problem.

I have also removed a "FIXME" comment for folding "select C, X, 0" to "C & X",
since the code looks correct to me. It could be made more aggressive by not
limiting the type to "i1", but that would then require checking for
TargetLowering::ZeroOrNegativeOneBooleanContent. Similar changes could be
done for the other SELECT foldings, but it was decided to be not worth the
trouble and complexity (see e.g., r44663).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62790 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ee1fe314072a6c1dcc71a9ed5202c5c4b5da849e 22-Jan-2009 Bob Wilson <bob.wilson@apple.com> Fix a minor bug in DAGCombiner's folding of SELECT. Folding "select C, 0, 1"
to "C ^ 1" is only valid when C is known to be either 0 or 1. Most of the
similar foldings in this function only handle "i1" types, but this one appears
intentionally written to handle larger integer types. If C has an integer
type larger than "i1", this needs to check if the high bits of a boolean
are known to be zero. I also changed the comment to describe this folding as
"C ^ 1" instead of "~C", since that is what the code does and since the latter
would only be valid for "i1" types. The good news is that most LLVM targets
use TargetLowering::ZeroOrOneBooleanContent so this change will not disable
the optimization; the bad news is that I've been unable to come up with a
testcase to demonstrate the problem.

I have also removed a "FIXME" comment for folding "select C, X, 0" to "C & X",
since the code looks correct to me. It could be made more aggressive by not
limiting the type to "i1", but that would then require checking for
TargetLowering::ZeroOrNegativeOneBooleanContent. Similar changes could be
done for the other SELECT foldings, but it was decided to be not worth the
trouble and complexity (see e.g., r44663).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62790 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
760f86f3395750ef6d03ecfe6f82d2867fbf568b 22-Jan-2009 Dan Gohman <gohman@apple.com> Don't create ISD::FNEG nodes after legalize if they aren't legal.

Simplify x+0 to x in unsafe-fp-math mode. This avoids a bunch of
redundant work in many cases, because in unsafe-fp-math mode,
ISD::FADD with a constant is considered free to negate, so the
DAGCombiner often negates x+0 to -0-x thinking it's free, when
in reality the end result is -x, which is more expensive than x.

Also, combine x*0 to 0.

This fixes PR3374.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62789 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
3d01556ac63fa62acf14d1290d6326f1d1db2ee0 22-Jan-2009 Dan Gohman <gohman@apple.com> Don't create ISD::FNEG nodes after legalize if they aren't legal.

Simplify x+0 to x in unsafe-fp-math mode. This avoids a bunch of
redundant work in many cases, because in unsafe-fp-math mode,
ISD::FADD with a constant is considered free to negate, so the
DAGCombiner often negates x+0 to -0-x thinking it's free, when
in reality the end result is -x, which is more expensive than x.

Also, combine x*0 to 0.

This fixes PR3374.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62789 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
4c2454623841f05c6c665659b34c214950d12d7e 22-Jan-2009 Bob Wilson <bob.wilson@apple.com> Add SelectionDAG::getNOT method to construct bitwise NOT operations,
corresponding to the "not" and "vnot" PatFrags. Use the new method
in some places where it seems appropriate.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
81a42cf05bf437d155f5491b490b1204c0acccfb 22-Jan-2009 Bob Wilson <bob.wilson@apple.com> Add SelectionDAG::getNOT method to construct bitwise NOT operations,
corresponding to the "not" and "vnot" PatFrags. Use the new method
in some places where it seems appropriate.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
fcc6f1556efb386af47293d9f8599bab2b34321c 22-Jan-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Few targets like the tiny little PIC16 have only 16-bit pointers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62763 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8a44cfbae54d9a0e8e42c292c4f995d60bb65a97 22-Jan-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Few targets like the tiny little PIC16 have only 16-bit pointers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62763 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
536ab130ec95cbb7bf30530251dafa7dfecc8471 22-Jan-2009 Evan Cheng <evan.cheng@apple.com> Eliminate a couple of fields from TargetRegisterClass: SubRegClasses and SuperRegClasses. These are not necessary. Also eliminate getSubRegisterRegClass and getSuperRegisterRegClass. These are slow and their results can change if register file names change. Just use TargetLowering::getRegClassFor() to get the right TargetRegisterClass instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62762 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
bfda7277ae672402e976e4fb6dca92232fc105a5 22-Jan-2009 Evan Cheng <evan.cheng@apple.com> Eliminate a couple of fields from TargetRegisterClass: SubRegClasses and SuperRegClasses. These are not necessary. Also eliminate getSubRegisterRegClass and getSuperRegisterRegClass. These are slow and their results can change if register file names change. Just use TargetLowering::getRegClassFor() to get the right TargetRegisterClass instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62762 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
e70909b8c94b18ae5fcfe8010251d2527704d58b 22-Jan-2009 Chris Lattner <sabre@nondot.org> fix a typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62761 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c5ffda94ad4791ba4b3094f27a2224729ba20de2 22-Jan-2009 Chris Lattner <sabre@nondot.org> fix a typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62761 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
764fd0cbc8a0ee512a9352cfeb123e8778542d28 21-Jan-2009 Dan Gohman <gohman@apple.com> Simplify ReduceLoadWidth's logic: it doesn't need several different
special cases after producing the new reduced-width load, because the
new load already has the needed adjustments built into it. This fixes
several bugs due to the special cases, including PR3317.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
054522078694b2ff7d262d9950994618bd0f5db6 21-Jan-2009 Dan Gohman <gohman@apple.com> Simplify ReduceLoadWidth's logic: it doesn't need several different
special cases after producing the new reduced-width load, because the
new load already has the needed adjustments built into it. This fixes
several bugs due to the special cases, including PR3317.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9fbc7e2e7a765298fb4326885b407e0962f7ab62 21-Jan-2009 Duncan Sands <baldrick@free.fr> Cleanup whitespace and comments, and tweak some
prototypes, in operand type legalization. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62680 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAGBuild.cpp
1497b52861fa267815ae822ce247ca74746ef211 21-Jan-2009 Duncan Sands <baldrick@free.fr> Cleanup whitespace and comments, and tweak some
prototypes, in operand type legalization. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62680 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAGBuild.cpp
d3be46214ca75f0ba7d5fc6cd322d222dd53e2cb 21-Jan-2009 Owen Anderson <resistor@mac.com> I accidentally removed this check in an earlier commit, which cause breakage in the pre alloc splitter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62678 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
41cb4919733565c697e529494f3fcfa380f318bb 21-Jan-2009 Owen Anderson <resistor@mac.com> I accidentally removed this check in an earlier commit, which cause breakage in the pre alloc splitter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62678 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
d1e8d9c0a5dc821b6b52f7872181edeeec5df7ba 21-Jan-2009 Scott Michel <scottm@aero.org> CellSPU:
- Ensure that (operation) legalization emits proper FDIV libcall when needed.
- Fix various bugs encountered during llvm-spu-gcc build, along with various
cleanups.
- Start supporting double precision comparisons for remaining libgcc2 build.
Discovered interesting DAGCombiner feature, which is currently solved via
custom lowering (64-bit constants are not legal on CellSPU, but DAGCombiner
insists on inserting one anyway.)
- Update README.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62664 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8c67fa4e560a7e7ad7cdde160a29b14c81be027a 21-Jan-2009 Scott Michel <scottm@aero.org> CellSPU:
- Ensure that (operation) legalization emits proper FDIV libcall when needed.
- Fix various bugs encountered during llvm-spu-gcc build, along with various
cleanups.
- Start supporting double precision comparisons for remaining libgcc2 build.
Discovered interesting DAGCombiner feature, which is currently solved via
custom lowering (64-bit constants are not legal on CellSPU, but DAGCombiner
insists on inserting one anyway.)
- Update README.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62664 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bb326bbe88d0b243d5d9d224308eb0c028d4d4af 21-Jan-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow targets to legalize operations (with illegal operands) that produces multiple values. For example, a load with an illegal operand (a load produces two values, a value and chain).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62663 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAGBuild.cpp
b01fb4d9793bb62e48ca0d91be0c181fd3dd69b4 21-Jan-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow targets to legalize operations (with illegal operands) that produces multiple values. For example, a load with an illegal operand (a load produces two values, a value and chain).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62663 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAGBuild.cpp
6cf7c390ecf33cdbe9e65d230e4f61ac548893e6 21-Jan-2009 Owen Anderson <resistor@mac.com> Be more aggressive about renumbering vregs after splitting them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62639 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
8aa05c577169655d9326b1390671c583a2aee598 21-Jan-2009 Owen Anderson <resistor@mac.com> Be more aggressive about renumbering vregs after splitting them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62639 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
476615934a74a313a691413230d249889cfaa2f8 21-Jan-2009 Devang Patel <dpatel@apple.com> Encode member accessibility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62638 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
2e7ee195f48ab055a04ad0aa4b4bee9d45fbcddc 21-Jan-2009 Devang Patel <dpatel@apple.com> Encode member accessibility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62638 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
2a574669f3aed5951dcd62fa14c25dcde4d1a754 20-Jan-2009 Devang Patel <dpatel@apple.com> Appropriately mark fowrad decls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62625 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
30b75bbb1415450452300a984467b71bf9a2ba1e 20-Jan-2009 Devang Patel <dpatel@apple.com> Appropriately mark fowrad decls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62625 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
a894ae130b6e69a367aa691eec7e96973a20e901 20-Jan-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3243: a LiveVariables bug. When HandlePhysRegKill is checking whether the last reference is also the last def (i.e. dead def), it should also check if last reference is the current machine instruction being processed. This can happen when it is processing a physical register use and setting the current machine instruction as sub-register's last ref.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62617 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
06df4d0467cf537521bf9fffef7b6e416fa0cec6 20-Jan-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3243: a LiveVariables bug. When HandlePhysRegKill is checking whether the last reference is also the last def (i.e. dead def), it should also check if last reference is the current machine instruction being processed. This can happen when it is processing a physical register use and setting the current machine instruction as sub-register's last ref.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62617 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
e9a7286087a87cc1c5fe03453ca087f7b1a30271 20-Jan-2009 Bill Wendling <isanbard@gmail.com> Use "SINT_TO_FP" instead of "UINT_TO_FP" when getting the exponent. This was
causing the limited precision stuff to produce the wrong result for values in
the range [0, 1).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62615 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
8e76c3406e5f8fa7f04316386627c7660c449a3a 20-Jan-2009 Bill Wendling <isanbard@gmail.com> Use "SINT_TO_FP" instead of "UINT_TO_FP" when getting the exponent. This was
causing the limited precision stuff to produce the wrong result for values in
the range [0, 1).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62615 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
2be5893a0417313813739940b0347755234d2cc3 20-Jan-2009 Devang Patel <dpatel@apple.com> Fix struct member's debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62610 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
5c64389e78bafc0f3cd2b2e1163f87a29d223565 20-Jan-2009 Devang Patel <dpatel@apple.com> Fix struct member's debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62610 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
6906ba52f050a6608502987e754a622f5c5111a6 20-Jan-2009 Devang Patel <dpatel@apple.com> Need only one set of debug info versions enum.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62602 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
b49710a37d1ac49ede305158ac5e1a2b094d8218 20-Jan-2009 Devang Patel <dpatel@apple.com> Need only one set of debug info versions enum.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62602 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
04ee5a1d9267e5e6fab8f088095fcb83c3c5cbd1 20-Jan-2009 Evan Cheng <evan.cheng@apple.com> Change TargetInstrInfo::isMoveInstr to return source and destination sub-register indices as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62600 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
f97496a054876b3bb9c0acf424379eb2f48377ce 20-Jan-2009 Evan Cheng <evan.cheng@apple.com> Change TargetInstrInfo::isMoveInstr to return source and destination sub-register indices as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62600 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
9ec50ab3f88f512739b383a13c739f77567c9dbe 20-Jan-2009 Devang Patel <dpatel@apple.com> Fix global variable's address in a DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62596 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
2072db8bcaacab45e3b8661b498d2e4d07640add 20-Jan-2009 Devang Patel <dpatel@apple.com> Fix global variable's address in a DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62596 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
eab4a2e8ac909b0ca420380634403616566d63fa 20-Jan-2009 Devang Patel <dpatel@apple.com> Enable debug info for enums.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62594 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
3798f49090a9413c112e3e67586effc8e8193443 20-Jan-2009 Devang Patel <dpatel@apple.com> Enable debug info for enums.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62594 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
ce31b027e7891da951f1036465e8d82dd0bd3297 20-Jan-2009 Devang Patel <dpatel@apple.com> Enable debug info for composite types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62589 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
08f0de37af9e3d85aced21234ebb637cdb20e818 20-Jan-2009 Devang Patel <dpatel@apple.com> Enable debug info for composite types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62589 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e08eb9ca1dc832e0c8b460459fe218622f231898 20-Jan-2009 Evan Cheng <evan.cheng@apple.com> Refactor code. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62573 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
93a24157388db3a4e270025f1444a36bcaee39d4 20-Jan-2009 Evan Cheng <evan.cheng@apple.com> Refactor code. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62573 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
6c53334b905eaf91469134c8e5506c643276c607 20-Jan-2009 Bill Wendling <isanbard@gmail.com> Shift types need to match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
583c9c4552e7b0fc01c4d39d4196275a1aedf28c 20-Jan-2009 Bill Wendling <isanbard@gmail.com> Shift types need to match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f5add58549fe8ecd9a15cbb7c230282bd693516b 20-Jan-2009 Dan Gohman <gohman@apple.com> Fix a dagcombine to not generate loads of non-round integer types,
as its comment says, even in the case where it will be generating
extending loads. This fixes PR3216.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62557 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
50187c2d138fe3f002e0a8c8f6c7c92939684ff5 20-Jan-2009 Dan Gohman <gohman@apple.com> Fix a dagcombine to not generate loads of non-round integer types,
as its comment says, even in the case where it will be generating
extending loads. This fixes PR3216.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62557 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c2997f4a34eb544ca6ec85a5c9190feb998fc7a8 20-Jan-2009 Devang Patel <dpatel@apple.com> Do not use DenseMap because the iterator is invalidated while constructing types. After all there was a reason why std::map was used initially!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62555 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
56b1d1384e645593e99bfe15ef08b802f5bf2b00 20-Jan-2009 Devang Patel <dpatel@apple.com> Do not use DenseMap because the iterator is invalidated while constructing types. After all there was a reason why std::map was used initially!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62555 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
d0deec20f6a77b3b22af9f91dd3e30314c5264bc 20-Jan-2009 Evan Cheng <evan.cheng@apple.com> Make linear scan's trivial coalescer slightly more aggressive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62547 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
db4b26032c577eb5be8c0d5a587f147e046b2189 20-Jan-2009 Evan Cheng <evan.cheng@apple.com> Make linear scan's trivial coalescer slightly more aggressive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62547 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
b79b5359fbe44bc82bedff2c081ed1db787f8d49 20-Jan-2009 Devang Patel <dpatel@apple.com> Verify debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62545 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
208098ba9cdd450ea53c98a66e174ffaa210fd2e 20-Jan-2009 Devang Patel <dpatel@apple.com> Verify debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62545 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
c53361294957b63a9c1e405256c6f0a81db1685c 19-Jan-2009 Dan Gohman <gohman@apple.com> Remove SDNode's virtual destructor. This makes it impossible for
SDNode subclasses to keep state that requires non-trivial
destructors, however it was already effectively impossible,
since the destructor isn't actually ever called. There currently
aren't any SDNode subclasses affected by this, and in general
it's desireable to keep SDNode objects light-weight.

This eliminates the last virtual member function in the SDNode
class, so it eliminates the need for a vtable pointer, making
SDNode smaller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62539 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
98a355c16d7083f4da20096d0cb5a72ec93b75c0 19-Jan-2009 Dan Gohman <gohman@apple.com> Remove SDNode's virtual destructor. This makes it impossible for
SDNode subclasses to keep state that requires non-trivial
destructors, however it was already effectively impossible,
since the destructor isn't actually ever called. There currently
aren't any SDNode subclasses affected by this, and in general
it's desireable to keep SDNode objects light-weight.

This eliminates the last virtual member function in the SDNode
class, so it eliminates the need for a vtable pointer, making
SDNode smaller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62539 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
dbe664adcddd8610952968d86791478c874cf1cd 19-Jan-2009 Dan Gohman <gohman@apple.com> Fix SelectionDAG::ReplaceAllUsesWith to behave correctly when
uses are added to the From node while it is processing From's
use list, because of automatic local CSE. The fix is to avoid
visiting any new uses.

Fix a few places in the DAGCombiner that assumed that after
a RAUW call, the From node has no users and may be deleted.

This fixes PR3018.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62533 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
86bf13990559866858a9f806c2ab20dd14851bc0 19-Jan-2009 Dan Gohman <gohman@apple.com> Fix SelectionDAG::ReplaceAllUsesWith to behave correctly when
uses are added to the From node while it is processing From's
use list, because of automatic local CSE. The fix is to avoid
visiting any new uses.

Fix a few places in the DAGCombiner that assumed that after
a RAUW call, the From node has no users and may be deleted.

This fixes PR3018.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62533 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
15c94d08ab2be2e3d00de4edbfc7adde6545a7db 18-Jan-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Few targets like PIC16 wants libcall generation for illegal type i16.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62467 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
5ad046568e2dd0b8079c871577950810a9d62d0a 18-Jan-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Few targets like PIC16 wants libcall generation for illegal type i16.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62467 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
e3bc6ae92a17c28824fb4b6cf606d8ab07cae974 18-Jan-2009 Mon P Wang <wangmp@apple.com> Simplify extract element based on comments from Duncan Sands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62459 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
017cf18077032a7754942cdfc9530533e502c6df 18-Jan-2009 Mon P Wang <wangmp@apple.com> Simplify extract element based on comments from Duncan Sands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62459 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2d1768ca523dca409bab70ce29955875f58dddb8 17-Jan-2009 Devang Patel <dpatel@apple.com> Remove tabs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62423 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
245446cbbce0ae340c9f562fab60c1ff5979584b 17-Jan-2009 Devang Patel <dpatel@apple.com> Remove tabs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62423 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
5aac3d3707adef14df2a59a80f622c2896927d2b 17-Jan-2009 Devang Patel <dpatel@apple.com> Refactor code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62421 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
b28de84fcc7c6ebed91f35ac035d4bd4d7c77a93 17-Jan-2009 Devang Patel <dpatel@apple.com> Refactor code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62421 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7ab24506746a25959b67caffa4b18d5fb62a60d2 17-Jan-2009 Devang Patel <dpatel@apple.com> Assign argument type to appropriate DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62412 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
d40a7e5afb414c1892c4b8cccd79702c84e19946 17-Jan-2009 Devang Patel <dpatel@apple.com> Assign argument type to appropriate DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62412 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7e55b3a6638682a62f95bbcbf4ac94b8120b2988 17-Jan-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62410 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
5302e67b2739b0cd1d171d445723fbfab982f44e 17-Jan-2009 Devang Patel <dpatel@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62410 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
2d91d18ba1c815c18ba7bd4ed9e3045eb40d0f76 17-Jan-2009 Devang Patel <dpatel@apple.com> Disable composite type debug info for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62406 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
79faa60cf1b5a7f30c885c35343a9d5b7ee5ff72 17-Jan-2009 Devang Patel <dpatel@apple.com> Disable composite type debug info for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62406 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7ac9cdfc991db344a1e0f642aefc6db6b868b9b0 17-Jan-2009 Mon P Wang <wangmp@apple.com> Simplify extract element of a scalar to vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3512a535f7c8bb494ecdc491eebd8d8893264fac 17-Jan-2009 Mon P Wang <wangmp@apple.com> Simplify extract element of a scalar to vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f7119393a97c2a10757084b6bc186380f8c19a73 16-Jan-2009 Dan Gohman <gohman@apple.com> Instead of adding dependence edges between terminator instructions
and every other instruction in their blocks to keep the terminator
instructions at the end, teach the post-RA scheduler how to operate
on ranges of instructions, and exclude terminators from the range
of instructions that get scheduled.

Also, exclude mid-block labels, such as EH_LABEL instructions, and
schedule code before them separately from code after them. This
fixes problems with the post-RA scheduler moving code past
EH_LABELs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62366 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGISel.cpp
14bb992f8671302f8fad58ee842aa54e0b31edc1 16-Jan-2009 Dan Gohman <gohman@apple.com> Instead of adding dependence edges between terminator instructions
and every other instruction in their blocks to keep the terminator
instructions at the end, teach the post-RA scheduler how to operate
on ranges of instructions, and exclude terminators from the range
of instructions that get scheduled.

Also, exclude mid-block labels, such as EH_LABEL instructions, and
schedule code before them separately from code after them. This
fixes problems with the post-RA scheduler moving code past
EH_LABELs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62366 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGISel.cpp
49bb50e0b65d4646a1d44eec3196c003c13caa96 16-Jan-2009 Dan Gohman <gohman@apple.com> If an anti-dependence uses a non-allocatable register, set AntiDepReg
to 0, to ensure that the subsequent code doesn't try to break the
dependence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62365 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
f377ee9d969378a2262156b37a2dcb6d200430b2 16-Jan-2009 Dan Gohman <gohman@apple.com> If an anti-dependence uses a non-allocatable register, set AntiDepReg
to 0, to ensure that the subsequent code doesn't try to break the
dependence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62365 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
b6a6164832572b2daeba604d6378ad49128d212f 16-Jan-2009 Dan Gohman <gohman@apple.com> Use the getNode() accessor instead of accessing the Node
member directly, which is private as of r55504.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e19c60d0bb1823552e917dfe61e7f4eb90ac4ced 16-Jan-2009 Dan Gohman <gohman@apple.com> Use the getNode() accessor instead of accessing the Node
member directly, which is private as of r55504.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8554449e311e50f2e96db1081a17ccf7151ef7f6 16-Jan-2009 Dan Gohman <gohman@apple.com> Fix the check for an empty basic block to check for an empty SUnits
array instead, since this is what the scheduler actually cares about.
And remove a check that is unnecessary, since it can assume that
SUnits isn't empty.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62362 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
335308263d7be8f5286b285161b1d38892ae0175 16-Jan-2009 Dan Gohman <gohman@apple.com> Fix the check for an empty basic block to check for an empty SUnits
array instead, since this is what the scheduler actually cares about.
And remove a check that is unnecessary, since it can assume that
SUnits isn't empty.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62362 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
df874eed5695420c71bf55cc6a11725631ec2b88 16-Jan-2009 Chris Lattner <sabre@nondot.org> new nodes should be added to the worklist, not old nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e755e2ae6119343c79c84f3ceb1315ae13e57ca0 16-Jan-2009 Chris Lattner <sabre@nondot.org> new nodes should be added to the worklist, not old nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
07354e532b0df9b2a6ec6fd7321614d7132437ee 16-Jan-2009 Devang Patel <dpatel@apple.com> Fix comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62358 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
9b82945fd1cc03480cd0c976ef13144100cf5a3b 16-Jan-2009 Devang Patel <dpatel@apple.com> Fix comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62358 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e57187cbe321a286f6a7f409a7badd1ae4e4642c 16-Jan-2009 Evan Cheng <evan.cheng@apple.com> CreateVirtualRegisters does trivial copy coalescing. If a node def is used by a single CopyToReg, it reuses the virtual register assigned to the CopyToReg. This won't work for SDNode that is a clone or is itself cloned. Disable this optimization for those nodes or it can end up with non-SSA machine instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
0a3c912d53f7aa0ab60608a886685ca2ab0d8de7 16-Jan-2009 Evan Cheng <evan.cheng@apple.com> CreateVirtualRegisters does trivial copy coalescing. If a node def is used by a single CopyToReg, it reuses the virtual register assigned to the CopyToReg. This won't work for SDNode that is a clone or is itself cloned. Disable this optimization for those nodes or it can end up with non-SSA machine instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
99ec3538b8ab8f599610d72e9c472de516d975e5 16-Jan-2009 Devang Patel <dpatel@apple.com> Use lightweight DebugInfo objects directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62341 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7c8a2776a7886662c6489d6c1b2c736905cc9282 16-Jan-2009 Devang Patel <dpatel@apple.com> Use lightweight DebugInfo objects directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62341 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7103c6a993af878ebd9767e344a33919dc2c4342 16-Jan-2009 Devang Patel <dpatel@apple.com> Align source code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62328 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
49a3bd96ee6d2222b84cfbacb515c7805fddcbe3 16-Jan-2009 Devang Patel <dpatel@apple.com> Align source code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62328 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
79ce4cea4701259c1aa70d59d3544ed00e9ab7f0 16-Jan-2009 Dan Gohman <gohman@apple.com> Fix a "comparison between signed and unsigned integer expressions"
warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62327 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
a67cb7190291c2afe115e0efbb53558543c31316 16-Jan-2009 Dan Gohman <gohman@apple.com> Fix a "comparison between signed and unsigned integer expressions"
warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62327 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
2388a588bdf32610e18a66c0c6ef248087fd1cdc 16-Jan-2009 Mikhail Glushenkov <foldr@codedgers.com> Registry.h should not depend on CommandLine.h.

Split Support/Registry.h into two files so that we have less to
recompile every time CommandLine.h is changed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62312 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
camlGC.cpp
electionDAG/SelectionDAGBuild.cpp
hadowStackGC.cpp
61fc6c80cf9d50c19fe46decedc592251918d78d 16-Jan-2009 Mikhail Glushenkov <foldr@codedgers.com> Registry.h should not depend on CommandLine.h.

Split Support/Registry.h into two files so that we have less to
recompile every time CommandLine.h is changed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62312 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
camlGC.cpp
electionDAG/SelectionDAGBuild.cpp
hadowStackGC.cpp
5c1799b29375fcd899f67a31fb4dda4ef3e2127f 16-Jan-2009 Mikhail Glushenkov <foldr@codedgers.com> Delete trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62307 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
camlGC.cpp
electionDAG/SelectionDAGBuild.cpp
hadowStackGC.cpp
26e9aed70cc520d39e32813513217163ff254e72 16-Jan-2009 Mikhail Glushenkov <foldr@codedgers.com> Delete trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62307 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
camlGC.cpp
electionDAG/SelectionDAGBuild.cpp
hadowStackGC.cpp
5be935536f490003ecc8f93525063a859c7caf63 16-Jan-2009 Devang Patel <dpatel@apple.com> Validate debug info values only if DwarfDebug is initialized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
943af62b037eb32943a3fe166e680d5623dd0a23 16-Jan-2009 Devang Patel <dpatel@apple.com> Validate debug info values only if DwarfDebug is initialized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
61c6bf37ef7d6066d12efa40639d67e7caf14b2d 16-Jan-2009 Devang Patel <dpatel@apple.com> Any debug info symbol is only valid if atleast one compile unit is seen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
4d92dded2f5b2820ff44b947fd74483bc85abe5a 16-Jan-2009 Devang Patel <dpatel@apple.com> Any debug info symbol is only valid if atleast one compile unit is seen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
2836c283bb1c14baa50994f60769d665da608ad7 16-Jan-2009 Dan Gohman <gohman@apple.com> Initial hazard recognizer support in post-pass scheduling. This includes
a new toy hazard recognizier heuristic which attempts to direct the
scheduler to avoid clumping large groups of loads or stores too densely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62291 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
electionDAG/ScheduleDAGList.cpp
99603bb2e0d81b55ef3f4d219a3fecc067ced3b2 16-Jan-2009 Dan Gohman <gohman@apple.com> Initial hazard recognizer support in post-pass scheduling. This includes
a new toy hazard recognizier heuristic which attempts to direct the
scheduler to avoid clumping large groups of loads or stores too densely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62291 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
electionDAG/ScheduleDAGList.cpp
153745cc1f82fdfc66b5e68c9146d3339cbebf73 16-Jan-2009 Devang Patel <dpatel@apple.com> Do not stumble over forward declared struct member.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62288 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
cf7acb10bcb056c56da28e70879eb8444e2d949f 16-Jan-2009 Devang Patel <dpatel@apple.com> Do not stumble over forward declared struct member.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62288 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
cf3a4487c0627d15d03fb6fedc10b58f6e2c9ebe 16-Jan-2009 Devang Patel <dpatel@apple.com> Validate dbg_* intrinsics before lowering them.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62286 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
2da0cc4c377b09f2d52689a5095f0960750e30c4 16-Jan-2009 Devang Patel <dpatel@apple.com> Validate dbg_* intrinsics before lowering them.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62286 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
fa9c5eac33bef67e2faef166c902e3bb16efa30f 15-Jan-2009 Mon P Wang <wangmp@apple.com> Added missing support to widen an operand from a bit convert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62285 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
639095bd76b07891ca0177d6e925ce7be3178382 15-Jan-2009 Mon P Wang <wangmp@apple.com> Added missing support to widen an operand from a bit convert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62285 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
fc54c552963545a81e4ea38e60460590afb2d5ae 15-Jan-2009 Dan Gohman <gohman@apple.com> Generalize the HazardRecognizer interface so that it can be used
to support MachineInstr-based scheduling in addition to
SDNode-based scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62284 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/SelectionDAGISel.cpp
dd6547db865163f5292361d2b8bfdb0217b25f33 15-Jan-2009 Dan Gohman <gohman@apple.com> Generalize the HazardRecognizer interface so that it can be used
to support MachineInstr-based scheduling in addition to
SDNode-based scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62284 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/SelectionDAGISel.cpp
c475c3608a5f0fc0c6bd43da04ae786649690070 15-Jan-2009 Dan Gohman <gohman@apple.com> Simplify the MachineLICM pass by having it only traverse outer
loops, hoisting instructions all the way out in one step rather
than hoisting them one nest level at a time. Also, make a few
other code simplifications. This speeds up MachineLICM
by several fold.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62283 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
82ef29edc0a15f6e5afb36be7269de523e0dc965 15-Jan-2009 Dan Gohman <gohman@apple.com> Simplify the MachineLICM pass by having it only traverse outer
loops, hoisting instructions all the way out in one step rather
than hoisting them one nest level at a time. Also, make a few
other code simplifications. This speeds up MachineLICM
by several fold.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62283 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
bb46f52027416598a662dc1c58f48d9d56b1a65b 15-Jan-2009 Rafael Espindola <rafael.espindola@gmail.com> Add the private linkage.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62279 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
LFWriter.cpp
achOWriter.cpp
electionDAG/SelectionDAGBuild.cpp
a168fc98dedfc8cac01c34f84b699fe5f48ad76d 15-Jan-2009 Rafael Espindola <rafael.espindola@gmail.com> Add the private linkage.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62279 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
LFWriter.cpp
achOWriter.cpp
electionDAG/SelectionDAGBuild.cpp
f193ff05909c2de373032f773e76804474b1ef4e 15-Jan-2009 Devang Patel <dpatel@apple.com> Use lightweight DebugInfo objects directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62276 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
ef4bf3b063ea20732c4647c6f2d5d77caf907578 15-Jan-2009 Devang Patel <dpatel@apple.com> Use lightweight DebugInfo objects directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62276 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
79ce276083ced01256a0eb7d80731e4948ca6e87 15-Jan-2009 Dan Gohman <gohman@apple.com> Move a few containers out of ScheduleDAGInstrs::BuildSchedGraph
and into the ScheduleDAGInstrs class, so that they don't get
destructed and re-constructed for each block. This fixes a
compile-time hot spot in the post-pass scheduler.

To help facilitate this, tidy and do some minor reorganization
in the scheduler constructor functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62275 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
cheduleDAGPrinter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGISel.cpp
96eb47aa1be2f07003241a148e7b7db87bfa9104 15-Jan-2009 Dan Gohman <gohman@apple.com> Move a few containers out of ScheduleDAGInstrs::BuildSchedGraph
and into the ScheduleDAGInstrs class, so that they don't get
destructed and re-constructed for each block. This fixes a
compile-time hot spot in the post-pass scheduler.

To help facilitate this, tidy and do some minor reorganization
in the scheduler constructor functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62275 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
cheduleDAGPrinter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGISel.cpp
0e5200f3fd4c884e41f003cd57e75f6aca625cbd 15-Jan-2009 Devang Patel <dpatel@apple.com> Use variable's context to identify respective DbgScope.
Use light weight DebugInfo object directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62269 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
2560d923c0b48c202d430f8bc6b094f2952894d2 15-Jan-2009 Devang Patel <dpatel@apple.com> Use variable's context to identify respective DbgScope.
Use light weight DebugInfo object directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62269 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
65b7f27bb7a628e02df7a863227deda6bc326f44 15-Jan-2009 Dan Gohman <gohman@apple.com> Make getWidenVectorType const; this file was missed in the
previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62266 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
612f9d52905f1a3e3250c132fcc51447d93763b1 15-Jan-2009 Dan Gohman <gohman@apple.com> Make getWidenVectorType const; this file was missed in the
previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62266 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e9530ecae4897fe8157bd4d7616043bd8c0484e2 15-Jan-2009 Dan Gohman <gohman@apple.com> More consts on TargetLowering references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62262 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
a0c429eecdba4926d61591f84e73c8d473715e3a 15-Jan-2009 Dan Gohman <gohman@apple.com> More consts on TargetLowering references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62262 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
0d137d7f35fba98f668098b3badf644efacf0e08 15-Jan-2009 Dan Gohman <gohman@apple.com> Use const with TargetLowering references in a few more places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62260 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
0275b138ada11dd70e02f6fc56829304ab7a0559 15-Jan-2009 Dan Gohman <gohman@apple.com> Use const with TargetLowering references in a few more places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62260 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
b67e6b3b65f88d63cf483f47057beac5b8f55edf 15-Jan-2009 Gabor Greif <ggreif@gmail.com> minor refactoring: use a more specific API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62256 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
4c99d82f4a25697e025772d728275e7e9100eb5e 15-Jan-2009 Gabor Greif <ggreif@gmail.com> minor refactoring: use a more specific API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62256 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
4548d973998ceb254a6f69836d64210449dfaec7 14-Jan-2009 Devang Patel <dpatel@apple.com> Do not construct debug scope if RootScope *is* null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62209 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
d8423f651381e16b77897ba417222819b883bc6a 14-Jan-2009 Devang Patel <dpatel@apple.com> Do not construct debug scope if RootScope *is* null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62209 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
bbdc8207d587026212e176026d3e37ae043a6661 14-Jan-2009 Devang Patel <dpatel@apple.com> Removoe MachineModuleInfo methods (and related DebugInfoDesc class hierarchy) that were used to handle debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62199 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAG.cpp
42f6bed060d1c8b242acf605cf1ecd8ce05f04a3 14-Jan-2009 Devang Patel <dpatel@apple.com> Removoe MachineModuleInfo methods (and related DebugInfoDesc class hierarchy) that were used to handle debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62199 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAG.cpp
e2051627b81c713fd29f61ce6d4424d0388cc37d 14-Jan-2009 Devang Patel <dpatel@apple.com> Keep "has debug info" big in MachineModuleInfo to avoid circular dependency between AsmPrinter and CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62191 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
achineModuleInfo.cpp
86cfa40b308ff5bf55d77fa946f7294572d7ccaf 14-Jan-2009 Devang Patel <dpatel@apple.com> Keep "has debug info" big in MachineModuleInfo to avoid circular dependency between AsmPrinter and CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62191 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
achineModuleInfo.cpp
35fe7344aedec52c3fa048237e8554f97dff9182 13-Jan-2009 Devang Patel <dpatel@apple.com> Undo previous checkin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62190 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/SelectionDAG.cpp
fb3a488e60c23d05db946b900e2184332e9d62bb 13-Jan-2009 Devang Patel <dpatel@apple.com> Undo previous checkin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62190 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/SelectionDAG.cpp
c48c550e1322aebfbe35c7570891619db43bdb9b 13-Jan-2009 Devang Patel <dpatel@apple.com> Use DwarfWriter to record dbg variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62185 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
fe359e7dc51edffc6045beb6a8d4cefd2d4daae1 13-Jan-2009 Devang Patel <dpatel@apple.com> Use DwarfWriter to record dbg variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62185 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
bb8c5959c83504fbc438e6efade30fa4b70a25b6 13-Jan-2009 Devang Patel <dpatel@apple.com> Use dwarf writer to decide whether the module has debug info or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62184 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/SelectionDAG.cpp
70190877b7aff395f931cc568f376a07d0ba416e 13-Jan-2009 Devang Patel <dpatel@apple.com> Use dwarf writer to decide whether the module has debug info or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62184 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
electionDAG/SelectionDAG.cpp
fd246e5f8401df3ef61bf27fec601b4b62905062 13-Jan-2009 Dan Gohman <gohman@apple.com> Use assertions to check for conditions that should never happen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62178 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0aa606a18842cf2a893d71b8d325444d6d84e2a5 13-Jan-2009 Dan Gohman <gohman@apple.com> Use assertions to check for conditions that should never happen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62178 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
bc0b56732a2d1dc22767e0f3930f22a76d99470a 13-Jan-2009 Dan Gohman <gohman@apple.com> The list-td and list-tdrr schedulers don't yet support physreg
scheduling dependencies. Add assertion checks to help catch
this.

It appears the Mips target defaults to list-td, and it has a
regression test that uses a physreg dependence. Such code was
liable to be miscompiled, and now evokes an assertion failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62177 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
0f0e2c84f9e1202d5a9fad1cc18f75d3fd661003 13-Jan-2009 Dan Gohman <gohman@apple.com> The list-td and list-tdrr schedulers don't yet support physreg
scheduling dependencies. Add assertion checks to help catch
this.

It appears the Mips target defaults to list-td, and it has a
regression test that uses a physreg dependence. Such code was
liable to be miscompiled, and now evokes an assertion failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62177 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
a1f50e2c2cad12dd8fe7ef80e394ee7a96654021 13-Jan-2009 Dan Gohman <gohman@apple.com> Avoid referring to edge D after the Succs or Preds arrays have
been modified, to avoid trouble in the (unlikely) scenario that
D is a reference to an element in one of those arrays.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62173 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
b1bfe4e108453151c8b8dc01515eb3095385e054 13-Jan-2009 Dan Gohman <gohman@apple.com> Avoid referring to edge D after the Succs or Preds arrays have
been modified, to avoid trouble in the (unlikely) scenario that
D is a reference to an element in one of those arrays.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62173 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
2ecf88d1751c847b87a7119bf34fff85a3d272e2 13-Jan-2009 Duncan Sands <baldrick@free.fr> When replacing uses and the same node is reached
via two paths, process it once not twice, d'oh!
Analysis, testcase and original patch thanks to
Mon Ping Wang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
d1ec1991d8521b8a8c62dfb4b12023f088204b2f 13-Jan-2009 Duncan Sands <baldrick@free.fr> When replacing uses and the same node is reached
via two paths, process it once not twice, d'oh!
Analysis, testcase and original patch thanks to
Mon Ping Wang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
1bec3dd28a47b7e27e6f30de22a307521ce45b28 13-Jan-2009 Duncan Sands <baldrick@free.fr> Fix some typos. Also, the WidenedVectors map
was not being cleaned by ExpungeNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62167 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
4161b96979bc909062216488a194980c8d229806 13-Jan-2009 Duncan Sands <baldrick@free.fr> Fix some typos. Also, the WidenedVectors map
was not being cleaned by ExpungeNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62167 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
042fb3199f480cd8096d9c51ba1aceecd9af6f0e 13-Jan-2009 Duncan Sands <baldrick@free.fr> Correct a comment - this is not a sign extension.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62166 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
f54ff27d4aa92d5dde327b0ba524a4a4ec2ae00c 13-Jan-2009 Duncan Sands <baldrick@free.fr> Correct a comment - this is not a sign extension.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62166 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
167650d41136ed738e364517be8a1412c4955423 13-Jan-2009 Evan Cheng <evan.cheng@apple.com> Un-tabify.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62151 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
7ac1a5bf0607439bbfe9a597e32b7174f906e873 13-Jan-2009 Evan Cheng <evan.cheng@apple.com> Un-tabify.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62151 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
1d8a76d7d51d75508159b9bb312fc51e908cb676 13-Jan-2009 Evan Cheng <evan.cheng@apple.com> FIX llvm-gcc bootstrap on x86_64 linux. If a virtual register is copied to a physical register, it's not necessarily defined by a copy. We have to watch out it doesn't clobber any sub-register that might be live during its live interval. If the live interval crosses a basic block, then it's not safe to check with the less conservative check (by scanning uses and defs) because it's possible a sub-register might be live out of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62144 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5e9d45a8ca37b84d7980c56925c0582c05982c51 13-Jan-2009 Evan Cheng <evan.cheng@apple.com> FIX llvm-gcc bootstrap on x86_64 linux. If a virtual register is copied to a physical register, it's not necessarily defined by a copy. We have to watch out it doesn't clobber any sub-register that might be live during its live interval. If the live interval crosses a basic block, then it's not safe to check with the less conservative check (by scanning uses and defs) because it's possible a sub-register might be live out of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62144 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
83489bb7700c69b7a4a8da59365c42d3f5c8129b 13-Jan-2009 Devang Patel <dpatel@apple.com> Use DebugInfo interface to lower dbg_* intrinsics.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62127 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
fcf1c75c71c5246afd5dd3f6fcddf259233d8b22 13-Jan-2009 Devang Patel <dpatel@apple.com> Use DebugInfo interface to lower dbg_* intrinsics.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62127 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
7bb89ed33c590717b509e700180baa9fdbbd0a93 13-Jan-2009 Devang Patel <dpatel@apple.com> Start using DebugInfo API to emit debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62125 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
6ccd57e4a1793a91a32362fb55c3fa72f54e20c7 13-Jan-2009 Devang Patel <dpatel@apple.com> Start using DebugInfo API to emit debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62125 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
3f7833a27364f112d7d54fd3b98517cd82433415 13-Jan-2009 Devang Patel <dpatel@apple.com> Emit debug info, only if at least one compile unit is seen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62118 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
91d27b09b7ed922f52d79ed69513debc258cd7ea 13-Jan-2009 Devang Patel <dpatel@apple.com> Emit debug info, only if at least one compile unit is seen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62118 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
72b663575f670050f329b78ac0de34476fbae66f 13-Jan-2009 Devang Patel <dpatel@apple.com> If multiple compile units are seen then emit them independently. In other words, do not force all DIEs into first, whatever it is, compile unit.

Note, multiple compile unit support is not well tested (it did not work correctly until now anyway.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62116 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
6eae283d4962b1c38d3c6fa0100c0d605f6f4100 13-Jan-2009 Devang Patel <dpatel@apple.com> If multiple compile units are seen then emit them independently. In other words, do not force all DIEs into first, whatever it is, compile unit.

Note, multiple compile unit support is not well tested (it did not work correctly until now anyway.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62116 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
f6bac3e4bd9502266dab49eef26266a092e8c85b 12-Jan-2009 Devang Patel <dpatel@apple.com> Avoid cast<>, use light weith wrapper directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62115 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
57ec9acc70150b4e8f652179287fc51077c3691d 12-Jan-2009 Devang Patel <dpatel@apple.com> Avoid cast<>, use light weith wrapper directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62115 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
f3ee51441909cf1accfcce4c9b5b9f851e2c07b6 12-Jan-2009 Devang Patel <dpatel@apple.com> Use SrcLineInfo from DwarfWriter. The MachineModuleInfo copy will disappear soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62114 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
35a078f525bc41276f479a0c0014e0a30b690569 12-Jan-2009 Devang Patel <dpatel@apple.com> Use SrcLineInfo from DwarfWriter. The MachineModuleInfo copy will disappear soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62114 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
ceb4d1aecb9deffe59b3dcdc9a783ffde8477be9 12-Jan-2009 Duncan Sands <baldrick@free.fr> Rename getABITypeSize to getTypePaddedSize, as
suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62099 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
achOWriter.cpp
achOWriter.h
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
d68f13bf716faa496767a21140fab558adddc19a 12-Jan-2009 Duncan Sands <baldrick@free.fr> Rename getABITypeSize to getTypePaddedSize, as
suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62099 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
LFWriter.cpp
achOWriter.cpp
achOWriter.h
achineFunction.cpp
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
ccca7fe6a30ec536de3823c0867806c1f86b2212 12-Jan-2009 Devang Patel <dpatel@apple.com> Add DwarfWriter interface to mainipulate source location info.
( May be this info should be directly handled by the dwarf writer ? )


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62096 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
cb59fd4ca7f3e796a6186fb7585c67234254bc67 12-Jan-2009 Devang Patel <dpatel@apple.com> Add DwarfWriter interface to mainipulate source location info.
( May be this info should be directly handled by the dwarf writer ? )


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62096 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
481ff5be9d88c057874d087244a6352af2597867 12-Jan-2009 Devang Patel <dpatel@apple.com> Clear debug info at the end of function processing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62092 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
a416295a223c1b4d84646fec2751da32a4bf6428 12-Jan-2009 Devang Patel <dpatel@apple.com> Clear debug info at the end of function processing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62092 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e9bfb0feca1720d2f97911805fdb8582c8941ae2 12-Jan-2009 Devang Patel <dpatel@apple.com> There is no need to maintain separate labelid list in the dwarf writer. It is not a good idea.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62090 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
b92249232c7e9033efbb3cef5c122f57c61d5751 12-Jan-2009 Devang Patel <dpatel@apple.com> There is no need to maintain separate labelid list in the dwarf writer. It is not a good idea.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62090 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
c29a56dedbe4297dad94b9bf2e19035c5903fd1f 12-Jan-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3241: Currently EmitCopyFromReg emits a copy from the physical register to a virtual register unless it requires an expensive cross class copy. That means we are only treating "expensive to copy" register dependency as physical register dependency.
Also future proof the scheduler to handle "normal" physical register dependencies. The code is not exercised yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62074 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGEmit.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
e2321b01a24bdfea92d682834529ae6c9bb36b13 12-Jan-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3241: Currently EmitCopyFromReg emits a copy from the physical register to a virtual register unless it requires an expensive cross class copy. That means we are only treating "expensive to copy" register dependency as physical register dependency.
Also future proof the scheduler to handle "normal" physical register dependencies. The code is not exercised yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62074 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGEmit.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
e1762c9826eb0033517b050793dbe05708079e1c 12-Jan-2009 Owen Anderson <resistor@mac.com> More two-address fixes. This gets lua working with join-creation enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62073 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
41849af8d52654f9e66bf739fa13510d5355bed6 12-Jan-2009 Owen Anderson <resistor@mac.com> More two-address fixes. This gets lua working with join-creation enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62073 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
9aacec1f26cd9ee328c461624ffcbde3aa2f6ab1 11-Jan-2009 Evan Cheng <evan.cheng@apple.com> CheckForPhysRegDependency should not return copy cost. It's not used. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62036 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
ef59ca0839362d4f6135366910502b41fe2c2ed9 11-Jan-2009 Evan Cheng <evan.cheng@apple.com> CheckForPhysRegDependency should not return copy cost. It's not used. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62036 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
9795da5aa84ffcfa37cfa5b711dcc216e96d9194 10-Jan-2009 Devang Patel <dpatel@apple.com> Reduce initial small vector sizes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62023 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
63c22f404d7bfa72bd33547997139dff93e42fe6 10-Jan-2009 Devang Patel <dpatel@apple.com> Reduce initial small vector sizes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62023 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
0dc969e1ab03925bfc5e5f4d9dda0dc5f93cfa1a 10-Jan-2009 Devang Patel <dpatel@apple.com> Fix thinko. Create parent scope if parent descriptor is *not* null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62022 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
dd49fbbc311d13edacba6593f16cc3254e01c45c 10-Jan-2009 Devang Patel <dpatel@apple.com> Fix thinko. Create parent scope if parent descriptor is *not* null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62022 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
5c3c5a4d9c21e73f7a0e11d77a85997c9f34f2ba 09-Jan-2009 Evan Cheng <evan.cheng@apple.com> Duplicated node may produce a non-physical register def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62015 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
6aa342d88f9748e85731ea7c10a5ca13c624b3ba 09-Jan-2009 Evan Cheng <evan.cheng@apple.com> Duplicated node may produce a non-physical register def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62015 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodesEmit.cpp
84036a77a36a934514e51c99f83e6c3632bf98f5 09-Jan-2009 Evan Cheng <evan.cheng@apple.com> Minor debug output tweak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62005 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
51132e266517cd5b3148f9a69f8b2f151aaeb54d 09-Jan-2009 Evan Cheng <evan.cheng@apple.com> Minor debug output tweak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62005 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
6e7a1617ac4a34792d9097b8d3644b72f57a45f7 09-Jan-2009 Devang Patel <dpatel@apple.com> Request DwarfWriter. This will be used to handle dbg_* intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61999 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
10e63334f4a4a2bb420dc6aad7d4a0b7a5a70dec 09-Jan-2009 Devang Patel <dpatel@apple.com> Request DwarfWriter. This will be used to handle dbg_* intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61999 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
9b8f542e2746b28721b3ec603c3aaaa10ea708fc 09-Jan-2009 Misha Brukman <brukman+llvm@gmail.com> Removed trailing whitespace from Makefiles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
akefile
electionDAG/Makefile
e025bcca322301af5c4a5178b1a64080cb900ec1 09-Jan-2009 Misha Brukman <brukman+llvm@gmail.com> Removed trailing whitespace from Makefiles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
akefile
electionDAG/Makefile
eb3fc289141ad44883acbb91e839ab1b9a0f2025 09-Jan-2009 Devang Patel <dpatel@apple.com> Convert DwarfWriter into a pass.
Now Users request DwarfWriter through getAnalysisUsage() instead of creating an instance of DwarfWriter object directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61955 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
aa1e84356d47c78a270b0ebceb434a401e59a5b5 09-Jan-2009 Devang Patel <dpatel@apple.com> Convert DwarfWriter into a pass.
Now Users request DwarfWriter through getAnalysisUsage() instead of creating an instance of DwarfWriter object directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61955 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
5d5ee80ea8bf300d1ee8ccbd7174466d98a1e99e 08-Jan-2009 Dan Gohman <gohman@apple.com> Delete unnecessary parens around return values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61950 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineBasicBlock.cpp
d2826ae8c01b25967a1d9ef0c6486720c45f7bc7 08-Jan-2009 Dan Gohman <gohman@apple.com> Delete unnecessary parens around return values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61950 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineBasicBlock.cpp
9f8fcfc0184cdf7154f6e57b0b7edca9abca7eca 08-Jan-2009 Devang Patel <dpatel@apple.com> Add DebugInfo based APIs to record source line info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61928 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7dd15a9a913053c217b0673388616d2ea0265a9b 08-Jan-2009 Devang Patel <dpatel@apple.com> Add DebugInfo based APIs to record source line info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61928 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
ce07e99dd6fafc51805c21d53286ae5765d1cffc 08-Jan-2009 Misha Brukman <brukman+llvm@gmail.com> * Moved author attribution to CREDITS.TXT
* Removed trailing whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61927 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
db5ae3a5ce0957585387af82c8f168f474e87293 08-Jan-2009 Misha Brukman <brukman+llvm@gmail.com> * Moved author attribution to CREDITS.TXT
* Removed trailing whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61927 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
2a835f947a114142071456d7586118a0949499a0 08-Jan-2009 Misha Brukman <brukman+llvm@gmail.com> * Alphabetized #includes
* Removed trailing whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61926 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
6d37468edd2531ff9294e9566cfb9d0c35ad23f0 08-Jan-2009 Misha Brukman <brukman+llvm@gmail.com> * Alphabetized #includes
* Removed trailing whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61926 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
2ec78c4a63c47e24c0e7e280b65368af931e8ad5 08-Jan-2009 Devang Patel <dpatel@apple.com> Add APIs to record regions and variables.
Again, shamelessly copied from MMI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61912 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
100ca32730f4e25dbd8ea989a660f7dbda0c06ee 08-Jan-2009 Devang Patel <dpatel@apple.com> Add APIs to record regions and variables.
Again, shamelessly copied from MMI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61912 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7a6e5a35317018be8b0c8b46cf7b85b79b8f7102 08-Jan-2009 Devang Patel <dpatel@apple.com> Add APIs to manage scope using DebugInfo interface.
This is a shameless copy of similar APIs from MachineModuleInfo. The copy from MMI will be deleted in near future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61908 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
4d1709e8c65aaaa96eb30db18a6cf27caedadd73 08-Jan-2009 Devang Patel <dpatel@apple.com> Add APIs to manage scope using DebugInfo interface.
This is a shameless copy of similar APIs from MachineModuleInfo. The copy from MMI will be deleted in near future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61908 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
25fd4037a7f698877eedb69bf32d8591344e86ee 07-Jan-2009 Dan Gohman <gohman@apple.com> Remove redundant 'else's. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61891 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
81f6f05b29b24862734608cc25e180de0804726a 07-Jan-2009 Dan Gohman <gohman@apple.com> Remove redundant 'else's. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61891 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
8f90b6eb2fd0125f5b779de80954944f9071fb87 07-Jan-2009 Evan Cheng <evan.cheng@apple.com> The coalescer does not coalesce a virtual register to a physical register if any of the physical register's sub-register live intervals overlaps with the virtual register. This is overly conservative. It prevents a extract_subreg from being coalesced away:

v1024 = EDI // not killed
=
= EDI

One possible solution is for the coalescer to examine the sub-register live intervals in the same manner as the physical register. Another possibility is to examine defs and uses (when needed) of sub-registers. Both solutions are too expensive. For now, look for "short virtual intervals" and scan instructions to look for conflict instead.

This is a small win on x86-64. e.g. It shaves 403.gcc by ~80 instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61847 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
7a9b79c473e6580f7472f00450b8982ae500465e 07-Jan-2009 Evan Cheng <evan.cheng@apple.com> The coalescer does not coalesce a virtual register to a physical register if any of the physical register's sub-register live intervals overlaps with the virtual register. This is overly conservative. It prevents a extract_subreg from being coalesced away:

v1024 = EDI // not killed
=
= EDI

One possible solution is for the coalescer to examine the sub-register live intervals in the same manner as the physical register. Another possibility is to examine defs and uses (when needed) of sub-registers. Both solutions are too expensive. For now, look for "short virtual intervals" and scan instructions to look for conflict instead.

This is a small win on x86-64. e.g. It shaves 403.gcc by ~80 instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61847 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
2c91d102ec29bc766b7172a3062d399dc12640fe 06-Jan-2009 Dan Gohman <gohman@apple.com> Fix a bug in ComputeLinearIndex computation handling multi-level
aggregate types. Don't increment the current index after reaching
the end of a struct, as it will already be pointing at
one-past-the end. This fixes PR3288.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61828 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
fe3972ffb4a002d6b8ee79fb2a847ff41ec7127b 06-Jan-2009 Dan Gohman <gohman@apple.com> Fix a bug in ComputeLinearIndex computation handling multi-level
aggregate types. Don't increment the current index after reaching
the end of a struct, as it will already be pointing at
one-past-the end. This fixes PR3288.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61828 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
5d315989542ffe720d9a835010bd7be957e6a830 06-Jan-2009 Devang Patel <dpatel@apple.com> Set up DwarfDebug using DebugInfo API.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61822 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
9304b385967eaa8ba09ac9d59a0cdd17f4483d43 06-Jan-2009 Devang Patel <dpatel@apple.com> Set up DwarfDebug using DebugInfo API.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61822 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
5fe1fac1ddcdc7cfd3f22550527afffce704b443 06-Jan-2009 Bill Wendling <isanbard@gmail.com> Forgot that this was needed for Linux. This should fix the builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61819 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
dd9127da4af6f9e068c264ea886b3baf514392b2 06-Jan-2009 Bill Wendling <isanbard@gmail.com> Forgot that this was needed for Linux. This should fix the builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61819 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
200ee7f52150cea29215379eb508dc199052372a 06-Jan-2009 Owen Anderson <resistor@mac.com> The phi construction algorithm used for interval reconstruction is complicated by
two address instructions. We need to keep track of things we've processed AS USES
independetly of whether we've processed them as defs.

This fixes all known miscompilations when reconstruction is turned on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61802 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
952fc0439a6bcfb0d62269268941ea7bd3d71be7 06-Jan-2009 Owen Anderson <resistor@mac.com> The phi construction algorithm used for interval reconstruction is complicated by
two address instructions. We need to keep track of things we've processed AS USES
independetly of whether we've processed them as defs.

This fixes all known miscompilations when reconstruction is turned on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61802 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
ce0d4b7a77da716f234d42edd0472e97b3ba5f57 06-Jan-2009 Dan Gohman <gohman@apple.com> Update these argument lists for the isNormalMemory
argument. This doesn't affect current functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
485cc19e301e62100bf55fc142530a4bfe12955b 06-Jan-2009 Dan Gohman <gohman@apple.com> Update these argument lists for the isNormalMemory
argument. This doesn't affect current functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
fd2163bcf77df6b3e58868483c089bd3869b01d6 06-Jan-2009 Dan Gohman <gohman@apple.com> Use a latency value of 0 for the artificial edges inserted by
AddPseudoTwoAddrDeps. This lets the scheduling infrastructure
avoid recalculating node heights. In very large testcases this
was a major bottleneck. Thanks to Roman Levenstein for finding
this!

As a side effect, fold-pcmpeqd-0.ll is now scheduled better
and it no longer requires spilling on x86-32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61778 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d6f5787fe37439fca6120ae2b6a39e183402052c 06-Jan-2009 Dan Gohman <gohman@apple.com> Use a latency value of 0 for the artificial edges inserted by
AddPseudoTwoAddrDeps. This lets the scheduling infrastructure
avoid recalculating node heights. In very large testcases this
was a major bottleneck. Thanks to Roman Levenstein for finding
this!

As a side effect, fold-pcmpeqd-0.ll is now scheduled better
and it no longer requires spilling on x86-32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61778 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
78eb6ad6333ba19d8f5ece81f8b3ac57e6747dfc 06-Jan-2009 Devang Patel <dpatel@apple.com> Construct subprogram DIEs using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61772 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e6caf011f1697b144b681fa0719d50f6acbe38de 06-Jan-2009 Devang Patel <dpatel@apple.com> Construct subprogram DIEs using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61772 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
c452324f60561bdc1a3f90b8f7d085beb9487f36 06-Jan-2009 Devang Patel <dpatel@apple.com> Construct global variable DIEs using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61771 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
289f236251065219fbc99b0665b8db9430faa7a2 06-Jan-2009 Devang Patel <dpatel@apple.com> Construct global variable DIEs using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61771 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
d1ca925093b410a60e84cff2ceda7101ba4a1ce7 06-Jan-2009 Devang Patel <dpatel@apple.com> Construct compile unit dies using DebugInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61768 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
b3907daf71048e903bfb941df5119f5e66f0e282 06-Jan-2009 Devang Patel <dpatel@apple.com> Construct compile unit dies using DebugInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61768 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
d60de5187833d7d818edaab6351244255e1a1007 05-Jan-2009 Bill Wendling <isanbard@gmail.com> Revert r61415 and r61484. Duncan was correct that these weren't needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61765 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
edc2dbef351a9e55014e92bca487dd73647ccf6b 05-Jan-2009 Bill Wendling <isanbard@gmail.com> Revert r61415 and r61484. Duncan was correct that these weren't needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61765 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
a80c859df377908c687d59e9c0fc65006796b719 05-Jan-2009 Dan Gohman <gohman@apple.com> Don't call setDepthDirty/setHeightDirty when adding an edge
with latency 0, since it doesn't affect the depth or height.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61762 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
a44ca330361689e1db7cc0effd7b532e53434d33 05-Jan-2009 Dan Gohman <gohman@apple.com> Don't call setDepthDirty/setHeightDirty when adding an edge
with latency 0, since it doesn't affect the depth or height.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61762 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
8526cc03a51347ab29737d1e5682aa6a7d095b9b 05-Jan-2009 Devang Patel <dpatel@apple.com> Extract source location info from DebugInfo.
Add methods to add source location info in a DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61761 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
5f244e30f2c0e468ab91b12ad6a7706b1023b0fb 05-Jan-2009 Devang Patel <dpatel@apple.com> Extract source location info from DebugInfo.
Add methods to add source location info in a DIE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61761 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
48d190f4d79a578749839b6132a84728c3a060c5 05-Jan-2009 Devang Patel <dpatel@apple.com> Add type DIEs using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61757 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
4a4cbe74b60cfe7e88a24dc64ee27a41e2dd740a 05-Jan-2009 Devang Patel <dpatel@apple.com> Add type DIEs using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61757 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
f42153366176779c79b4351c467712041a8af5f9 05-Jan-2009 Devang Patel <dpatel@apple.com> Construct composite type DIE using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61741 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
30c0137caf449dbe78a539c4cb204713bbceef01 05-Jan-2009 Devang Patel <dpatel@apple.com> Construct composite type DIE using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61741 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
11df7e5157352d082bcb556907c3c8239228ae7f 05-Jan-2009 Dan Gohman <gohman@apple.com> TargetLowering.h #includes SelectionDAGNodes.h, so it doesn't need its
own OpActionsCapacity magic number; it can just use ISD::BUILTIN_OP_END,
as long as it takes care to round up when needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61733 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
64554a9d6bf88198d98135cd59081877fef2b729 05-Jan-2009 Dan Gohman <gohman@apple.com> TargetLowering.h #includes SelectionDAGNodes.h, so it doesn't need its
own OpActionsCapacity magic number; it can just use ISD::BUILTIN_OP_END,
as long as it takes care to round up when needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61733 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e520273172b530dbf3beca445d3a7577262b9361 05-Jan-2009 Devang Patel <dpatel@apple.com> s/ConstructType/ConstructTypeDIE/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61731 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
46d1375df4a44ff23f20ff583c7c4e3e7c417dec 05-Jan-2009 Devang Patel <dpatel@apple.com> s/ConstructType/ConstructTypeDIE/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61731 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
86ae142c51fc29ab870ebf42f6bf8699bca81512 05-Jan-2009 Devang Patel <dpatel@apple.com> Construct stuct field DIEs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61729 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
526b01d8501bcdf8434aa2cde410aeff962f56d1 05-Jan-2009 Devang Patel <dpatel@apple.com> Construct stuct field DIEs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61729 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
c69bf2c832386140d6606eef3febf2d3aa7a64f0 05-Jan-2009 Devang Patel <dpatel@apple.com> Construct enumerator DIE using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61726 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
a566e818c5d4de47684cd5368ac6cea931d8a4a8 05-Jan-2009 Devang Patel <dpatel@apple.com> Construct enumerator DIE using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61726 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
68afdc3ab08975569e59cc8c04c2db9e9478a996 05-Jan-2009 Devang Patel <dpatel@apple.com> Construct array/vector type DIEs using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61724 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
6fb54136d719ee9f225cb7f09cb314b35c91c814 05-Jan-2009 Devang Patel <dpatel@apple.com> Construct array/vector type DIEs using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61724 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
d0ed240e3091607048490f174988976a44b11d30 05-Jan-2009 Owen Anderson <resistor@mac.com> Get rid of sentinel insertion in interval reconstruction. It just masked the
problem, rather than fixing it. The problem has now been fixed the right way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61723 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
d71a1ff076c762f97942ed9b4e2ed81194d39d29 05-Jan-2009 Owen Anderson <resistor@mac.com> Get rid of sentinel insertion in interval reconstruction. It just masked the
problem, rather than fixing it. The problem has now been fixed the right way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61723 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
d68a07650cdb2e18f18f362ba533459aa10e01b6 05-Jan-2009 Dan Gohman <gohman@apple.com> Tidy up #includes, deleting a bunch of unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61715 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
achineLICM.cpp
achineSink.cpp
ostRASchedulerList.cpp
egAllocLinearScan.cpp
egisterScavenging.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.h
woAddressInstructionPass.cpp
irtRegMap.h
c24a3f87f866e96b2a9ad691c78113651eaa77d1 05-Jan-2009 Dan Gohman <gohman@apple.com> Tidy up #includes, deleting a bunch of unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61715 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
achineLICM.cpp
achineSink.cpp
ostRASchedulerList.cpp
egAllocLinearScan.cpp
egisterScavenging.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.h
woAddressInstructionPass.cpp
irtRegMap.h
08f053f5d1df120dc8389a3ec8947ab16b1ccc53 05-Jan-2009 Devang Patel <dpatel@apple.com> Construct basic and derived type DIEs using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61714 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
fc187160d216bb1adca9e8f622c7d2ff9301a6f6 05-Jan-2009 Devang Patel <dpatel@apple.com> Construct basic and derived type DIEs using DebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61714 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
ca03c2705ef6fc2df7c7206e1b5c0e6f69c12c04 05-Jan-2009 Devang Patel <dpatel@apple.com> subsume ConstructPointerType()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61711 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
bbca50bc7b115d6de34d231faecffe4126e3c658 05-Jan-2009 Devang Patel <dpatel@apple.com> subsume ConstructPointerType()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61711 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
9ede3f2f29a44f7b4a46eb453a7fa61985b99cdb 05-Jan-2009 Devang Patel <dpatel@apple.com> subsume ConstructBasicType().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61709 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
f49e13de2d369e2e6822e9465abaead9795a4301 05-Jan-2009 Devang Patel <dpatel@apple.com> subsume ConstructBasicType().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61709 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
8a84e4402a1ab7ff36f52acdf5e1891e283a947e 05-Jan-2009 Devang Patel <dpatel@apple.com> squash warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61707 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
impleRegisterCoalescing.cpp
f3707e8e88775edca2b09fbcf1c2fe66883ae1ec 05-Jan-2009 Devang Patel <dpatel@apple.com> squash warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61707 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
impleRegisterCoalescing.cpp
02b73ab017d4e63ab7f0b020d355f1dfb58bf652 04-Jan-2009 Chris Lattner <sabre@nondot.org> elf writer really wants the size of the global, not the size
of the pointer to the global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61630 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
b1528b26db88617846408997dbdf4ce8972f7c0a 04-Jan-2009 Chris Lattner <sabre@nondot.org> elf writer really wants the size of the global, not the size
of the pointer to the global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61630 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
64f03003a1cf9fb8f8b068da7fa66a58e86ad390 04-Jan-2009 Bill Wendling <isanbard@gmail.com> The llvm::ELFWriter::EmitGlobal() method is calling the
llvm::PATypeHolder::get() method when LLVM is self-hosted in Release
mode. Before the parser changed, there was a definition of llvm::PAHolder::get()
in llvmAsmParser.y. This was probably a bug that no-one noticed.

Explicitly #include the Type.h file as a temporary fix for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61620 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
d9eb68dd68d1462dd76c86973161e72787a53c3c 04-Jan-2009 Bill Wendling <isanbard@gmail.com> The llvm::ELFWriter::EmitGlobal() method is calling the
llvm::PATypeHolder::get() method when LLVM is self-hosted in Release
mode. Before the parser changed, there was a definition of llvm::PAHolder::get()
in llvmAsmParser.y. This was probably a bug that no-one noticed.

Explicitly #include the Type.h file as a temporary fix for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61620 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
cc91d63ab7b3ee5c80497acf77f75ad9f76e985c 03-Jan-2009 Dan Gohman <gohman@apple.com> Fix a DAGCombiner abort on an invalid shift count constant. This fixes PR3250.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61613 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
77d852f90cea554d2baabb73a621f0284b596db4 03-Jan-2009 Dan Gohman <gohman@apple.com> Fix a DAGCombiner abort on an invalid shift count constant. This fixes PR3250.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61613 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1eb9268080498bc7b6d2d5df6fe8c13d6f939de0 03-Jan-2009 Dan Gohman <gohman@apple.com> CommuteNodesToReducePressure() is now removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61612 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
32e8e114a7a4f61aa02463298b51aea926d0272b 03-Jan-2009 Dan Gohman <gohman@apple.com> CommuteNodesToReducePressure() is now removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61612 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
223942a420cf5b9e888524186134cc652be8a921 03-Jan-2009 Dan Gohman <gohman@apple.com> Remove the code from the scheduler that commuted two-address
instructions to avoid copies, because TwoAddressInstructionPass
also does this optimization. The scheduler's version didn't
account for live-out values, which resulted in spurious commutes
and missed opportunities.

Now, TwoAddressInstructionPass handles all the opportunities,
instead of just those that the scheduler missed. The result is
usually the same, though there are occasional trivial differences
resulting from the avoidance of spurious commutes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61611 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
9a57ab02dfb82e186a8b04c6f7d73180d7cfaa7a 03-Jan-2009 Dan Gohman <gohman@apple.com> Remove the code from the scheduler that commuted two-address
instructions to avoid copies, because TwoAddressInstructionPass
also does this optimization. The scheduler's version didn't
account for live-out values, which resulted in spurious commutes
and missed opportunities.

Now, TwoAddressInstructionPass handles all the opportunities,
instead of just those that the scheduler missed. The result is
usually the same, though there are occasional trivial differences
resulting from the avoidance of spurious commutes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61611 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
b6e223a9e806921183da972253c49082a2e07944 01-Jan-2009 Duncan Sands <baldrick@free.fr> Factorize (and generalize) the code promoting SELECT
and BRCOND conditions. Reorder a few methods while
there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61547 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
70528df613d3087dc051ffc2e2776c57a8799791 01-Jan-2009 Duncan Sands <baldrick@free.fr> Factorize (and generalize) the code promoting SELECT
and BRCOND conditions. Reorder a few methods while
there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61547 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
ba6d26275f5d0561b9afdc59ebe1d11567fa4fde 01-Jan-2009 Duncan Sands <baldrick@free.fr> Remove trailing spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
8c3c3020414fbac3bbf73626f373eba60c157c96 01-Jan-2009 Duncan Sands <baldrick@free.fr> Remove trailing spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
5480c0469e5c0323ffb12f1ead2abd169d6cc0e7 01-Jan-2009 Duncan Sands <baldrick@free.fr> Fix PR3274: when promoting the condition of a BRCOND node,
promote from i1 all the way up to the canonical SetCC type.
In order to discover an appropriate type to use, pass
MVT::Other to getSetCCResultType. In order to be able to
do this, change getSetCCResultType to take a type as an
argument, not a value (this is also more logical).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61542 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
4a36127089bb2f78811d3f5a43c76b3d6f24f213 01-Jan-2009 Duncan Sands <baldrick@free.fr> Fix PR3274: when promoting the condition of a BRCOND node,
promote from i1 all the way up to the canonical SetCC type.
In order to discover an appropriate type to use, pass
MVT::Other to getSetCCResultType. In order to be able to
do this, change getSetCCResultType to take a type as an
argument, not a value (this is also more logical).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61542 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
7d211e299f45dfa8eb62ed52a19aff357529ad7b 31-Dec-2008 Owen Anderson <resistor@mac.com> Get live interval reconstruction several steps closer to working.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61514 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
30af3ecbdc7cca098543e88de1b499540e322a0e 31-Dec-2008 Owen Anderson <resistor@mac.com> Get live interval reconstruction several steps closer to working.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61514 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
998dee96d3ca506cf73a617c0b7fc7f0e467a127 29-Dec-2008 Bill Wendling <isanbard@gmail.com> Linux wants the FDE initial location and address range to be forced to 32-bit.
Darwin doesn't. Make this optional for platforms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61484 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
eeef8b24da1bd1fedef857097f4103057806a035 29-Dec-2008 Bill Wendling <isanbard@gmail.com> Linux wants the FDE initial location and address range to be forced to 32-bit.
Darwin doesn't. Make this optional for platforms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61484 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
bce452815cffacb7bbccf994ae9d4defeb4af922 29-Dec-2008 Bill Wendling <isanbard@gmail.com> The FDE initial location and address range data should be free to be 64-bit
(quad) on a 64-bit platform. This fixes a problem with EH frames on Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61483 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
26efcebd4fa6b1289563422369db19e10f608373 29-Dec-2008 Bill Wendling <isanbard@gmail.com> The FDE initial location and address range data should be free to be 64-bit
(quad) on a 64-bit platform. This fixes a problem with EH frames on Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61483 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
2b7fc1ef53f71f06135aa7a996840073d3bc0595 29-Dec-2008 Duncan Sands <baldrick@free.fr> Add braces, as suggested by a gcc warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61465 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
b73dec9ca5b6d0aa093918294c597c5d2838a0f8 29-Dec-2008 Duncan Sands <baldrick@free.fr> Add braces, as suggested by a gcc warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61465 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
845145f8b5f7feb8617bcfcfd3803ef80b17765d 29-Dec-2008 Scott Michel <scottm@aero.org> Teach LeaglizeDAG that i64 mul can be a libcall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61463 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8121504200287caf76a42be5548afc82b051a7fa 29-Dec-2008 Scott Michel <scottm@aero.org> Teach LeaglizeDAG that i64 mul can be a libcall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61463 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d4f6fe55ebe9d053cab73f5e67cac95e32df887b 29-Dec-2008 Owen Anderson <resistor@mac.com> Fix up kill/dead marking in the new live interval reconstruction code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61460 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
ab7defc381e14012a7d6e5983fe6408585bb02c2 29-Dec-2008 Owen Anderson <resistor@mac.com> Fix up kill/dead marking in the new live interval reconstruction code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61460 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
60d4f6ded236d05896d3615396c694a19b750334 28-Dec-2008 Owen Anderson <resistor@mac.com> Add prototype code for recomputing a live interval's ranges and valnos through recursive phi construction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61458 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
babcf124a4d3453aaf7263eb2975489de6acdd0f 28-Dec-2008 Owen Anderson <resistor@mac.com> Add prototype code for recomputing a live interval's ranges and valnos through recursive phi construction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61458 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
722f5f1cfb9a5e59a4c00986d81b04b0c015703d 24-Dec-2008 Bill Wendling <isanbard@gmail.com> Darwin likes for the EH frame to be non-local.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61420 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
189bde7860b44b8e161b8c47b63478f667f3c05e 24-Dec-2008 Bill Wendling <isanbard@gmail.com> Darwin likes for the EH frame to be non-local.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61420 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
d4121bef3cf3af51b80c2d499085a96aca5982ed 24-Dec-2008 Bill Wendling <isanbard@gmail.com> GCC doesn't emit DW_EH_PE_sdata4 for the FDE encoding on Darwin. I'm not sure
about other platforms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61415 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
6bd1b7965ee376c3f3f56c8fece9005abbc7d057 24-Dec-2008 Bill Wendling <isanbard@gmail.com> GCC doesn't emit DW_EH_PE_sdata4 for the FDE encoding on Darwin. I'm not sure
about other platforms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61415 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
7c7bc722ecdeec365074cac4bdb9e2679c02177f 24-Dec-2008 Dale Johannesen <dalej@apple.com> Change comments so everybody can understand them, hopefully.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61405 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d32a96063395c27fc0ef1cbfa8ae987f3e19ac13 24-Dec-2008 Dale Johannesen <dalej@apple.com> Change comments so everybody can understand them, hopefully.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61405 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f9cbc1f9ac087937641c16b218d10986f5b406ad 24-Dec-2008 Dale Johannesen <dalej@apple.com> Add another permutation where we should get rid of a-a.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61401 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d546e83ac57d9927aadaf78dc4e879481b2c1c76 24-Dec-2008 Dale Johannesen <dalej@apple.com> Add another permutation where we should get rid of a-a.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61401 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
56d245ba8bec6008d7924afbdfd8e10473df54f8 23-Dec-2008 Anton Korobeynikov <asl@math.spbu.ru> Restore debug printing

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f5b5f6b81611a7b0533ca0934b82e496bf0830b3 23-Dec-2008 Anton Korobeynikov <asl@math.spbu.ru> Restore debug printing

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
e2f95e9b6123204638e140731b5c8c1b36144356 23-Dec-2008 Anton Korobeynikov <asl@math.spbu.ru> Sometimes APInt syntax is really ugly... :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61397 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
6981ab277ccbefb70952c169b26c966733349312 23-Dec-2008 Anton Korobeynikov <asl@math.spbu.ru> Sometimes APInt syntax is really ugly... :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61397 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
1bfe237d69f50be4e0ef8f5afeac320469092abf 23-Dec-2008 Anton Korobeynikov <asl@math.spbu.ru> Indent stuff properly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61396 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
1718d3af89c552d1b57c339c124c881c4504b911 23-Dec-2008 Anton Korobeynikov <asl@math.spbu.ru> Indent stuff properly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61396 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
2321858c8cf5583a77b1318d5275188058ab5504 23-Dec-2008 Anton Korobeynikov <asl@math.spbu.ru> Initial checkin of APInt'ififcation of switch lowering

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61395 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
7e50c0d934d5496f348808caf3a3daab0218b45b 23-Dec-2008 Anton Korobeynikov <asl@math.spbu.ru> Initial checkin of APInt'ififcation of switch lowering

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61395 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
d0935c3f43aaff478ac55526f2614dd8abe23c8d 23-Dec-2008 Devang Patel <dpatel@apple.com> Fix typo.
Silence unused variable warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61391 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
105a08ab44990946c7f31e884e2363fc6cac87b6 23-Dec-2008 Devang Patel <dpatel@apple.com> Fix typo.
Silence unused variable warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61391 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
2755896fd048d189bedc5e99e776b3eca010dd4e 23-Dec-2008 Devang Patel <dpatel@apple.com> Silience unused warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61390 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
egisterScavenging.cpp
e71304cd70f167e1b3d985edc4216991b949b3b7 23-Dec-2008 Devang Patel <dpatel@apple.com> Silience unused warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61390 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
egisterScavenging.cpp
0b1d4a798d1dd2f39521b6b381cd1c1911c9ab52 23-Dec-2008 Dan Gohman <gohman@apple.com> Clean up the atomic opcodes in SelectionDAG.

This removes all the _8, _16, _32, and _64 opcodes and replaces each
group with an unsuffixed opcode. The MemoryVT field of the AtomicSDNode
is now used to carry the size information. In tablegen, the size-specific
opcodes are replaced by size-independent opcodes that utilize the
ability to compose them with predicates.

This shrinks the per-opcode tables and makes the code that handles
atomics much more concise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61389 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
bebba8d5cc675a8b9d7695c6105cff81b2e73fbd 23-Dec-2008 Dan Gohman <gohman@apple.com> Clean up the atomic opcodes in SelectionDAG.

This removes all the _8, _16, _32, and _64 opcodes and replaces each
group with an unsuffixed opcode. The MemoryVT field of the AtomicSDNode
is now used to carry the size information. In tablegen, the size-specific
opcodes are replaced by size-independent opcodes that utilize the
ability to compose them with predicates.

This shrinks the per-opcode tables and makes the code that handles
atomics much more concise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61389 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
c9a5b9e38b442c2ae6b115213a07df3fcd14708d 23-Dec-2008 Dan Gohman <gohman@apple.com> Rename BuildSchedUnits to BuildSchedGraph, and refactor the
code in ScheduleDAGSDNodes' BuildSchedGraph into separate functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61376 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
9e7bcd67ef5a160cc4fa3d1f92329d8296c62840 23-Dec-2008 Dan Gohman <gohman@apple.com> Rename BuildSchedUnits to BuildSchedGraph, and refactor the
code in ScheduleDAGSDNodes' BuildSchedGraph into separate functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61376 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
237dee125997dcaf16e391878465162cc680c0fa 23-Dec-2008 Dan Gohman <gohman@apple.com> Use isTerminator() instead of isBranch()||isReturn() in
several places. isTerminator() returns true for a superset
of cases, and includes things like FP_REG_KILL, which are
nither return or branch but aren't safe to move/remat/etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61373 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineLICM.cpp
cheduleDAGInstrs.cpp
64709cdf06dacfe4a3b8cea870faa6a07032cae1 23-Dec-2008 Dan Gohman <gohman@apple.com> Use isTerminator() instead of isBranch()||isReturn() in
several places. isTerminator() returns true for a superset
of cases, and includes things like FP_REG_KILL, which are
nither return or branch but aren't safe to move/remat/etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61373 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineLICM.cpp
cheduleDAGInstrs.cpp
e1dfc7da8991270db5094aa736fde273bfab6061 23-Dec-2008 Dan Gohman <gohman@apple.com> Avoid an unnecessary call to allnodes_size(), which is linear.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
bdf3e272f9b0df3779e4569e4eb3eae64e921c76 23-Dec-2008 Dan Gohman <gohman@apple.com> Avoid an unnecessary call to allnodes_size(), which is linear.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
1578f8486d401a16bdfbe7f27cd4d644920000bf 23-Dec-2008 Dan Gohman <gohman@apple.com> Minor code simplifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61371 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
d138ff4ad5fb5f5de2c42f331a6afb24338a3695 23-Dec-2008 Dan Gohman <gohman@apple.com> Minor code simplifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61371 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
58e39b0200f448b796a89e2b7e9b8a5607a1771a 23-Dec-2008 Dale Johannesen <dalej@apple.com> One more permutation of subtracting off a base value.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fbc2e4b3c7f8487556a5dbb044ac3dbeff31a388 23-Dec-2008 Dale Johannesen <dalej@apple.com> One more permutation of subtracting off a base value.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
00d448a341175556ebd86af68219f5b90b7145a3 22-Dec-2008 Dan Gohman <gohman@apple.com> Refactor a bunch of code out of AsmPrinter::EmitGlobalConstant into separate
functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61345 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
e78b0c73aef0867341782c6d9f2907da3f8a209d 22-Dec-2008 Dan Gohman <gohman@apple.com> Refactor a bunch of code out of AsmPrinter::EmitGlobalConstant into separate
functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61345 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8044e9b3af6e62afe89cd60bf76de22ae7138306 22-Dec-2008 Dan Gohman <gohman@apple.com> Optimize setDepthDirty and setHeightDirty a little, as they showed
up on a profile.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61344 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
5dc982e6b3e6f94a67d8211a0f4c1baba4a5822b 22-Dec-2008 Dan Gohman <gohman@apple.com> Optimize setDepthDirty and setHeightDirty a little, as they showed
up on a profile.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61344 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
e19c6362d21c872abaf2f71ea9a0f859f33ee9b5 20-Dec-2008 Dan Gohman <gohman@apple.com> Use SmallVector's pop_back_val.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61277 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
9c6928deafa9221fa4fb8d4e1df3e357050fb991 20-Dec-2008 Dan Gohman <gohman@apple.com> Use SmallVector's pop_back_val.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61277 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
f89e6e65770edccd8cc3baf2314b89ba894ffa4f 20-Dec-2008 Dan Gohman <gohman@apple.com> Use the correct Preds and Succs lists in setHeightDirty()
and setDepthDirty(), respectively. This fixes PR3241.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61276 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
406621cce27a487637254c1d44bb1256e496f803 20-Dec-2008 Dan Gohman <gohman@apple.com> Use the correct Preds and Succs lists in setHeightDirty()
and setDepthDirty(), respectively. This fixes PR3241.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61276 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
6c3643c41b7c00fe503a36b468ac0488d946454e 19-Dec-2008 Dan Gohman <gohman@apple.com> Use ~0u instead of -1u as the special value, to hopefully avoid
warnings on compilers that warn about such things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61263 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
d37f2b8b16e4fa47a5a87145d6ba61b612e8d7b6 19-Dec-2008 Dan Gohman <gohman@apple.com> Use ~0u instead of -1u as the special value, to hopefully avoid
warnings on compilers that warn about such things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61263 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
5379f412bc6ac6171f3bd73930197bfce88c2faa 19-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix PR3149. If an early clobber def is a physical register and it is tied to an input operand, it effectively extends the live range of the physical register. Currently we do not have a good way to represent this.

172 %ECX<def> = MOV32rr %reg1039<kill>
180 INLINEASM <es:subl $5,$1
sbbl $3,$0>, 10, %EAX<def>, 14, %ECX<earlyclobber,def>, 9, %EAX<kill>,
36, <fi#0>, 1, %reg0, 0, 9, %ECX<kill>, 36, <fi#1>, 1, %reg0, 0
188 %EAX<def> = MOV32rr %EAX<kill>
196 %ECX<def> = MOV32rr %ECX<kill>
204 %ECX<def> = MOV32rr %ECX<kill>
212 %EAX<def> = MOV32rr %EAX<kill>
220 %EAX<def> = MOV32rr %EAX
228 %reg1039<def> = MOV32rr %ECX<kill>

The early clobber operand ties ECX input to the ECX def.

The live interval of ECX is represented as this:
%reg20,inf = [46,47:1)[174,230:0) 0@174-(230) 1@46-(47)

The right way to represent this is something like
%reg20,inf = [46,47:2)[174,182:1)[181:230:0) 0@174-(182) 1@181-230 @2@46-(47)

Of course that won't work since that means overlapping live ranges defined by two val#.

The workaround for now is to add a bit to val# which says the val# is redefined by a early clobber def somewhere. This prevents the move at 228 from being optimized away by SimpleRegisterCoalescing::AdjustCopiesBackFrom.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61259 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
a9823a2a136e02a319f007b0730e15949afb5ad7 19-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix PR3149. If an early clobber def is a physical register and it is tied to an input operand, it effectively extends the live range of the physical register. Currently we do not have a good way to represent this.

172 %ECX<def> = MOV32rr %reg1039<kill>
180 INLINEASM <es:subl $5,$1
sbbl $3,$0>, 10, %EAX<def>, 14, %ECX<earlyclobber,def>, 9, %EAX<kill>,
36, <fi#0>, 1, %reg0, 0, 9, %ECX<kill>, 36, <fi#1>, 1, %reg0, 0
188 %EAX<def> = MOV32rr %EAX<kill>
196 %ECX<def> = MOV32rr %ECX<kill>
204 %ECX<def> = MOV32rr %ECX<kill>
212 %EAX<def> = MOV32rr %EAX<kill>
220 %EAX<def> = MOV32rr %EAX
228 %reg1039<def> = MOV32rr %ECX<kill>

The early clobber operand ties ECX input to the ECX def.

The live interval of ECX is represented as this:
%reg20,inf = [46,47:1)[174,230:0) 0@174-(230) 1@46-(47)

The right way to represent this is something like
%reg20,inf = [46,47:2)[174,182:1)[181:230:0) 0@174-(182) 1@181-230 @2@46-(47)

Of course that won't work since that means overlapping live ranges defined by two val#.

The workaround for now is to add a bit to val# which says the val# is redefined by a early clobber def somewhere. This prevents the move at 228 from being optimized away by SimpleRegisterCoalescing::AdjustCopiesBackFrom.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61259 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
a33649e98ce6512ed95a5e5f7b72dd28e243a289 19-Dec-2008 Chris Lattner <sabre@nondot.org> Fix some release-assert warnings


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61244 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
df6f56d85fd367c6cb071dab980a19d8f7042fda 19-Dec-2008 Chris Lattner <sabre@nondot.org> Fix some release-assert warnings


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61244 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
2f6fea90a54787d873cfc25f33668cb4cc7d6e1e 19-Dec-2008 Rafael Espindola <rafael.espindola@gmail.com> Fix bug 3202.
The EH_frame and .eh symbols are now private, except for darwin9 and earlier.
The patch also fixes the definition of PrivateGlobalPrefix on pcc linux.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61242 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
1a93184e2d9beb24b0b9a7c24d5e7c7b51d8ee10 19-Dec-2008 Rafael Espindola <rafael.espindola@gmail.com> Fix bug 3202.
The EH_frame and .eh symbols are now private, except for darwin9 and earlier.
The patch also fixes the definition of PrivateGlobalPrefix on pcc linux.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61242 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
bebbded574f3be2756ac04746b982bdfb90cb7c4 19-Dec-2008 Bill Wendling <isanbard@gmail.com> Perform this loop only when the -debug flag is specified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61238 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
559ca0b1ba84b7943a7c72b0ef4c00a1a09334a7 19-Dec-2008 Bill Wendling <isanbard@gmail.com> Perform this loop only when the -debug flag is specified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61238 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
1385758215bb31ba042a3d42e40d28e521616a0c 19-Dec-2008 Dan Gohman <gohman@apple.com> Initialize the ImplicitDefed member, to avoid getting stale
data from a previous block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61237 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
e51b8ccc6d1d219b8c09eaec2af73a5c0b0438ff 19-Dec-2008 Dan Gohman <gohman@apple.com> Initialize the ImplicitDefed member, to avoid getting stale
data from a previous block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61237 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
a5b2fee75790e30436b4b40bb2e0a3397d0fc650 18-Dec-2008 Dan Gohman <gohman@apple.com> Teach LowerSubregs to preserve kill/dead information when lowering
subreg instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61220 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
048d94a807626bd7cfe70f959d722a9033500cdf 18-Dec-2008 Dan Gohman <gohman@apple.com> Teach LowerSubregs to preserve kill/dead information when lowering
subreg instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61220 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
98c206921a4b2ee7c6d9f67e88ff5ba9a9a12f69 18-Dec-2008 Dan Gohman <gohman@apple.com> Make LowerSubregs' debug output for EXTRACT_SUBREG consistent with
that of INSERT_SUBREG and SUBREG_TO_REG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61218 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
02e09abd8863dabcde0961111e56c7dca3ace6c7 18-Dec-2008 Dan Gohman <gohman@apple.com> Make LowerSubregs' debug output for EXTRACT_SUBREG consistent with
that of INSERT_SUBREG and SUBREG_TO_REG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61218 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
f04865f23406324d484b5947704e69d35853c9b6 18-Dec-2008 Dan Gohman <gohman@apple.com> Fix a copy+pasto in an assertion message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61217 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
d7f99d0458d6e2f6b51526ccb23594a7e045cff6 18-Dec-2008 Dan Gohman <gohman@apple.com> Fix a copy+pasto in an assertion message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61217 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
07af7650494dd161e0c82898a6fdba084bac2caf 18-Dec-2008 Dan Gohman <gohman@apple.com> Fix indentation level.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61216 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
43164f38836132bfb3c724d0e3cf81165b11d36d 18-Dec-2008 Dan Gohman <gohman@apple.com> Fix indentation level.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61216 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
2ccc83966914593d98af5671ce10a3bf2dcf7513 18-Dec-2008 Dan Gohman <gohman@apple.com> Print subreg information in MachineInstr::dump.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61213 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
4849d107807c40d8e94daee2f529dda1ac9b285f 18-Dec-2008 Dan Gohman <gohman@apple.com> Print subreg information in MachineInstr::dump.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61213 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
87c8a8f304d1ee72829086ce2c41a8fa3813ba6a 18-Dec-2008 Mon P Wang <wangmp@apple.com> Added support for vector widening.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61209 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/TargetLowering.cpp
26342923118b8df5e99bf6acbac36d9af9255810 18-Dec-2008 Mon P Wang <wangmp@apple.com> Added support for vector widening.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61209 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/TargetLowering.cpp
7224170f6a5b8a3c76f4adc5f84d650d142a27c4 18-Dec-2008 Dan Gohman <gohman@apple.com> Give MachineLICM a name, for -time-passes etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61184 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
342b4a81df0711ef79bbe656b2cf01e4ee23ae93 18-Dec-2008 Dan Gohman <gohman@apple.com> Give MachineLICM a name, for -time-passes etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61184 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
23b0d490cdf27b2cba7b497aceeb5c79b0d0c9fe 18-Dec-2008 Dan Gohman <gohman@apple.com> Move post-RA scheduling before branch folding for now, because branch
folding's tail merging doesn't currently preserve liveness information
which post-RA scheduling requires.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61183 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
b8ef544b5ac2663919c307e0f0d27a0f8cff555e 18-Dec-2008 Dan Gohman <gohman@apple.com> Move post-RA scheduling before branch folding for now, because branch
folding's tail merging doesn't currently preserve liveness information
which post-RA scheduling requires.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61183 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
2ebf63f8e2b009680e1822d7f3351b21cdc02e63 18-Dec-2008 Owen Anderson <resistor@mac.com> Re-apply r61158 in a form that no longer breaks tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61182 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
64caad9f917f546bd57d06e852ad68990dabea89 18-Dec-2008 Owen Anderson <resistor@mac.com> Re-apply r61158 in a form that no longer breaks tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61182 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
c7a21941c5f03fbbc47c550824d2aed1481e92f4 17-Dec-2008 Owen Anderson <resistor@mac.com> Revert r61158 for now, as it caused some test failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61159 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
24d3f71614c96506ae9bb854a31aa71de22741f6 17-Dec-2008 Owen Anderson <resistor@mac.com> Revert r61158 for now, as it caused some test failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61159 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
25dffa743b2e2d0ee5fe70254d3a45724580a383 17-Dec-2008 Owen Anderson <resistor@mac.com> Fix miscompilations caused by renumbering, and enable it as part of prealloc splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61158 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
d66b2b0ce38f5dac460faac940db20357e6b7248 17-Dec-2008 Owen Anderson <resistor@mac.com> Fix miscompilations caused by renumbering, and enable it as part of prealloc splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61158 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
84aff84cfab7fe9822a60ca378c66079bad6be85 17-Dec-2008 Mon P Wang <wangmp@apple.com> Fix expansion of vsetcc to set the high bit for true instead of 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61129 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
77bc9cd34ef03421f1b8c773fb4797fccd137fbe 17-Dec-2008 Mon P Wang <wangmp@apple.com> Fix expansion of vsetcc to set the high bit for true instead of 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61129 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
89b64bd7e5032292adc308da0d867979734da8c1 17-Dec-2008 Dan Gohman <gohman@apple.com> Double the amount of memory reserved for SUnits. This is a
temporary workaround for an obscure bug. When node cloning is
used, it is possible that more SUnits will be created, and
if the SUnits std::vector has to reallocate, it will
invalidate all the graph edges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
0b299309c54a51e8a7eef7e807f71749863ebebb 17-Dec-2008 Dan Gohman <gohman@apple.com> Double the amount of memory reserved for SUnits. This is a
temporary workaround for an obscure bug. When node cloning is
used, it is possible that more SUnits will be created, and
if the SUnits std::vector has to reallocate, it will
invalidate all the graph edges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
fccf6dd377959560aafdde40b92fc749471eeae5 17-Dec-2008 Dan Gohman <gohman@apple.com> Use getDepth() and getHeight() instead of accessing the
Depth and Height members directly, as they may not be
current.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61121 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
7a9397bc59204daeccf89e32e1af1ed2b8c26ac4 17-Dec-2008 Dan Gohman <gohman@apple.com> Use getDepth() and getHeight() instead of accessing the
Depth and Height members directly, as they may not be
current.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61121 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
28dc98f7521933872b93156e3ebf5c9f8327b2b3 17-Dec-2008 Eli Friedman <eli.friedman@gmail.com> Fix for PR3225: disable a broken optimization in
DAGTypeLegalizer::ExpandShiftWithKnownAmountBit.

In terms of restoring the optimization, the best fix here isn't
obvious... any ideas?



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61119 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
683d2fd82549a8b6caf96d9d91de3dc150c8e8e8 17-Dec-2008 Eli Friedman <eli.friedman@gmail.com> Fix for PR3225: disable a broken optimization in
DAGTypeLegalizer::ExpandShiftWithKnownAmountBit.

In terms of restoring the optimization, the best fix here isn't
obvious... any ideas?



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61119 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
fd3b7b7df3d539d1244933d375a766d7a7fe6c91 16-Dec-2008 Dale Johannesen <dalej@apple.com> A new dag combine; several permutations of this
are there under ADD, this one was missing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61107 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0b58ffac380b4128b2b100e807a88f4c65d498ac 16-Dec-2008 Dale Johannesen <dalej@apple.com> A new dag combine; several permutations of this
are there under ADD, this one was missing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61107 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d0b6a0d96764e0d5178dc71d8bd9b68a3eaa026e 16-Dec-2008 Owen Anderson <resistor@mac.com> Add code to renumber split intervals into new vregs. This is disabled for now until I finish working out some iterator invalidation issues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61104 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
9708cec9d7996de57567e889b8ebbb5c2b716a35 16-Dec-2008 Owen Anderson <resistor@mac.com> Add code to renumber split intervals into new vregs. This is disabled for now until I finish working out some iterator invalidation issues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61104 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
00dc84a2ca81be8adfee63ea0aa2a5abcb623060 16-Dec-2008 Dan Gohman <gohman@apple.com> Eliminate the loop that walks the critical path. Instead, just track the
position in the critical path during the main instruction walk. This
eliminates the need for the CritialAntiDep DenseMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61096 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
2e6e1356036f79e7548ed2ffc940045de0141d0a 16-Dec-2008 Dan Gohman <gohman@apple.com> Eliminate the loop that walks the critical path. Instead, just track the
position in the critical path during the main instruction walk. This
eliminates the need for the CritialAntiDep DenseMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61096 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
905ff1ebc4f383088e6af6fc37504cd06ba62b57 16-Dec-2008 Dan Gohman <gohman@apple.com> Preserve SourceValue information when lowering produces multiple loads from
different offsets within the same stack slot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61093 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
f6b65367db9e02b7439c9bf284ed2cf291e575e6 16-Dec-2008 Dan Gohman <gohman@apple.com> Preserve SourceValue information when lowering produces multiple loads from
different offsets within the same stack slot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61093 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesGeneric.cpp
09dc9c0c8363a689aa5559ae0e3ac33e381c2bb2 16-Dec-2008 Evan Cheng <evan.cheng@apple.com> We have decided not to support inline asm where an output operand with a matching input operand with incompatible type (i.e. either one is a floating point and the other is an integer or the sizes of the types differ). SelectionDAGBuild will catch these and exit with an error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61092 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
596801f1964c9e7063b4effd76610ce9da379502 16-Dec-2008 Evan Cheng <evan.cheng@apple.com> We have decided not to support inline asm where an output operand with a matching input operand with incompatible type (i.e. either one is a floating point and the other is an integer or the sizes of the types differ). SelectionDAGBuild will catch these and exit with an error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61092 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
812d7506d0c55fbb0eee522cb77b62e4ab777dea 16-Dec-2008 Dan Gohman <gohman@apple.com> Enable anti-dependence breaking by default when post-RA scheduling is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61078 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
5d36e5a5fe59c26f71132b31cf34c3a314f07528 16-Dec-2008 Dan Gohman <gohman@apple.com> Enable anti-dependence breaking by default when post-RA scheduling is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61078 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
fde221fa0a192a00dfdbce35ceec3d2035fe1019 16-Dec-2008 Dan Gohman <gohman@apple.com> When breaking an anti-dependency, don't use a register which has seen
one of its aliases defined. This is conservative, but tricky subreg
corner cases are outside the primary aim of this pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61077 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
9dc3a0d442e6e2a5133b0b20177ba402e582872d 16-Dec-2008 Dan Gohman <gohman@apple.com> When breaking an anti-dependency, don't use a register which has seen
one of its aliases defined. This is conservative, but tricky subreg
corner cases are outside the primary aim of this pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61077 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
8749b61178228ba1fb2668034d79da1b247173d7 16-Dec-2008 Dan Gohman <gohman@apple.com> Add initial support for back-scheduling address computations,
especially in the case of addresses computed from loop induction
variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61075 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
cheduleDAGInstrs.cpp
47170992991553a35645f413a8214d85c6049ae3 16-Dec-2008 Dan Gohman <gohman@apple.com> Add initial support for back-scheduling address computations,
especially in the case of addresses computed from loop induction
variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61075 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
cheduleDAGInstrs.cpp
9a65d6afc203fb8e44a807f84e3d370f16b08a5a 16-Dec-2008 Dan Gohman <gohman@apple.com> Remove some special-case logic in ScheduleDAGSDNodes's
latency computation code that is no longer needed with the
new method for handling latencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61074 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
504bb6e644387f2ff37a018d02d5d924504a76dc 16-Dec-2008 Dan Gohman <gohman@apple.com> Remove some special-case logic in ScheduleDAGSDNodes's
latency computation code that is no longer needed with the
new method for handling latencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61074 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSDNodes.cpp
3f23744df4809eba94284e601e81489212c974d4 16-Dec-2008 Dan Gohman <gohman@apple.com> Fix some register-alias-related bugs in the post-RA scheduler liveness
computation code. Also, avoid adding output-depenency edges when both
defs are dead, which frequently happens with EFLAGS defs.

Compute Depth and Height lazily, and always in terms of edge latency
values. For the schedulers that don't care about latency, edge latencies
are set to 1.

Eliminate Cycle and CycleBound, and LatencyPriorityQueue's Latencies array.
These are all subsumed by the Depth and Height fields.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61073 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
6b2ee8f599ed38492b69b1b5bf0e53ddf8d94195 16-Dec-2008 Dan Gohman <gohman@apple.com> Fix some register-alias-related bugs in the post-RA scheduler liveness
computation code. Also, avoid adding output-depenency edges when both
defs are dead, which frequently happens with EFLAGS defs.

Compute Depth and Height lazily, and always in terms of edge latency
values. For the schedulers that don't care about latency, edge latencies
are set to 1.

Eliminate Cycle and CycleBound, and LatencyPriorityQueue's Latencies array.
These are all subsumed by the Depth and Height fields.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61073 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
4ea8e85e19b844ef0ff704f27959b6a2ea7369f9 16-Dec-2008 Dan Gohman <gohman@apple.com> Add a simple target-independent heuristic to allow targets with no
instruction itinerary data to back-schedule loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61070 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
aa2a113b16a904b4ad4420c68da7eca513a9fa69 16-Dec-2008 Dan Gohman <gohman@apple.com> Add a simple target-independent heuristic to allow targets with no
instruction itinerary data to back-schedule loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61070 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
c6b680eee58d27f4d38684c95e8fbfef61eb6558 16-Dec-2008 Dan Gohman <gohman@apple.com> Move addPred and removePred out-of-line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61067 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
302aee7f3f4fbd7a952c66a85793958f55d8dbf8 16-Dec-2008 Dan Gohman <gohman@apple.com> Move addPred and removePred out-of-line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61067 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
ffa391272bad598d73fd5404dadf3686b69f2a63 16-Dec-2008 Dan Gohman <gohman@apple.com> Make addPred and removePred return void, since the return value is not
currently used by anything.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61066 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
51107eaca992d79502be86717376cc9331b5276c 16-Dec-2008 Dan Gohman <gohman@apple.com> Make addPred and removePred return void, since the return value is not
currently used by anything.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61066 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
3ee7449f3973fa467388d66d27124da22f45df85 16-Dec-2008 Dan Gohman <gohman@apple.com> This getEdgeAttributes doesn't need a template argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61065 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGPrinter.cpp
6f54f174c5028131f42b2bdd4d131a53b65e1216 16-Dec-2008 Dan Gohman <gohman@apple.com> This getEdgeAttributes doesn't need a template argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61065 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGPrinter.cpp
93b3b928d70df956b81ab1bffb7e8bab4b0c8fd7 15-Dec-2008 Mon P Wang <wangmp@apple.com> Added support for splitting and scalarizing vector shifts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
6978d7caeb633bacf55a9b5eb4feb1da466d17ab 15-Dec-2008 Mon P Wang <wangmp@apple.com> Added support for splitting and scalarizing vector shifts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
464fc5a04462ad09f98f456e8904683e7c34f60e 15-Dec-2008 Dan Gohman <gohman@apple.com> Fix printing of PseudoSourceValues in SDNode graphs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61036 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
3a2f507046964a22a7ca8d744a2e3bb2bebf9bf9 15-Dec-2008 Dan Gohman <gohman@apple.com> Fix printing of PseudoSourceValues in SDNode graphs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61036 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
d17c0302763cfd0b3f6657d2493147552762ac07 15-Dec-2008 Mon P Wang <wangmp@apple.com> Added support to LegalizeType for expanding the operands of scalar to vector
and insert vector element. Modified extract vector element to extend the
result to match the expected promoted type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61029 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
412f92f5180f1e49de0e7262ec1b7e97b2447c60 15-Dec-2008 Mon P Wang <wangmp@apple.com> Added support to LegalizeType for expanding the operands of scalar to vector
and insert vector element. Modified extract vector element to extend the
result to match the expected promoted type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61029 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
b6862bbe34be4a832f709596f8dc971ab9895b06 14-Dec-2008 Duncan Sands <baldrick@free.fr> Reapply r60997, this time without forgetting that
target constants are allowed to have an illegal
type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61006 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
e016a2e889c082f9ebf3b0ca578e09ff36f9d629 14-Dec-2008 Duncan Sands <baldrick@free.fr> Reapply r60997, this time without forgetting that
target constants are allowed to have an illegal
type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61006 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
2d8cc315215febb15a8c18c41ef0b165da71c3b8 14-Dec-2008 Bill Wendling <isanbard@gmail.com> Temporarily revert r60997. It was causing this failure:

Running /Users/void/llvm/llvm.src/test/CodeGen/Generic/dg.exp ...
FAIL: /Users/void/llvm/llvm.src/test/CodeGen/Generic/asm-large-immediate.ll
Failed with exit(1) at line 1
while running: llvm-as < /Users/void/llvm/llvm.src/test/CodeGen/Generic/asm-large-immediate.ll | llc | /usr/bin/grep 68719476738
Assertion failed: ((TypesNeedLegalizing || getTypeAction(VT) == Legal) && "Illegal type introduced after type legalization?"), function HandleOp, file /Users/void/llvm/llvm.src/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp, line 493.
0 llc 0x0085392e char const* std::find<char const*, char>(char const*, char const*, char const&) + 98
1 llc 0x00853e63 llvm::sys::PrintStackTraceOnErrorSignal() + 593
2 libSystem.B.dylib 0x96cac09b _sigtramp + 43
3 libSystem.B.dylib 0xffffffff _sigtramp + 1765097359
4 libSystem.B.dylib 0x96d24ec2 raise + 26
5 libSystem.B.dylib 0x96d3447f abort + 73
6 libSystem.B.dylib 0x96d26063 __assert_rtn + 101
7 llc 0x004f9018 llvm::cast_retty<llvm::SubprogramDesc, llvm::DebugInfoDesc*>::ret_type llvm::cast<llvm::Sub
...




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
318de86c315e8820a6e6c729e4e471976c86f4c9 14-Dec-2008 Bill Wendling <isanbard@gmail.com> Temporarily revert r60997. It was causing this failure:

Running /Users/void/llvm/llvm.src/test/CodeGen/Generic/dg.exp ...
FAIL: /Users/void/llvm/llvm.src/test/CodeGen/Generic/asm-large-immediate.ll
Failed with exit(1) at line 1
while running: llvm-as < /Users/void/llvm/llvm.src/test/CodeGen/Generic/asm-large-immediate.ll | llc | /usr/bin/grep 68719476738
Assertion failed: ((TypesNeedLegalizing || getTypeAction(VT) == Legal) && "Illegal type introduced after type legalization?"), function HandleOp, file /Users/void/llvm/llvm.src/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp, line 493.
0 llc 0x0085392e char const* std::find<char const*, char>(char const*, char const*, char const&) + 98
1 llc 0x00853e63 llvm::sys::PrintStackTraceOnErrorSignal() + 593
2 libSystem.B.dylib 0x96cac09b _sigtramp + 43
3 libSystem.B.dylib 0xffffffff _sigtramp + 1765097359
4 libSystem.B.dylib 0x96d24ec2 raise + 26
5 libSystem.B.dylib 0x96d3447f abort + 73
6 libSystem.B.dylib 0x96d26063 __assert_rtn + 101
7 llc 0x004f9018 llvm::cast_retty<llvm::SubprogramDesc, llvm::DebugInfoDesc*>::ret_type llvm::cast<llvm::Sub
...




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
0f546d4565b988f69850f42282e57a850153146d 13-Dec-2008 Duncan Sands <baldrick@free.fr> LegalizeDAG is not supposed to introduce illegal
types into the DAG if they were not already there.
Check this with an assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60997 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
edb1e670375bd251199ce2fe2286aa446723ccb6 13-Dec-2008 Duncan Sands <baldrick@free.fr> LegalizeDAG is not supposed to introduce illegal
types into the DAG if they were not already there.
Check this with an assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60997 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
c5d64607c96d9237f55988736e6ba7cc6a3d0a67 13-Dec-2008 Mon P Wang <wangmp@apple.com> Remove assertion to allow promotion of a truncating store operand


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60975 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
3ee6e522dcc5cf66d8616c444811032a4b8c9538 13-Dec-2008 Mon P Wang <wangmp@apple.com> Remove assertion to allow promotion of a truncating store operand


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60975 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
e1a0b2e0bbf2bd905afc628c96d8892edb304a3e 13-Dec-2008 Mon P Wang <wangmp@apple.com> Added basic support for expanding VSETCC


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60974 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ec428ad696e767dbf2d594ce246d0fce7b6ab92e 13-Dec-2008 Mon P Wang <wangmp@apple.com> Added basic support for expanding VSETCC


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60974 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fd6673cf7fd5c0c1e6817e5fcf460a289712ee57 13-Dec-2008 Duncan Sands <baldrick@free.fr> On big-endian machines it is wrong to do a full
width register load followed by a truncating
store for the copy, since the load will not place
the value in the lower bits. Probably partial
loads/stores can never happen here, but fix it
anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60972 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
734f49bf4cf7f061f0746390bd5389f023ca66f6 13-Dec-2008 Duncan Sands <baldrick@free.fr> On big-endian machines it is wrong to do a full
width register load followed by a truncating
store for the copy, since the load will not place
the value in the lower bits. Probably partial
loads/stores can never happen here, but fix it
anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60972 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8358099bcb85077e3ad65f1f15a9c60a9f18922d 12-Dec-2008 Devang Patel <dpatel@apple.com> Do not print empty DW_AT_comp_dir.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60965 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
6bcf98220e670ed0d6f73f5d3018b51ed4daed30 12-Dec-2008 Devang Patel <dpatel@apple.com> Do not print empty DW_AT_comp_dir.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60965 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
05e11fab87102a230551327bfc8434ffad7a88d4 12-Dec-2008 Duncan Sands <baldrick@free.fr> When expanding unaligned loads and stores do not make
use of illegal integer types: instead, use a stack slot
and copying via integer registers. The existing code
is still used if the bitconvert is to a legal integer
type.

This fires on the PPC testcases 2007-09-08-unaligned.ll
and vec_misaligned.ll. It looks like equivalent code
is generated with these changes, just permuted, but
it's hard to tell.

With these changes, nothing in LegalizeDAG produces
illegal integer types anymore. This is a prerequisite
for removing the LegalizeDAG type legalization code.

While there I noticed that the existing code doesn't
handle trunc store of f64 to f32: it turns this into
an i64 store, which represents a 4 byte stack smash.
I added a FIXME about this. Hopefully someone more
motivated than I am will take care of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b7ae45942427f524ad950c5fabaafeb920a18b3c 12-Dec-2008 Duncan Sands <baldrick@free.fr> When expanding unaligned loads and stores do not make
use of illegal integer types: instead, use a stack slot
and copying via integer registers. The existing code
is still used if the bitconvert is to a legal integer
type.

This fires on the PPC testcases 2007-09-08-unaligned.ll
and vec_misaligned.ll. It looks like equivalent code
is generated with these changes, just permuted, but
it's hard to tell.

With these changes, nothing in LegalizeDAG produces
illegal integer types anymore. This is a prerequisite
for removing the LegalizeDAG type legalization code.

While there I noticed that the existing code doesn't
handle trunc store of f64 to f32: it turns this into
an i64 store, which represents a 4 byte stack smash.
I added a FIXME about this. Hopefully someone more
motivated than I am will take care of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
637ed03173fdd154b1736e09358ba608036952b7 12-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix add/sub expansion: don't create ADD / SUB with two results (seems like everyone is doing this these days :-). Patch by Daniel M Gessel!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60958 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2bdd3d948d66308516f7dc19dc4f516d8d237b6e 12-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix add/sub expansion: don't create ADD / SUB with two results (seems like everyone is doing this these days :-). Patch by Daniel M Gessel!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60958 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
712f7b3f549644190e90210a07988753f53daa0a 12-Dec-2008 Duncan Sands <baldrick@free.fr> When using a 4 byte jump table on a 64 bit machine,
do an extending load of the 4 bytes rather than a
potentially illegal (type) i32 load followed by a
sign extend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60945 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
12ddc807ca69485025dc1fcfec141dd9367a63ce 12-Dec-2008 Duncan Sands <baldrick@free.fr> When using a 4 byte jump table on a 64 bit machine,
do an extending load of the 4 bytes rather than a
potentially illegal (type) i32 load followed by a
sign extend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60945 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9e5ecb8f8f3b639874b943702a3dd1d0739bb9b9 12-Dec-2008 Mon P Wang <wangmp@apple.com> Added support for SELECT v8i8 v4i16 for X86 (MMX)
Added support for TRUNC v8i16 to v8i8 for X86 (MMX)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60916 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
83edba507f0682691a5b82dd07f877ea0dbeddc0 12-Dec-2008 Mon P Wang <wangmp@apple.com> Added support for SELECT v8i8 v4i16 for X86 (MMX)
Added support for TRUNC v8i16 to v8i8 for X86 (MMX)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60916 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ab55ebda1c2254f98b06e770bc2dae7d05a4a366 12-Dec-2008 Bill Wendling <isanbard@gmail.com> Redo the arithmetic with overflow architecture. I was changing the semantics of
ISD::ADD to emit an implicit EFLAGS. This was horribly broken. Instead, replace
the intrinsic with an ISD::SADDO node. Then custom lower that into an
X86ISD::ADD node with a associated SETCC that checks the correct condition code
(overflow or carry). Then that gets lowered into the correct X86::ADDOvf
instruction.

Similar for SUB and MUL instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60915 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ae034ed6a84ffef03fc47e31c29e6c3c7ce42d40 12-Dec-2008 Bill Wendling <isanbard@gmail.com> Redo the arithmetic with overflow architecture. I was changing the semantics of
ISD::ADD to emit an implicit EFLAGS. This was horribly broken. Instead, replace
the intrinsic with an ISD::SADDO node. Then custom lower that into an
X86ISD::ADD node with a associated SETCC that checks the correct condition code
(overflow or carry). Then that gets lowered into the correct X86::ADDOvf
instruction.

Similar for SUB and MUL instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60915 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6db08c4d2f2e1f1f83e845031bfee9017b126c5a 11-Dec-2008 Mon P Wang <wangmp@apple.com> Avoid generating a convert_rndsat node when the src and dest type are the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60869 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
fa252e56029c5a375f9c1f5d281f14eebb6e39be 11-Dec-2008 Mon P Wang <wangmp@apple.com> Avoid generating a convert_rndsat node when the src and dest type are the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60869 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
775bb805c5a5a7ba6e4ccac85f650372a51e0273 11-Dec-2008 Bill Wendling <isanbard@gmail.com> Clarify FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60867 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7fe2bf65f5225014dd11c5806740ee5cae11f491 11-Dec-2008 Bill Wendling <isanbard@gmail.com> Clarify FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60867 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f67303d2565590bdf77a0d7d95d75f284f14cdd3 11-Dec-2008 Mon P Wang <wangmp@apple.com> Whitespace clean up (tabs with spaces)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
72fe546583d615b87f90f0ae100fcdb66abd4f81 11-Dec-2008 Mon P Wang <wangmp@apple.com> Whitespace clean up (tabs with spaces)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a60b5236c1acd31e2aca5705c8bbbd2946ea0873 11-Dec-2008 Mon P Wang <wangmp@apple.com> Make fix for r60829 less conservative to allow the proper optimization for
vec_extract-sse4.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60865 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3c67310adc35c88e4d90ec4f8d39e58b8220d55b 11-Dec-2008 Mon P Wang <wangmp@apple.com> Make fix for r60829 less conservative to allow the proper optimization for
vec_extract-sse4.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60865 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0ffa3de9e9b342c0fb529853e14632c66ec9725f 11-Dec-2008 Bill Wendling <isanbard@gmail.com> Add a newline after this debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60861 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
882d5217189a0656a231285ff7aef8e5e42bd687 11-Dec-2008 Bill Wendling <isanbard@gmail.com> Add a newline after this debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60861 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
2476e5d3458ea3543f233159fcf4f2fea47426e9 10-Dec-2008 Bill Wendling <isanbard@gmail.com> If ADD, SUB, or MUL have an overflow bit that's used, don't do transformation on
them. The DAG combiner expects that nodes that are transformed have one value
result.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60857 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c43c7eea3d8896246a46cc9546e9c70143c12d07 10-Dec-2008 Bill Wendling <isanbard@gmail.com> If ADD, SUB, or MUL have an overflow bit that's used, don't do transformation on
them. The DAG combiner expects that nodes that are transformed have one value
result.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60857 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ab0c578bfd1380326830180a9209df6c5be58887 10-Dec-2008 Duncan Sands <baldrick@free.fr> For amusement, implement SADDO, SSUBO, UADDO, USUBO
for promoted integer types, eg: i16 on ppc-32, or
i24 on any platform. Complete support for arbitrary
precision integers would require handling expanded
integer types, eg: i128, but I couldn't be bothered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
77476735d07b324a55bebe1431d2794b3d8b75b7 10-Dec-2008 Duncan Sands <baldrick@free.fr> For amusement, implement SADDO, SSUBO, UADDO, USUBO
for promoted integer types, eg: i16 on ppc-32, or
i24 on any platform. Complete support for arbitrary
precision integers would require handling expanded
integer types, eg: i128, but I couldn't be bothered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
bae527d949949da0cf45d279990eee21e7c66108 10-Dec-2008 Mon P Wang <wangmp@apple.com> Fixed a bug when trying to optimize a extract vector element of a
bit convert that changes the number of elements of a shuffle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60829 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bc66e46f48e22e4b348de0bcb33928293285dca6 10-Dec-2008 Mon P Wang <wangmp@apple.com> Fixed a bug when trying to optimize a extract vector element of a
bit convert that changes the number of elements of a shuffle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60829 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5788d1a169db3346a612a13113348d2709bdd15b 10-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix MachineCodeEmitter to use uintptr_t instead of intptr_t. This avoids some overflow issues. Patch by Thomas Jablin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60828 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
6e561c71f74571ff2a448e7e07cb74047edef776 10-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix MachineCodeEmitter to use uintptr_t instead of intptr_t. This avoids some overflow issues. Patch by Thomas Jablin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60828 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
bc5e15eafb3c39a214631087b6827a5691e9b25c 10-Dec-2008 Bill Wendling <isanbard@gmail.com> Whitespace changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60826 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
35f1a9d21de3950385c014522d474a2ad7c6504c 10-Dec-2008 Bill Wendling <isanbard@gmail.com> Whitespace changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60826 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2ce4e5caddeacac0bde7933ce586a794bac2019b 10-Dec-2008 Bill Wendling <isanbard@gmail.com> Whitespace fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60818 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ea340c7537e3ffb37dd89258d504823c6910f4da 10-Dec-2008 Bill Wendling <isanbard@gmail.com> Whitespace fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60818 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f55a2101e300d1b4d420a1e71ca839e3146bdf70 10-Dec-2008 Dan Gohman <gohman@apple.com> Update CalcLatency to work in terms of edge latencies, rather than
node latencies. Use CalcLatency instead of manual code in
CalculatePriorities to keep it consistent. Previously it
computed slightly different results.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60817 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
a6801bbb67ba1d6c6453ee549a70c01fcee42e60 10-Dec-2008 Dan Gohman <gohman@apple.com> Update CalcLatency to work in terms of edge latencies, rather than
node latencies. Use CalcLatency instead of manual code in
CalculatePriorities to keep it consistent. Previously it
computed slightly different results.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60817 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
94ea5be39fe379cda3ff144a99b6a1a69a9fe2e2 10-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix a couple of Dwarf bugs.
- Emit DW_AT_byte_size for struct and union of size zero.
- Emit DW_AT_declaration for forward type declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60812 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
achineModuleInfo.cpp
b2fc7112835530a49848ccc1dd53273b6feaa20d 10-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix a couple of Dwarf bugs.
- Emit DW_AT_byte_size for struct and union of size zero.
- Emit DW_AT_declaration for forward type declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60812 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
achineModuleInfo.cpp
54e4c36a7349e94a84773afb56eccd4ca65b49e9 09-Dec-2008 Dan Gohman <gohman@apple.com> Rewrite the SDep class, and simplify some of the related code.

The Cost field is removed. It was only being used in a very limited way,
to indicate when the scheduler should attempt to protect a live register,
and it isn't really needed to do that. If we ever want the scheduler to
start inserting copies in non-prohibitive situations, we'll have to
rethink some things anyway.

A Latency field is added. Instead of giving each node a single
fixed latency, each edge can have its own latency. This will eventually
be used to model various micro-architecture properties more accurately.

The PointerIntPair class and an internal union are now used, which
reduce the overall size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60806 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
604394b2eb5ccda3858f8285a8c9b0c72cb2a997 09-Dec-2008 Dan Gohman <gohman@apple.com> Rewrite the SDep class, and simplify some of the related code.

The Cost field is removed. It was only being used in a very limited way,
to indicate when the scheduler should attempt to protect a live register,
and it isn't really needed to do that. If we ever want the scheduler to
start inserting copies in non-prohibitive situations, we'll have to
rethink some things anyway.

A Latency field is added. Instead of giving each node a single
fixed latency, each edge can have its own latency. This will eventually
be used to model various micro-architecture properties more accurately.

The PointerIntPair class and an internal union are now used, which
reduce the overall size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60806 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
bcf28c08b3f0a3c4aa1be8f1485f6452d9a2b690 09-Dec-2008 Dan Gohman <gohman@apple.com> Minor code simplification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60804 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a0dff4380c8942a0f43a799226183fe364d8c12b 09-Dec-2008 Dan Gohman <gohman@apple.com> Minor code simplification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60804 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
74c376529101acbe141a256d0bf23a44eb454c84 09-Dec-2008 Bill Wendling <isanbard@gmail.com> Add sub/mul overflow intrinsics. This currently doesn't have a
target-independent way of determining overflow on multiplication. It's very
tricky. Patch by Zoltan Varga!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60800 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
7e04be6e4a44faffa7b5fb0d630b580214262a6d 09-Dec-2008 Bill Wendling <isanbard@gmail.com> Add sub/mul overflow intrinsics. This currently doesn't have a
target-independent way of determining overflow on multiplication. It's very
tricky. Patch by Zoltan Varga!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60800 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
47d9dcc584cdb7fd645ca1d5c2a0ce363570aeb7 09-Dec-2008 Duncan Sands <baldrick@free.fr> Fix PR3117: not all nodes being legalized. The
essential problem was that the DAG can contain
random unused nodes which were never analyzed.
When remapping a value of a node being processed,
such a node may become used and need to be analyzed;
however due to operands being transformed during
analysis the node may morph into a different one.
Users of the morphing node need to be updated, and
this wasn't happening. While there I added a bunch
of documentation and sanity checks, so I (or some
other poor soul) won't have to scratch their head
over this stuff so long trying to remember how it
was all supposed to work next time some obscure
problem pops up! The extra sanity checking exposed
a few places where invariants weren't being preserved,
so those are fixed too. Since some of the sanity
checking is expensive, I added a flag to turn it
on. It is also turned on when building with
ENABLE_EXPENSIVE_CHECKS=1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60797 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
871e55f9c2bfb591aa085405b67be46bc646dee5 09-Dec-2008 Duncan Sands <baldrick@free.fr> Fix PR3117: not all nodes being legalized. The
essential problem was that the DAG can contain
random unused nodes which were never analyzed.
When remapping a value of a node being processed,
such a node may become used and need to be analyzed;
however due to operands being transformed during
analysis the node may morph into a different one.
Users of the morphing node need to be updated, and
this wasn't happening. While there I added a bunch
of documentation and sanity checks, so I (or some
other poor soul) won't have to scratch their head
over this stuff so long trying to remember how it
was all supposed to work next time some obscure
problem pops up! The extra sanity checking exposed
a few places where invariants weren't being preserved,
so those are fixed too. Since some of the sanity
checking is expensive, I added a flag to turn it
on. It is also turned on when building with
ENABLE_EXPENSIVE_CHECKS=1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60797 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
f84802880c5ae7aed88f9aac27ec66a1d017707f 09-Dec-2008 Evan Cheng <evan.cheng@apple.com> Cosmetic changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60771 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
c7efea3b49e3d1c5e5cbfa6dab0eb4fbad067112 09-Dec-2008 Evan Cheng <evan.cheng@apple.com> Cosmetic changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60771 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
e3a49cd944ad41eba5a594f1de773d531ad25403 09-Dec-2008 Dan Gohman <gohman@apple.com> Whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60769 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
e07f4c0f48e17594fd39b1151fc18c164aa5b4d1 09-Dec-2008 Dan Gohman <gohman@apple.com> Whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60769 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
1cd46bbb1c6b1c3cb33bbbd3beb97f0c0373df80 09-Dec-2008 Mon P Wang <wangmp@apple.com> In LegalizeOp, don't change the result type of CONVERT_RNDSAT when promoting
one of its operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2fc3f9e0811f456843b6611002d7f923ef2e0a0f 09-Dec-2008 Mon P Wang <wangmp@apple.com> In LegalizeOp, don't change the result type of CONVERT_RNDSAT when promoting
one of its operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e9f1015d1f184a51aaadfd03be0846bd5e7d08a2 09-Dec-2008 Mon P Wang <wangmp@apple.com> Fix getNode to allow a vector for the shift amount for shifts of vectors.
Fix the shift amount when unrolling a vector shift into scalar shifts.
Fix problem in getShuffleScalarElt where it assumes that the input of
a bit convert must be a vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60740 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
9901e73caec653599f27d04075961afe4a7c29a1 09-Dec-2008 Mon P Wang <wangmp@apple.com> Fix getNode to allow a vector for the shift amount for shifts of vectors.
Fix the shift amount when unrolling a vector shift into scalar shifts.
Fix problem in getShuffleScalarElt where it assumes that the input of
a bit convert must be a vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60740 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
aeac8f9cb4c112c0146be9476f9583b1337195d6 09-Dec-2008 Dan Gohman <gohman@apple.com> Don't charge full latency for an anti-dependence, in this simplistic
pipeline model.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60733 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
6b4a00f192f654e7c1030bac5a56da5f74bb4e77 09-Dec-2008 Dan Gohman <gohman@apple.com> Don't charge full latency for an anti-dependence, in this simplistic
pipeline model.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60733 91177308-0d34-0410-b5e6-96231b3b80d8
atencyPriorityQueue.cpp
a629b48a668c778e0cb951c7eb2b47bda0c922f0 08-Dec-2008 Dan Gohman <gohman@apple.com> Fix the top-level comments, and fix some 80-column violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60707 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
5faa402e7372192dbaa50ab49eda49e9d5e68262 08-Dec-2008 Dan Gohman <gohman@apple.com> Fix the top-level comments, and fix some 80-column violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60707 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
c8a1a3c426209e9c7b35e279e1578a89edc40af6 08-Dec-2008 Dan Gohman <gohman@apple.com> Factor out the code for sign-extending/truncating gep indices
and use it in x86 address mode folding. Also, make
getRegForValue return 0 for illegal types even if it has a
ValueMap for them, because Argument values are put in the
ValueMap. This fixes PR3181.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
009a81ff8815b78422d27f3b8ad2d90a56dffb02 08-Dec-2008 Dan Gohman <gohman@apple.com> Factor out the code for sign-extending/truncating gep indices
and use it in x86 address mode folding. Also, make
getRegForValue return 0 for illegal types even if it has a
ValueMap for them, because Argument values are put in the
ValueMap. This fixes PR3181.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
2e3e5bf42742a7421b513829101501f2de6d2b02 08-Dec-2008 Dan Gohman <gohman@apple.com> Move createVirtualRegister out-of-line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60684 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
7a7b809327b3905a1b035c1b7e061822ec627f3f 08-Dec-2008 Dan Gohman <gohman@apple.com> Move createVirtualRegister out-of-line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60684 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
c93ced5b34b50a622ee8e49d90592f03ac7ff992 08-Dec-2008 Dan Gohman <gohman@apple.com> Clarify some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60683 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
eaccea3533f87344a468aee3a47bfcf164530c5e 08-Dec-2008 Dan Gohman <gohman@apple.com> Clarify some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60683 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
75c99c5aa86409f09616bfa46e723a0bc18e7e54 07-Dec-2008 Owen Anderson <resistor@mac.com> Switch to top-down mode and fix a crasher this exposed caused by an error in the
live interval updating.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60652 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
70e8127ecd63b483e0aed512010aeb6155f8cc82 07-Dec-2008 Owen Anderson <resistor@mac.com> Switch to top-down mode and fix a crasher this exposed caused by an error in the
live interval updating.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60652 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
650d7f3ff4d22646def71b842f7f163c539e0aaf 05-Dec-2008 Evan Cheng <evan.cheng@apple.com> Reason #3 from 60595 doesn't hold true. If we can fold a PIC load from constpool into a use, the rewrite happens at time of spill (not in VirtRegMap). Later on, if the GlobalBaseReg is spilled, the spiller can see the use uses GlobalBaseReg and do the right thing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60596 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
eb7a09bd42ba8da2be271860ae3500b409546c67 05-Dec-2008 Evan Cheng <evan.cheng@apple.com> Reason #3 from 60595 doesn't hold true. If we can fold a PIC load from constpool into a use, the rewrite happens at time of spill (not in VirtRegMap). Later on, if the GlobalBaseReg is spilled, the spiller can see the use uses GlobalBaseReg and do the right thing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60596 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
72eeb94fe1d69cd05bdbbe86b2bc9fa25c963c22 05-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60592 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8a7cbc1cd385af3f4ac5619ee1c0c4259444df60 05-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60592 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
2ce7f2068f13566f5a70ee779e3bb83a6cb8d942 05-Dec-2008 Dan Gohman <gohman@apple.com> Drop the reg argument to isRegReDefinedByTwoAddr, which was redundant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60586 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
ostRASchedulerList.cpp
egAllocLocal.cpp
4dbf8795b51efaecaac8cdd28ec54d6a7ee75481 05-Dec-2008 Dan Gohman <gohman@apple.com> Drop the reg argument to isRegReDefinedByTwoAddr, which was redundant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60586 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
ostRASchedulerList.cpp
egAllocLocal.cpp
9bf23b54524c06efd164648b613fd724e8d4494b 05-Dec-2008 Dan Gohman <gohman@apple.com> Teach StackSlotColoring to update MachineMemOperands when
changing the stack slots on an instruction, to keep them
consistent with the actual memory addresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60584 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
6486b0c4f52436babb19e9abb8616f44fd115b28 05-Dec-2008 Dan Gohman <gohman@apple.com> Teach StackSlotColoring to update MachineMemOperands when
changing the stack slots on an instruction, to keep them
consistent with the actual memory addresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60584 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
490b1833a96bf0391ebdfba7828d43a8c3512851 05-Dec-2008 Dan Gohman <gohman@apple.com> Ignore IMPLICIT_DEF instructions when computing physreg liveness.
While they appear to provide a normal clobbering def, they don't
in the case of the awkward IMPLICIT_DEF+INSERT_SUBREG idiom. It
would be good to change INSERT_SUBREG; until then, this change
allows post-regalloc scheduling to cope in a mildly conservative
way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60583 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
2cb9f06edab79ff920f078481c04c917cd5ceac9 05-Dec-2008 Dan Gohman <gohman@apple.com> Ignore IMPLICIT_DEF instructions when computing physreg liveness.
While they appear to provide a normal clobbering def, they don't
in the case of the awkward IMPLICIT_DEF+INSERT_SUBREG idiom. It
would be good to change INSERT_SUBREG; until then, this change
allows post-regalloc scheduling to cope in a mildly conservative
way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60583 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
6002e993e045a36f90df076fa3c8a2127edb66d5 04-Dec-2008 Owen Anderson <resistor@mac.com> Factor out some common code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60553 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
22bb751082ae7e1eb658e6c70f8ac932479aeb67 04-Dec-2008 Owen Anderson <resistor@mac.com> Factor out some common code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60553 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
9304f2c294752a3cfbc2c91ebed903cc53317dc1 04-Dec-2008 Duncan Sands <baldrick@free.fr> When allocating a stack temporary, use the correct
number of bytes for types such as i1 which are not
a multiple of 8 bits in length.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60543 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
760997765ebcc690c5db3e0f0258f7ff19855b1d 04-Dec-2008 Duncan Sands <baldrick@free.fr> When allocating a stack temporary, use the correct
number of bytes for types such as i1 which are not
a multiple of 8 bits in length.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60543 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
80e201b8db86a88249b89527a2c7f098237925d3 04-Dec-2008 Dan Gohman <gohman@apple.com> Use register names instead of numbers in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60525 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
a3f3d3b590275e9021e4974926a59d4127f2298b 04-Dec-2008 Dan Gohman <gohman@apple.com> Use register names instead of numbers in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60525 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
b29ffc88701fc373c832ea2e7142ad6f72eef050 04-Dec-2008 Dan Gohman <gohman@apple.com> Make debug output more informative.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60524 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f2c0d4fa033fdf51ffd8a90432a1947bdb5ee793 04-Dec-2008 Dan Gohman <gohman@apple.com> Make debug output more informative.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60524 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
6a9041e5ca9bdf2c1b586a7b2c6488374b39be74 04-Dec-2008 Dan Gohman <gohman@apple.com> Add minimal support for disambiguating memory references. Currently
the main thing this covers is spills to distinct spill slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60517 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cb4717c2e2533cc64e039e7d09ea0815c9d237e5 04-Dec-2008 Dan Gohman <gohman@apple.com> Add minimal support for disambiguating memory references. Currently
the main thing this covers is spills to distinct spill slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60517 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cef874ae2b97ba29f10e68d1d2eb21f28a3dc263 04-Dec-2008 Dan Gohman <gohman@apple.com> Rewrite the liveness bookkeeping code to fix a bunch of
issues with subreg operands and tied operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60510 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
b6981fd4190719bff4bec382914be2acae6611df 04-Dec-2008 Dan Gohman <gohman@apple.com> Rewrite the liveness bookkeeping code to fix a bunch of
issues with subreg operands and tied operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60510 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
d71703deec9e3fe90833e82e0c8b6bf7e5af55fd 03-Dec-2008 Dan Gohman <gohman@apple.com> Have PseudoSourceValue override Value::dump, so that it works
on PseudoSourceValue values. This also fixes a FIXME in
lib/VMCode/AsmWriter.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60507 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
de2163821ddbffb3ac78b7f0e1060b0754e9a502 03-Dec-2008 Dan Gohman <gohman@apple.com> Have PseudoSourceValue override Value::dump, so that it works
on PseudoSourceValue values. This also fixes a FIXME in
lib/VMCode/AsmWriter.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60507 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
e96cc775e496260b7a42dbd6148dffb0575d1304 03-Dec-2008 Dan Gohman <gohman@apple.com> Fix an inconsistency in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60500 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
98fbc36e6c77fead86a172b48fc149568b11f80c 03-Dec-2008 Dan Gohman <gohman@apple.com> Fix an inconsistency in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60500 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
e561751e98b63908c6a3a68ed5dbc0703f3369b9 03-Dec-2008 Dan Gohman <gohman@apple.com> Don't charge the full latency for anti and output dependencies. This is
an area where eventually it would be good to use target-dependent
information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60498 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
9ffd030da18ba2683d08a3bebcf648298655ee1f 03-Dec-2008 Dan Gohman <gohman@apple.com> Don't charge the full latency for anti and output dependencies. This is
an area where eventually it would be good to use target-dependent
information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60498 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
0dba0e5408e999e9c46006a12a92155a961a574c 03-Dec-2008 Dan Gohman <gohman@apple.com> When looking for anti-dependences on the critical path, don't bother
examining non-anti-dependence edges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60496 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
37cc9be77ec9c314c58336101cd1abe730bf5440 03-Dec-2008 Dan Gohman <gohman@apple.com> When looking for anti-dependences on the critical path, don't bother
examining non-anti-dependence edges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60496 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
ebb0a31103f353e330ea998f1a9e283a387b6ef7 03-Dec-2008 Dan Gohman <gohman@apple.com> Add a comment about callee-saved registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60495 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
3d93328a05311f363e8b39e86068bf26f807c677 03-Dec-2008 Dan Gohman <gohman@apple.com> Add a comment about callee-saved registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60495 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
c54baa2d43730f1804acfb4f4e738fba72f966bd 03-Dec-2008 Dan Gohman <gohman@apple.com> Split foldMemoryOperand into public non-virtual and protected virtual
parts, and add target-independent code to add/preserve
MachineMemOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60488 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
edc83d6ec19f32ce2a3ea11109674d5370815d8c 03-Dec-2008 Dan Gohman <gohman@apple.com> Split foldMemoryOperand into public non-virtual and protected virtual
parts, and add target-independent code to add/preserve
MachineMemOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60488 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
15511cf1660cfd6bb8b8e8fca2db9450f50430ee 03-Dec-2008 Dan Gohman <gohman@apple.com> Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60487 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5574cc7ede8b35672892ed36be37cd81555857ff 03-Dec-2008 Dan Gohman <gohman@apple.com> Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60487 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8b8e5a7f9648bc7e39dc28607c5ade43aaafb3af 03-Dec-2008 Duncan Sands <baldrick@free.fr> Only check that the result of the mapping was not
a new node if the node was actually remapped.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
4c2c6e1baa0275fe03c9abbff316e9d31c542d6e 03-Dec-2008 Duncan Sands <baldrick@free.fr> Only check that the result of the mapping was not
a new node if the node was actually remapped.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
952b839ce9bc0c6d605d8b202c9cd76f7f05a77d 03-Dec-2008 Rafael Espindola <rafael.espindola@gmail.com> Fix bug 3140.
Print a single parameter .file directive if we have an ELF target.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60480 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5cf2e553e3a6376051ae18f4eccd605a5703b8cd 03-Dec-2008 Rafael Espindola <rafael.espindola@gmail.com> Fix bug 3140.
Print a single parameter .file directive if we have an ELF target.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60480 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
41474baac839da410302950305722cb0e026a094 03-Dec-2008 Dan Gohman <gohman@apple.com> Add a sanity-check to tablegen to catch the case where isSimpleLoad
is set but mayLoad is not set. Fix all the problems this turned up.

Change code to not use isSimpleLoad instead of mayLoad unless it
really wants isSimpleLoad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60459 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
bc1714f32f95112cab85906a3a8c4057546b84d6 03-Dec-2008 Dan Gohman <gohman@apple.com> Add a sanity-check to tablegen to catch the case where isSimpleLoad
is set but mayLoad is not set. Fix all the problems this turned up.

Change code to not use isSimpleLoad instead of mayLoad unless it
really wants isSimpleLoad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60459 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
96da0419490148e42dbab6984c07e28ec66a591d 02-Dec-2008 Evan Cheng <evan.cheng@apple.com> Remove a (what appears to be) overly strict assertion. Here is what happened:
1. ppcf128 select is expanded to f64 select's.
2. f64 select operand 0 is an i1 truncate, it's promoted to i32 zero_extend.
3. f64 select is updated. It's changed back to a "NewNode" and being re-analyzed.
4. f64 select operands are being processed. Operand 0 is a "NewNode". It's being expunged out of ReplacedValues map.
5. ExpungeNode tries to remap f64 select and notice it's a "NewNode" and assert.
Duncan, please take a look. Thanks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
79f027da75139f2f7273f3f2fa83d1b567a1daf8 02-Dec-2008 Evan Cheng <evan.cheng@apple.com> Remove a (what appears to be) overly strict assertion. Here is what happened:
1. ppcf128 select is expanded to f64 select's.
2. f64 select operand 0 is an i1 truncate, it's promoted to i32 zero_extend.
3. f64 select is updated. It's changed back to a "NewNode" and being re-analyzed.
4. f64 select operands are being processed. Operand 0 is a "NewNode". It's being expunged out of ReplacedValues map.
5. ExpungeNode tries to remap f64 select and notice it's a "NewNode" and assert.
Duncan, please take a look. Thanks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
546d7b5c4a3cebf0d5017d42302b4a8d1c8ef584 02-Dec-2008 Scott Michel <scottm@aero.org> Non-functional change: make custom lowering for truncate stylistically
consistent with the way it's generally done in other places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60439 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e9b8a40ef17f2a3260fcdc4d2b03852d73170145 02-Dec-2008 Scott Michel <scottm@aero.org> Non-functional change: make custom lowering for truncate stylistically
consistent with the way it's generally done in other places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60439 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d118342b25eb6a3a67792cda9fce9b4c1e45a867 02-Dec-2008 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60434 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
13076aba9fb4462ce78bc66bb5c6327f9aa48485 02-Dec-2008 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60434 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
7b9d67c5bfa316bf94b5191224866fb107f00135 02-Dec-2008 Owen Anderson <resistor@mac.com> Add support for folding spills into preceding defs when doing pre-alloc splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60433 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
9a1254f0ed34d687049c6094d2b1dd3993bf063e 02-Dec-2008 Owen Anderson <resistor@mac.com> Add support for folding spills into preceding defs when doing pre-alloc splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60433 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
34d7985927bbd31e16c7de3346eaf3426348ecb1 02-Dec-2008 Dale Johannesen <dalej@apple.com> One more transformation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60432 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d29920f900f45791a24f51892b2eb12efe79639f 02-Dec-2008 Dale Johannesen <dalej@apple.com> One more transformation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60432 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b0a5cdd4511d02afacd0cd39223cf6c52a6ef361 02-Dec-2008 Tilmann Scheller <tilmann.scheller@googlemail.com> make it possible to custom lower TRUNCATE (needed for the CellSPU target)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60409 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bfc55eea7e43acf7d966c433e85d633095a11440 02-Dec-2008 Tilmann Scheller <tilmann.scheller@googlemail.com> make it possible to custom lower TRUNCATE (needed for the CellSPU target)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60409 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fb13f008cb2a6a51d2d590f994051586774734a1 02-Dec-2008 Mon P Wang <wangmp@apple.com> Removed some unnecessary code in widening.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60406 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d5638266a25d55711e17823963d5d99b886b7a91 02-Dec-2008 Mon P Wang <wangmp@apple.com> Removed some unnecessary code in widening.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60406 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bbe4105cd7c94e90ecc7de2be57c04b3d80bb267 02-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix PR3124: overly strict assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60392 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
f2176aad93e50e31aaccb7c36d67cf7c0d7c4f13 02-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix PR3124: overly strict assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60392 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
221cd2f0813be675784b9825aee9f74f22026247 02-Dec-2008 Dale Johannesen <dalej@apple.com> Add a few more transformations.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60391 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d1feb58735159bd11f17c9732883dc9b323f61e8 02-Dec-2008 Dale Johannesen <dalej@apple.com> Add a few more transformations.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60391 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
13d6d446f62f908e8cf74acb3a4df65ea5f497ce 02-Dec-2008 Bill Wendling <isanbard@gmail.com> Expand getVTList, getNodeValueTypes, and SelectNodeTo to handle more value types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60381 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7a4076f1adb870680b20df6ec98507e419fb0bd6 02-Dec-2008 Bill Wendling <isanbard@gmail.com> Expand getVTList, getNodeValueTypes, and SelectNodeTo to handle more value types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60381 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
aaffa05d0a652dd3eae76a941d02d6b0469fa821 01-Dec-2008 Duncan Sands <baldrick@free.fr> There are no longer any places that require a
MERGE_VALUES node with only one operand, so get
rid of special code that only existed to handle
that possibility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
42d7bb80eff3a86ca5790d950c399d294b6f9b0e 01-Dec-2008 Duncan Sands <baldrick@free.fr> There are no longer any places that require a
MERGE_VALUES node with only one operand, so get
rid of special code that only existed to handle
that possibility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
1607f05cb7d77d01ce521a30232faa389dbed4e2 01-Dec-2008 Duncan Sands <baldrick@free.fr> Change the interface to the type legalization method
ReplaceNodeResults: rather than returning a node which
must have the same number of results as the original
node (which means mucking around with MERGE_VALUES,
and which is also easy to get wrong since SelectionDAG
folding may mean you don't get the node you expect),
return the results in a vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
7d9834be329543d61f747af9b48be539492d8974 01-Dec-2008 Duncan Sands <baldrick@free.fr> Change the interface to the type legalization method
ReplaceNodeResults: rather than returning a node which
must have the same number of results as the original
node (which means mucking around with MERGE_VALUES,
and which is also easy to get wrong since SelectionDAG
folding may mean you don't get the node you expect),
return the results in a vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
fc69cb475f3df50fb47c0cf8df90c2a77b7ff36a 30-Nov-2008 Eli Friedman <eli.friedman@gmail.com> Followup to r60283: optimize arbitrary width signed divisions as well
as unsigned divisions. Same caveats as before.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60284 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
2589b503cca3c6850f49d65d2396c72ad7e4132a 30-Nov-2008 Eli Friedman <eli.friedman@gmail.com> Followup to r60283: optimize arbitrary width signed divisions as well
as unsigned divisions. Same caveats as before.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60284 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
201c9776bd4197569b71fef0519f98a28d1db989 30-Nov-2008 Eli Friedman <eli.friedman@gmail.com> Fix for PR2164: allow transforming arbitrary-width unsigned divides into
multiplies.

Some more cleverness would be nice, though. It would be nice if we
could do this transformation on illegal types. Also, we would
prefer a narrower constant when possible so that we can use a narrower
multiply, which can be cheaper.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60283 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
ca009721b9835254fdb88342912864de7c2feae5 30-Nov-2008 Eli Friedman <eli.friedman@gmail.com> Fix for PR2164: allow transforming arbitrary-width unsigned divides into
multiplies.

Some more cleverness would be nice, though. It would be nice if we
could do this transformation on illegal types. Also, we would
prefer a narrower constant when possible so that we can use a narrower
multiply, which can be cheaper.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60283 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
86f874d9bb3722e81381e832eb4c867f562e308c 30-Nov-2008 Eli Friedman <eli.friedman@gmail.com> APIntify a test which is potentially unsafe otherwise, and fix the
nearby FIXME.

I'm not sure what the right way to fix the Cell test was; if the
approach I used isn't okay, please let me know.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60277 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
156a66847d6988b5947b5d62e7e65648e7aa5c6f 30-Nov-2008 Eli Friedman <eli.friedman@gmail.com> APIntify a test which is potentially unsafe otherwise, and fix the
nearby FIXME.

I'm not sure what the right way to fix the Cell test was; if the
approach I used isn't okay, please let me know.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60277 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
a89d102b32d74fed5d3c7aeea8869a11c3074063 27-Nov-2008 Nick Lewycky <nicholas@mxc.ca> Silence a warning.

Despite changing the order of evaluation, this doesn't actually change the
meaning of the statement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60177 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
97b549fb49d067d356c8acf74185f1da9b1ca335 27-Nov-2008 Nick Lewycky <nicholas@mxc.ca> Silence a warning.

Despite changing the order of evaluation, this doesn't actually change the
meaning of the statement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60177 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
9b0f0b5e1505dcd4ec0da87ea9e29c59d98a8d27 27-Nov-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Removing redundant semicolons. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60149 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d57f2e16f8bc6dfdf13e7866b5eb0adef32445e4 27-Nov-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Removing redundant semicolons. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60149 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
df90841690c4c1c30aa9ea8cfd37c429bb1e9d0b 27-Nov-2008 Evan Cheng <evan.cheng@apple.com> Avoid inserting noop's in the middle of a loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60141 91177308-0d34-0410-b5e6-96231b3b80d8
oopAligner.cpp
83059fda621cf9d35b7a5aa553569e0484c2766e 27-Nov-2008 Evan Cheng <evan.cheng@apple.com> Avoid inserting noop's in the middle of a loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60141 91177308-0d34-0410-b5e6-96231b3b80d8
oopAligner.cpp
56eca9103ecbf2293842bfd6067ac26629221eaf 27-Nov-2008 Dale Johannesen <dalej@apple.com> Add a missing case in visitADD.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60137 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e7e5da3e66cf237a697dfb94bcbd0c99668a13e2 27-Nov-2008 Dale Johannesen <dalej@apple.com> Add a missing case in visitADD.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60137 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d3f01aa5a1c0242ea0a6294f13e1d078ce2b0938 26-Nov-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow custom lowering of ADDE/ADDC/SUBE/SUBC operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60102 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7a61e7fd8f293bda18c9e46eeda4e4400b0b8ab6 26-Nov-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow custom lowering of ADDE/ADDC/SUBE/SUBC operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60102 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2ad8245566a3c92d4559727a877d57ecf5d078c8 26-Nov-2008 Dan Gohman <gohman@apple.com> LiveRanges are represented as half-open ranges. Fix the findLiveInMBBs code
and the LiveInterval.h top-level comment and accordingly. This fixes blocks
having spurious live-in registers in boundary cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60092 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b3a18e30a64b395be5983241b6172c2f469919c6 26-Nov-2008 Dan Gohman <gohman@apple.com> LiveRanges are represented as half-open ranges. Fix the findLiveInMBBs code
and the LiveInterval.h top-level comment and accordingly. This fixes blocks
having spurious live-in registers in boundary cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60092 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
740464e6164e503f3c01d2b13a52c0261042abe0 25-Nov-2008 Bill Wendling <isanbard@gmail.com> A simplification for checking whether the signs of the operands and sum differ. Thanks, Duncan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60043 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cf4de126b17196ba81d1876ccd304130eb3ca662 25-Nov-2008 Bill Wendling <isanbard@gmail.com> A simplification for checking whether the signs of the operands and sum differ. Thanks, Duncan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60043 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
878ef1d5bc3b2d12f58fbd796a4ac91b163c88f0 25-Nov-2008 Dan Gohman <gohman@apple.com> Suppress warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60041 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
a710d727b7aec6c0d84bf13813f38d65e8de927e 25-Nov-2008 Dan Gohman <gohman@apple.com> Suppress warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60041 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
a6af91ae124d0713cfabcea8c5f508091dd7a556 25-Nov-2008 Bill Wendling <isanbard@gmail.com> Now with the correct type for the 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60016 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c65e6e4ce26caba2a6c07467ab45f74f708ffbe7 25-Nov-2008 Bill Wendling <isanbard@gmail.com> Now with the correct type for the 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60016 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7ebfea41755c1f7b45fe5cad005ad2ea701c508e 25-Nov-2008 Bill Wendling <isanbard@gmail.com> Get rid of unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60015 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
910488477f3f5dac9f709522e708dd36a1e88779 25-Nov-2008 Bill Wendling <isanbard@gmail.com> Get rid of unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60015 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c0062fb7557c9f4eb66b7d8fa7b6b0c765e579b8 25-Nov-2008 Bill Wendling <isanbard@gmail.com> Hacker's Delight says, "Signed integer overflow of addition occurs if and only
if the operands have the same sign and the sum has sign opposite to that of the
operands."


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60014 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6c4e3e07b6722e380f5d7917df47058101fd71bb 25-Nov-2008 Bill Wendling <isanbard@gmail.com> Hacker's Delight says, "Signed integer overflow of addition occurs if and only
if the operands have the same sign and the sum has sign opposite to that of the
operands."


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60014 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
21d9003087c9a707e6cd95460136b499df358fb8 25-Nov-2008 Dan Gohman <gohman@apple.com> Initial support for anti-dependence breaking. Currently this code does not
introduce any new spilling; it just uses unused registers.

Refactor the SUnit topological sort code out of the RRList scheduler and
make use of it to help with the post-pass scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59999 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
c2c90e22cede15fab5b9a52a39afaf8d04944135 25-Nov-2008 Dan Gohman <gohman@apple.com> Initial support for anti-dependence breaking. Currently this code does not
introduce any new spilling; it just uses unused registers.

Refactor the SUnit topological sort code out of the RRList scheduler and
make use of it to help with the post-pass scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59999 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
41ea7e7eb3a6a269f2bfed0bdc191ea046d18e5e 24-Nov-2008 Bill Wendling <isanbard@gmail.com> - Make lowering of "add with overflow" customizable by back-ends.
- Mark "add with overflow" as having a custom lowering for X86. Give it a null
lowering representation for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
4c134dfa957802f1851046aa972da1fc5cdba0b5 24-Nov-2008 Bill Wendling <isanbard@gmail.com> - Make lowering of "add with overflow" customizable by back-ends.
- Mark "add with overflow" as having a custom lowering for X86. Give it a null
lowering representation for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
942b8c853375ae6a3e84f4b0a70f6d4e194ea594 24-Nov-2008 Dan Gohman <gohman@apple.com> Check in the rest of this change. The isAntiDep flag needs to be passed
to removePred because an SUnit can both data-depend and anti-depend
on the same SUnit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
49366c29d2e7ea80a585757ef22dab7272a86a8c 24-Nov-2008 Dan Gohman <gohman@apple.com> Check in the rest of this change. The isAntiDep flag needs to be passed
to removePred because an SUnit can both data-depend and anti-depend
on the same SUnit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
974b5f53f70294d6fb586c7a47fee505b3eaf1ae 24-Nov-2008 Dan Gohman <gohman@apple.com> Pass the isAntiDep argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59968 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
08213c9e36fd472f85fce8d7935c39d5aaead88a 24-Nov-2008 Dan Gohman <gohman@apple.com> Pass the isAntiDep argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59968 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
cb72dd6776d49b21711977bde21b23c92cff7544 24-Nov-2008 Dan Gohman <gohman@apple.com> Run post-RA scheduling after branch folding, as it tends to
obscure tail-merging opportunities.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59967 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
579a7fb775b6ebe7ad8c61b06d48979c1e8062a4 24-Nov-2008 Dan Gohman <gohman@apple.com> Run post-RA scheduling after branch folding, as it tends to
obscure tail-merging opportunities.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59967 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
faa3d82a31f40fdd43779212d0d2d99c9103673d 24-Nov-2008 Matthijs Kooijman <matthijs@stdin.nl> Minor fix debug for register allocation debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59961 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
egAllocLocal.cpp
84d2b36fc220f8a83fe4b4803dd3732596892c08 24-Nov-2008 Matthijs Kooijman <matthijs@stdin.nl> Minor fix debug for register allocation debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59961 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
egAllocLocal.cpp
25cf2275ff7de3de3bc0e508abaf457413d74725 24-Nov-2008 Duncan Sands <baldrick@free.fr> If the type legalizer actually legalized anything
(this doesn't happen that often, since most code
does not use illegal types) then follow it by a
DAG combiner run that is allowed to generate
illegal operations but not illegal types. I didn't
modify the target combiner code to distinguish like
this between illegal operations and illegal types,
so it will not produce illegal operations as well
as not producing illegal types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59960 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAGISel.cpp
a3e2cd08d62cb0602413589986bcd6e94ea56ba3 24-Nov-2008 Duncan Sands <baldrick@free.fr> If the type legalizer actually legalized anything
(this doesn't happen that often, since most code
does not use illegal types) then follow it by a
DAG combiner run that is allowed to generate
illegal operations but not illegal types. I didn't
modify the target combiner code to distinguish like
this between illegal operations and illegal types,
so it will not produce illegal operations as well
as not producing illegal types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59960 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAGISel.cpp
24ac408ce891321d1a5d62beaf3487efce6f2b22 24-Nov-2008 Evan Cheng <evan.cheng@apple.com> Eliminate some unused variable compile time warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
cf576fd7d2bf5153fce9e451b1fcb1456a49c6bc 24-Nov-2008 Evan Cheng <evan.cheng@apple.com> Eliminate some unused variable compile time warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
def27392c1b4792f695b4eb681cd024ade4025bf 24-Nov-2008 Bill Wendling <isanbard@gmail.com> Add support for llvm.uadd.with.overflow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8062b078b526948d2f2879da7c2bd0921389120f 24-Nov-2008 Bill Wendling <isanbard@gmail.com> Add support for llvm.uadd.with.overflow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
03228089d5235f8c90477f88809139464e9c6ea5 23-Nov-2008 Duncan Sands <baldrick@free.fr> Rename SetCCResultContents to BooleanContents. In
practice these booleans are mostly produced by SetCC,
however the concept is more general.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59911 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
8cf4a828c81246eacf7ee4d0113356a32466505a 23-Nov-2008 Duncan Sands <baldrick@free.fr> Rename SetCCResultContents to BooleanContents. In
practice these booleans are mostly produced by SetCC,
however the concept is more general.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59911 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
6cce3dae900152203a51299e928d8ec738537d6a 23-Nov-2008 Mon P Wang <wangmp@apple.com> Added check to avoid generating extract subvector beyond the end of the vector when normalizing vector shuffles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
87d4dd5398ff67c742484837734fd87761d6f369 23-Nov-2008 Mon P Wang <wangmp@apple.com> Added check to avoid generating extract subvector beyond the end of the vector when normalizing vector shuffles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
7751ad92daeea5a3502fbc266ae814baec5c03e6 22-Nov-2008 Anton Korobeynikov <asl@math.spbu.ru> Make a convenient helper for printing offsets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59872 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
440f23db20a6c802d407e4f92a541648aaa6d492 22-Nov-2008 Anton Korobeynikov <asl@math.spbu.ru> Make a convenient helper for printing offsets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59872 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
253174bf50c932abaa680f465e2888c0e5272267 22-Nov-2008 Bill Wendling <isanbard@gmail.com> Cleanup of the [SU]ADDO type legalization code. Patch by Duncan!

"It simplifies the type legalization part a bit, and produces better code by
teaching SelectionDAG about the extra bits in an i8 SADDO/UADDO node. In
essence, I spontaneously decided that on x86 this i8 boolean result would be
either 0 or 1, and on other platforms 0/1 or 0/-1, depending on whether the
platform likes it's boolean zero extended or sign extended."


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59864 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
f8bb44039c56063c3e0bf6224f1abf20c844ad91 22-Nov-2008 Bill Wendling <isanbard@gmail.com> Cleanup of the [SU]ADDO type legalization code. Patch by Duncan!

"It simplifies the type legalization part a bit, and produces better code by
teaching SelectionDAG about the extra bits in an i8 SADDO/UADDO node. In
essence, I spontaneously decided that on x86 this i8 boolean result would be
either 0 or 1, and on other platforms 0/1 or 0/-1, depending on whether the
platform likes it's boolean zero extended or sign extended."


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59864 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
8ac0d4b4fb10406278cd600214cd3ee6d76620cd 22-Nov-2008 Bill Wendling <isanbard@gmail.com> - Move conversion of [SU]ADDO from DAG combiner into legalizer.
- Add "promote integer type" stuff to the legalizer for these nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59847 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
913dcf35c3b19eebc8f8fcd7733faf2e5cd4bc84 22-Nov-2008 Bill Wendling <isanbard@gmail.com> - Move conversion of [SU]ADDO from DAG combiner into legalizer.
- Add "promote integer type" stuff to the legalizer for these nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59847 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
59500c8f9a76b3386329b6f837255c16f4e8b61b 21-Nov-2008 Devang Patel <dpatel@apple.com> Silence unused variable warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59841 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
4354f5ca9aa1124613b68905b30b8815694abcb0 21-Nov-2008 Devang Patel <dpatel@apple.com> Silence unused variable warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59841 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
37d8b3193d6584356c2bfc53f0d44701ffd48f5e 21-Nov-2008 Dan Gohman <gohman@apple.com> Correctly set the isCtrl flag for chain dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59837 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
32bbe847b3767a74cdcef38aa7d8d336d2eca897 21-Nov-2008 Dan Gohman <gohman@apple.com> Correctly set the isCtrl flag for chain dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59837 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
fc626b62b877beec1cc3c0289eb794f28614e23f 21-Nov-2008 Dan Gohman <gohman@apple.com> Update comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59836 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
ab3b9a9194a9feb66dad3934d9bd74d5bda177c7 21-Nov-2008 Dan Gohman <gohman@apple.com> Update comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59836 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
3ebd0eeaeb94b7f607409408e3c25024db671b66 21-Nov-2008 Dan Gohman <gohman@apple.com> Update comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6e78031d9bec7d2b457dd4dd204126d35b3f9325 21-Nov-2008 Dan Gohman <gohman@apple.com> Update comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
824b958e6fb1236e92e4d07f3acf18fca107cdc0 21-Nov-2008 Chris Lattner <sabre@nondot.org> reapply Sanjiv's patch to genericize memcpy/memset/memmove to take an
arbitrary integer width for the count.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59823 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuild.cpp
82c2e4332a1578fce36412e997c4a563b3f66274 21-Nov-2008 Chris Lattner <sabre@nondot.org> reapply Sanjiv's patch to genericize memcpy/memset/memmove to take an
arbitrary integer width for the count.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59823 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuild.cpp
dc770929cb2f97397970e2942b746839fc387992 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Revert r59802. It was breaking the build of llvm-gcc:

g++ -m32 -c -g -DIN_GCC -W -Wall -Wwrite-strings -Wmissing-format-attribute -fno-common -mdynamic-no-pic -DHAVE_CONFIG_H -Wno-unused -DTARGET_NAME=\"i386-apple-darwin9.5.0\" -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include -DENABLE_LLVM -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/../llvm.src/include -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include ../../llvm-gcc.src/gcc/llvm-types.cpp -o llvm-types.o
../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemCpy(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)':
../../llvm-gcc.src/gcc/llvm-convert.cpp:1496: error: 'memcpy_i32' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp:1496: error: 'memcpy_i64' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemMove(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)':
../../llvm-gcc.src/gcc/llvm-convert.cpp:1512: error: 'memmove_i32' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp:1512: error: 'memmove_i64' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemSet(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)':
../../llvm-gcc.src/gcc/llvm-convert.cpp:1528: error: 'memset_i32' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp:1528: error: 'memset_i64' is not a member of 'llvm::Intrinsic'
make[3]: *** [llvm-convert.o] Error 1
make[3]: *** Waiting for unfinished jobs....
rm fsf-funding.pod gcov.pod gfdl.pod cpp.pod gpl.pod gcc.pod
make[2]: *** [all-stage1-gcc] Error 2
make[1]: *** [stage1-bubble] Error 2
make: *** [all] Error 2



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59809 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuild.cpp
39d5f588224111a18ad441069eb9ebef0ba2f8f9 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Revert r59802. It was breaking the build of llvm-gcc:

g++ -m32 -c -g -DIN_GCC -W -Wall -Wwrite-strings -Wmissing-format-attribute -fno-common -mdynamic-no-pic -DHAVE_CONFIG_H -Wno-unused -DTARGET_NAME=\"i386-apple-darwin9.5.0\" -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include -DENABLE_LLVM -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/../llvm.src/include -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include ../../llvm-gcc.src/gcc/llvm-types.cpp -o llvm-types.o
../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemCpy(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)':
../../llvm-gcc.src/gcc/llvm-convert.cpp:1496: error: 'memcpy_i32' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp:1496: error: 'memcpy_i64' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemMove(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)':
../../llvm-gcc.src/gcc/llvm-convert.cpp:1512: error: 'memmove_i32' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp:1512: error: 'memmove_i64' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemSet(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)':
../../llvm-gcc.src/gcc/llvm-convert.cpp:1528: error: 'memset_i32' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp:1528: error: 'memset_i64' is not a member of 'llvm::Intrinsic'
make[3]: *** [llvm-convert.o] Error 1
make[3]: *** Waiting for unfinished jobs....
rm fsf-funding.pod gcov.pod gfdl.pod cpp.pod gpl.pod gcc.pod
make[2]: *** [all-stage1-gcc] Error 2
make[1]: *** [stage1-bubble] Error 2
make: *** [all] Error 2



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59809 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuild.cpp
219ab405e6bea993da14cf3ce7b50983c3bb7a6f 21-Nov-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Make mem[cpy,move,set] intrinsics overloaded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59802 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuild.cpp
4198fefc601a27c2abf1da16cb6a0035e420548b 21-Nov-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Make mem[cpy,move,set] intrinsics overloaded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59802 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGBuild.cpp
137dccd5d86e0d0741f9560970f9b2952221d37c 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Default to converting UADDO to the generic form that SADDO is converted to.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59801 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f3ddc42182d77db19b085a1ad9590c65f654a0c2 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Default to converting UADDO to the generic form that SADDO is converted to.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59801 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
230e4faa198e4e44da2694777e412c02dd35003a 21-Nov-2008 Mon P Wang <wangmp@apple.com> Clean up normalization of shuffles


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59792 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
67227c25d7dd2a18397e136e15ead7e49d3fe27d 21-Nov-2008 Mon P Wang <wangmp@apple.com> Clean up normalization of shuffles


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59792 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ef37546f688696b1d616dc2adb63d1b372fa483d 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Combine the two add with overflow intrinsics lowerings. They differ only in DAG node type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59788 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
9560f98ded31ac238ed1b77d50a58da51bec1543 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Combine the two add with overflow intrinsics lowerings. They differ only in DAG node type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59788 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f6b7a47d5d6e2703591b95b10b2c5be5b5fd09cd 21-Nov-2008 Dan Gohman <gohman@apple.com> Set the isAntiDep flag in the MachineInstr scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59787 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
acd51f80518ec77daa11d058f75303fea4fe5c49 21-Nov-2008 Dan Gohman <gohman@apple.com> Set the isAntiDep flag in the MachineInstr scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59787 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
da4948ac8cbc307739e353e64c19a935de1e0230 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Generate code for llvm.uadd.with.overflow intrinsic. No conversion support yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
9ed957e4fea842dc9502aafe8b0f6ed0e9763c84 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Generate code for llvm.uadd.with.overflow intrinsic. No conversion support yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
cddd428459a66830b0d072823f94224ace58e625 21-Nov-2008 Dan Gohman <gohman@apple.com> Add a flag to SDep for tracking which edges are anti-dependence edges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59785 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
5ecb81db050cd96bec80f92832557d33bf7c7a9d 21-Nov-2008 Dan Gohman <gohman@apple.com> Add a flag to SDep for tracking which edges are anti-dependence edges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59785 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
6c63f62729fbd7cdf66f96ad52ea1bba62851311 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Remove chains. Unnecessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59783 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGBuild.cpp
517abf0ad2611e9d459b77ce8fd3a746dc382866 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Remove chains. Unnecessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59783 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGBuild.cpp
98adea11496400c8385b774b4d9f9acd4c99d254 21-Nov-2008 Dan Gohman <gohman@apple.com> Rename SDep's isSpecial to isArtificial, to make this field a little
less mysterious.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59782 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
cheduleDAGPrinter.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
ff8009f3058136e9ec00ba8f4210a220a41b8f7e 21-Nov-2008 Dan Gohman <gohman@apple.com> Rename SDep's isSpecial to isArtificial, to make this field a little
less mysterious.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59782 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
cheduleDAGPrinter.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
1c55a9c0cc355ad72c55ae7665143b9a992d223b 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Rename "ADDO" to "SADDO" and "UADDO". The "UADDO" isn't equivalent to "ADDC"
because the boolean it returns to indicate an overflow may not be treated like
as a flag. It could be stored to memory, for instance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59780 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
ea8b7c926c5bb387c57459546e0128688df6492b 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Rename "ADDO" to "SADDO" and "UADDO". The "UADDO" isn't equivalent to "ADDC"
because the boolean it returns to indicate an overflow may not be treated like
as a flag. It could be stored to memory, for instance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59780 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
7cdc3c8ad208d9655be542fc8b082c4457af4b6e 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Implement the sadd_with_overflow intrinsic. This is converted into
"ISD::ADDO". ISD::ADDO is lowered into a target-independent form that does the
addition and then checks if the result is less than one of the operands. (If it
is, then there was an overflow.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
5fc7e5c28a72511a17e5f84ef2b6327b8b8862e0 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Implement the sadd_with_overflow intrinsic. This is converted into
"ISD::ADDO". ISD::ADDO is lowered into a target-independent form that does the
addition and then checks if the result is less than one of the operands. (If it
is, then there was an overflow.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
787782f4ca0cca2523825131c24a6f78535a3eb8 21-Nov-2008 Dan Gohman <gohman@apple.com> Use ComputeLatency in the MachineInstr scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59777 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
13f4a6423bb0ec3af4f7a629d7e6f743c2fb9c84 21-Nov-2008 Dan Gohman <gohman@apple.com> Use ComputeLatency in the MachineInstr scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59777 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
f209c2cc301ed762e4314536137832ee26e65be0 21-Nov-2008 Dan Gohman <gohman@apple.com> Remove the CycleBound computation code from the ScheduleDAGRRList
schedulers. This doesn't have much immediate impact because
targets that use these schedulers by default don't yet provide
pipeline information.

This code also didn't have the benefit of register pressure
information. Also, removing it will avoid problems with list-burr
suddenly starting to do latency-oriented scheduling on x86 when we
start providing pipeline data, which would increase spilling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59775 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
2add045e2b2677b16aed4a78826a3fb2bdabc034 21-Nov-2008 Dan Gohman <gohman@apple.com> Remove the CycleBound computation code from the ScheduleDAGRRList
schedulers. This doesn't have much immediate impact because
targets that use these schedulers by default don't yet provide
pipeline information.

This code also didn't have the benefit of register pressure
information. Also, removing it will avoid problems with list-burr
suddenly starting to do latency-oriented scheduling on x86 when we
start providing pipeline data, which would increase spilling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59775 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
c8c2827993204207ca70a93f62f233fbe81b97ef 21-Nov-2008 Dan Gohman <gohman@apple.com> Implement ComputeLatency for MachineInstr ScheduleDAGs. Factor
some of the latency computation logic out of the SDNode
ScheduleDAG code into a TargetInstrItineraries helper method
to help with this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59761 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
8efc97bd7218f3e440491f52adfcc78f206eee78 21-Nov-2008 Dan Gohman <gohman@apple.com> Implement ComputeLatency for MachineInstr ScheduleDAGs. Factor
some of the latency computation logic out of the SDNode
ScheduleDAG code into a TargetInstrItineraries helper method
to help with this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59761 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
electionDAG/ScheduleDAGSDNodes.cpp
ea7b527aa56ad0fe547d3d99b21e845a49a031cb 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Add UADDO and SADDO nodes. These will be used for determining an overflow
condition in an addition operation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59760 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
691d9faf0ffe98a1d884af2bc78595ecbf70b987 21-Nov-2008 Bill Wendling <isanbard@gmail.com> Add UADDO and SADDO nodes. These will be used for determining an overflow
condition in an addition operation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59760 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
47d1a214a7013d12140a0c4972d7ba761150dfd4 21-Nov-2008 Dan Gohman <gohman@apple.com> Change these schedulers to not emit no-ops. It turns out that
the RR scheduler actually does look at latency values, but it
doesn't use a hazard recognizer so it has no way to know when
a no-op is needed, as opposed to just stalling and incrementing
the cycle count.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59759 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
55aef3bcfc7dd2c0c192554ab4f162bae750e689 21-Nov-2008 Dan Gohman <gohman@apple.com> Change these schedulers to not emit no-ops. It turns out that
the RR scheduler actually does look at latency values, but it
doesn't use a hazard recognizer so it has no way to know when
a no-op is needed, as opposed to just stalling and incrementing
the cycle count.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59759 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
8eaf41de8adb764b16712485a385afab8b83f1ca 20-Nov-2008 Dan Gohman <gohman@apple.com> Treat mid-block labels the same as terminators when building the
MachineInstr scheduling DAG, meaning they implicitly depend on all
preceding defs. This fixes Benchmarks/Shootout-C++/except and
Regression/C++/EH/simple_rethrow in
-relocation-model=pic -disable-post-RA-scheduler=false
mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59747 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
5e955193ce86a512a0a40d4250d8e80b44ffbeb8 20-Nov-2008 Dan Gohman <gohman@apple.com> Treat mid-block labels the same as terminators when building the
MachineInstr scheduling DAG, meaning they implicitly depend on all
preceding defs. This fixes Benchmarks/Shootout-C++/except and
Regression/C++/EH/simple_rethrow in
-relocation-model=pic -disable-post-RA-scheduler=false
mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59747 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAGInstrs.cpp
5ce0973f7f4d149f986d16d1a1f79b131fd70423 20-Nov-2008 Dan Gohman <gohman@apple.com> Add another machine-code printing pass when post-pass scheduling is run.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59746 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
a2fa48eadd44933a5f9f25a7cd5f850093b8de5a 20-Nov-2008 Dan Gohman <gohman@apple.com> Add another machine-code printing pass when post-pass scheduling is run.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59746 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
810260bf6b4af4c676705d77f0a96c22986610fb 20-Nov-2008 Duncan Sands <baldrick@free.fr> Add some documentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
7c9b011b53653f6bd85f7bbc2b61d5f48de3edb8 20-Nov-2008 Duncan Sands <baldrick@free.fr> Add some documentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
f0a2d0cb8f08f951731840d604c121ca662a0326 20-Nov-2008 Bill Wendling <isanbard@gmail.com> 80-column violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59718 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
90e1e4f3d589712176a62f2abcea1038d0aa7d3b 20-Nov-2008 Bill Wendling <isanbard@gmail.com> 80-column violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59718 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
57bebbbd1229040ad659ef4671a34e8d1d78a6f6 20-Nov-2008 Dan Gohman <gohman@apple.com> Remove a remnant of list-burr's fast mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59702 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
7c8372f400dfdd296e3079b19c06de6a4ad106c0 20-Nov-2008 Dan Gohman <gohman@apple.com> Remove a remnant of list-burr's fast mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59702 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
117f3e9ee426ab7eb120b5ca1b65763baae2a824 20-Nov-2008 Dan Gohman <gohman@apple.com> Factor out the SethiUllman numbering logic from the list-burr and
list-tdrr schedulers into a common base class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
17f00d561262d69eb834064eb42d19ae4c3c9606 20-Nov-2008 Dan Gohman <gohman@apple.com> Factor out the SethiUllman numbering logic from the list-burr and
list-tdrr schedulers into a common base class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
9e76fea3abd4229749e6ead46a0016cabff4a056 20-Nov-2008 Dan Gohman <gohman@apple.com> Remove the "fast" form of the list-burr scheduler, and use the
dedicated "fast" scheduler in -fast mode instead, which is
faster. This speeds up llc -fast by a few percent on some
testcases -- the speedup only happens for code not handled by
fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59700 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
09ab1d709c03bd7f363e5493e2e060e50a51e095 20-Nov-2008 Dan Gohman <gohman@apple.com> Remove the "fast" form of the list-burr scheduler, and use the
dedicated "fast" scheduler in -fast mode instead, which is
faster. This speeds up llc -fast by a few percent on some
testcases -- the speedup only happens for code not handled by
fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59700 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
6be2ee431f44e3eb4d87bb3779a7e97a766c7a3e 20-Nov-2008 Dan Gohman <gohman@apple.com> Facter AddPseudoTwoAddrDeps and associated infrasructure out of
the list-burr scheduler so that it can be used by the list-tdrr
scheduler too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59698 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
e456fda49f1f3fb31adca38444d2e046e9905e4c 20-Nov-2008 Dan Gohman <gohman@apple.com> Facter AddPseudoTwoAddrDeps and associated infrasructure out of
the list-burr scheduler so that it can be used by the list-tdrr
scheduler too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59698 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d37c13cfd1bf4b08d0b99d93c799a1caa74cf3c6 20-Nov-2008 Evan Cheng <evan.cheng@apple.com> - Register scavenger should use MachineRegisterInfo and internal map to find the first use of a register after a given machine instruction.
- When scavenging a register, in addition to the spill, insert a restore before the first use.
- Abort if client is looking to scavenge a register even when a previously scavenged register is still live.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59697 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
0ac7045af5e8a5b791f79df3a724d76f5886b434 20-Nov-2008 Evan Cheng <evan.cheng@apple.com> - Register scavenger should use MachineRegisterInfo and internal map to find the first use of a register after a given machine instruction.
- When scavenging a register, in addition to the spill, insert a restore before the first use.
- Abort if client is looking to scavenge a register even when a previously scavenged register is still live.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59697 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
40362067de30a493951e084ba59d9b4fb1654a20 20-Nov-2008 Dan Gohman <gohman@apple.com> Add #include <climits> to get the definition of INT_MAX.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59692 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
ae54818483f6bf256064956c24de57d72f33e3fe 20-Nov-2008 Dan Gohman <gohman@apple.com> Add #include <climits> to get the definition of INT_MAX.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59692 91177308-0d34-0410-b5e6-96231b3b80d8
cheduleDAG.cpp
a1e6d363e5efa9eb1a2e7ac21a0394c870bef5ad 20-Nov-2008 Dan Gohman <gohman@apple.com> Factor out the code for verifying the work of the scheduler,
extend it a bit, and make use of it in all schedulers, to
ensure consistent checking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59689 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
f6e4a00d09a642688ef0c02280a8e640cfff6788 20-Nov-2008 Dan Gohman <gohman@apple.com> Factor out the code for verifying the work of the scheduler,
extend it a bit, and make use of it in all schedulers, to
ensure consistent checking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59689 91177308-0d34-0410-b5e6-96231b3b80d8
ostRASchedulerList.cpp
cheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
cdb260de83e209cd97632343e03343da3629d59f 20-Nov-2008 Dan Gohman <gohman@apple.com> Simplify this code a little. In the fast scheduler, CreateNewSUnit
and CreateClone don't add any extra value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59679 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
78b29ae20cd026390c4e96177cbf52a335de42c8 20-Nov-2008 Dan Gohman <gohman@apple.com> Simplify this code a little. In the fast scheduler, CreateNewSUnit
and CreateClone don't add any extra value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59679 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
343f0c046702831a4a6aec951b6a297a23241a55 20-Nov-2008 Dan Gohman <gohman@apple.com> Experimental post-pass scheduling support. Post-pass scheduling
is currently off by default, and can be enabled with
-disable-post-RA-scheduler=false.

This doesn't have a significant impact on most code yet because it doesn't
yet do anything to address anti-dependencies and it doesn't attempt to
disambiguate memory references. Also, several popular targets
don't have pipeline descriptions yet.

The majority of the changes here are splitting the SelectionDAG-specific
code out of ScheduleDAG, so that ScheduleDAG can be moved to
libLLVMCodeGen.a. The interface between ScheduleDAG-using code and
the rest of the scheduling code is somewhat rough and will evolve.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59676 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
cheduleDAGPrinter.cpp
electionDAG/CMakeLists.txt
electionDAG/LatencyPriorityQueue.cpp
electionDAG/LatencyPriorityQueue.h
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
d27a0e058661cece449251fef2f9d495f336e85f 20-Nov-2008 Dan Gohman <gohman@apple.com> Experimental post-pass scheduling support. Post-pass scheduling
is currently off by default, and can be enabled with
-disable-post-RA-scheduler=false.

This doesn't have a significant impact on most code yet because it doesn't
yet do anything to address anti-dependencies and it doesn't attempt to
disambiguate memory references. Also, several popular targets
don't have pipeline descriptions yet.

The majority of the changes here are splitting the SelectionDAG-specific
code out of ScheduleDAG, so that ScheduleDAG can be moved to
libLLVMCodeGen.a. The interface between ScheduleDAG-using code and
the rest of the scheduling code is somewhat rough and will evolve.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59676 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
atencyPriorityQueue.cpp
ostRASchedulerList.cpp
cheduleDAG.cpp
cheduleDAGEmit.cpp
cheduleDAGInstrs.cpp
cheduleDAGPrinter.cpp
electionDAG/CMakeLists.txt
electionDAG/LatencyPriorityQueue.cpp
electionDAG/LatencyPriorityQueue.h
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSDNodes.cpp
electionDAG/ScheduleDAGSDNodesEmit.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
7d1cd3f21d68179f4ebf4ee18fb7a0ddca9c5a37 19-Nov-2008 Dan Gohman <gohman@apple.com> Move the code for printing a graph node label for an SUnit into
a virtual method of SelectionDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
d717710fc40e446d71ae2b4ca08ff7c9919f8398 19-Nov-2008 Dan Gohman <gohman@apple.com> Move the code for printing a graph node label for an SUnit into
a virtual method of SelectionDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
252ae9e8ae4efaf1f67a608ad2563323308bd803 19-Nov-2008 Dan Gohman <gohman@apple.com> Convert SUnit's dump method into a print method and implement
dump in terms of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59665 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
60e43791bf4e8721be3ef00f19cb8499b0df2bc0 19-Nov-2008 Dan Gohman <gohman@apple.com> Convert SUnit's dump method into a print method and implement
dump in terms of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59665 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
3713c0ba62113419a5c57ec3e5d034d1dd581b55 19-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix compilation error on MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59629 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
902679693f33bf771f2665aa71e99c121e28632b 19-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Fix compilation error on MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59629 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
75fa96bb7127f5797873cb7482ecdf6b82eeef5a 19-Nov-2008 Owen Anderson <resistor@mac.com> Add support for rematerialization in pre-alloc-splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59587 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
f10e9510577101a19f0c358971df885c13122a41 19-Nov-2008 Owen Anderson <resistor@mac.com> Add support for rematerialization in pre-alloc-splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59587 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
c2f9062ea4915ae034417eaeead3c5942921f24d 19-Nov-2008 Dan Gohman <gohman@apple.com> Rearrange code to reduce the nesting level. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59580 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
4720765e5f77e7a710d79f2aad160f01517ce5f6 19-Nov-2008 Dan Gohman <gohman@apple.com> Rearrange code to reduce the nesting level. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59580 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
06da2bc19f4bace18e7b6ea5a8a5cdf124938928 19-Nov-2008 Dan Gohman <gohman@apple.com> Fix debug printing of flagged SDNodes in SUnits so that they
print in the correct order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59567 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
a52aeb9b57a80a2dc75c596dc03fd4e482dffcf3 19-Nov-2008 Dan Gohman <gohman@apple.com> Fix debug printing of flagged SDNodes in SUnits so that they
print in the correct order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59567 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
3a5b020292408421e2605cb15a4741062f2c74b6 19-Nov-2008 Evan Cheng <evan.cheng@apple.com> Make the same change to RegScavenger::backward.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59566 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
74ec8e93f81402650fcb1ca1873dee98430e8a21 19-Nov-2008 Evan Cheng <evan.cheng@apple.com> Make the same change to RegScavenger::backward.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59566 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
63a431c6704e711713b0258bd987cfb257767cf4 18-Nov-2008 Evan Cheng <evan.cheng@apple.com> We also need to keep the operand index for two address check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59562 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
17683376deb6a9169d778f96780dcd175f1b04ec 18-Nov-2008 Evan Cheng <evan.cheng@apple.com> We also need to keep the operand index for two address check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59562 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
9c64bf3905ea338719800008c03d95a17cb26689 18-Nov-2008 Evan Cheng <evan.cheng@apple.com> Register scavenger should process early clobber defs first. A dead early clobber def should not interfere with a normal def which happens one slot later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59559 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
9f17d33c9030dcbfafb202ed14b1a5ab514e45c9 18-Nov-2008 Evan Cheng <evan.cheng@apple.com> Register scavenger should process early clobber defs first. A dead early clobber def should not interfere with a normal def which happens one slot later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59559 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
1256f5fe769ab2cced36abf2cbf9e1f63f22282d 18-Nov-2008 Dan Gohman <gohman@apple.com> Tidy up ScheduleNodeBottomUp methods, and make them more
consistent with ScheduleNodeTopDown methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59550 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
9feca8e2b5db5352038aa79e532ae5888ddfa613 18-Nov-2008 Dan Gohman <gohman@apple.com> Tidy up ScheduleNodeBottomUp methods, and make them more
consistent with ScheduleNodeTopDown methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59550 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
0454e8685fa4ca75c710dad7203dc137e551a2c1 18-Nov-2008 Dan Gohman <gohman@apple.com> Update a comment to reflect the current code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59549 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
bcb0ccb5ccde98258fb4fb7918b24a73b94bb3c2 18-Nov-2008 Dan Gohman <gohman@apple.com> Update a comment to reflect the current code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59549 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
9a6b92de4c2207b427f3b9cd67cd122dafc5b6c6 18-Nov-2008 Duncan Sands <baldrick@free.fr> Remove integer promotion support for FP_EXTEND
and FP_ROUND. Not sure what these were doing
here - probably they were sometimes (wrongly)
created with integer operands somewhere that
has since been fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
3cdbc5860009bcd708a63d80bbf8168ec23660de 18-Nov-2008 Duncan Sands <baldrick@free.fr> Remove integer promotion support for FP_EXTEND
and FP_ROUND. Not sure what these were doing
here - probably they were sometimes (wrongly)
created with integer operands somewhere that
has since been fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
c08468774b65dc288c44076d428f4beddabe58e2 18-Nov-2008 Duncan Sands <baldrick@free.fr> Simplify code using helper routines. There is not
supposed to be any functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
d41e4e09f1b48f56f9e0727c36dd1307e512a20d 18-Nov-2008 Duncan Sands <baldrick@free.fr> Simplify code using helper routines. There is not
supposed to be any functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
5a92d4e657f90b63e6a1a94fe3909533e89c5357 18-Nov-2008 Owen Anderson <resistor@mac.com> Fix a bug introduced by my previous patch. With this change, SPEC is now clean with prealloc splitting enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59544 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
9afa28d823f360da8d0ee23fac99b066716ef817 18-Nov-2008 Owen Anderson <resistor@mac.com> Fix a bug introduced by my previous patch. With this change, SPEC is now clean with prealloc splitting enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59544 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
cbad42cfd1cc93a41ff26ea2e8895bfbc09f54f2 18-Nov-2008 Dan Gohman <gohman@apple.com> Add more const qualifiers. This fixes build breakage from r59540.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59542 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
90feee242584d367473331a187a50bb8490d201b 18-Nov-2008 Dan Gohman <gohman@apple.com> Add more const qualifiers. This fixes build breakage from r59540.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59542 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b3b930a011554fc7566dd4311af3862b01e5fd8f 18-Nov-2008 Dan Gohman <gohman@apple.com> Make some methods const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59540 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9ca19a388bc5dc39525daa039cb314642c005698 18-Nov-2008 Dan Gohman <gohman@apple.com> Make some methods const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59540 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
3dbc4e350216e197e3014452400f43899f7ad620 18-Nov-2008 Dan Gohman <gohman@apple.com> Whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59532 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LatencyPriorityQueue.h
c0612a24ef151b42f850b18cebf4e5621470a255 18-Nov-2008 Dan Gohman <gohman@apple.com> Whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59532 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LatencyPriorityQueue.h
331a746101aff2199c19e5a7407a5ca6a4bbdafa 18-Nov-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for splitting and scalarizing
SCALAR_TO_VECTOR. I didn't add the testcase, because
once llc gets past scalar-to-vector it hits a SPU target
lowering bug and explodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59530 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
7aa3387207ff7874d7ff5fc26779d496272aea49 18-Nov-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for splitting and scalarizing
SCALAR_TO_VECTOR. I didn't add the testcase, because
once llc gets past scalar-to-vector it hits a SPU target
lowering bug and explodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59530 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
5734450d40fe5546eb98c0d856d73c3321eaf5d2 18-Nov-2008 Bill Wendling <isanbard@gmail.com> Rename stackprotector_create intrinsic to stackprotector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59519 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
0ac3670760f18a9fd67625034635737f23aa5d6d 18-Nov-2008 Bill Wendling <isanbard@gmail.com> Rename stackprotector_create intrinsic to stackprotector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59519 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
51d83fdd89e6e942a4e6932cd5d02b427d2aa5aa 18-Nov-2008 Duncan Sands <baldrick@free.fr> Reapply r59464, this time using the correct type
when softening FNEG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59513 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
6b9dc0ae60d25bf60e39a88cea20b1006d2008b6 18-Nov-2008 Duncan Sands <baldrick@free.fr> Reapply r59464, this time using the correct type
when softening FNEG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59513 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
733bbc5320ac9d729caa8c0fe741dd516e7eda0b 18-Nov-2008 Bill Wendling <isanbard@gmail.com> Remove the stackprotector_check intrinsic. Use a volatile load instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59504 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
34dfafce746dc8fb8ba8d1f5ed375f46139e731f 18-Nov-2008 Bill Wendling <isanbard@gmail.com> Remove the stackprotector_check intrinsic. Use a volatile load instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59504 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
c3348a77f7e1bdc8e52a9f70fd190555df34d7c1 18-Nov-2008 Bill Wendling <isanbard@gmail.com> - Use "moveAfter" instead of "remove/insert" of a basic block.
- Use less indentation in coding.
- Shorten description.
- Update comments.
- Move code around


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59496 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
0522515907f66397c30c0a5e0aef1b556cceba47 18-Nov-2008 Bill Wendling <isanbard@gmail.com> - Use "moveAfter" instead of "remove/insert" of a basic block.
- Use less indentation in coding.
- Shorten description.
- Update comments.
- Move code around


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59496 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
6c2fe2237bf21aa4bfe05ba3135d82e66235e97d 18-Nov-2008 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
e94e982a8a25092c12c3586137773da42401fc3d 18-Nov-2008 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
3cc6243ddfdba3ad64035b919c88b09773a60880 18-Nov-2008 Dan Gohman <gohman@apple.com> Change SUnit's dump method to take a ScheduleDAG* instead of
a SelectionDAG*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59488 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
2fd868d4af7961de2286df299442278c8e82408f 18-Nov-2008 Dan Gohman <gohman@apple.com> Change SUnit's dump method to take a ScheduleDAG* instead of
a SelectionDAG*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59488 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
8f55b3d67d685214aef7ff6c9d514d0461703caf 18-Nov-2008 Bill Wendling <isanbard@gmail.com> Revert r59464. It was causing this failure:

Running /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/XCore/dg.exp ...
FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/XCore/fneg.ll
Failed with signal(SIGABRT) at line 1
while running: llvm-as < /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/XCore/fneg.ll | llc -march=xcore > fneg.ll.tmp1.s
Assertion failed: (VT.isFloatingPoint() && "Cannot create integer FP constant!"), function getConstantFP, file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/lib/CodeGen/SelectionDAG/SelectionDAG.cpp, line 913.
0 llc 0x0092115c _ZN4llvm3sys18RemoveFileOnSignalERKNS0_4PathEPSs + 844
1 libSystem.B.dylib 0x9217809b _sigtramp + 43
2 ??? 0xffffffff 0x0 + 4294967295
3 libSystem.B.dylib 0x921f0ec2 raise + 26
4 libSystem.B.dylib 0x9220047f abort + 73
5 libSystem.B.dylib 0x921f2063 __assert_rtn + 101
6 llc 0x005a5b0a _ZN4llvm12SelectionDAG13getConmake[1]: *** [check-local] Error 1
make: *** [check] Error 2



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59487 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
356678083b2402dc12420b71dc7f523a62e4bc20 18-Nov-2008 Bill Wendling <isanbard@gmail.com> Revert r59464. It was causing this failure:

Running /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/XCore/dg.exp ...
FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/XCore/fneg.ll
Failed with signal(SIGABRT) at line 1
while running: llvm-as < /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/XCore/fneg.ll | llc -march=xcore > fneg.ll.tmp1.s
Assertion failed: (VT.isFloatingPoint() && "Cannot create integer FP constant!"), function getConstantFP, file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/lib/CodeGen/SelectionDAG/SelectionDAG.cpp, line 913.
0 llc 0x0092115c _ZN4llvm3sys18RemoveFileOnSignalERKNS0_4PathEPSs + 844
1 libSystem.B.dylib 0x9217809b _sigtramp + 43
2 ??? 0xffffffff 0x0 + 4294967295
3 libSystem.B.dylib 0x921f0ec2 raise + 26
4 libSystem.B.dylib 0x9220047f abort + 73
5 libSystem.B.dylib 0x921f2063 __assert_rtn + 101
6 llc 0x005a5b0a _ZN4llvm12SelectionDAG13getConmake[1]: *** [check-local] Error 1
make: *** [check] Error 2



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59487 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
2d093f356007979e2e071725a98894a36c3625e0 18-Nov-2008 Dan Gohman <gohman@apple.com> Avoid using a loop in ReleasePred and ReleaseSucc methods to compute the
new CycleBound value. Instead, just update CycleBound on each call.
Also, make ReleasePred and ReleaseSucc methods more consistent accross
the various schedulers.

This also happens to make ScheduleDAGRRList's CycleBound computation
somewhat more interesting, though it still doesn't have any noticeable
effect, because no current targets that use the register-pressure
reduction scheduler provide pipeline models.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59475 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
d963c38f1cf5c43c5450d9f1786f7894c3dbd9af 18-Nov-2008 Dan Gohman <gohman@apple.com> Avoid using a loop in ReleasePred and ReleaseSucc methods to compute the
new CycleBound value. Instead, just update CycleBound on each call.
Also, make ReleasePred and ReleaseSucc methods more consistent accross
the various schedulers.

This also happens to make ScheduleDAGRRList's CycleBound computation
somewhat more interesting, though it still doesn't have any noticeable
effect, because no current targets that use the register-pressure
reduction scheduler provide pipeline models.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59475 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
8123419f2be881ca77a897918f28514aa4e91765 17-Nov-2008 Dan Gohman <gohman@apple.com> Eliminate some trivial differences between the ScheduleNodeTopDown
functions in these two schedulers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
ba3f99bfaef459685198bca01b645e61ca84a836 17-Nov-2008 Dan Gohman <gohman@apple.com> Eliminate some trivial differences between the ScheduleNodeTopDown
functions in these two schedulers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
7fed65a68d961eef21d4572beab64d047ece5a3e 17-Nov-2008 Duncan Sands <baldrick@free.fr> Add soft float support for a bunch more operations. Original
patch by Richard Osborne, tweaked and extended by your humble
servant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
ddc609406ad28403ba7b4ac8535ef87859145501 17-Nov-2008 Duncan Sands <baldrick@free.fr> Add soft float support for a bunch more operations. Original
patch by Richard Osborne, tweaked and extended by your humble
servant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
e93483d855af7acf831d1d8c3c77ed117f0df4d3 17-Nov-2008 Dan Gohman <gohman@apple.com> Don't bother doing latency calculations in the "fast" scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
f300f31bea5de295cbae6c6afe8063b1f8da7c9d 17-Nov-2008 Dan Gohman <gohman@apple.com> Don't bother doing latency calculations in the "fast" scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
2dcca9d53ec9359c554e05a38a7a5eed695b2a86 17-Nov-2008 Dan Gohman <gohman@apple.com> Use SUnit's CycleBound field instead of duplicating it in
a side-car datastructure


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59458 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
9a4f237b8edf129deefa26478f6b29f3da2ca40b 17-Nov-2008 Dan Gohman <gohman@apple.com> Use SUnit's CycleBound field instead of duplicating it in
a side-car datastructure


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59458 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
104de6cf7b80ec5e9beb502a069f376810a0a1e3 17-Nov-2008 Richard Osborne <richard@xmos.com> Don't produce ADDC/ADDE when expanding SHL unless they are legal
for the target. This fixes PR3080.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59450 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
33a8d20d065c549ab1d216c0cdfeece754a4cc57 17-Nov-2008 Richard Osborne <richard@xmos.com> Don't produce ADDC/ADDE when expanding SHL unless they are legal
for the target. This fixes PR3080.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59450 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
6560c000a1327b6a023badafed974f35fa1bdc3b 17-Nov-2008 Dan Gohman <gohman@apple.com> Don't use the isPending flag to mean what the isAvailable flag means.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59445 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LatencyPriorityQueue.cpp
electionDAG/ScheduleDAGList.cpp
54a7f8d5164423c97e4bfda0dd51afbd7120c3d3 17-Nov-2008 Dan Gohman <gohman@apple.com> Don't use the isPending flag to mean what the isAvailable flag means.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59445 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LatencyPriorityQueue.cpp
electionDAG/ScheduleDAGList.cpp
28088d3c049017a131aa7b07201c6e19c0227cef 17-Nov-2008 Mon P Wang <wangmp@apple.com> Fixed legalization of CONVERT_RNDSAT for integers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59432 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
59fc626007185115f2ea3bc3e604b63910312e4f 17-Nov-2008 Mon P Wang <wangmp@apple.com> Fixed legalization of CONVERT_RNDSAT for integers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59432 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
27601ef8325f85b9677b55e3e2ca1a1368d8eee5 16-Nov-2008 Lang Hames <lhames@gmail.com> Big PBQP allocator update. Adds coalescing support, stack slot coloring, several bug-fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59414 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
83313effa07b838ac778bf15e8da766e7fe180b1 16-Nov-2008 Lang Hames <lhames@gmail.com> Big PBQP allocator update. Adds coalescing support, stack slot coloring, several bug-fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59414 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
c7849c22f4804075c0c972e20f9cd701bdb6ab6f 16-Nov-2008 Mon P Wang <wangmp@apple.com> Improved shuffle normalization to avoid using extract/build when we
can extract using different indexes for two vectors. Added a few tests
for vector shuffles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
7bfa46437ed3f1fa19c4ec89a011ba5c8a3e048d 16-Nov-2008 Mon P Wang <wangmp@apple.com> Improved shuffle normalization to avoid using extract/build when we
can extract using different indexes for two vectors. Added a few tests
for vector shuffles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
c529168f29a9821806af8c7096fdcfbec06343d3 15-Nov-2008 Duncan Sands <baldrick@free.fr> When splitting a SHUFFLE_VECTOR, try to have the result
use SHUFFLE_VECTOR instead. If not practical, fall back
to the old scheme of building the split result by hand
using a BUILD_VECTOR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
76af8a318c4e011707034c9647690dc018bc7fd2 15-Nov-2008 Duncan Sands <baldrick@free.fr> When splitting a SHUFFLE_VECTOR, try to have the result
use SHUFFLE_VECTOR instead. If not practical, fall back
to the old scheme of building the split result by hand
using a BUILD_VECTOR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
49292f16517227196e0240190b61baaa8fc4aa62 15-Nov-2008 Mon P Wang <wangmp@apple.com> Add missing widen operations, fixed widening for extracting a subvector,
and when loading/storing a widen vector, make sure that they are loaded
and stored in consecutive order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
257e1c72f0cae882edcf0da18308e6ed3c03cbd4 15-Nov-2008 Mon P Wang <wangmp@apple.com> Add missing widen operations, fixed widening for extracting a subvector,
and when loading/storing a widen vector, make sure that they are loaded
and stored in consecutive order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
14ad6fce43e09f37020483f7e33b7dfdc770cb6b 15-Nov-2008 Dan Gohman <gohman@apple.com> Correct a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59341 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
b7b82269d64466b7c52cd4c88071884ba870e28b 15-Nov-2008 Dan Gohman <gohman@apple.com> Correct a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59341 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
ade9f1893412184c164aa3eb55a3e007ec647303 15-Nov-2008 Dan Gohman <gohman@apple.com> Move ScheduleDAGList's LatencyPriorityQueue class out to a separate file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
electionDAG/LatencyPriorityQueue.cpp
electionDAG/LatencyPriorityQueue.h
electionDAG/ScheduleDAGList.cpp
e008195076cbf3a50ecd36117affe2e5f39945bd 15-Nov-2008 Dan Gohman <gohman@apple.com> Move ScheduleDAGList's LatencyPriorityQueue class out to a separate file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CMakeLists.txt
electionDAG/LatencyPriorityQueue.cpp
electionDAG/LatencyPriorityQueue.h
electionDAG/ScheduleDAGList.cpp
7e6a1bc0fa35202ddfd2229821370d6061e3e1f9 14-Nov-2008 Dan Gohman <gohman@apple.com> Add support for building a ScheduleDAG from MachineInstrs. This is currently
fairly conservative; it doesn't do alias-analysis queries and it doesn't
attempt to break anti-dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59324 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
cd41458799dea8687a71c97f84cfd1a7223c5f70 14-Nov-2008 Dan Gohman <gohman@apple.com> Add support for building a ScheduleDAG from MachineInstrs. This is currently
fairly conservative; it doesn't do alias-analysis queries and it doesn't
attempt to break anti-dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59324 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
56c523c63b2b5d95ed61c79e1efe9de5465a7d25 14-Nov-2008 Lang Hames <lhames@gmail.com> Test commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59293 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
529bf4823231851460c3536d6fe33cf4879adbf4 14-Nov-2008 Lang Hames <lhames@gmail.com> Test commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59293 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocPBQP.cpp
8f6c6d4c5f7bb9ab71147c8215c3779a6bec7689 14-Nov-2008 Dan Gohman <gohman@apple.com> For post-regalloc scheduling, remove the instructions from the block
before re-inserting them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59281 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGEmit.cpp
f593de7686db23199053c9a4da1c2f0d33355ece 14-Nov-2008 Dan Gohman <gohman@apple.com> For post-regalloc scheduling, remove the instructions from the block
before re-inserting them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59281 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGEmit.cpp
90c5201dd1933d643f1e04503c21ad90c25738b4 14-Nov-2008 Dan Gohman <gohman@apple.com> Check in the correct version of the patch in r59279.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59280 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
2bb4062209644d6beb7d66ed265bd4415de28bd8 14-Nov-2008 Dan Gohman <gohman@apple.com> Check in the correct version of the patch in r59279.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59280 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
505a551dab05029d2c7b5dc65a879d35e03e17c1 14-Nov-2008 Dan Gohman <gohman@apple.com> Debug printing for SUnits that carry MachineInstrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
83f1371c48c0e2dc829f70e85ce925bb615570d8 14-Nov-2008 Dan Gohman <gohman@apple.com> Debug printing for SUnits that carry MachineInstrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
f449bf36ef5cb8e23fa2b5bc43f8d54d2b48fa4e 14-Nov-2008 Dan Gohman <gohman@apple.com> Initial support for carrying MachineInstrs in SUnits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59278 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAGPrinter.cpp
b807201d8b6f39491c447557e5da1e88af75c075 14-Nov-2008 Dan Gohman <gohman@apple.com> Initial support for carrying MachineInstrs in SUnits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59278 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAGPrinter.cpp
c3c129fd8b74909cad75d88223e9b5b4dc16df20 14-Nov-2008 Dan Gohman <gohman@apple.com> Change DOTGraphTraits<ScheduleDAG*>::getGraphName how to find the name of
the current function on its own, rather than relying on the SelectionDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59277 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
0c0d6b1d9541417e7144a85cd71f3da1eb8cd796 14-Nov-2008 Dan Gohman <gohman@apple.com> Change DOTGraphTraits<ScheduleDAG*>::getGraphName how to find the name of
the current function on its own, rather than relying on the SelectionDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59277 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
d23e0f81bc76902052e9198cad3a0d87a412a632 14-Nov-2008 Dan Gohman <gohman@apple.com> Remove the FlaggedNodes member from SUnit. Instead of requiring each SUnit
to carry a SmallVector of flagged nodes, just calculate the flagged nodes
dynamically when they are needed.

The local-liveness change is due to a trivial scheduling change where
the scheduler arbitrary decision differently.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGPrinter.cpp
40ae0f03c8becc9749d4339bfc7ff0b08a0202a1 14-Nov-2008 Dan Gohman <gohman@apple.com> Remove the FlaggedNodes member from SUnit. Instead of requiring each SUnit
to carry a SmallVector of flagged nodes, just calculate the flagged nodes
dynamically when they are needed.

The local-liveness change is due to a trivial scheduling change where
the scheduler arbitrary decision differently.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGPrinter.cpp
711fd3db2d3170263850d7ee55987ac1fb9006f3 13-Nov-2008 Owen Anderson <resistor@mac.com> Don't allow the restore point to be placed after terminators. With this change,
MultiSource/Applications is clean with the prealloc splitter. Some failures
remain in SPEC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59267 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
94a984c4c63fab2397cbfdcb1362712ab99da3e2 13-Nov-2008 Owen Anderson <resistor@mac.com> Don't allow the restore point to be placed after terminators. With this change,
MultiSource/Applications is clean with the prealloc splitter. Some failures
remain in SPEC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59267 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
550f5afb68ce8f034991863cac65bef22a6554da 13-Nov-2008 Dan Gohman <gohman@apple.com> Make the Node member of SUnit private, and add accessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59264 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGPrinter.cpp
f26ca4b36cb9d3b9075048ab49c0eddd74724cd2 13-Nov-2008 Dan Gohman <gohman@apple.com> Make the Node member of SUnit private, and add accessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59264 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGPrinter.cpp
a23b3b803e3c65e84d6cadaa221de8b256cbe28d 13-Nov-2008 Dan Gohman <gohman@apple.com> Change ScheduleDAG's DAG member from a reference to a pointer, to prepare
for the possibility of scheduling without a SelectionDAG being present.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGPrinter.cpp
96c2ad2dc93bdf2cab99e51e8e274d9abaa95bd2 13-Nov-2008 Dan Gohman <gohman@apple.com> Change ScheduleDAG's DAG member from a reference to a pointer, to prepare
for the possibility of scheduling without a SelectionDAG being present.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGPrinter.cpp
4a829ecc54cdcb0192550639556a18728af5119c 13-Nov-2008 Dan Gohman <gohman@apple.com> Use find_first/find_next to iterate through all the set bits in a
BitVector, instead of manually testing each bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59246 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
a48b100da70c707c35ed54d92189ffb534e05803 13-Nov-2008 Dan Gohman <gohman@apple.com> Use find_first/find_next to iterate through all the set bits in a
BitVector, instead of manually testing each bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59246 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
e9e6bdf27fca46dc9eca2ebdf73e03747d1859ab 13-Nov-2008 Bill Wendling <isanbard@gmail.com> Implement stack protectors as function attributes: "ssp" and "sspreq".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59202 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackProtector.cpp
3e13ce508320205598ff9660eda7f44dc92fb99b 13-Nov-2008 Bill Wendling <isanbard@gmail.com> Implement stack protectors as function attributes: "ssp" and "sspreq".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59202 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackProtector.cpp
bc5cbb8be9d935240be5a57a8f37c5258a9d0563 12-Nov-2008 Dan Gohman <gohman@apple.com> Move the code that inserts X87 FP_REG_KILL instructions from a
special-purpose hook to a new pass. Also, add check to see if any
x87 virtual registers are used, to avoid doing any work in the
common case that no x87 code is needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59190 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fd6722c180d3a39e2fc4741b4c6cd074158cc321 12-Nov-2008 Dan Gohman <gohman@apple.com> Move the code that inserts X87 FP_REG_KILL instructions from a
special-purpose hook to a new pass. Also, add check to see if any
x87 virtual registers are used, to avoid doing any work in the
common case that no x87 code is needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59190 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7e298ed379d71c32d62cbfc6e8df8039b04ef895 12-Nov-2008 Dale Johannesen <dalej@apple.com> Fix unsigned char->ppcf128 conversion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
ba99fa891b25571a2bfa8b820dd85589cf8f5c50 12-Nov-2008 Dale Johannesen <dalej@apple.com> Fix unsigned char->ppcf128 conversion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
2d9716f7bfb701d4606a993765ea233116fe3a68 12-Nov-2008 Dan Gohman <gohman@apple.com> Do the LiveVariables update before printing the instruction in
the debug output, so that the updated liveness flags are
reflected in the debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59147 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4db58f9bfd0ef295ee31df13e54d095787a7276f 12-Nov-2008 Dan Gohman <gohman@apple.com> Do the LiveVariables update before printing the instruction in
the debug output, so that the updated liveness flags are
reflected in the debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59147 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4cbb3ca67d8b1ca5fee7793633de052a3b8f87b2 12-Nov-2008 Dan Gohman <gohman@apple.com> Remove some debugging code made redundant by the change to do
coalescing as a separate pass rather than inside of
LiveIntervalAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59146 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
eb4dc4ff7f47bfa7f94e62bf7e6a0a3b3024fd97 12-Nov-2008 Dan Gohman <gohman@apple.com> Remove some debugging code made redundant by the change to do
coalescing as a separate pass rather than inside of
LiveIntervalAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59146 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1e465a35c8cd3d2ddd5e1d15fca7ffd3a8dbb565 12-Nov-2008 Duncan Sands <baldrick@free.fr> Simplify SplitVecRes_EXTRACT_SUBVECTOR. This means
that it no longer handles non-power-of-two vectors.
However it previously only handled them sometimes,
depending on obscure numerical relationships between
the index and vector type. For example, for a vector
of length 6, it would succeed if and only if the
index was an even multiple of 6. I consider this
more confusing than useful.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
1b2cd3c0eb7f9c518c29fbd0e571ecb87571a0d1 12-Nov-2008 Duncan Sands <baldrick@free.fr> Simplify SplitVecRes_EXTRACT_SUBVECTOR. This means
that it no longer handles non-power-of-two vectors.
However it previously only handled them sometimes,
depending on obscure numerical relationships between
the index and vector type. For example, for a vector
of length 6, it would succeed if and only if the
index was an even multiple of 6. I consider this
more confusing than useful.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
245146b58a2188eb69bcb34fc2bdf57ebbcfb278 12-Nov-2008 Duncan Sands <baldrick@free.fr> Correct some thinkos in the expansion of ADD/SUB
when the target does not support ADDC/SUBC. This
fixes PR3044.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59120 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
26e41c00cf66e45c145e866370430d259cc52e96 12-Nov-2008 Duncan Sands <baldrick@free.fr> Correct some thinkos in the expansion of ADD/SUB
when the target does not support ADDC/SUBC. This
fixes PR3044.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59120 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
cbf7cf50ecc4730563fdbbd8d03269839b445f56 12-Nov-2008 Dale Johannesen <dalej@apple.com> Fix the testb optimization so x86 also bootstraps.
Reenable test.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59101 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
01954eb1dc5d1b4e2c100691f9513d838a87659b 12-Nov-2008 Dale Johannesen <dalej@apple.com> Fix the testb optimization so x86 also bootstraps.
Reenable test.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59101 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
80fe8737eb0c563d5d518434672a600492486d93 11-Nov-2008 Owen Anderson <resistor@mac.com> Don't walk into predecessors in which the vreg is not live when doing shrinkwrapping.
This lets several failing tests get farther along, but doesn't completely fix any of them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59086 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
5e0a40208f30c1bb49826169fc6e06fb0b21b5f7 11-Nov-2008 Owen Anderson <resistor@mac.com> Don't walk into predecessors in which the vreg is not live when doing shrinkwrapping.
This lets several failing tests get farther along, but doesn't completely fix any of them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59086 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
b13af2f2ec2fd8dc215136cf8783d70225b59f66 11-Nov-2008 Dan Gohman <gohman@apple.com> In ScheduleDAGRRList::CopyAndMoveSuccessors, create the SUnit for the load
before creating the SUnit for the operation that it was unfolded from. This
allows each SUnit to have all of its predecessor SUnits available at the time
it is created. I don't know yet if this will be absolutely required, but it
is a little tidier to do it this way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59083 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
a88910932c08ed26ce1c054c8904c3111d7f8105 11-Nov-2008 Dan Gohman <gohman@apple.com> In ScheduleDAGRRList::CopyAndMoveSuccessors, create the SUnit for the load
before creating the SUnit for the operation that it was unfolded from. This
allows each SUnit to have all of its predecessor SUnits available at the time
it is created. I don't know yet if this will be absolutely required, but it
is a little tidier to do it this way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59083 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
eb9dbf117f1cc4da9b333dd6e410638ddd974f55 11-Nov-2008 Dan Gohman <gohman@apple.com> Avoid relying on the SelectionDAG for initializing the MachineFunction and
TargetLoweringInfo variables for the scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59082 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
fa6039013b0a8e2b7be3f3ab4ef82d2b9f8cb136 11-Nov-2008 Dan Gohman <gohman@apple.com> Avoid relying on the SelectionDAG for initializing the MachineFunction and
TargetLoweringInfo variables for the scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59082 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
9b75b373756288cd39489da7994207f50b31ee40 11-Nov-2008 Dan Gohman <gohman@apple.com> Change the scheduler accessor methods to accept an explicit TargetMachine
argument instead of taking the SelectionDAG's TargetMachine. This is
needed for some upcoming scheduler changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59055 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
3ea46f79f1b84ea4962432e0e9d11c6b6f8b0281 11-Nov-2008 Dan Gohman <gohman@apple.com> Change the scheduler accessor methods to accept an explicit TargetMachine
argument instead of taking the SelectionDAG's TargetMachine. This is
needed for some upcoming scheduler changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59055 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
ae89bb14431c6df4f784ae1af7019e72ec79b3ca 11-Nov-2008 Bill Wendling <isanbard@gmail.com> Fix for PR3040:

The CC was changed, but wasn't checked to see if it was legal if the DAG
combiner was being run after legalization. Threw in a couple of checks just to
make sure that it's okay. As far as the PR is concerned, no back-end target
actually exhibited this problem, so there isn't an associated testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59035 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0d810b851101882da0f7fe85a1e6604875ba51a7 11-Nov-2008 Bill Wendling <isanbard@gmail.com> Fix for PR3040:

The CC was changed, but wasn't checked to see if it was legal if the DAG
combiner was being run after legalization. Threw in a couple of checks just to
make sure that it's okay. As far as the PR is concerned, no back-end target
actually exhibited this problem, so there isn't an associated testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59035 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
00ec49b6bafc33ee17d97ec1c723e1edb41d4c97 11-Nov-2008 Mon P Wang <wangmp@apple.com> Cleaned up and fix bugs in convert_rndsat node


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59025 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
2db81e0008fac6b3e715de44ed2cdd7e05cf97ed 11-Nov-2008 Mon P Wang <wangmp@apple.com> Cleaned up and fix bugs in convert_rndsat node


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59025 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
22511ed2feeea786dba9fb5a07c0e6431dec0e32 11-Nov-2008 Bill Wendling <isanbard@gmail.com> Small simplification. Use the iterator already present as the insertion point.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59008 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
1b32875b6a3f8959c2875b9c0e6d5fd27fc45037 11-Nov-2008 Bill Wendling <isanbard@gmail.com> Small simplification. Use the iterator already present as the insertion point.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59008 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
d0ab34bf8feb7633b70158b571425577670b6326 10-Nov-2008 Bill Wendling <isanbard@gmail.com> Temporarily revert r58979 and related patch. It's causing a failure in X86 bootstrap:

Comparing stages 2 and 3
warning: ./cc1-checksum.o differs
warning: ./cc1obj-checksum.o differs
warning: ./cc1objplus-checksum.o differs
warning: ./cc1plus-checksum.o differs
Bootstrap comparison failure!
./alias.o differs
./alloc-pool.o differs
./attribs.o differs
./bb-reorder.o differs
./bitmap.o differs
./build/errors.o differs
./build/genattrtab.o differs
./build/genautomata.o differs
./build/genemit.o differs
./build/genextract.o differs
...

-bw


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59003 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e3facb7e72c6de38ed4695ce9265e8429dd5b471 10-Nov-2008 Bill Wendling <isanbard@gmail.com> Temporarily revert r58979 and related patch. It's causing a failure in X86 bootstrap:

Comparing stages 2 and 3
warning: ./cc1-checksum.o differs
warning: ./cc1obj-checksum.o differs
warning: ./cc1objplus-checksum.o differs
warning: ./cc1plus-checksum.o differs
Bootstrap comparison failure!
./alias.o differs
./alloc-pool.o differs
./attribs.o differs
./bb-reorder.o differs
./bitmap.o differs
./build/errors.o differs
./build/genattrtab.o differs
./build/genautomata.o differs
./build/genemit.o differs
./build/genextract.o differs
...

-bw


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59003 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7205677a46d02867004826218942dab3b466c926 10-Nov-2008 Bill Wendling <isanbard@gmail.com> - Make sure that we don't over-increment the iterator when going through the
basic blocks.
- Minor code clean-up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59002 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
a91e782e2ecd238b105d1ec407f483711f196571 10-Nov-2008 Bill Wendling <isanbard@gmail.com> - Make sure that we don't over-increment the iterator when going through the
basic blocks.
- Minor code clean-up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59002 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
77cdf30742284a173fe818417eb482224cdee8d4 10-Nov-2008 Mon P Wang <wangmp@apple.com> Added CONVERT_RNDSAT (conversion with rounding and saturation) SDNode to
support targets that support these conversions. Users should avoid using
this node as the current targets don't generating code for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
73d315484a82788131218d90af6d32b156a39bff 10-Nov-2008 Mon P Wang <wangmp@apple.com> Added CONVERT_RNDSAT (conversion with rounding and saturation) SDNode to
support targets that support these conversions. Users should avoid using
this node as the current targets don't generating code for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
f5092245102297e91656e0e471778f0875a8bc66 10-Nov-2008 Duncan Sands <baldrick@free.fr> Fix PR2667: add soft float support for sint_to_fp/uint_to_fp
where the argument is an apint, or smaller than the minimum
size for which there is a libcall (i32).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
781c1022125e777ed05420efad4fd997ecedcd9a 10-Nov-2008 Duncan Sands <baldrick@free.fr> Fix PR2667: add soft float support for sint_to_fp/uint_to_fp
where the argument is an apint, or smaller than the minimum
size for which there is a libcall (i32).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
cff50d9e20d7bbc3acf4845fe826bfb3095126c4 10-Nov-2008 Duncan Sands <baldrick@free.fr> Tweak some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58993 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
81311d9869e1a94fb9f044b0b921d0d2b736823e 10-Nov-2008 Duncan Sands <baldrick@free.fr> Tweak some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58993 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
6959b2bb6521baca57e5507ca039e51002d4a971 10-Nov-2008 Duncan Sands <baldrick@free.fr> Small cleanups. No functionality change intended!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
dfb8bce12880d202cc65904a78e4e50d14a3c403 10-Nov-2008 Duncan Sands <baldrick@free.fr> Small cleanups. No functionality change intended!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
a29c13086a3add78a3a79f744573fe09eaa9dc88 10-Nov-2008 Duncan Sands <baldrick@free.fr> When promoting the result of fp_to_uint/fp_to_sint,
inform the optimizers that the result must be zero/
sign extended from the smaller type. For example,
if a fp to unsigned i16 is promoted to fp to i32,
then we are allowed to assume that the extra 16 bits
are zero (because the result of fp to i16 is undefined
if the result does not fit in an i16). This is
quite aggressive, but should help the optimizers
produce better code. This requires correcting a
test which thought that fp_to_uint is some kind
of truncation, which it is not: in the testcase
(which does fp to i1), either the fp value converts
to 0 or 1 or the result is undefined, which is
quite different to truncation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58991 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
0fc01e49e560d197ec97b64070b868a9a2fda727 10-Nov-2008 Duncan Sands <baldrick@free.fr> When promoting the result of fp_to_uint/fp_to_sint,
inform the optimizers that the result must be zero/
sign extended from the smaller type. For example,
if a fp to unsigned i16 is promoted to fp to i32,
then we are allowed to assume that the extra 16 bits
are zero (because the result of fp to i16 is undefined
if the result does not fit in an i16). This is
quite aggressive, but should help the optimizers
produce better code. This requires correcting a
test which thought that fp_to_uint is some kind
of truncation, which it is not: in the testcase
(which does fp to i1), either the fp value converts
to 0 or 1 or the result is undefined, which is
quite different to truncation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58991 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
baf26b2d3eb848dec25fcdd710dc2dd4ab6e2426 10-Nov-2008 Dale Johannesen <dalej@apple.com> Really fix testb optimization on big-endian.
Fixes ppc32 bootstrap.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58979 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6d844dfe4b5fe8f2e006644fd29b3853874ab097 10-Nov-2008 Dale Johannesen <dalej@apple.com> Really fix testb optimization on big-endian.
Fixes ppc32 bootstrap.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58979 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
aeb06d246254e4829a49164a11eacced9a43d9d4 10-Nov-2008 Mon P Wang <wangmp@apple.com> Added support for the following definition of shufflevector
<result> = shufflevector <n x <ty>> <v1>, <n x <ty>> <v2>, <m x i32> <mask>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
bff5d9cff3bbbb98a757451a8890ae71f189e82b 10-Nov-2008 Mon P Wang <wangmp@apple.com> Added support for the following definition of shufflevector
<result> = shufflevector <n x <ty>> <v1>, <n x <ty>> <v2>, <m x i32> <mask>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
a64f463fb90c66406033e3fd1dc912b648bad328 10-Nov-2008 Chris Lattner <sabre@nondot.org> eliminate a couple more uses of utohexstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58963 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
83b7a2ce11a71372f6e14b0f7fd96a3ec7e67d55 10-Nov-2008 Chris Lattner <sabre@nondot.org> eliminate a couple more uses of utohexstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58963 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
c6a1346d7c6bb761f9e6c2c85b53febba1cb15db 10-Nov-2008 Chris Lattner <sabre@nondot.org> Use utohex_buffer instead of utohexstr to avoid creating a temporary
string in the .ll and .s printers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58962 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
da2047ee487e8342040019bd836e63e436f6b04a 10-Nov-2008 Chris Lattner <sabre@nondot.org> Use utohex_buffer instead of utohexstr to avoid creating a temporary
string in the .ll and .s printers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58962 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4d557e4872b47b9f9ce340110c7d4a04779c8dc6 10-Nov-2008 Chris Lattner <sabre@nondot.org> Fix an over aggressive assumption that struct decls will have a pointer to
an array that is empty. Instead of requiring this array, allow a null pointer.
This shrinks all forward references of structs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58959 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
e9533d94907bbbbd8b995ec3c7a8b5c20bdc10a2 10-Nov-2008 Chris Lattner <sabre@nondot.org> Fix an over aggressive assumption that struct decls will have a pointer to
an array that is empty. Instead of requiring this array, allow a null pointer.
This shrinks all forward references of structs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58959 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
ced4900578cb72b58b7de9e798c2644713da8a52 09-Nov-2008 Dale Johannesen <dalej@apple.com> Temporarily revert 58825, which breaks PPC bootstrap.
xs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58930 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6a98f7dab19aa9768d60632b925eb25cb19f51bf 09-Nov-2008 Dale Johannesen <dalej@apple.com> Temporarily revert 58825, which breaks PPC bootstrap.
xs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58930 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
0b45c9957fb7ad47e653fb43d455f6727170dad0 09-Nov-2008 Anton Korobeynikov <asl@math.spbu.ru> Temporary revert my last commit: it seems it's triggering some subtle bug in backend
and breaks llvm-gcc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58926 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a0880c082b31450617b7089c362ffaaf9b490a8d 09-Nov-2008 asl <asl@91177308-0d34-0410-b5e6-96231b3b80d8> Temporary revert my last commit: it seems it's triggering some subtle bug in backend
and breaks llvm-gcc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58926 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
059b2dbd902233e1bbd040ec8c18c66b4186bb0e 08-Nov-2008 Duncan Sands <baldrick@free.fr> Try to produce better code when scalarizing VSETCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58920 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
6146330f84863002ca1be04c137736efe6ccd81c 08-Nov-2008 baldrick <baldrick@91177308-0d34-0410-b5e6-96231b3b80d8> Try to produce better code when scalarizing VSETCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58920 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
0f569535676325a94981881eba6f8c7e61630992 08-Nov-2008 Anton Korobeynikov <asl@math.spbu.ru> Factor out offset printing code into generic AsmPrinter.
FIXME: it seems, that most of targets don't support
offsets wrt CPI/GlobalAddress', was it intentional?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58917 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
dbe42758a93dd74acd64dc5c88f7fc0708740143 08-Nov-2008 Anton Korobeynikov <asl@math.spbu.ru> Factor out offset printing code into generic AsmPrinter.
FIXME: it seems, that most of targets don't support
offsets wrt CPI/GlobalAddress', was it intentional?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58917 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ce4a70bd7608861e104b04265a0c71e5df8ecefe 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Rename startFunctionStub to startGVStub since it's also used for GV non-lazy ptr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58897 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
2c3267a14d9e81b7507ef2d9d7ea8b3bc5f7efe0 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Rename startFunctionStub to startGVStub since it's also used for GV non-lazy ptr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58897 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
b514ac9e3cddb3663c74afcf7bfa359a867e2780 08-Nov-2008 Dale Johannesen <dalej@apple.com> Make testb optimization work on big-endian targets.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58874 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
3903271ec1ff3226e558541f6bb61247b7316f1c 08-Nov-2008 Dale Johannesen <dalej@apple.com> Make testb optimization work on big-endian targets.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58874 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
53e4e4478c69c2c2115db833b54385117c764d14 07-Nov-2008 Dale Johannesen <dalej@apple.com> Make FP tests requiring two compares work on PPC (PR 642).
This is Chris' patch from the PR, modified to realize that
SETUGT/SETULT occur legitimately with integers, plus
two fixes in LegalizeDAG to pass a valid result type into
LegalizeSetCC. The argument of TLI.getSetCCResultType is
ignored on PPC, but I think I'm following usage elsewhere.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58871 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
32100b20ab5bcaf518d4758fd249f3296ca04f9d 07-Nov-2008 Dale Johannesen <dalej@apple.com> Make FP tests requiring two compares work on PPC (PR 642).
This is Chris' patch from the PR, modified to realize that
SETUGT/SETULT occur legitimately with integers, plus
two fixes in LegalizeDAG to pass a valid result type into
LegalizeSetCC. The argument of TLI.getSetCCResultType is
ignored on PPC, but I think I'm following usage elsewhere.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58871 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
47b3417cf0d90724f9dab71aae4c7204e46847b6 07-Nov-2008 Duncan Sands <baldrick@free.fr> Sign-extend rather than zero-extend when promoting
the condition for a BRCOND, according to what is
returned by getSetCCResultContents. Since all
targets return the same thing (ZeroOrOneSetCCResult),
this should be harmless! The point is that all over
the place the result of SETCC is fed directly into
BRCOND. On machines for which getSetCCResultContents
returns ZeroOrNegativeOneSetCCResult, this is a
sign-extended boolean. So it seems dangerous to
also feed BRCOND zero-extended booleans in some
circumstances - for example, when promoting the
condition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58861 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
8a772a7a83233e255fd4714f684e076a4d917c6d 07-Nov-2008 Duncan Sands <baldrick@free.fr> Sign-extend rather than zero-extend when promoting
the condition for a BRCOND, according to what is
returned by getSetCCResultContents. Since all
targets return the same thing (ZeroOrOneSetCCResult),
this should be harmless! The point is that all over
the place the result of SETCC is fed directly into
BRCOND. On machines for which getSetCCResultContents
returns ZeroOrNegativeOneSetCCResult, this is a
sign-extended boolean. So it seems dangerous to
also feed BRCOND zero-extended booleans in some
circumstances - for example, when promoting the
condition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58861 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
bc3c4296c03c6b9aee3cce68ae33279f5ad5ca2b 07-Nov-2008 Dale Johannesen <dalej@apple.com> Fix unsigned->ppcf128 conversion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58856 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
e07c44ae031c85ba413eafecce1db7f67bb07228 07-Nov-2008 Dale Johannesen <dalej@apple.com> Fix unsigned->ppcf128 conversion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58856 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
cab3e68136b20a10cb0fe8ad97874bacf27dda7d 07-Nov-2008 Bill Wendling <isanbard@gmail.com> Refactor code that adjusts the offsets of stack objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58829 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
5d07201bf71baf4dd777cd025cdf158f63614352 07-Nov-2008 Bill Wendling <isanbard@gmail.com> Refactor code that adjusts the offsets of stack objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58829 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
89217a6f1852e764e58c489872b2d155dc2b7b8b 07-Nov-2008 Dale Johannesen <dalej@apple.com> When we're doing a compare of load-AND-constant to 0
(e.g. a bitfield test) narrow the load as much as possible.
The has the potential to avoid unnecessary partial-word
load-after-store conflicts, which cause stalls on several targets.
Also a size win on x86 (testb vs testl).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58825 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d0a7c0eb006563aa47d9e4338986c7766b191a2c 07-Nov-2008 Dale Johannesen <dalej@apple.com> When we're doing a compare of load-AND-constant to 0
(e.g. a bitfield test) narrow the load as much as possible.
The has the potential to avoid unnecessary partial-word
load-after-store conflicts, which cause stalls on several targets.
Also a size win on x86 (testb vs testl).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58825 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b7c6ebcb4732302310cfaca81e1d26c3802c1646 07-Nov-2008 Bill Wendling <isanbard@gmail.com> - Modify the stack protector algorithm so that the stack slot is allocated in
LLVM IR code and not in the selection DAG ISel. This is a cleaner solution.

- Fix the heuristic for determining if protectors are necessary. The previous
one wasn't checking the proper type size.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
8126a3f4f8d04e45f8fa21d4c76c128477ac4398 07-Nov-2008 Bill Wendling <isanbard@gmail.com> - Modify the stack protector algorithm so that the stack slot is allocated in
LLVM IR code and not in the selection DAG ISel. This is a cleaner solution.

- Fix the heuristic for determining if protectors are necessary. The previous
one wasn't checking the proper type size.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
848693c254c1fc4d4956cbe1778b244bb035e0a0 07-Nov-2008 Bill Wendling <isanbard@gmail.com> Remove unneeded header file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58823 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
964ac23a91de827cec2288bce323754b3b7e1783 07-Nov-2008 Bill Wendling <isanbard@gmail.com> Remove unneeded header file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58823 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
1fb615f820ee0ff415e78b25ef583a430c86a743 07-Nov-2008 Bill Wendling <isanbard@gmail.com> Don't build a vector of returns. Just modify the Function in the loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58822 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
d7fff9f79e48e0ca658827cd636caca350a092c9 07-Nov-2008 Bill Wendling <isanbard@gmail.com> Don't build a vector of returns. Just modify the Function in the loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58822 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
e0b436ac41a00bc210163964d3cf393c8b487c9e 06-Nov-2008 Mon P Wang <wangmp@apple.com> Fixed scalarizing an extract subvector and prevent an infinite loop
when simplify a vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58820 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
927daf5880231a034bd58f899d30a03a553b4135 06-Nov-2008 Mon P Wang <wangmp@apple.com> Fixed scalarizing an extract subvector and prevent an infinite loop
when simplify a vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58820 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
703ccfe0538a30d674b52fdbb4f5debf9b062354 06-Nov-2008 Bill Wendling <isanbard@gmail.com> The size limit is for individual arrays. So if any array has more than 8 bytes
in it, then emit stack protectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58819 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
d5f8bf6d182ee2e047e856f742901f24afc0115b 06-Nov-2008 Bill Wendling <isanbard@gmail.com> The size limit is for individual arrays. So if any array has more than 8 bytes
in it, then emit stack protectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58819 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
44cf38c01ff610139d2e8dbbdc4e6123a3debcdd 06-Nov-2008 Bill Wendling <isanbard@gmail.com> Don't recalculate the stack position of the stack protector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58815 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
dc6fe9591da15104cc88c567d0135fa60a7f9321 06-Nov-2008 Bill Wendling <isanbard@gmail.com> Don't recalculate the stack position of the stack protector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58815 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
e75808cf3d92d14c5659a15d0d17bd21a54fd8cc 06-Nov-2008 Devang Patel <dpatel@apple.com> Emit label for llvm.dbg.func.start of the inlined function.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58814 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
ed00d01712c891c40d5bac5ece79e787c67b6a63 06-Nov-2008 Devang Patel <dpatel@apple.com> Emit label for llvm.dbg.func.start of the inlined function.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58814 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
b951aec3adf4ac34aa311c912ed8a7f6b437eaa5 06-Nov-2008 Duncan Sands <baldrick@free.fr> Formating/comment changes - no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58801 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
951507e9c2202c58069cb8dc370736aef826f960 06-Nov-2008 Duncan Sands <baldrick@free.fr> Formating/comment changes - no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58801 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
4c3a1d8d2be313f1b322f680801fec262a2480c6 06-Nov-2008 Bill Wendling <isanbard@gmail.com> - Rename stackprotector_{prologue,epilogue} to stackprotector_{create,check}.
- Get rid of "HasStackProtector" in MachineFrameInfo.
- Modify intrinsics to tell which are doing what with memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58799 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
06e5d3351b0d7210d7d2580d09523f36a11eb442 06-Nov-2008 Bill Wendling <isanbard@gmail.com> - Rename stackprotector_{prologue,epilogue} to stackprotector_{create,check}.
- Get rid of "HasStackProtector" in MachineFrameInfo.
- Modify intrinsics to tell which are doing what with memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58799 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
f007a8b931e229eb325319c97363be8507311e2e 06-Nov-2008 Mon P Wang <wangmp@apple.com> Widening cleanup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58796 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
a5a239f87ef90c0dd8b0c26553c8d81f5c1d7933 06-Nov-2008 Mon P Wang <wangmp@apple.com> Widening cleanup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58796 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
89c5cc6c793ca420194c94361e1c6dacb6d7c446 06-Nov-2008 Bill Wendling <isanbard@gmail.com> Adjust the stack protector heuristic to care about only arrays or calls to
"alloca".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58792 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
0afac862633bf0999d2e30169fa33ea7efa357e2 06-Nov-2008 Bill Wendling <isanbard@gmail.com> Adjust the stack protector heuristic to care about only arrays or calls to
"alloca".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58792 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
b2a4298ce41e7ef80cd75a3c1dfa6433f0759a1a 06-Nov-2008 Bill Wendling <isanbard@gmail.com> Implement the stack protector stack accesses via intrinsics:

- stackprotector_prologue creates a stack object and stores the guard there.

- stackprotector_epilogue reads the stack guard from the stack position created
by stackprotector_prologue.

- The PrologEpilogInserter was changed to make sure that the stack guard is
first on the stack frame.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58791 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
6d54ef9e36818ddb12805e5ae0fe4c97ef9088ef 06-Nov-2008 Bill Wendling <isanbard@gmail.com> Implement the stack protector stack accesses via intrinsics:

- stackprotector_prologue creates a stack object and stores the guard there.

- stackprotector_epilogue reads the stack guard from the stack position created
by stackprotector_prologue.

- The PrologEpilogInserter was changed to make sure that the stack guard is
first on the stack frame.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58791 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
electionDAG/SelectionDAGBuild.cpp
tackProtector.cpp
20dd0460a1b8fe9119949434a9dbe8bdd443c13d 06-Nov-2008 Devang Patel <dpatel@apple.com> Emit label for llvm.dbg.func.start of the inlined function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
1fdfdd61f34c1db1a20205cfa3e2dfb36404cff4 06-Nov-2008 Devang Patel <dpatel@apple.com> Emit label for llvm.dbg.func.start of the inlined function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
c45cb9f739bd5d541576212f1e0cc2689a731ab8 05-Nov-2008 Duncan Sands <baldrick@free.fr> Fix thinko in ppcf128 expansion of truncating store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58753 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
54a71130f1da5f0a73d1f2f118e566efcd97ff2e 05-Nov-2008 Duncan Sands <baldrick@free.fr> Fix thinko in ppcf128 expansion of truncating store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58753 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
3eb57d54395a979f8d16ca39cd41214a5daa55ea 05-Nov-2008 Evan Cheng <evan.cheng@apple.com> Type of shuffle mask has changed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58751 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4fdfdac468ce40d1270773ba5929b8c54646d892 05-Nov-2008 Evan Cheng <evan.cheng@apple.com> Type of shuffle mask has changed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58751 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1508606ee80b9289d3c7c8121e67d9e744e2b4f2 05-Nov-2008 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58741 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
d2824d1564aa2c4dc98c5a4efb5fd500d2479939 05-Nov-2008 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58741 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
fa75dc647cbe09c43169658106713a57409d0faf 05-Nov-2008 Bill Wendling <isanbard@gmail.com> Simplify the allocated size calculation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58740 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
085362b0724f5ba71b4d492be73919ce6c60613d 05-Nov-2008 Bill Wendling <isanbard@gmail.com> Simplify the allocated size calculation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58740 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
f0eaa9a233e6162aab4b2a2b5bfc63d6f94b9384 05-Nov-2008 Bill Wendling <isanbard@gmail.com> Fix comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58739 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
71b251cf14a20ac9ffe5f5b084c51fae8fa46d5d 05-Nov-2008 Bill Wendling <isanbard@gmail.com> Fix comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58739 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
b214c6971bbe5c2982210880cdec786e87eef044 05-Nov-2008 Owen Anderson <resistor@mac.com> Use the new predicate to control when we do prealloc splitting. Fix a small bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58738 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
3be0e1377e52646a286bb44113588b51d1ec8b90 05-Nov-2008 Owen Anderson <resistor@mac.com> Use the new predicate to control when we do prealloc splitting. Fix a small bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58738 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
613f77439eb6e1f660e615e0e851187da13255ae 05-Nov-2008 Bill Wendling <isanbard@gmail.com> Some code simplification. It now doesn't generate a prologue if the epilogue
isn't going to be generated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58734 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
d57982b115903dd90275a36182f2a65a68a063b1 05-Nov-2008 Bill Wendling <isanbard@gmail.com> Some code simplification. It now doesn't generate a prologue if the epilogue
isn't going to be generated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58734 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
4a3a8511827ecdee7e606bdd4dc3733dcac41064 04-Nov-2008 Bill Wendling <isanbard@gmail.com> Small simplification of the stack guard type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58728 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
46276d4bc766cb644abacb08e9701e96cf77c274 04-Nov-2008 Bill Wendling <isanbard@gmail.com> Small simplification of the stack guard type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58728 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
b7c2c1246f10972d5a8f55499226872608eb10f9 04-Nov-2008 Bill Wendling <isanbard@gmail.com> - Add a "getOrInsertGlobal" method to the Module class. This acts similarly to
"getOrInsertFunction" in that it either adds a new declaration of the global
and returns it, or returns the current one -- optionally casting it to the
correct type.
- Use the new getOrInsertGlobal in the stack protector code.
- Use "splitBasicBlock" in the stack protector code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58727 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
38d8b692b1e0f2bf02aa01b374d87fb89398599e 04-Nov-2008 Bill Wendling <isanbard@gmail.com> - Add a "getOrInsertGlobal" method to the Module class. This acts similarly to
"getOrInsertFunction" in that it either adds a new declaration of the global
and returns it, or returns the current one -- optionally casting it to the
correct type.
- Use the new getOrInsertGlobal in the stack protector code.
- Use "splitBasicBlock" in the stack protector code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58727 91177308-0d34-0410-b5e6-96231b3b80d8
tackProtector.cpp
f1f75b1bd12d6badad382f473929a4b744010e2f 04-Nov-2008 Owen Anderson <resistor@mac.com> First pass at checking for the creation of a new join point when doing pre-alloc splitting. This is not turned on yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58726 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
39e964c006a818b0e7066c9079c15b20e1ce7ec7 04-Nov-2008 Owen Anderson <resistor@mac.com> First pass at checking for the creation of a new join point when doing pre-alloc splitting. This is not turned on yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58726 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
80a320d974dae7666157e80b141d7ff97e5f6544 04-Nov-2008 Bill Wendling <isanbard@gmail.com> Update in response to feedback from Chris:

- Use enums instead of magic numbers.

- Rework algorithm to use the bytes size from the target to determine when to
emit stack protectors.

- Get rid of "propolice" in any comments.

- Renamed an option to its expanded form.

- Other miscellanenous changes.

More changes will come after this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58723 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackProtector.cpp
30ef3e3027f2149c6a36ca49fa6dc59b2cd2b7f9 04-Nov-2008 Bill Wendling <isanbard@gmail.com> Update in response to feedback from Chris:

- Use enums instead of magic numbers.

- Rework algorithm to use the bytes size from the target to determine when to
emit stack protectors.

- Get rid of "propolice" in any comments.

- Renamed an option to its expanded form.

- Other miscellanenous changes.

More changes will come after this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58723 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackProtector.cpp
53997b07451a28582a8bb55716e13fc1bcd5c838 04-Nov-2008 Dale Johannesen <dalej@apple.com> 80 columns



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58717 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
96db7964fa0ee232a849ded20412a4623950e388 04-Nov-2008 Dale Johannesen <dalej@apple.com> 80 columns



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58717 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
20d629cb904fd5df05046a2eb43227a96d843448 04-Nov-2008 Duncan Sands <baldrick@free.fr> Fix typo. Patch by nlewycky.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58709 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
5c2a51a9cc0482ef67141dd6cebff6a32585f18c 04-Nov-2008 Duncan Sands <baldrick@free.fr> Fix typo. Patch by nlewycky.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58709 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
e59416efb8472ee95c4500a94d2048c585faff6d 04-Nov-2008 Duncan Sands <baldrick@free.fr> Fix PR3011: LegalizeTypes support for scalarizing
SELECT_CC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58706 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
e9027151b73c74aec6ad0cf17f58c8618c623167 04-Nov-2008 Duncan Sands <baldrick@free.fr> Fix PR3011: LegalizeTypes support for scalarizing
SELECT_CC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58706 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
7ecbfd115721c282b3b67c64d02b2ca0f000608c 04-Nov-2008 Nuno Lopes <nunoplopes@sapo.pt> fix leakage of IfcvtTokens

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58690 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
06cea78008f26eac9b94320470af75271360dd73 04-Nov-2008 Nuno Lopes <nunoplopes@sapo.pt> fix leakage of IfcvtTokens

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58690 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
5c42fd8af13538a8159dfeb8e66549b2a3ec7c76 04-Nov-2008 Oscar Fuentes <ofv@wanadoo.es> CMake: Updated list of source files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58676 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
a1bd78067768185fec3bc9b19b9e45e05c4472a1 04-Nov-2008 Oscar Fuentes <ofv@wanadoo.es> CMake: Updated list of source files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58676 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
2b58ce5ab4e22e796303d68fb246d4031cb5d4ca 04-Nov-2008 Bill Wendling <isanbard@gmail.com> Initial checkin for stack protectors. Here's what it does:

* The prologue is modified to read the __stack_chk_guard global and insert it
onto the stack.

* The epilogue is modified to read the stored guard from the stack and compare
it to the original __stack_chk_guard value. If they differ, then the
__stack_chk_fail() function is called.

* The stack protector needs to be first on the stack (after the parameters) to
catch any stack-smashing activities.

Front-end support will follow after a round of beta testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58673 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackProtector.cpp
dac9f71432ae43f8d46f6453e784697740211581 04-Nov-2008 Bill Wendling <isanbard@gmail.com> Initial checkin for stack protectors. Here's what it does:

* The prologue is modified to read the __stack_chk_guard global and insert it
onto the stack.

* The epilogue is modified to read the stored guard from the stack and compare
it to the original __stack_chk_guard value. If they differ, then the
__stack_chk_fail() function is called.

* The stack protector needs to be first on the stack (after the parameters) to
catch any stack-smashing activities.

Front-end support will follow after a round of beta testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58673 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
tackProtector.cpp
283c6965d09affb93a9374a6a179cb0f6d188513 03-Nov-2008 Dale Johannesen <dalej@apple.com> Fix some ppcf128 regressions: make ExpandFloatRes_LOAD
work correctly, and bring over a late change to ppcf128
SetCC handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58642 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
c96f6595bb4ac76190ba026cd5676931ca654652 03-Nov-2008 Dale Johannesen <dalej@apple.com> Fix some ppcf128 regressions: make ExpandFloatRes_LOAD
work correctly, and bring over a late change to ppcf128
SetCC handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58642 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
d821726a91000c1b2de7ca8aafdc27b1a311741b 03-Nov-2008 Duncan Sands <baldrick@free.fr> Make VAARG promotion work correctly with large funky
sized integers like i129, and also reduce the number
of assumptions made about how vaarg is implemented.
This still doesn't work correctly for small integers
like (eg) i1 on x86, since x86 passes each of them
(essentially an i8) in a 4 byte stack slot, so the
pointer needs to be advanced by 4 bytes not by 1 byte
as now. But this is no longer a LegalizeTypes problem
(it was also wrong in LT before): it is a bug in the
operation expansion in LegalizeDAG: now LegalizeTypes
turns an i1 vaarg into an i8 vaarg which would work
fine if only the i8 vaarg was turned into correct code
later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
5fb4d16b308b1b3c1b0fa1f2144ee2021085da73 03-Nov-2008 Duncan Sands <baldrick@free.fr> Make VAARG promotion work correctly with large funky
sized integers like i129, and also reduce the number
of assumptions made about how vaarg is implemented.
This still doesn't work correctly for small integers
like (eg) i1 on x86, since x86 passes each of them
(essentially an i8) in a 4 byte stack slot, so the
pointer needs to be advanced by 4 bytes not by 1 byte
as now. But this is no longer a LegalizeTypes problem
(it was also wrong in LT before): it is a bug in the
operation expansion in LegalizeDAG: now LegalizeTypes
turns an i1 vaarg into an i8 vaarg which would work
fine if only the i8 vaarg was turned into correct code
later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
5c58a3168f006aaacf2e9c6a69dde86b630d783e 03-Nov-2008 Duncan Sands <baldrick@free.fr> Make VAARG work with x86 long double (which is
10 bytes long, but is passed in 12/16 bytes).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58608 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
55a4c235ee0ddb4df64c73533b3456137a571b4b 03-Nov-2008 Duncan Sands <baldrick@free.fr> Make VAARG work with x86 long double (which is
10 bytes long, but is passed in 12/16 bytes).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58608 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
06140888b1fed24910031f23c302c6a3221f3c42 03-Nov-2008 Matthijs Kooijman <matthijs@stdin.nl> Make MachineFrameInfo::print not crash when no TargetFrameInfo is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58606 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
0e9ee537da8f468fdaf31b65e9042f8f87a7bf2a 03-Nov-2008 Matthijs Kooijman <matthijs@stdin.nl> Make MachineFrameInfo::print not crash when no TargetFrameInfo is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58606 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
ae61ca02061cc500cb9f093a492899658249a245 03-Nov-2008 Owen Anderson <resistor@mac.com> Revert my last patch until I consult with Evan about it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58591 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
fa309532ac70b5ecb8c76588624b9adb700d0609 03-Nov-2008 Owen Anderson <resistor@mac.com> Revert my last patch until I consult with Evan about it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58591 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
6423c6c0e8e85d843750f9563180ef7bcfca56c6 02-Nov-2008 Owen Anderson <resistor@mac.com> Don't do pre-splitting if doing so would create a value join that did not
exist before. Updating the live intervals in that care is tricky in the general
case.

Evan, if you see a tighter guard condition for this, let me know.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58560 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
81909382e966a1ebbbfd598f18fa78a817d7460e 02-Nov-2008 Owen Anderson <resistor@mac.com> Don't do pre-splitting if doing so would create a value join that did not
exist before. Updating the live intervals in that care is tricky in the general
case.

Evan, if you see a tighter guard condition for this, let me know.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58560 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
3efcd4a65cdf41ec72205757421dca6026e92a19 01-Nov-2008 Mon P Wang <wangmp@apple.com> Added interface to allow clients to create a MemIntrinsicNode for
target intrinsics that touches memory


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
9de70a1e5ffa0273beeaa08e73cc2981bf00864f 01-Nov-2008 Mon P Wang <wangmp@apple.com> Added interface to allow clients to create a MemIntrinsicNode for
target intrinsics that touches memory


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ed532cac7c65a617accdbc1fc7622b1c40110baf 31-Oct-2008 Anton Korobeynikov <asl@math.spbu.ru> Invalidate debug/eh/gc labels when unreachable MBB is deleted.
Based on patch by Martin Nowack!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58536 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
2c56ce040686096368f7c67ecb5df635da092fe5 31-Oct-2008 Anton Korobeynikov <asl@math.spbu.ru> Invalidate debug/eh/gc labels when unreachable MBB is deleted.
Based on patch by Martin Nowack!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58536 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
87e82f00adb6628ed6368db1eac7d944489287ff 31-Oct-2008 Dan Gohman <gohman@apple.com> Remove some unused virtual function bodies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58524 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
0e4acb0606028d79952ec34c77e42480cb413ca8 31-Oct-2008 Dan Gohman <gohman@apple.com> Remove some unused virtual function bodies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58524 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f7c094000f4baf094b1d60ba68a5b4e0193c502a 31-Oct-2008 Bill Wendling <isanbard@gmail.com> Revert r58489. It isn't correct for all cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58523 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
957b205a5b586b214d95ad04ca16ea9abc91f878 31-Oct-2008 Bill Wendling <isanbard@gmail.com> Revert r58489. It isn't correct for all cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58523 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
36f3adfe7f10bc79a01f990b3d34caaa22519e1a 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> Add a fixme.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58514 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
b288b9933f201e7189810ef22b960a6dd27f0ad4 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> Add a fixme.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58514 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
06f0aff69eb0289bdba19a364132bc522f44feba 31-Oct-2008 Duncan Sands <baldrick@free.fr> Add a bunch of libcalls for ppcf128 that were somehow
completely forgotten about when writing LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58508 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
9f9eef8c9803bb584f480b5057383f72cdc8a814 31-Oct-2008 Duncan Sands <baldrick@free.fr> Add a bunch of libcalls for ppcf128 that were somehow
completely forgotten about when writing LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58508 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
f6a9988ceab0ca660fa4f4e89d8d683f487118eb 31-Oct-2008 Bill Wendling <isanbard@gmail.com> Don't skip over all "terminator" instructions when determining where to put the
callee-saved restore code. It could skip over conditional jumps
accidentally. Instead, just skip the "return" instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58489 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c6d417d5e9a5e3c51fdbb05d7baf4fb30eddb0fb 31-Oct-2008 Bill Wendling <isanbard@gmail.com> Don't skip over all "terminator" instructions when determining where to put the
callee-saved restore code. It could skip over conditional jumps
accidentally. Instead, just skip the "return" instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58489 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
3d0f5afefb2c8be6233c2bcebdcf57a5c0b2b9a2 30-Oct-2008 Duncan Sands <baldrick@free.fr> Fix PR2986: do not use a potentially illegal
type for the shift amount type. Add a check
that shifts and rotates use the type returned
by getShiftAmountTy for the amount. This
exposed some problems in CellSPU and PPC,
which have already been fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58455 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5bb3f8d5b27776c7e048767617a37c4f13bfdd72 30-Oct-2008 Duncan Sands <baldrick@free.fr> Fix PR2986: do not use a potentially illegal
type for the shift amount type. Add a check
that shifts and rotates use the type returned
by getShiftAmountTy for the amount. This
exposed some problems in CellSPU and PPC,
which have already been fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58455 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2eb13c347f0e76d1e9306225b972a7d050d8a461 30-Oct-2008 Mon P Wang <wangmp@apple.com> Add missing vsetcc expansion for widening


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
42ac14ede1e1d08976ce1ad7d3270e8ab8222f55 30-Oct-2008 Mon P Wang <wangmp@apple.com> Add missing vsetcc expansion for widening


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0c39719bfc7d0b3e61fbd55e1115184a1d5f6ae7 30-Oct-2008 Mon P Wang <wangmp@apple.com> Add initial support for vector widening. Logic is set to widen for X86.
One will only see an effect if legalizetype is not active. Will move
support to LegalizeType soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58426 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
1448aadd407aedbca9a93234d3bc814f8d9a90e2 30-Oct-2008 Mon P Wang <wangmp@apple.com> Add initial support for vector widening. Logic is set to widen for X86.
One will only see an effect if legalizetype is not active. Will move
support to LegalizeType soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58426 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
b99e740d71b68153284669c42ae9421d0f7e1cc2 29-Oct-2008 Duncan Sands <baldrick@free.fr> Uniformize capitalization of NodeId.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58386 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
560946481ef1aaa704e2916bcaf7f1b904ffb666 29-Oct-2008 Duncan Sands <baldrick@free.fr> Uniformize capitalization of NodeId.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58386 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
21c2972f7d24680f6475877a3398b7f8cf515b33 29-Oct-2008 Duncan Sands <baldrick@free.fr> Fix PR2977: LegalizeTypes support for expanding
VAARG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58379 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
cbd6d28608cebf2ecaf3d2ebf19a02815f0bcec4 29-Oct-2008 Duncan Sands <baldrick@free.fr> Fix PR2977: LegalizeTypes support for expanding
VAARG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58379 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
d22ec5f62813f8cf2ed8091f44a14377209b1a59 29-Oct-2008 Duncan Sands <baldrick@free.fr> Add sanity checking for BUILD_PAIR (I noticed the
other day that PPC custom lowering could create
a BUILD_PAIR of two f64 with a result type of...
f64! - already fixed). Fix a place that triggers
the sanity check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
70269a7a6f7b6ac70a87210f281e806f95abcaeb 29-Oct-2008 Duncan Sands <baldrick@free.fr> Add sanity checking for BUILD_PAIR (I noticed the
other day that PPC custom lowering could create
a BUILD_PAIR of two f64 with a result type of...
f64! - already fixed). Fix a place that triggers
the sanity check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
54898938673d2a13ce31626ec34b2d4d314b2c81 29-Oct-2008 Evan Cheng <evan.cheng@apple.com> - More pre-split fixes: spill slot live interval computation bug; restore point bug.
- If a def is spilt, remember its spill index to allow its reuse.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58375 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
egAllocLinearScan.cpp
29f36f5d687460958f6f00f34e859f868e7f1f03 29-Oct-2008 Evan Cheng <evan.cheng@apple.com> - More pre-split fixes: spill slot live interval computation bug; restore point bug.
- If a def is spilt, remember its spill index to allow its reuse.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58375 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
egAllocLinearScan.cpp
23b10f5b64e594aa7c6b415805b563fed2a75874 29-Oct-2008 Duncan Sands <baldrick@free.fr> Fix a FIXME: in ReplaceNodeWith, if the new node
is morphed by AnalyzeNewNode into a previously
processed node, and different result values of
that node are remapped to values with different
nodes, then we could end up using wrong values
here [we were assuming that all results remap
to values with the same underlying node]. This
seems theoretically possible, but I don't have
a testcase. The meat of the patch is in the
changes to AnalyzeNewNode/AnalyzeNewValue and
ReplaceNodeWith. While there, I changed names
like RemapNode to RemapValue, since it really
remaps values. To tell the truth, I would be
much happier if we were only remapping nodes
(it would simplify a bunch of logic, and allow
for some cute speedups) but I haven't yet worked
out how to do that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
f8b23a3dfdf76a2c1d6d4db8a4408e882d610f56 29-Oct-2008 Duncan Sands <baldrick@free.fr> Fix a FIXME: in ReplaceNodeWith, if the new node
is morphed by AnalyzeNewNode into a previously
processed node, and different result values of
that node are remapped to values with different
nodes, then we could end up using wrong values
here [we were assuming that all results remap
to values with the same underlying node]. This
seems theoretically possible, but I don't have
a testcase. The meat of the patch is in the
changes to AnalyzeNewNode/AnalyzeNewValue and
ReplaceNodeWith. While there, I changed names
like RemapNode to RemapValue, since it really
remaps values. To tell the truth, I would be
much happier if we were only remapping nodes
(it would simplify a bunch of logic, and allow
for some cute speedups) but I haven't yet worked
out how to do that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
b3bc6352defdf1a5c6b1b0770d0c4d603f6524a8 29-Oct-2008 Duncan Sands <baldrick@free.fr> Fix 80 column violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
b3e36986c7a65419988d35aba50716a1b80a25a8 29-Oct-2008 Duncan Sands <baldrick@free.fr> Fix 80 column violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
86813ce5faa68e96e2454b5ce267fefdbe5d2482 29-Oct-2008 Duncan Sands <baldrick@free.fr> Fix 80 column violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58370 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
38f05add3b9540f15fea1008b1b3df7797499f24 29-Oct-2008 Duncan Sands <baldrick@free.fr> Fix 80 column violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58370 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
d0e32c5d5c1bb03bc0cc8aeef52728724cab1c51 29-Oct-2008 Evan Cheng <evan.cheng@apple.com> - Rewrite code that update register live interval that's split.
- Create and update spill slot live intervals.
- Lots of bug fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58367 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
84f9fc23f3def9f81fa3c7d852669e21b458db46 29-Oct-2008 Evan Cheng <evan.cheng@apple.com> - Rewrite code that update register live interval that's split.
- Create and update spill slot live intervals.
- Lots of bug fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58367 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
egAllocLinearScan.cpp
2275105edbee89df8f5a68655ee75c9a5f169dbb 28-Oct-2008 Dan Gohman <gohman@apple.com> Take Chris' suggestion and define EnableFastISelVerbose and
EnableFastISelAbort variables for Release mode instead of
using ifdefs in the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8c71fc169443e27dfda09d243156bea44320f67d 28-Oct-2008 Dan Gohman <gohman@apple.com> Take Chris' suggestion and define EnableFastISelVerbose and
EnableFastISelAbort variables for Release mode instead of
using ifdefs in the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
727809ad8a826f26b757747ae2a329b49e5449b3 28-Oct-2008 Dan Gohman <gohman@apple.com> Protect the code for fast-isel debugging with #ifndef NDEBUG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
71d2e68fd8fb435d7d2c7d01e4d447ee24afeb3f 28-Oct-2008 Dan Gohman <gohman@apple.com> Protect the code for fast-isel debugging with #ifndef NDEBUG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
57760d96e2dfb485dc53fe2799df24bd18157abb 28-Oct-2008 Duncan Sands <baldrick@free.fr> Fix darwin ppc llvm-gcc build breakage: intercept
ppcf128 to i32 conversion and expand it into a code
sequence like in LegalizeDAG. This needs custom
ppc lowering of FP_ROUND_INREG, so turn that on and
make it work with LegalizeTypes. Probably PPC should
simply custom lower the original conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58329 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
ff258b1c72545025b47c7004c13200b12d6e9c1a 28-Oct-2008 Duncan Sands <baldrick@free.fr> Fix darwin ppc llvm-gcc build breakage: intercept
ppcf128 to i32 conversion and expand it into a code
sequence like in LegalizeDAG. This needs custom
ppc lowering of FP_ROUND_INREG, so turn that on and
make it work with LegalizeTypes. Probably PPC should
simply custom lower the original conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58329 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
1acb29c8ead8b7a6ac5dd63720711d397ac25ad9 28-Oct-2008 Duncan Sands <baldrick@free.fr> Fix a testcase provided by Bill in which the node
id could end up being wrong mostly because of
forgetting to remap new nodes that morphed into
processed nodes through CSE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58323 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
a216df9021c13c7d7a266cb3748ebfbf613cf057 28-Oct-2008 Duncan Sands <baldrick@free.fr> Fix a testcase provided by Bill in which the node
id could end up being wrong mostly because of
forgetting to remap new nodes that morphed into
processed nodes through CSE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58323 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
6e1c6231ba93ed7590c62ef0f94d0d9443b598ed 28-Oct-2008 Chris Lattner <sabre@nondot.org> Don't produce invalid comparisons after legalize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3ab74bd7f241dbf14ebaa42544e09b466d322f6e 28-Oct-2008 Chris Lattner <sabre@nondot.org> Don't produce invalid comparisons after legalize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7fe5e1812f5d018784d5186ccb31525665e61863 28-Oct-2008 Chris Lattner <sabre@nondot.org> fix some whitespace stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58319 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
23d3bdf695a0f8445e7701053e9e0b58d79ee7af 28-Oct-2008 Chris Lattner <sabre@nondot.org> fix some whitespace stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58319 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1f08cc2d2bc0c9369ecb0e3f90cce7c362c3924e 28-Oct-2008 Evan Cheng <evan.cheng@apple.com> If def is in the same mbb as the barrier, spilt the value after the last use before the barrier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58314 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
12b56d105596320195e98f8cb41763e76b51e915 28-Oct-2008 Evan Cheng <evan.cheng@apple.com> If def is in the same mbb as the barrier, spilt the value after the last use before the barrier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58314 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
ae7fa5bef1bd8ff4cee120dae2e4388184410ad2 28-Oct-2008 Evan Cheng <evan.cheng@apple.com> Add command line option to limit the number splits to help debugging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58312 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
fabf6990866a891cedf16b28abf09e64a3c5f120 28-Oct-2008 Evan Cheng <evan.cheng@apple.com> Add command line option to limit the number splits to help debugging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58312 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
f62ce370a48e1621af7934e668c215b8109cddb7 28-Oct-2008 Evan Cheng <evan.cheng@apple.com> Avoid putting a split past the end of the live range; always shrink wrap live interval in the barrier mbb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58309 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
6d9d96ebabf2c7793987b55d509fab87b9c5a297 28-Oct-2008 Evan Cheng <evan.cheng@apple.com> Avoid putting a split past the end of the live range; always shrink wrap live interval in the barrier mbb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58309 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
985921e8469f356c357e09744ad515a668f4e411 28-Oct-2008 Evan Cheng <evan.cheng@apple.com> Silence a bogus compile time warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58297 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
dffc5553bb77d000aeec616ed7506f152d83875f 28-Oct-2008 Evan Cheng <evan.cheng@apple.com> Silence a bogus compile time warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58297 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
b3990d5e948769a16d4ee77dbdff8a2bed8fb126 28-Oct-2008 Evan Cheng <evan.cheng@apple.com> Remove val# defined by a remat'ed def that is now dead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58294 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
c00c2a29f47ae0597f156a486238f64a8888a498 28-Oct-2008 Evan Cheng <evan.cheng@apple.com> Remove val# defined by a remat'ed def that is now dead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58294 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
8e7fa916fe87733b3660466b3a1c91d650c473d3 27-Oct-2008 Ted Kremenek <kremenek@apple.com> Fix bogus comparison of "const char *" with c-string literal. Use strcmp instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58290 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
b2b229296a53bc439b39e83e77038e6e1d3e7309 27-Oct-2008 Ted Kremenek <kremenek@apple.com> Fix bogus comparison of "const char *" with c-string literal. Use strcmp instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58290 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
c5e7e8d87d4a3b10edd5ac93ba1f3cdb4d1b449a 27-Oct-2008 David Greene <greened@obbligato.org> Add setSubgraphColor to color an entire portion of a SelectionDAG. This
will be used to support debug features in TableGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58257 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
f361483f2908b47e25d34d92ea8f4f1bdf6033cc 27-Oct-2008 David Greene <greened@obbligato.org> Add setSubgraphColor to color an entire portion of a SelectionDAG. This
will be used to support debug features in TableGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58257 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
26b86a0b5676253040dc206b437536a24306fb76 27-Oct-2008 David Greene <greened@obbligato.org> Fix PR2634. Create new virtual registers from spills early so that we
can give it the same stack slot as the spilled interval if it is folded.
This prevents the fold/unfold code from pointing to the wrong register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58255 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e269f3e8027cd51778969878c559fda7a61d3d33 27-Oct-2008 David Greene <greened@obbligato.org> Fix PR2634. Create new virtual registers from spills early so that we
can give it the same stack slot as the spilled interval if it is folded.
This prevents the fold/unfold code from pointing to the wrong register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58255 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
0dc4045bd27c177416745d2e72277b0a92c3ab83 27-Oct-2008 Duncan Sands <baldrick@free.fr> Fix UpdateNodeOperands so that it does CSE of calls
(and a bunch of other node types). While there, I
added a doNotCSE predicate and used it to reduce code
duplication (some of the duplicated code was wrong...).
This fixes ARM/cse-libcalls.ll when using LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1e450d4efe652b56a781e7f72dc6ac644e75eee6 27-Oct-2008 Duncan Sands <baldrick@free.fr> Fix UpdateNodeOperands so that it does CSE of calls
(and a bunch of other node types). While there, I
added a doNotCSE predicate and used it to reduce code
duplication (some of the duplicated code was wrong...).
This fixes ARM/cse-libcalls.ll when using LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
20f04e9fdd437712b323661e5041fd88431185b3 27-Oct-2008 Duncan Sands <baldrick@free.fr> Fix a bug in which a node could be added to the
worklist twice: UpdateNodeOperands could morph
a new node into a node already on the worklist.
We would then recalculate the NodeId for this
existing node and add it to the worklist. The
testcase is ARM/cse-libcalls.ll, the problem
showing up once UpdateNodeOperands is taught to
do CSE for calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58246 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
f7502644a25e6a0f6dbb473cabbc794ece7029bc 27-Oct-2008 Duncan Sands <baldrick@free.fr> Fix a bug in which a node could be added to the
worklist twice: UpdateNodeOperands could morph
a new node into a node already on the worklist.
We would then recalculate the NodeId for this
existing node and add it to the worklist. The
testcase is ARM/cse-libcalls.ll, the problem
showing up once UpdateNodeOperands is taught to
do CSE for calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58246 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
7cb07874dcadaa9a5082a80959cd15d44ba3a133 27-Oct-2008 Duncan Sands <baldrick@free.fr> Turn on LegalizeTypes, the new type legalization
codegen infrastructure, by default. Please report
any breakage to the mailing lists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58232 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b3ac388fda3d4b5c6446603377af0a0f70b64b4b 27-Oct-2008 Duncan Sands <baldrick@free.fr> Turn on LegalizeTypes, the new type legalization
codegen infrastructure, by default. Please report
any breakage to the mailing lists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58232 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
23066288fdf4867f53f208f9aaf2952b1c049394 27-Oct-2008 Evan Cheng <evan.cheng@apple.com> For now, don't split live intervals around x87 stack register barriers. FpGET_ST0_80 must be right after a call instruction (and ADJCALLSTACKUP) so we need to find a way to prevent reload of x87 registers between them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58230 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
0e4a5a9653ad945f2bafca958f531ba99f04dd98 27-Oct-2008 Evan Cheng <evan.cheng@apple.com> For now, don't split live intervals around x87 stack register barriers. FpGET_ST0_80 must be right after a call instruction (and ADJCALLSTACKUP) so we need to find a way to prevent reload of x87 registers between them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58230 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
622addbe49ffdc611adb315fb22756e23fe7b222 27-Oct-2008 Dale Johannesen <dalej@apple.com> Increase default setting of tail-merge-threshold to
150, based on llvm-test measurements.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58225 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
2d9dfcec6a381b55619edee6906b2e4b5ff664ba 27-Oct-2008 Dale Johannesen <dalej@apple.com> Increase default setting of tail-merge-threshold to
150, based on llvm-test measurements.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58225 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
aaf510c932cf194fef5e877b19283176e2608f08 26-Oct-2008 Evan Cheng <evan.cheng@apple.com> Do not shrink wrap live interval in a mbb if it's livein any of its successor blocks. The mbb can be revisited again after all of the successors are processed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58184 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
c06da70d3c2a2af123f9f1b5df4696b7a3d5b96e 26-Oct-2008 Evan Cheng <evan.cheng@apple.com> Do not shrink wrap live interval in a mbb if it's livein any of its successor blocks. The mbb can be revisited again after all of the successors are processed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58184 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
79d5b5acaec05cf2caba02ed023427da959e0b11 26-Oct-2008 Evan Cheng <evan.cheng@apple.com> Handle cases where there aren't uses in the barrier mbb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58174 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
843211e66e9ac4917d053ac834fd09703857bf80 26-Oct-2008 Evan Cheng <evan.cheng@apple.com> Handle cases where there aren't uses in the barrier mbb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58174 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
048ca55dc1b667b99060ce16a4891b36e950cf73 25-Oct-2008 Dan Gohman <gohman@apple.com> SDNodes may have at most one Flag result. Update this comment
to reflect that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58145 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
f175adeedcb8608432b89a60836915599ce7a29a 25-Oct-2008 Dan Gohman <gohman@apple.com> SDNodes may have at most one Flag result. Update this comment
to reflect that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58145 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
71b7f646de0d9e74198534d4a7b6059e6031ed59 25-Oct-2008 Dan Gohman <gohman@apple.com> Move the code that adds the DeadMachineInstructionElimPass from
target-independent code to target-specific code. This prevents it
from running on targets that aren't using fast-isel.

In addition to saving compile time, this addresses the problem
that not all targets are prepared for it. In order to use this
pass, all instructions must declare all their fixed uses and
defs of physical registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58144 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
0e66ce8c280e799c5dcca85833ff8cf4e285a9f0 25-Oct-2008 Dan Gohman <gohman@apple.com> Move the code that adds the DeadMachineInstructionElimPass from
target-independent code to target-specific code. This prevents it
from running on targets that aren't using fast-isel.

In addition to saving compile time, this addresses the problem
that not all targets are prepared for it. In order to use this
pass, all instructions must declare all their fixed uses and
defs of physical registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58144 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
78dfef771b2552090be60bee404570c2a0b03bcb 25-Oct-2008 Evan Cheng <evan.cheng@apple.com> If val# def is ~0U, meaning it's defined by a PHI, and it's previously split, spill before the barrier because it's impossible to determine if all the defs are spilled in the same spill slot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58129 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
c75704b9210873e6eb3b5cea8aa8dfb155d993ac 25-Oct-2008 Evan Cheng <evan.cheng@apple.com> If val# def is ~0U, meaning it's defined by a PHI, and it's previously split, spill before the barrier because it's impossible to determine if all the defs are spilled in the same spill slot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58129 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
56ab0def902940d6eee7b8eb668f974e78f3dcbb 24-Oct-2008 Evan Cheng <evan.cheng@apple.com> Fix a pasto.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58102 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
158c68b641d14333ea0854c9f695035e5bf2cd7a 24-Oct-2008 Evan Cheng <evan.cheng@apple.com> Fix a pasto.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58102 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
2efe3fd79a751eabe1664109a004af45dca99274 24-Oct-2008 Evan Cheng <evan.cheng@apple.com> Fix a end() dereference; remove an abort() that wasn't meant to be left in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58072 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
e98f0b53c2d8668e5f3c9efeaf8dd1c1062ecc8c 24-Oct-2008 Evan Cheng <evan.cheng@apple.com> Fix a end() dereference; remove an abort() that wasn't meant to be left in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58072 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
06587497dc1c39516f24784a2ac1d9323faae0a5 24-Oct-2008 Evan Cheng <evan.cheng@apple.com> Avoid splitting an interval multiple times; avoid splitting re-materializable val# (for now).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58068 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
9cd7ff0080f6a134b4486f91d01bebede77086c1 24-Oct-2008 Evan Cheng <evan.cheng@apple.com> Avoid splitting an interval multiple times; avoid splitting re-materializable val# (for now).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58068 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
reAllocSplitting.cpp
fea90880302fc7b6d588292ae0e55d33ebe80f12 24-Oct-2008 Dale Johannesen <dalej@apple.com> Initialize uninitialized variable.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58057 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
92434a5a9a62d7ac97f7d04673fb5f2153497931 24-Oct-2008 Dale Johannesen <dalej@apple.com> Initialize uninitialized variable.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58057 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f5cd4f0d70f2da83626cb1eeefe4ae10382c584d 23-Oct-2008 Evan Cheng <evan.cheng@apple.com> Committing a good chunk of the pre-register allocation live interval splitting pass. It's handling simple cases and appear to do good things. Next: avoid splitting an interval multiple times; renumber registers when possible; record stack slot live intervals for coloring; rematerialize defs when possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58044 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
egAllocLinearScan.cpp
99dcc17645bb82310acdb4ed2be5c2c29ff52e90 23-Oct-2008 Evan Cheng <evan.cheng@apple.com> Committing a good chunk of the pre-register allocation live interval splitting pass. It's handling simple cases and appear to do good things. Next: avoid splitting an interval multiple times; renumber registers when possible; record stack slot live intervals for coloring; rematerialize defs when possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58044 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
egAllocLinearScan.cpp
ee4c619b3b28a42078fc8033e5dccd42fc6edd42 23-Oct-2008 Duncan Sands <baldrick@free.fr> Fix thinko - the operand number has nothing to do
with the result number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58041 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
8a833bbc77fc1cabef96050117a9b39a1ea75926 23-Oct-2008 Duncan Sands <baldrick@free.fr> Fix thinko - the operand number has nothing to do
with the result number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58041 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
2cbe7fe3963e603c1485b1378b7e29ef63f31442 22-Oct-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes soft-float support for fpow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57973 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
e2fbf68c95cf19db979a7a5a55b3e433d0231334 22-Oct-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes soft-float support for fpow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57973 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
f9410141f703f4e8a6aba717617ef958249f6d13 22-Oct-2008 Duncan Sands <baldrick@free.fr> Be nice to CellSPU: for this target getSetCCResultType
may return i8, which can result in SELECT nodes for
which the type of the condition is i8, but there are
no patterns for select with i8 condition. Tweak the
LegalizeTypes logic to avoid this as much as possible.
This isn't a real fix because it is still perfectly
possible to end up with such select nodes - CellSPU
needs to be fixed IMHO.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57968 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
4bbfd9eff6dc0bfa1e6903daed81d90035bf36f5 22-Oct-2008 Duncan Sands <baldrick@free.fr> Be nice to CellSPU: for this target getSetCCResultType
may return i8, which can result in SELECT nodes for
which the type of the condition is i8, but there are
no patterns for select with i8 condition. Tweak the
LegalizeTypes logic to avoid this as much as possible.
This isn't a real fix because it is still perfectly
possible to end up with such select nodes - CellSPU
needs to be fixed IMHO.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57968 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
29a2822f287275a0d4df49f98104409d8f97c5df 22-Oct-2008 Duncan Sands <baldrick@free.fr> Port from LegalizeDAG the logic to only generate
ADDC/ADDE/SUBC/SUBE if the target supports it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
a89355ea88b78b4f91e1002d7139498a3b2b01cb 22-Oct-2008 Duncan Sands <baldrick@free.fr> Port from LegalizeDAG the logic to only generate
ADDC/ADDE/SUBC/SUBE if the target supports it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
3b521d5acccf4fecdb1aea878180df6dc29553dc 22-Oct-2008 Duncan Sands <baldrick@free.fr> Add some comments explaining the meaning of a boolean
that is not of type MVT::i1 in SELECT and SETCC nodes.
Relax the LegalizeTypes SELECT condition promotion
sanity checks to allow other condition types than i1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57966 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
98d6d7f04679c7f27374b62bddd229472cbea032 22-Oct-2008 Duncan Sands <baldrick@free.fr> Add some comments explaining the meaning of a boolean
that is not of type MVT::i1 in SELECT and SETCC nodes.
Relax the LegalizeTypes SELECT condition promotion
sanity checks to allow other condition types than i1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57966 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
0954aefd81c7aa80c0e29408610add1e793c1c44 22-Oct-2008 Duncan Sands <baldrick@free.fr> Temporarily allow the operands of a BUILD_VECTOR
to have a different type to the vector element
type. This should be fairly harmless because in
the past guys like this were being built all over
the place (and were cleaned up when I added this
check). The reason for relaxing this check is
that it helps LegalizeTypes legalize vector
shuffles: the mask is a BUILD_VECTOR that it is
*not always possible* to legalize while keeping it
a BUILD_VECTOR (vector_shuffle requires the mask
to be a BUILD_VECTOR, as opposed to a vector with
the right vector type). With this check it is even
harder to legalize the mask - turning the check off
means that LegalizeTypes manages to legalize almost
all vector shuffles encountered in practice. The
correct solution is to change vector_shuffle to be a
variadic node with the mask built into it as operands.
While waiting for that change, this hack stops the
problem with vector_shuffle from blocking the turning
on of LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57965 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
944d0d515fd58645a0b8487e6cbe6bb36a4e73fe 22-Oct-2008 Duncan Sands <baldrick@free.fr> Temporarily allow the operands of a BUILD_VECTOR
to have a different type to the vector element
type. This should be fairly harmless because in
the past guys like this were being built all over
the place (and were cleaned up when I added this
check). The reason for relaxing this check is
that it helps LegalizeTypes legalize vector
shuffles: the mask is a BUILD_VECTOR that it is
*not always possible* to legalize while keeping it
a BUILD_VECTOR (vector_shuffle requires the mask
to be a BUILD_VECTOR, as opposed to a vector with
the right vector type). With this check it is even
harder to legalize the mask - turning the check off
means that LegalizeTypes manages to legalize almost
all vector shuffles encountered in practice. The
correct solution is to change vector_shuffle to be a
variadic node with the mask built into it as operands.
While waiting for that change, this hack stops the
problem with vector_shuffle from blocking the turning
on of LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57965 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3b0da26e202cbbeb22508231f4278bda8e995391 22-Oct-2008 Daniel Dunbar <daniel@zuster.org> Move Print*Pass to use raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57946 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
3b475e99db65dccb5b816af218f3335573e7f526 22-Oct-2008 Daniel Dunbar <daniel@zuster.org> Move Print*Pass to use raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57946 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
f4db3a51c7d806f7dcef5d9625e7cdf7f122dca9 22-Oct-2008 Daniel Dunbar <daniel@zuster.org> Privatize PrintModulePass and PrintFunctionPass and add
createPrintModulePass and createPrintFunctionPass.
- So clients who compile w/o RTTI can use them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57933 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
1363a6d0e5daa5ab8ff2670825f9e8a34123defa 22-Oct-2008 Daniel Dunbar <daniel@zuster.org> Privatize PrintModulePass and PrintFunctionPass and add
createPrintModulePass and createPrintFunctionPass.
- So clients who compile w/o RTTI can use them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57933 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
1c15bf58a3700d40a6a88ac0ce14a2c99f111483 21-Oct-2008 Dale Johannesen <dalej@apple.com> Add an SSE2 algorithm for uint64->f64 conversion.
The same one Apple gcc uses, faster. Also gets the
extreme case in gcc.c-torture/execute/ieee/rbug.c
correct which we weren't before; this is not
sufficient to get the test to pass though, there
is another bug.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a359b8be7ad658bdea432fac228660abd853f7fc 21-Oct-2008 Dale Johannesen <dalej@apple.com> Add an SSE2 algorithm for uint64->f64 conversion.
The same one Apple gcc uses, faster. Also gets the
extreme case in gcc.c-torture/execute/ieee/rbug.c
correct which we weren't before; this is not
sufficient to get the test to pass though, there
is another bug.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7ea1ca6229ca228a1a3a0ff453c3530bf4f7a26e 21-Oct-2008 Dan Gohman <gohman@apple.com> Fix SelectionDAGBuild lowering of Select instructions to
handle first-class aggregate values. Also, fix a bug in
the Ret handling for empty aggregates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57925 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
7916059195b219af68a826c8244efbe35cd79301 21-Oct-2008 Dan Gohman <gohman@apple.com> Fix SelectionDAGBuild lowering of Select instructions to
handle first-class aggregate values. Also, fix a bug in
the Ret handling for empty aggregates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57925 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
4401361a2fb92c82317dbfbb1616f54ced2b51f3 21-Oct-2008 Dan Gohman <gohman@apple.com> Don't create TargetGlobalAddress nodes with offsets that don't fit
in the 32-bit signed offset field of addresses. Even though this
may be intended, some linkers refuse to relocate code where the
relocated address computation overflows.

Also, fix the sign-extension of constant offsets to use the
actual pointer size, rather than the size of the GlobalAddress
node, which may be different, for example on x86-64 where MVT::i32
is used when the address is being fit into the 32-bit displacement
field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57885 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3d5257c35a463f6bc443139bdb84f94cd53299db 21-Oct-2008 Dan Gohman <gohman@apple.com> Don't create TargetGlobalAddress nodes with offsets that don't fit
in the 32-bit signed offset field of addresses. Even though this
may be intended, some linkers refuse to relocate code where the
relocated address computation overflows.

Also, fix the sign-extension of constant offsets to use the
actual pointer size, rather than the size of the GlobalAddress
node, which may be different, for example on x86-64 where MVT::i32
is used when the address is being fit into the 32-bit displacement
field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57885 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
279c22e6da2612f024b70e5509ffb0cad32f38b2 21-Oct-2008 Dan Gohman <gohman@apple.com> Optimized FCMP_OEQ and FCMP_UNE for x86.

Where previously LLVM might emit code like this:

ucomisd %xmm1, %xmm0
setne %al
setp %cl
orb %al, %cl
jne .LBB4_2

it now emits this:

ucomisd %xmm1, %xmm0
jne .LBB4_2
jp .LBB4_2

It has fewer instructions and uses fewer registers, but it does
have more branches. And in the case that this code is followed by
a non-fallthrough edge, it may be followed by a jmp instruction,
resulting in three branch instructions in sequence. Some effort
is made to avoid this situation.

To achieve this, X86ISelLowering.cpp now recognizes FCMP_OEQ and
FCMP_UNE in lowered form, and replace them with code that emits
two branches, except in the case where it would require converting
a fall-through edge to an explicit branch.

Also, X86InstrInfo.cpp's branch analysis and transform code now
knows now to handle blocks with multiple conditional branches. It
uses loops instead of having fixed checks for up to two
instructions. It can now analyze and transform code generated
from FCMP_OEQ and FCMP_UNE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57873 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
6a00fcb240adf82a3bd82068da70150ddb832407 21-Oct-2008 Dan Gohman <gohman@apple.com> Optimized FCMP_OEQ and FCMP_UNE for x86.

Where previously LLVM might emit code like this:

ucomisd %xmm1, %xmm0
setne %al
setp %cl
orb %al, %cl
jne .LBB4_2

it now emits this:

ucomisd %xmm1, %xmm0
jne .LBB4_2
jp .LBB4_2

It has fewer instructions and uses fewer registers, but it does
have more branches. And in the case that this code is followed by
a non-fallthrough edge, it may be followed by a jmp instruction,
resulting in three branch instructions in sequence. Some effort
is made to avoid this situation.

To achieve this, X86ISelLowering.cpp now recognizes FCMP_OEQ and
FCMP_UNE in lowered form, and replace them with code that emits
two branches, except in the case where it would require converting
a fall-through edge to an explicit branch.

Also, X86InstrInfo.cpp's branch analysis and transform code now
knows now to handle blocks with multiple conditional branches. It
uses loops instead of having fixed checks for up to two
instructions. It can now analyze and transform code generated
from FCMP_OEQ and FCMP_UNE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57873 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
3afda6e9d1a74456b9baa87ee6aabbc06e356433 21-Oct-2008 Dan Gohman <gohman@apple.com> When the coalescer is doing rematerializing, have it remove
the copy instruction from the instruction list before asking the
target to create the new instruction. This gets the old instruction
out of the way so that it doesn't interfere with the target's
rematerialization code. In the case of x86, this helps it find
more cases where EFLAGS is not live.

Also, in the X86InstrInfo.cpp, teach isSafeToClobberEFLAGS to check
to see if it reached the end of the block after scanning each
instruction, instead of just before. This lets it notice when the
end of the block is only two instructions away, without doing any
additional scanning.

These changes allow rematerialization to clobber EFLAGS in more
cases, for example using xor instead of mov to set the return value
to zero in the included testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57872 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
3588f9d4ef8b209133e73ea01fd961e0187ba279 21-Oct-2008 Dan Gohman <gohman@apple.com> When the coalescer is doing rematerializing, have it remove
the copy instruction from the instruction list before asking the
target to create the new instruction. This gets the old instruction
out of the way so that it doesn't interfere with the target's
rematerialization code. In the case of x86, this helps it find
more cases where EFLAGS is not live.

Also, in the X86InstrInfo.cpp, teach isSafeToClobberEFLAGS to check
to see if it reached the end of the block after scanning each
instruction, instead of just before. This lets it notice when the
end of the block is only two instructions away, without doing any
additional scanning.

These changes allow rematerialization to clobber EFLAGS in more
cases, for example using xor instead of mov to set the return value
to zero in the included testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57872 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
e7d238ea239e6ab8a2c60ecd27468f3cfc1bb08b 21-Oct-2008 Dan Gohman <gohman@apple.com> Make the NaN test come second, heuristically assuming
that NaNs are less common.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57871 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2b5b9ca56863e3614be22708e7a3fd9faffcdc71 21-Oct-2008 Dan Gohman <gohman@apple.com> Make the NaN test come second, heuristically assuming
that NaNs are less common.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57871 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7334b1521018651bf04d3da8d612cc9f2da506a8 21-Oct-2008 Oscar Fuentes <ofv@wanadoo.es> CMake: updated lib/CodeGen/CMakeLists.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57869 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
67825b038298c790f78857579d4c5dd3b91e589f 21-Oct-2008 Oscar Fuentes <ofv@wanadoo.es> CMake: updated lib/CodeGen/CMakeLists.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57869 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
01426e1a2755b05330b55b93f91887f5ff816adb 21-Oct-2008 Chris Lattner <sabre@nondot.org> Fix gcc.c-torture/compile/920520-1.c by inserting bitconverts
for strange asm conditions earlier. In this case, we have a
double being passed in an integer reg class. Convert to like
sized integer register so that we allocate the right number
for the class (two i32's for the f64 in this case).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57862 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ea90c03309ef37e00fec1e716a4858fd4988213b 21-Oct-2008 Chris Lattner <sabre@nondot.org> Fix gcc.c-torture/compile/920520-1.c by inserting bitconverts
for strange asm conditions earlier. In this case, we have a
double being passed in an integer reg class. Convert to like
sized integer register so that we allocate the right number
for the class (two i32's for the f64 in this case).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57862 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
09e8ca8a582bb67ef290d77d9b9441716dd6ba2e 20-Oct-2008 Evan Cheng <evan.cheng@apple.com> Add skeleton for the pre-register allocation live interval splitting pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57847 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
c8cbbe7231e7d0fb6d726a1d2a6dec78d063ed07 20-Oct-2008 Evan Cheng <evan.cheng@apple.com> Add skeleton for the pre-register allocation live interval splitting pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57847 91177308-0d34-0410-b5e6-96231b3b80d8
reAllocSplitting.cpp
d659d50482e2f9edf8f436e4a1aa30c68c6d020b 20-Oct-2008 Dan Gohman <gohman@apple.com> Fast-isel no longer an experiment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57845 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
eec72ed75d960ab7aabb7237423de6b76d1f332b 20-Oct-2008 Dan Gohman <gohman@apple.com> Fast-isel no longer an experiment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57845 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
11a26f3697ea6520022ea6d3fa6a07b3c1b988cd 20-Oct-2008 Evan Cheng <evan.cheng@apple.com> Add a register class -> virtual registers map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57844 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
913e09cf1ccc60b3f17c0b4f2651ff4552b4188b 20-Oct-2008 Evan Cheng <evan.cheng@apple.com> Add a register class -> virtual registers map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57844 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
d398672dddc50704ba7c4adbcf7dc99bd14c0108 20-Oct-2008 Duncan Sands <baldrick@free.fr> Support operations like fp_to_uint with a vector
result type when the result type is legal but
not the operand type. Add additional support
for EXTRACT_SUBVECTOR and CONCAT_VECTORS,
needed to handle such cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57840 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
07ac448d483e6f7837ffa972e087411371e1c324 20-Oct-2008 Duncan Sands <baldrick@free.fr> Support operations like fp_to_uint with a vector
result type when the result type is legal but
not the operand type. Add additional support
for EXTRACT_SUBVECTOR and CONCAT_VECTORS,
needed to handle such cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57840 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
b5f68e241f9eb19e5694131df830acbfce20a6eb 20-Oct-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for atomic operation promotion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57838 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
8d9c9b001d90b6c011bca4b595555ef9bdf4fb01 20-Oct-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for atomic operation promotion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57838 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
49c18cce976c158e86f54c681dff21bb81640fb8 20-Oct-2008 Duncan Sands <baldrick@free.fr> Use DAG.getIntPtrConstant rather than DAG.getConstant
with TLI.getPointerTy for a small simplification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57837 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
5fa796a3be8ed1e2a521831f49b920d2fb07916f 20-Oct-2008 Duncan Sands <baldrick@free.fr> Use DAG.getIntPtrConstant rather than DAG.getConstant
with TLI.getPointerTy for a small simplification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57837 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
7e4982287591945c4e42ba8470a978e629789c76 20-Oct-2008 Duncan Sands <baldrick@free.fr> Always use either MVT::i1 or getSetCCResultType for
the condition of a SELECT node. Make sure that the
correct extension type (any-, sign- or zero-extend)
is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57836 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
678a5fdedab06c815e8ff202b9019e1901dd1db9 20-Oct-2008 Duncan Sands <baldrick@free.fr> Always use either MVT::i1 or getSetCCResultType for
the condition of a SELECT node. Make sure that the
correct extension type (any-, sign- or zero-extend)
is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57836 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
ef5b199905cee0b78eb30cd44836e5b6ca5cbd09 20-Oct-2008 Duncan Sands <baldrick@free.fr> Formatting - no functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
7a9bef005a465114a8534e2994259e43ad588549 20-Oct-2008 Duncan Sands <baldrick@free.fr> Formatting - no functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
f6e29499ac036821e7f84e264663c24888d68c78 20-Oct-2008 Duncan Sands <baldrick@free.fr> Don't use a random type for the select condition,
use an MVT::i1 and simplify the code while there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57833 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
0550cf01c9935b08bd0ee8b24bdd8541f8ecc9af 20-Oct-2008 Duncan Sands <baldrick@free.fr> Don't use a random type for the select condition,
use an MVT::i1 and simplify the code while there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57833 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
a1dc6025422cd0e6f951c69a8427f7f885cf52c3 19-Oct-2008 Bill Wendling <isanbard@gmail.com> Set N->OperandList to 0 after deletion. Otherwise, it's possible that it will
be either deleted or referenced afterwards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b75ddd25cb1230b44712407776a34f7872c92edd 19-Oct-2008 Bill Wendling <isanbard@gmail.com> Set N->OperandList to 0 after deletion. Otherwise, it's possible that it will
be either deleted or referenced afterwards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
181b627f62613190322b69b9e73c20a4ec322dba 19-Oct-2008 Bill Wendling <isanbard@gmail.com> Fix comment. Other formatting changes. No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57785 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
229224601309248f899e8e697c00448f92ccad2d 19-Oct-2008 Bill Wendling <isanbard@gmail.com> Fix comment. Other formatting changes. No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57785 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
0e3da1def46ae4925d811406f9e67f0c45d5b597 19-Oct-2008 Duncan Sands <baldrick@free.fr> Vector shuffle mask elements may be "undef". Handle
this everywhere in LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57783 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
704e72b7b766bd03aec122657a18cdfa063c8cba 19-Oct-2008 Duncan Sands <baldrick@free.fr> Vector shuffle mask elements may be "undef". Handle
this everywhere in LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57783 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
94989acaabec94d3b09367e218536629cbba666d 19-Oct-2008 Duncan Sands <baldrick@free.fr> Use a legal integer type for vector shuffle mask
elements. Otherwise LegalizeTypes will, reasonably
enough, legalize the mask, which may result in it
no longer being a BUILD_VECTOR node (LegalizeDAG
simply ignores the legality or not of vector masks).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57782 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
193c2bd82f1087b21c77f875777aa28aeaab5248 19-Oct-2008 Duncan Sands <baldrick@free.fr> Use a legal integer type for vector shuffle mask
elements. Otherwise LegalizeTypes will, reasonably
enough, legalize the mask, which may result in it
no longer being a BUILD_VECTOR node (LegalizeDAG
simply ignores the legality or not of vector masks).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57782 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2a0b96c2c74ca23460d51ac6531c5d3f0b75d076 18-Oct-2008 Chris Lattner <sabre@nondot.org> Reapply r57699 with a fix to not crash on asms with multiple results. Unlike
the previous patch this one actually passes make check.

"Fix PR2356 on PowerPC: if we have an input and output that are tied together
that have different sizes (e.g. i32 and i64) make sure to reserve registers for
the bigger operand."



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57771 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
75dc779d8bcf4d202b0445a47f4b9352edc81945 18-Oct-2008 Chris Lattner <sabre@nondot.org> Reapply r57699 with a fix to not crash on asms with multiple results. Unlike
the previous patch this one actually passes make check.

"Fix PR2356 on PowerPC: if we have an input and output that are tied together
that have different sizes (e.g. i32 and i64) make sure to reserve registers for
the bigger operand."



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57771 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
668aff66232d17731153c5af1cc45aa4d351f00b 18-Oct-2008 Dan Gohman <gohman@apple.com> Don't truncate GlobalAddress offsets to int in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57770 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
cfe43231d222ccf266c31b0d1027645d77075c24 18-Oct-2008 Dan Gohman <gohman@apple.com> Don't truncate GlobalAddress offsets to int in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57770 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
4ed4329c37f5a64c16ad4dc1960cbcb66b7118d4 18-Oct-2008 Evan Cheng <evan.cheng@apple.com> By min, I mean max.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57766 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
eb6a3eea2e71e95a2dc2075dda0a086423c8f7bf 18-Oct-2008 Evan Cheng <evan.cheng@apple.com> By min, I mean max.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57766 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
99fe34b9b2bb8786da6c7f6134ae17d4c2cd8bf7 18-Oct-2008 Evan Cheng <evan.cheng@apple.com> When creating intervals, leave min(1, numdefs) holes after each instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57765 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
37e6ae51dbdfad69d581fb28f426b45f994269b3 18-Oct-2008 Evan Cheng <evan.cheng@apple.com> When creating intervals, leave min(1, numdefs) holes after each instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57765 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6520e20e4fb31f2e65e25c38b372b19d33a83df4 18-Oct-2008 Dan Gohman <gohman@apple.com> Teach DAGCombine to fold constant offsets into GlobalAddress nodes,
and add a TargetLowering hook for it to use to determine when this
is legal (i.e. not in PIC mode, etc.)

This allows instruction selection to emit folded constant offsets
in more cases, such as the included testcase, eliminating the need
for explicit arithmetic instructions.

This eliminates the need for the C++ code in X86ISelDAGToDAG.cpp
that attempted to achieve the same effect, but wasn't as effective.

Also, fix handling of offsets in GlobalAddressSDNodes in several
places, including changing GlobalAddressSDNode's offset from
int to int64_t.

The Mips, Alpha, Sparc, and CellSPU targets appear to be
unaware of GlobalAddress offsets currently, so set the hook to
false on those targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57748 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
36322c7717f7af5790ea0e64ce3d332e2df15060 18-Oct-2008 Dan Gohman <gohman@apple.com> Teach DAGCombine to fold constant offsets into GlobalAddress nodes,
and add a TargetLowering hook for it to use to determine when this
is legal (i.e. not in PIC mode, etc.)

This allows instruction selection to emit folded constant offsets
in more cases, such as the included testcase, eliminating the need
for explicit arithmetic instructions.

This eliminates the need for the C++ code in X86ISelDAGToDAG.cpp
that attempted to achieve the same effect, but wasn't as effective.

Also, fix handling of offsets in GlobalAddressSDNodes in several
places, including changing GlobalAddressSDNode's offset from
int to int64_t.

The Mips, Alpha, Sparc, and CellSPU targets appear to be
unaware of GlobalAddress offsets currently, so set the hook to
false on those targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57748 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
95915730de69342d3733f5c391779ae007eb3efa 18-Oct-2008 Dan Gohman <gohman@apple.com> Revert r57699. It's causing regressions in
test/CodeGen/X86/2008-09-17-inline-asm-1.ll
and a few others, and it breaks the llvm-gcc build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
0d946af84c2a30b411cf0411a8b74d933a952e6c 18-Oct-2008 Dan Gohman <gohman@apple.com> Revert r57699. It's causing regressions in
test/CodeGen/X86/2008-09-17-inline-asm-1.ll
and a few others, and it breaks the llvm-gcc build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
c227734855b615f5b09060e7ea67f697de08fc7e 17-Oct-2008 Dan Gohman <gohman@apple.com> Factor out the code for mapping LLVM IR condition opcodes to
ISD condition opcodes into helper functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57726 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
001eaee0a205b03ea236ada116c0359a2144d22f 17-Oct-2008 Dan Gohman <gohman@apple.com> Factor out the code for mapping LLVM IR condition opcodes to
ISD condition opcodes into helper functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57726 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
af42fe36acaf21958bd283f7327a068bbd1016ba 17-Oct-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2898. Spiller delete a store for reuse before it knows for sure the reuse happened.
Patch by Lang Hames!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57720 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
1e0089b9a671694a4640b769bebbbb001875befb 17-Oct-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2898. Spiller delete a store for reuse before it knows for sure the reuse happened.
Patch by Lang Hames!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57720 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
cfc14c153a3e233c329394f148d83cd6862a51a6 17-Oct-2008 Chris Lattner <sabre@nondot.org> add support for 128 bit aggregates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57715 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f1aaff6a3ba4c3ca31010ce8865b3b586dc238ef 17-Oct-2008 Chris Lattner <sabre@nondot.org> add support for 128 bit aggregates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57715 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
a9f0cc4ced61589c5a045016dc51061af54bac20 17-Oct-2008 Bill Wendling <isanbard@gmail.com> The Dwarf writer was comparing mangled and unmangled names for C++ code when we
have an unreachable block in a function. This was triggering the assert. This is
a horrid hack to cover this up.

Oh! for a good debug info architecture!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57714 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
ae6b98cd73e13829e9796d87cf4120bebba93770 17-Oct-2008 Bill Wendling <isanbard@gmail.com> The Dwarf writer was comparing mangled and unmangled names for C++ code when we
have an unreachable block in a function. This was triggering the assert. This is
a horrid hack to cover this up.

Oh! for a good debug info architecture!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57714 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
c4d1021ead43cfa7da08a8f7ddc9a059a8ba14c5 17-Oct-2008 Mon P Wang <wangmp@apple.com> Added MemIntrinsicNode which is useful to represent target intrinsics that
touches memory and need an associated MemOperand


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
89423383c11a0373a34fe3e4029313dd356dd71b 17-Oct-2008 Mon P Wang <wangmp@apple.com> Added MemIntrinsicNode which is useful to represent target intrinsics that
touches memory and need an associated MemOperand


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8c1a6ca22ab247dc5c493fe815f75b1e77f2c686 17-Oct-2008 Dan Gohman <gohman@apple.com> Factor out the code for mapping LLVM IR condition opcodes to
ISD condition opcodes into helper functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57710 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
9a1b1c45278755db308de410e62792d9d9a4552f 17-Oct-2008 Dan Gohman <gohman@apple.com> Factor out the code for mapping LLVM IR condition opcodes to
ISD condition opcodes into helper functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57710 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
0c52644cd8e46ca4c9caa6c51d43f97a2de8c5f5 17-Oct-2008 Chris Lattner <sabre@nondot.org> Fix PR2356 on PowerPC: if we have an input and output that are tied together
that have different sizes (e.g. i32 and i64) make sure to reserve registers for
the bigger operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57699 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
a92185de521df0e6fa4ad9e01a20105570c35295 17-Oct-2008 Chris Lattner <sabre@nondot.org> Fix PR2356 on PowerPC: if we have an input and output that are tied together
that have different sizes (e.g. i32 and i64) make sure to reserve registers for
the bigger operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57699 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
81249c95ceff7bc7b9160d1535b916de01bc472e 17-Oct-2008 Chris Lattner <sabre@nondot.org> refactor some code into a helper method, no functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57690 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
2532688e2e50f9ea1bdea285900b3d41fef59cdd 17-Oct-2008 Chris Lattner <sabre@nondot.org> refactor some code into a helper method, no functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57690 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
6bdcda3d3e30003fb6cef1d4e2fd3a5d5b40d3fc 17-Oct-2008 Chris Lattner <sabre@nondot.org> Keep track of *which* input constraint matches an output
constraint. Reject asms where an output has multiple
input constraints tied to it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57687 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
efec324270c75c7a48a7444a0692701fefabc99c 17-Oct-2008 Chris Lattner <sabre@nondot.org> Keep track of *which* input constraint matches an output
constraint. Reject asms where an output has multiple
input constraints tied to it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57687 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
58f15c482a7129c78ca809792b46befa20ea337d 17-Oct-2008 Chris Lattner <sabre@nondot.org> add an assert so that PR2356 explodes instead of running off an
array. Improve some minor comments, refactor some helpers in
AsmOperandInfo. No functionality change for valid code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57686 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
01f5354c1dfcc0d172b341aa8d9aeeb0dccd9065 17-Oct-2008 Chris Lattner <sabre@nondot.org> add an assert so that PR2356 explodes instead of running off an
array. Improve some minor comments, refactor some helpers in
AsmOperandInfo. No functionality change for valid code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57686 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
6784598895c184889b82a9d213c307c70b1ea444 17-Oct-2008 Evan Cheng <evan.cheng@apple.com> Fix a very subtle spiller bug: UpdateKills should not forget to track defs of aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57673 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
ac16652af53d156bcae1e35cd7bd68b6ef1fb9b3 17-Oct-2008 Evan Cheng <evan.cheng@apple.com> Fix a very subtle spiller bug: UpdateKills should not forget to track defs of aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57673 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
74feef261a43392bc85280f66c75fbd4e2ccf73d 17-Oct-2008 Dan Gohman <gohman@apple.com> Define patterns for shld and shrd that match immediate
shift counts, and patterns that match dynamic shift counts
when the subtract is obscured by a truncate node.

Add DAGCombiner support for recognizing rotate patterns
when the shift counts are defined by truncate nodes.

Fix and simplify the code for commuting shld and shrd
instructions to work even when the given instruction doesn't
have a parent, and when the caller needs a new instruction.

These changes allow LLVM to use the shld, shrd, rol, and ror
instructions on x86 to replace equivalent code using two
shifts and an or in many more cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57662 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
921581d2d000e0aa882f9dee8a104ef8a4b07e72 17-Oct-2008 Dan Gohman <gohman@apple.com> Define patterns for shld and shrd that match immediate
shift counts, and patterns that match dynamic shift counts
when the subtract is obscured by a truncate node.

Add DAGCombiner support for recognizing rotate patterns
when the shift counts are defined by truncate nodes.

Fix and simplify the code for commuting shld and shrd
instructions to work even when the given instruction doesn't
have a parent, and when the caller needs a new instruction.

These changes allow LLVM to use the shld, shrd, rol, and ror
instructions on x86 to replace equivalent code using two
shifts and an or in many more cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57662 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
131161bc6e490624ab3b906d5a5233050dae4a99 16-Oct-2008 Dan Gohman <gohman@apple.com> Rename AliasSet to SubRegs, to reflect changes in the surrounding code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57618 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
d0d1fd280b45c1e17ce6d96f9bf006fe2ba2ca79 16-Oct-2008 Dan Gohman <gohman@apple.com> Rename AliasSet to SubRegs, to reflect changes in the surrounding code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57618 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
7ddcadc7ee18b8e4edd3524d2a24837688880233 16-Oct-2008 Dan Gohman <gohman@apple.com> Move the include of MachineLocation.h into MachineModuleInfo.h
because it declares a std::vector<MachineMove>, and strict
concept checking requires the definition of MachineMove to be
available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57617 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
2e23d13879e88b0ac24bf3392dd7cd475b2400c3 16-Oct-2008 Dan Gohman <gohman@apple.com> Move the include of MachineLocation.h into MachineModuleInfo.h
because it declares a std::vector<MachineMove>, and strict
concept checking requires the definition of MachineMove to be
available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57617 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
b382c4dc235b78b606b305f1913fafc20eca472c 16-Oct-2008 Dan Gohman <gohman@apple.com> Fix a subtle bug in DeadMachineInstructionElim's liveness
computation. A def of a register doesn't necessarily kill
live super-registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57614 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
995183622ed4a26abd74d0cdf18c7a1c34150ff8 16-Oct-2008 Dan Gohman <gohman@apple.com> Fix a subtle bug in DeadMachineInstructionElim's liveness
computation. A def of a register doesn't necessarily kill
live super-registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57614 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
26367472a204219b67ba7686f39f91470b6d2c24 15-Oct-2008 Dan Gohman <gohman@apple.com> Adjust whitespace in debug messages to be more consistent
with other debug messages.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57543 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
tackSlotColoring.cpp
d743014980ac5af4c9aa03de4afe5088cc7537a9 15-Oct-2008 Dan Gohman <gohman@apple.com> Adjust whitespace in debug messages to be more consistent
with other debug messages.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57543 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
tackSlotColoring.cpp
7f042681764c6f8eae22781d8b4cb4c218a86b76 15-Oct-2008 Evan Cheng <evan.cheng@apple.com> - Add target lowering hooks that specify which setcc conditions are illegal,
i.e. conditions that cannot be checked with a single instruction. For example,
SETONE and SETUEQ on x86.
- Teach legalizer to implement *illegal* setcc as a and / or of a number of
legal setcc nodes. For now, only implement FP conditions. e.g. SETONE is
implemented as SETO & SETNE, SETUEQ is SETUO | SETEQ.
- Move x86 target over.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57542 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
7134382d9a2c5cf0c0b722d8f6074e3864050353 15-Oct-2008 Evan Cheng <evan.cheng@apple.com> - Add target lowering hooks that specify which setcc conditions are illegal,
i.e. conditions that cannot be checked with a single instruction. For example,
SETONE and SETUEQ on x86.
- Teach legalizer to implement *illegal* setcc as a and / or of a number of
legal setcc nodes. For now, only implement FP conditions. e.g. SETONE is
implemented as SETO & SETNE, SETUEQ is SETUO | SETEQ.
- Move x86 target over.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57542 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
dd5b58ad7be78be90390074f0df138778af5c895 15-Oct-2008 Dan Gohman <gohman@apple.com> FastISel support for exception-handling constructs.
- Move the EH landing-pad code and adjust it so that it works
with FastISel as well as with SDISel.
- Add FastISel support for @llvm.eh.exception and
@llvm.eh.selector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57539 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
9dd43585e4e77ab8e7d3bb7e5d399b210cf1282c 15-Oct-2008 Dan Gohman <gohman@apple.com> FastISel support for exception-handling constructs.
- Move the EH landing-pad code and adjust it so that it works
with FastISel as well as with SDISel.
- Add FastISel support for @llvm.eh.exception and
@llvm.eh.selector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57539 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
0329466b6b4927f4e6f5d144891fef06a027fec5 14-Oct-2008 Evan Cheng <evan.cheng@apple.com> Rename LoadX to LoadExt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57526 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
08c171a5541b033a603674fa0179259714d985a3 14-Oct-2008 Evan Cheng <evan.cheng@apple.com> Rename LoadX to LoadExt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57526 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
b8cab9227a0f6ffbdaae33e3c64268e265008a6a 14-Oct-2008 Dan Gohman <gohman@apple.com> Fix command-line option printing to print two spaces where needed,
instead of requiring all "short description" strings to begin with
two spaces. This makes these strings less mysterious, and it fixes
some cases where short description strings mistakenly did not
begin with two spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57521 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
egAllocSimple.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
irtRegMap.cpp
669b9bf656d0bdb22bee268c4dec5eb3b3add6d0 14-Oct-2008 Dan Gohman <gohman@apple.com> Fix command-line option printing to print two spaces where needed,
instead of requiring all "short description" strings to begin with
two spaces. This makes these strings less mysterious, and it fixes
some cases where short description strings mistakenly did not
begin with two spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57521 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
egAllocSimple.cpp
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
irtRegMap.cpp
efa533957dfdc29be6de3845158ebd5fa7391485 13-Oct-2008 Evan Cheng <evan.cheng@apple.com> FIX PR2794. Make sure SIGN_EXTEND_INREG nodes introduced by LegalizeSetCCOperands are leglized. Patch by Richard Pennington.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57460 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d901b6640e0f1d1757a2db9fb57a140ad828ea75 13-Oct-2008 Evan Cheng <evan.cheng@apple.com> FIX PR2794. Make sure SIGN_EXTEND_INREG nodes introduced by LegalizeSetCCOperands are leglized. Patch by Richard Pennington.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57460 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
195cd3a58d17f1c98352c6d944549b6c3a50aa1b 13-Oct-2008 Evan Cheng <evan.cheng@apple.com> Also update sub-register intervals after a trivial computation is rematt'ed for a copy instruction. PR2775.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57458 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0f970c89f6bfd1222688f9d281900b9e8d094496 13-Oct-2008 Evan Cheng <evan.cheng@apple.com> Also update sub-register intervals after a trivial computation is rematt'ed for a copy instruction. PR2775.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57458 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d9d07780ff0d393a34cbd57cd2b85bdd8c947a04 13-Oct-2008 Matthijs Kooijman <matthijs@stdin.nl> * Make TargetLowering not crash when TargetMachine::getTargetAsmInfo() returns
null. This assumes that any target that does not have AsmInfo, does not
support "LocAndDot".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57438 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b9333ccdd5658c826f2c7bdd6a542343eed56871 13-Oct-2008 Matthijs Kooijman <matthijs@stdin.nl> * Make TargetLowering not crash when TargetMachine::getTargetAsmInfo() returns
null. This assumes that any target that does not have AsmInfo, does not
support "LocAndDot".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57438 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e2b997b7b5360b4793c524a801e988fd37b80b93 13-Oct-2008 Matthijs Kooijman <matthijs@stdin.nl> Make MachineFunction not crash when TargetMachine::getRegisterInfo() returns
NULL, but just hide some debug output then.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57437 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
1cb065e859626fa8d13394beca889eec32398f2c 13-Oct-2008 Matthijs Kooijman <matthijs@stdin.nl> Make MachineFunction not crash when TargetMachine::getRegisterInfo() returns
NULL, but just hide some debug output then.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57437 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
44d2a983b76a2a923e34f3162c960443425cb296 13-Oct-2008 Chris Lattner <sabre@nondot.org> calls can be supported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
61d84a0c78345d74dee403b7658f77abaec63b75 13-Oct-2008 Chris Lattner <sabre@nondot.org> calls can be supported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d55fccde4cc8a263f668c2f1db7fbe96fc19d4a6 12-Oct-2008 Owen Anderson <resistor@mac.com> Fix a bug in live-in detection that caused lost-copy problems to show up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57424 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
775b7bab28aefb91092248d299e78088940645f6 12-Oct-2008 Owen Anderson <resistor@mac.com> Fix a bug in live-in detection that caused lost-copy problems to show up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57424 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
99cbdff66c6a1f35e83f8103bf444ddab61fcb59 12-Oct-2008 Chris Lattner <sabre@nondot.org> fix typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57388 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0f2b3c676568572d60d2f93fac02eca0a035f7fb 12-Oct-2008 Chris Lattner <sabre@nondot.org> fix typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57388 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
e563bbc312f8b11ecfe12b8187176f667df1dff3 12-Oct-2008 Chris Lattner <sabre@nondot.org> Change CALLSEQ_BEGIN and CALLSEQ_END to take TargetConstant's as
parameters instead of raw Constants. This prevents the constants from
being selected by the isel pass, fixing PR2735.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57385 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fe5d4021d0884e4cb94a7bb688fa0b02950ee29c 12-Oct-2008 Chris Lattner <sabre@nondot.org> Change CALLSEQ_BEGIN and CALLSEQ_END to take TargetConstant's as
parameters instead of raw Constants. This prevents the constants from
being selected by the isel pass, fixing PR2735.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57385 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3c261016692314d907dbcdc70da1bf4a968436a9 11-Oct-2008 Chris Lattner <sabre@nondot.org> simplify comparison


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
de1dd9c6d28db027e12c564827dd0f6aaf4feab7 11-Oct-2008 Chris Lattner <sabre@nondot.org> simplify comparison


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
8b1e0549389e4c360ac95f50da95d5009553b447 10-Oct-2008 Dale Johannesen <dalej@apple.com> Remove some overzealous checks that were rejecting
valid comments in inline assembly.
gcc.target/i386/20011009-1.c



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57365 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
8b0e117a9da2c201d6fe994c010f24d4ea5f0ff3 10-Oct-2008 Dale Johannesen <dalej@apple.com> Remove some overzealous checks that were rejecting
valid comments in inline assembly.
gcc.target/i386/20011009-1.c



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57365 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
5ca6bd14a00ba5310ce1a632d3a0cc8f8af31433 10-Oct-2008 Mon P Wang <wangmp@apple.com> Added missing print functions that take a raw_ostream


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57339 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
2f2cd30d01931e235b3f11a20264b8346f92192f 10-Oct-2008 Mon P Wang <wangmp@apple.com> Added missing print functions that take a raw_ostream


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57339 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
23a98551ab65eeb8fe5019df8b7db4891582a4bd 10-Oct-2008 Dale Johannesen <dalej@apple.com> Add a "loses information" return value to APFloat::convert
and APFloat::convertToInteger. Restore return value to
IEEE754. Adjust all users accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57329 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAG.cpp
6e547b4aeea29737f4aecad5b2cdaccb86989c20 10-Oct-2008 Dale Johannesen <dalej@apple.com> Add a "loses information" return value to APFloat::convert
and APFloat::convertToInteger. Restore return value to
IEEE754. Adjust all users accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57329 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/FastISel.cpp
electionDAG/SelectionDAG.cpp
7111b02c734c992b8c97d9918118768026dad79e 09-Oct-2008 Dale Johannesen <dalej@apple.com> Rename APFloat::convertToAPInt to bitcastToAPInt to
make it clearer what the function does. No functional
change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57325 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achOWriter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
49cc7cec5d3bb722e7bad032233e6d763fba494f 09-Oct-2008 Dale Johannesen <dalej@apple.com> Rename APFloat::convertToAPInt to bitcastToAPInt to
make it clearer what the function does. No functional
change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57325 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
achOWriter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
d65b26495df824717760099e0294db8f2a4662db 08-Oct-2008 Dale Johannesen <dalej@apple.com> Align EH tables before label is emitted, not after,
thus aligning the label.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57310 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
841e4984da61e6f5cc91971dfd4eb2dc3fa2e06a 08-Oct-2008 Dale Johannesen <dalej@apple.com> Align EH tables before label is emitted, not after,
thus aligning the label.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57310 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
04764deac8a05a74ff9399cf406f5525ff68543d 08-Oct-2008 Owen Anderson <resistor@mac.com> Fix the case where an instruction is not properly marked as using all registers that alias its inputs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57286 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
a4d2870061c5e718b87ad79a753f636f3a5ca65a 08-Oct-2008 Owen Anderson <resistor@mac.com> Fix the case where an instruction is not properly marked as using all registers that alias its inputs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57286 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
eb0d6abee36c274cf081948795f4675d8f33fc6f 08-Oct-2008 Dan Gohman <gohman@apple.com> Remove -disable-fast-isel. Use cl::boolOrDefault with -fast-isel
instead.

So now: -fast-isel or -fast-isel=true enable fast-isel, and
-fast-isel=false disables it. Fast-isel is also on by default
with -fast, and off by default otherwise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57270 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
6d7ee01d0a5ad3f9c5f9868b15cf2ce071241a60 08-Oct-2008 Dan Gohman <gohman@apple.com> Remove -disable-fast-isel. Use cl::boolOrDefault with -fast-isel
instead.

So now: -fast-isel or -fast-isel=true enable fast-isel, and
-fast-isel=false disables it. Fast-isel is also on by default
with -fast, and off by default otherwise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57270 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
1e9e8c3bd5ac018296bddb21a2acb8c643303b39 08-Oct-2008 Dan Gohman <gohman@apple.com> Avoid emitting redundant materializations of integer constants
for things like null pointers, which at this level aren't
different from regular integer constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57265 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3a49d0e16972381b9e27b3f8adb05be9296be614 08-Oct-2008 Dan Gohman <gohman@apple.com> Avoid emitting redundant materializations of integer constants
for things like null pointers, which at this level aren't
different from regular integer constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57265 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
95dad830bbf975cb4cea4e1ac685781a18676a7a 07-Oct-2008 Owen Anderson <resistor@mac.com> Add an option to enable StrongPHIElimination, for ease of testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57259 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
bac9ae29c7009e75c4efb9283b9f0a21d1d34356 07-Oct-2008 Owen Anderson <resistor@mac.com> Add an option to enable StrongPHIElimination, for ease of testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57259 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
2163ca11d576059883d1c289e5c4d8163d123270 07-Oct-2008 Andrew Lenharth <andrewl@lenharth.org> Use Dan's supperior check

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
97c315a1f5868daafe62f6a32a2722698e0f476c 07-Oct-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> Use Dan's supperior check

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ff75d9edbb54380deae77c8767fd7581ca401c1d 07-Oct-2008 Andrew Lenharth <andrewl@lenharth.org> No need for |=

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
83d3e655d2e8920143f9c85ba262095ee176914d 07-Oct-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> No need for |=

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1ad0c8201b119d4d90a837dd622b61eedf1648ea 07-Oct-2008 Andrew Lenharth <andrewl@lenharth.org> Use ADDC if it is valid at any smaller size. Do it right this time

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57248 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
310906df76067769776024466085bf40b6d205c7 07-Oct-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> Use ADDC if it is valid at any smaller size. Do it right this time

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57248 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5c9cc1392cfdea2281431de987f32545a3491fb6 07-Oct-2008 Andrew Lenharth <andrewl@lenharth.org> Use ADDC if it is valid at any smaller size. fixes test/Codegen/Generic/i128-addsub.ll on x86

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57247 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a23d699e41b2d135d166ce1c03cd0462bd8c4fad 07-Oct-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> Use ADDC if it is valid at any smaller size. fixes test/Codegen/Generic/i128-addsub.ll on x86

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57247 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
40d513960a50664c3c4130a40612a5e3673615ce 07-Oct-2008 Andrew Lenharth <andrewl@lenharth.org> Expand arith on machines without carry flags

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57243 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5e8144612637f4e17ecf4048272b10e75bd1a604 07-Oct-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> Expand arith on machines without carry flags

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57243 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b5cc34d098149a9606dacb6d421471d787253907 07-Oct-2008 Dan Gohman <gohman@apple.com> Correctly handle calls with no return values. This fixes
2006-01-23-UnionInit on x86-64 when inlining is not enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57223 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
8542a55c0a83b76494a57cdfeb3f60168fdefd55 07-Oct-2008 Dan Gohman <gohman@apple.com> Correctly handle calls with no return values. This fixes
2006-01-23-UnionInit on x86-64 when inlining is not enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57223 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
4daa9071ed1afde7fb03c7e0198101f4806b7d11 06-Oct-2008 Dan Gohman <gohman@apple.com> Don't dereference the end() iterator. Thanks to
ENABLE_EXPENSIVE_CHECKS for finding this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57181 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
ad077b80c983af3379805f1f83e3dd260ef3a4c3 06-Oct-2008 Dan Gohman <gohman@apple.com> Don't dereference the end() iterator. Thanks to
ENABLE_EXPENSIVE_CHECKS for finding this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57181 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
e4d4b8c53388643ade7081acc7f4d555b16e14aa 06-Oct-2008 Devang Patel <dpatel@apple.com> Remove unncessary isDeclaration() checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57179 91177308-0d34-0410-b5e6-96231b3b80d8
oopAligner.cpp
d365941ba7839d101d47289329406accf6d1ad42 06-Oct-2008 Devang Patel <dpatel@apple.com> Remove unncessary isDeclaration() checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57179 91177308-0d34-0410-b5e6-96231b3b80d8
oopAligner.cpp
d20a00d01199d95c2cb6685ad483985ba400ca48 06-Oct-2008 Chris Lattner <sabre@nondot.org> reorder #include order, patch by Kenneth Boyd!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57148 91177308-0d34-0410-b5e6-96231b3b80d8
BQP.cpp
c56a883b8269e54820bb19a037e6c14dc27a6bcc 06-Oct-2008 Chris Lattner <sabre@nondot.org> reorder #include order, patch by Kenneth Boyd!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57148 91177308-0d34-0410-b5e6-96231b3b80d8
BQP.cpp
78129446cacbc0f3ed17f3f11c8cd05f9cd95f47 06-Oct-2008 Chris Lattner <sabre@nondot.org> Add #include to get alloca, patch by Kenneth Boyd!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57147 91177308-0d34-0410-b5e6-96231b3b80d8
BQP.cpp
06c9231f4eb6246b11ebd4fded812f56d61e1d2d 06-Oct-2008 Chris Lattner <sabre@nondot.org> Add #include to get alloca, patch by Kenneth Boyd!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57147 91177308-0d34-0410-b5e6-96231b3b80d8
BQP.cpp
31d7161206d7502e97a01a51a76445a8d9ac6ea5 04-Oct-2008 Chris Lattner <sabre@nondot.org> wrap some long lines and expand i32 mul's to libcalls, inspired by a
patch by Mikael Lepisto!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57077 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
481886517c4d366d1f59265b4f4ef84837f3d734 04-Oct-2008 Chris Lattner <sabre@nondot.org> wrap some long lines and expand i32 mul's to libcalls, inspired by a
patch by Mikael Lepisto!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57077 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
80533040bc3b19f88c64bb8c4900af2e0128858d 04-Oct-2008 Oscar Fuentes <ofv@wanadoo.es> CMake: Reflected changes on source file structure. New plugin support
for llvmc2 incomplete.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57076 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
105f8d685ad15e443fe6b5235a62b0cf4429cd32 04-Oct-2008 Oscar Fuentes <ofv@wanadoo.es> CMake: Reflected changes on source file structure. New plugin support
for llvmc2 incomplete.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57076 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
0304b87cce60f5d98bd5a505bf8bee0b10f71548 04-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix compilation error on MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57046 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
2d3df9627b7923bf35f4f0e5c94f5593a217bffc 04-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Fix compilation error on MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57046 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
241f464d24a6c22721607841069bbeb17b3f71e6 04-Oct-2008 Dan Gohman <gohman@apple.com> Fix fast-isel's handling of atomic instructions. They may
expand to multiple basic blocks, in which case fast-isel
needs to informed of which block to use as it resumes
inserting instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57040 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2764e174ba023f24b2729dea7747da4fd2e3ec71 04-Oct-2008 Dan Gohman <gohman@apple.com> Fix fast-isel's handling of atomic instructions. They may
expand to multiple basic blocks, in which case fast-isel
needs to informed of which block to use as it resumes
inserting instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57040 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
022b21ff7c047f8c1615a6588052c55427bcd9b0 04-Oct-2008 Dan Gohman <gohman@apple.com> Fix a bug in the local allocator's liveness computation where it
was setting kill flags on tied uses in two-address instructions.
The kill flags were causing the allocator to think it could
allocate the use and its tied def in different registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57039 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
ec06ecd57f934a8e9290eb28a0835aae1751ee33 04-Oct-2008 Dan Gohman <gohman@apple.com> Fix a bug in the local allocator's liveness computation where it
was setting kill flags on tied uses in two-address instructions.
The kill flags were causing the allocator to think it could
allocate the use and its tied def in different registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57039 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
1b54c7fe9b034a6450af8596231ad5368b617725 03-Oct-2008 Dale Johannesen <dalej@apple.com> Pass MemOperand through for 64-bit atomics on 32-bit,
incidentally making the case where the memop is a
pointer deref work. Fix cmp-and-swap regression.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57027 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
44eb5379912c6c5b129ae34c88ffb5f260ceb70b 03-Oct-2008 Dale Johannesen <dalej@apple.com> Pass MemOperand through for 64-bit atomics on 32-bit,
incidentally making the case where the memop is a
pointer deref work. Fix cmp-and-swap regression.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57027 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ca0a5d93569d728659352ca5fbfe17daeed5f6ac 03-Oct-2008 Dan Gohman <gohman@apple.com> Use -1ULL instead of uint64_t(-1), at Anton's suggestion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57021 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
88566ae08a299f35b1131daf07811ee426d1ee44 03-Oct-2008 Dan Gohman <gohman@apple.com> Use -1ULL instead of uint64_t(-1), at Anton's suggestion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57021 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
17a82eaeb6339b184acb2f8bf0f314d69ad2e1d3 03-Oct-2008 Evan Cheng <evan.cheng@apple.com> Fix typos pointed out by Duncan. Also untabify these files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57018 91177308-0d34-0410-b5e6-96231b3b80d8
BQP.cpp
BQP.h
egAllocPBQP.cpp
bdd8f3b69a2b988e8986456908be2fe36133a99b 03-Oct-2008 Evan Cheng <evan.cheng@apple.com> Fix typos pointed out by Duncan. Also untabify these files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57018 91177308-0d34-0410-b5e6-96231b3b80d8
BQP.cpp
BQP.h
egAllocPBQP.cpp
d735b8019b0f297d7c14b55adcd887af24d8e602 03-Oct-2008 Dan Gohman <gohman@apple.com> Switch the MachineOperand accessors back to the short names like
isReg, etc., from isRegister, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57006 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
ranchFolding.cpp
eadMachineInstructionElim.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineLICM.cpp
achineSink.cpp
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
egAllocSimple.cpp
egisterScavenging.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
b9f4fa7b400836808bc3beab96482418f418f246 03-Oct-2008 Dan Gohman <gohman@apple.com> Switch the MachineOperand accessors back to the short names like
isReg, etc., from isRegister, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57006 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
ranchFolding.cpp
eadMachineInstructionElim.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineLICM.cpp
achineSink.cpp
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
egAllocPBQP.cpp
egAllocSimple.cpp
egisterScavenging.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
trongPHIElimination.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
e47561ccff9c7a76f9392b26ae6202e30f1247ed 03-Oct-2008 Duncan Sands <baldrick@free.fr> The result of getSetCCResultType (eg: i32) may be larger
than the type an i1 is promoted to (eg: i8). Account
for this. Noticed by Tilmann Scheller on CellSPU; he
will hopefully take care of fixing this in LegalizeDAG
and adding a testcase!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56997 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
1a37bd7c7e7abbd99f4d33a0788e4b20aa67ac0f 03-Oct-2008 Duncan Sands <baldrick@free.fr> The result of getSetCCResultType (eg: i32) may be larger
than the type an i1 is promoted to (eg: i8). Account
for this. Noticed by Tilmann Scheller on CellSPU; he
will hopefully take care of fixing this in LegalizeDAG
and adding a testcase!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56997 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
91b6f97ce4273fee5516692e3f27cd76d67986fc 03-Oct-2008 Dan Gohman <gohman@apple.com> Implement fast-isel support for zero-extending from i1.
It turns out that this is a fairly common operation,
and it's easy enough to handle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d762908e06b093e67af95c89d8647a527e17e2c8 03-Oct-2008 Dan Gohman <gohman@apple.com> Implement fast-isel support for zero-extending from i1.
It turns out that this is a fairly common operation,
and it's easy enough to handle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d98d6203e429b2d7208b6687931e9079e85e95ec 03-Oct-2008 Dan Gohman <gohman@apple.com> Optimize conditional branches in X86FastISel. This replaces
sequences like this:
sete %al
testb %al, %al
jne LBB11_1
with this:
je LBB11_1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8766d8eec326f01ec1cf458c1078798782e4177b 03-Oct-2008 Dan Gohman <gohman@apple.com> Optimize conditional branches in X86FastISel. This replaces
sequences like this:
sete %al
testb %al, %al
jne LBB11_1
with this:
je LBB11_1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
6ade6f55a836129af634074e96f660ff23f59a30 03-Oct-2008 Dan Gohman <gohman@apple.com> Add a new MachineBasicBlock utility function, isLayoutSuccessor, that
can be used when deciding if a block can transfer control to another
via a fall-through instead of a branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56968 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
901cf7c745f6054e96a793fe8cc8c2cbfec6e109 03-Oct-2008 Dan Gohman <gohman@apple.com> Add a new MachineBasicBlock utility function, isLayoutSuccessor, that
can be used when deciding if a block can transfer control to another
via a fall-through instead of a branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56968 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
88ab90b4757e481b627bb61b0eaca5ed2aa22b4d 02-Oct-2008 Andrew Lenharth <andrewl@lenharth.org> fix build gcc 4.3

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56965 91177308-0d34-0410-b5e6-96231b3b80d8
BQP.cpp
0b1654a52874c2a06157f1519b7089639c5d83d8 02-Oct-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> fix build gcc 4.3

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56965 91177308-0d34-0410-b5e6-96231b3b80d8
BQP.cpp
8481ee7f521de7e5c82b4c0773e37ce8410271cd 02-Oct-2008 Owen Anderson <resistor@mac.com> Use a multimap rather than a map for holding the list of copies to insert, so we don't lose copies when two of them have
the same source. I don't know what I was thinking when I wrote this originally.
Note: There's probably a more efficient way to do this, but I need to think about it some more, and about what determinism
guarantees need to be present.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56964 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
be383d550c7a62dacbe779f43479193acc45f4a2 02-Oct-2008 Owen Anderson <resistor@mac.com> Use a multimap rather than a map for holding the list of copies to insert, so we don't lose copies when two of them have
the same source. I don't know what I was thinking when I wrote this originally.
Note: There's probably a more efficient way to do this, but I need to think about it some more, and about what determinism
guarantees need to be present.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56964 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
48c1bc2ace6481d3272ab5c18e1f19352c563be8 02-Oct-2008 Dale Johannesen <dalej@apple.com> Handle some 64-bit atomics on x86-32, some of the time.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f160d80930ec8dc8f94df6010b562bd03e28f325 02-Oct-2008 Dale Johannesen <dalej@apple.com> Handle some 64-bit atomics on x86-32, some of the time.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b1290a6cc40f7caa0351450ce7021a0d48b5f2c0 02-Oct-2008 Evan Cheng <evan.cheng@apple.com> A Partitioned Boolean Quadratic Programming (PBQP) based register allocator.

Contributed by Lang Hames.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56959 91177308-0d34-0410-b5e6-96231b3b80d8
BQP.cpp
BQP.h
egAllocPBQP.cpp
af09cbdaf927bce0c8e70f9a0e576dab86bbf4c9 02-Oct-2008 Evan Cheng <evan.cheng@apple.com> A Partitioned Boolean Quadratic Programming (PBQP) based register allocator.

Contributed by Lang Hames.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56959 91177308-0d34-0410-b5e6-96231b3b80d8
BQP.cpp
BQP.h
egAllocPBQP.cpp
d790a5ceee7138d8a5352432ccf862a42e3f5819 02-Oct-2008 Dan Gohman <gohman@apple.com> Fix a think-o in isSafeToMove. This fixes it from thinking that
volatile memory references are safe to move.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56948 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
0ce00b8a4f91d799029ffa4d63ef59987051db2e 02-Oct-2008 Dan Gohman <gohman@apple.com> Fix a think-o in isSafeToMove. This fixes it from thinking that
volatile memory references are safe to move.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56948 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
4ae641f4d12c60ee1aaca5e42b6de231c6a02c40 02-Oct-2008 Devang Patel <dpatel@apple.com> Remove OptimizeForSize global. Use function attribute optsize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56937 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
oopAligner.cpp
93698d997764a457fbe8c1a1df1d57f23a59ae14 02-Oct-2008 Devang Patel <dpatel@apple.com> Remove OptimizeForSize global. Use function attribute optsize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56937 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
oopAligner.cpp
dc756858f92a397ed30362ba8251fec56479735f 01-Oct-2008 Dan Gohman <gohman@apple.com> Enable FastISel by default (on x86 and x86-64) with the -fast option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56930 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
e3769efeeb9676732f07f7b50952c3d529dbabb1 01-Oct-2008 Dan Gohman <gohman@apple.com> Enable FastISel by default (on x86 and x86-64) with the -fast option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56930 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
aeaf245db33fa8bccdd14bb8899ee0585a75a7b1 01-Oct-2008 Dan Gohman <gohman@apple.com> Make some implicit conversions explicit, to avoid compiler warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56927 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
dc57097760a4335ca94b45e69cbbaa622de92fca 01-Oct-2008 Dan Gohman <gohman@apple.com> Make some implicit conversions explicit, to avoid compiler warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56927 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
38ac062c2f4de93cd4351693f084f0c4474be02c 01-Oct-2008 Dan Gohman <gohman@apple.com> Fold trivial two-operand tokenfactors where the operands are equal
immediately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56921 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c0e18d6638548720f2b3c0c77b8b3d3c7ff8d9a8 01-Oct-2008 Dan Gohman <gohman@apple.com> Fold trivial two-operand tokenfactors where the operands are equal
immediately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56921 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
929d3eb171cd95a7fb353ef71a460d2061be4e6c 01-Oct-2008 Dan Gohman <gohman@apple.com> Fix typos in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56919 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4fc0374c0e76f8142d34e3ffe30cb2fc2bf70bc3 01-Oct-2008 Dan Gohman <gohman@apple.com> Fix typos in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56919 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6158d8492cc021bb47caee6d4755135ef1d855a4 01-Oct-2008 Bill Wendling <isanbard@gmail.com> Implement the -fno-builtin option in the front-end, not in the back-end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4b2e37853b659c5d8dd85c8113ac41522d8f4726 01-Oct-2008 Bill Wendling <isanbard@gmail.com> Implement the -fno-builtin option in the front-end, not in the back-end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
05472ee54bea84f487c6970b741625c3ca410b01 01-Oct-2008 Owen Anderson <resistor@mac.com> Mark merged-in VNInfo's as being PHIKilled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56893 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
89b9354f0e957fdb2ba9422453d0f0f466e8f5ee 01-Oct-2008 Owen Anderson <resistor@mac.com> Mark merged-in VNInfo's as being PHIKilled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56893 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
309c6162c62ba35ded8650a0ea4d2036de7480fd 01-Oct-2008 Owen Anderson <resistor@mac.com> Fix a simple error in renumbering kill markaers, that took an inordinant amount of time to track down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56889 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4365b48630b4cca32f66aacf8aa13a19bb0fefed 01-Oct-2008 Owen Anderson <resistor@mac.com> Fix a simple error in renumbering kill markaers, that took an inordinant amount of time to track down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56889 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
fd8ca5a0ef30604b860100d13544c5d5625c0b70 30-Sep-2008 Bill Wendling <isanbard@gmail.com> - Initialize "--no-builtin" to "false".
- Testcase for r56885.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56886 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
004d63527fe3602a2bf9b4524cdc6401c8e11964 30-Sep-2008 Bill Wendling <isanbard@gmail.com> - Initialize "--no-builtin" to "false".
- Testcase for r56885.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56886 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6f287b22d2e57600b4cd5dc209d0d869e7736c0b 30-Sep-2008 Bill Wendling <isanbard@gmail.com> Add the new `-no-builtin' flag. This flag is meant to mimic the GCC
`-fno-builtin' flag. Currently, it's used to replace "memset" with "_bzero"
instead of "__bzero" on Darwin10+. This arguably violates the meaning of this
flag, but is currently sufficient. The meaning of this flag should become more
specific over time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56885 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5db7ffb9e537d06963e61e13ce267ecc7295045a 30-Sep-2008 Bill Wendling <isanbard@gmail.com> Add the new `-no-builtin' flag. This flag is meant to mimic the GCC
`-fno-builtin' flag. Currently, it's used to replace "memset" with "_bzero"
instead of "__bzero" on Darwin10+. This arguably violates the meaning of this
flag, but is currently sufficient. The meaning of this flag should become more
specific over time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56885 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5ec9efd61bc4214c787287409498e8b78f28c922 30-Sep-2008 Dan Gohman <gohman@apple.com> Move the primary fast-isel top-level comments to FastISel.cpp, where
they'll be a little more visible. Also, update and reword them a bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56877 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
ff1ab062a51053954ae59f3ed7154d1b2e983c2b 30-Sep-2008 Dan Gohman <gohman@apple.com> Move the primary fast-isel top-level comments to FastISel.cpp, where
they'll be a little more visible. Also, update and reword them a bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56877 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
f06c835f769aa1cf67801ed1f6bd366a447c18b1 30-Sep-2008 Dan Gohman <gohman@apple.com> Optimize SelectionDAG's AssignTopologicalOrder even further.

Completely eliminate the TopOrder std::vector. Instead, sort
the AllNodes list in place. This also eliminates the need to
call AllNodes.size(), a linear-time operation, before
performing the sort.

Also, eliminate the Sources temporary std::vector, since it
essentially duplicates the sorted result as it is being
built.

This also changes the direction of the topological sort
from bottom-up to top-down. The AllNodes list starts out in
roughly top-down order, so this reduces the amount of
reordering needed. Top-down is also more convenient for
Legalize, and ISel needed only minor adjustments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56867 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
2d2a7a3fb5bac325d6df8f55e96f9e0f9df739eb 30-Sep-2008 Dan Gohman <gohman@apple.com> Optimize SelectionDAG's AssignTopologicalOrder even further.

Completely eliminate the TopOrder std::vector. Instead, sort
the AllNodes list in place. This also eliminates the need to
call AllNodes.size(), a linear-time operation, before
performing the sort.

Also, eliminate the Sources temporary std::vector, since it
essentially duplicates the sorted result as it is being
built.

This also changes the direction of the topological sort
from bottom-up to top-down. The AllNodes list starts out in
roughly top-down order, so this reduces the amount of
reordering needed. Top-down is also more convenient for
Legalize, and ISel needed only minor adjustments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56867 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
dc37786595beedd0a68d8e2cbd91ae53ad58d133 30-Sep-2008 Evan Cheng <evan.cheng@apple.com> Re-apply 56835 along with header file changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56848 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
c84ea139c78af904141145f2374289347e29fa6e 30-Sep-2008 Evan Cheng <evan.cheng@apple.com> Re-apply 56835 along with header file changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56848 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
46292be362c1b0bb0aecf737cd4dbb81fdd38586 30-Sep-2008 Duncan Sands <baldrick@free.fr> Revert commit 56835 since it breaks the build.
"If a re-materializable instruction has a register
operand, the spiller will change the register operand's
spill weight to HUGE_VAL to avoid it being spilled.
However, if the operand is already in the queue ready
to be spilled, avoid re-materializing it".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56837 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
e934baddf2ec86a91b3e27bcc02072d6d5db17b7 30-Sep-2008 Duncan Sands <baldrick@free.fr> Revert commit 56835 since it breaks the build.
"If a re-materializable instruction has a register
operand, the spiller will change the register operand's
spill weight to HUGE_VAL to avoid it being spilled.
However, if the operand is already in the queue ready
to be spilled, avoid re-materializing it".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56837 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
d41474d2c09a9fd0d1251554b920a783839b2787 30-Sep-2008 Evan Cheng <evan.cheng@apple.com> If a re-materializable instruction has a register operand, the spiller will change the register operand's spill weight to HUGE_VAL to avoid it being spilled. However, if the operand is already in the queue ready to be spilled, avoid re-materializing it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56835 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
feddecd36ac9e9e7f716f9cb3c2c4042a9d973e1 30-Sep-2008 Evan Cheng <evan.cheng@apple.com> If a re-materializable instruction has a register operand, the spiller will change the register operand's spill weight to HUGE_VAL to avoid it being spilled. However, if the operand is already in the queue ready to be spilled, avoid re-materializing it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56835 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
71d1bf55a27017fceef25554e02021a3bc47cdb4 30-Sep-2008 Dale Johannesen <dalej@apple.com> Remove misuse of ReplaceNodeResults for atomics with
valid types. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56808 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9011d870b2985325ac1d5b6e4c498dab81253097 30-Sep-2008 Dale Johannesen <dalej@apple.com> Remove misuse of ReplaceNodeResults for atomics with
valid types. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56808 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a43abd102f123f6d3bd9ad92045f8119e3fb6153 29-Sep-2008 Dan Gohman <gohman@apple.com> Fix FastISel to not initialize the PIC-base register multiple times
in functions with PIC references from more than one basic block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9d7bc4220bfd640f05cef5981bf241b1a9ab4328 29-Sep-2008 Dan Gohman <gohman@apple.com> Fix FastISel to not initialize the PIC-base register multiple times
in functions with PIC references from more than one basic block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d5d8191b202c0f96f33c826c93d9796451ff7fca 27-Sep-2008 Bill Wendling <isanbard@gmail.com> Temporarily reverting r56683. This is causing a failure during the build of llvm-gcc:

/Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -mmacosx-version-min=10.4 -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -pipe -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Gir/devel/llvm/clean/llvm.obj/include -I/Volumes/Gir/devel/llvm/clean/llvm.src/include -fexceptions -fvisibility=hidden -DHIDE_EXPORTS -c ../../llvm-gcc.src/gcc/unwind-dw2-fde-darwin.c -o libgcc/./unwind-dw2-fde-darwin.o
Assertion failed: (TargetRegisterInfo::isVirtualRegister(regA) && TargetRegisterInfo::isVirtualRegister(regB) && "cannot update physical register live information"), function runOnMachineFunction, file /Volumes/Gir/devel/llvm/clean/llvm.src/lib/CodeGen/TwoAddressInstructionPass.cpp, line 311.
../../llvm-gcc.src/gcc/unwind-dw2.c:1527: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
{standard input}:3521:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb"
{standard input}:3521:symbol: "_dwarf_reg_size_table" can't be undefined in a subtraction expression
{standard input}:3520:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb"
...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f29e2a5ab195a822593a92820338bdf63a85be1c 27-Sep-2008 Bill Wendling <isanbard@gmail.com> Temporarily reverting r56683. This is causing a failure during the build of llvm-gcc:

/Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -mmacosx-version-min=10.4 -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -pipe -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Gir/devel/llvm/clean/llvm.obj/include -I/Volumes/Gir/devel/llvm/clean/llvm.src/include -fexceptions -fvisibility=hidden -DHIDE_EXPORTS -c ../../llvm-gcc.src/gcc/unwind-dw2-fde-darwin.c -o libgcc/./unwind-dw2-fde-darwin.o
Assertion failed: (TargetRegisterInfo::isVirtualRegister(regA) && TargetRegisterInfo::isVirtualRegister(regB) && "cannot update physical register live information"), function runOnMachineFunction, file /Volumes/Gir/devel/llvm/clean/llvm.src/lib/CodeGen/TwoAddressInstructionPass.cpp, line 311.
../../llvm-gcc.src/gcc/unwind-dw2.c:1527: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
{standard input}:3521:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb"
{standard input}:3521:symbol: "_dwarf_reg_size_table" can't be undefined in a subtraction expression
{standard input}:3520:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb"
...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
7810bfed5570c192e0714a8fd0e5130a0c38dd2e 26-Sep-2008 Dan Gohman <gohman@apple.com> Rename ConstantSDNode's getSignExtended to getSExtValue, for
consistancy with ConstantInt, and re-implement it in terms
of ConstantInt's getSExtValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56700 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
4068673bbea0b6b3716494f7c291d0ebc43aa8e5 26-Sep-2008 Dan Gohman <gohman@apple.com> Rename ConstantSDNode's getSignExtended to getSExtValue, for
consistancy with ConstantInt, and re-implement it in terms
of ConstantInt's getSExtValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56700 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
36a55023c1daae86afedf6e6672c0adad7bbe5ea 26-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix @llvm.frameaddress codegen. FP elimination optimization should be disabled when frame address is desired. Also add support for depth > 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56683 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
e96a7f565ddcd8855d6cbcecf3f65ea08a65e558 26-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix @llvm.frameaddress codegen. FP elimination optimization should be disabled when frame address is desired. Also add support for depth > 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56683 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
86098bd6a63d2cdf0c9be9ef3151bd2728281fd7 26-Sep-2008 Dale Johannesen <dalej@apple.com> Add "inreg" field to CallSDNode (doesn't increase
its size). Adjust various lowering functions to
pass this info through from CallInst. Use it to
implement sseregparm returns on X86. Remove
X86_ssecall calling convention.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
67cc9b67faa7d6a72d916b52c22e7a33a44097db 26-Sep-2008 Dale Johannesen <dalej@apple.com> Add "inreg" field to CallSDNode (doesn't increase
its size). Adjust various lowering functions to
pass this info through from CallInst. Use it to
implement sseregparm returns on X86. Remove
X86_ssecall calling convention.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
082d35136105fd061ed66182bd76cd96ffeda18d 26-Sep-2008 Owen Anderson <resistor@mac.com> We don't need to insert copies for implicit_def's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56674 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0aa88f440dab0e3b433332c1e716ebfa26557f38 26-Sep-2008 Owen Anderson <resistor@mac.com> We don't need to insert copies for implicit_def's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56674 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
d751c64a679148bfe111bbba47f4a344ba813df9 26-Sep-2008 Bill Wendling <isanbard@gmail.com> If we have a function with an unreachable statement such that the ending debug
information is in an unreachable block, then it's possible that the high/low pc
values won't be set for the dwarf information. E.g., this function:

void abort(void) __attribute__((__noreturn__));
void dead_beef(void) __attribute__ ((noreturn));

int *b;

void dead_beef(void) {
*b=0xdeadbeef;
abort();
}

has a call to "@llvm.dbg.region.end" only in the unreachable block:

define void @dead_beef() noreturn nounwind {
entry:
call void @llvm.dbg.func.start(...)
call void @llvm.dbg.stoppoint(...)
...
call void @abort( ) noreturn nounwind
unreachable

return: ; No predecessors!
call void @llvm.dbg.stoppoint(...)
call void @llvm.dbg.region.end(...)
ret void
}

The dwarf information emitted is something like:

0x00000084: TAG_subprogram [5]
AT_name( "dead_beef" )
AT_external( 0x01 )
AT_prototyped( 0x01 )
AT_decl_file( 0x01 )
AT_decl_line( 0x08 )

Note that this is *not* the best fix for this problem, but a band-aid for an
gaping wound. This code needs to be changed when we revamp our debugging
information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56628 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
b22ae7d4a92e11264dbfc798a512a5ce66ec24ab 26-Sep-2008 Bill Wendling <isanbard@gmail.com> If we have a function with an unreachable statement such that the ending debug
information is in an unreachable block, then it's possible that the high/low pc
values won't be set for the dwarf information. E.g., this function:

void abort(void) __attribute__((__noreturn__));
void dead_beef(void) __attribute__ ((noreturn));

int *b;

void dead_beef(void) {
*b=0xdeadbeef;
abort();
}

has a call to "@llvm.dbg.region.end" only in the unreachable block:

define void @dead_beef() noreturn nounwind {
entry:
call void @llvm.dbg.func.start(...)
call void @llvm.dbg.stoppoint(...)
...
call void @abort( ) noreturn nounwind
unreachable

return: ; No predecessors!
call void @llvm.dbg.stoppoint(...)
call void @llvm.dbg.region.end(...)
ret void
}

The dwarf information emitted is something like:

0x00000084: TAG_subprogram [5]
AT_name( "dead_beef" )
AT_external( 0x01 )
AT_prototyped( 0x01 )
AT_decl_file( 0x01 )
AT_decl_line( 0x08 )

Note that this is *not* the best fix for this problem, but a band-aid for an
gaping wound. This code needs to be changed when we revamp our debugging
information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56628 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
0598866c052147c31b808391f58434ce3dbfb838 25-Sep-2008 Devang Patel <dpatel@apple.com> Large mechanical patch.

s/ParamAttr/Attribute/g
s/PAList/AttrList/g
s/FnAttributeWithIndex/AttributeWithIndex/g
s/FnAttr/Attribute/g

This sets the stage
- to implement function notes as function attributes and
- to distinguish between function attributes and return value attributes.

This requires corresponding changes in llvm-gcc and clang.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56622 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
hadowStackGC.cpp
d222f86d9d51a2d6299d43fb876099869430bf0f 25-Sep-2008 Devang Patel <dpatel@apple.com> Large mechanical patch.

s/ParamAttr/Attribute/g
s/PAList/AttrList/g
s/FnAttributeWithIndex/AttributeWithIndex/g
s/FnAttr/Attribute/g

This sets the stage
- to implement function notes as function attributes and
- to distinguish between function attributes and return value attributes.

This requires corresponding changes in llvm-gcc and clang.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56622 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
hadowStackGC.cpp
c9c6da61ac027d9818652d417907f84398288b99 25-Sep-2008 Dale Johannesen <dalej@apple.com> Accept 'inreg' attribute on x86 functions as
meaning sse_regparm (i.e. float/double values go
in XMM0 instead of ST0). Update documentation
to reflect reality.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56619 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
c08a0e2f7ceaaaef071ba0aa2482a8fd7a6e27a3 25-Sep-2008 Dale Johannesen <dalej@apple.com> Accept 'inreg' attribute on x86 functions as
meaning sse_regparm (i.e. float/double values go
in XMM0 instead of ST0). Update documentation
to reflect reality.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56619 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
5dd9c2e9aea7294c184609aff7f2fe82eaea4eb0 25-Sep-2008 Dan Gohman <gohman@apple.com> Support for i1 XOR in FastISel. It is actually safe because
i1 operands are assumed to already by zero-extended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56615 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
55c60ad36655000ef0f503793eaaaecb437465e5 25-Sep-2008 Dan Gohman <gohman@apple.com> Support for i1 XOR in FastISel. It is actually safe because
i1 operands are assumed to already by zero-extended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56615 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
77ca41e5c3f99ee8962b21a7d90bb251a594a65e 25-Sep-2008 Dan Gohman <gohman@apple.com> Don't print fast-isel debug messages by default. Thanks Chris!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56614 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
92902e8f34fa8e0d043644747f6637e9080c0ba5 25-Sep-2008 Dan Gohman <gohman@apple.com> Don't print fast-isel debug messages by default. Thanks Chris!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56614 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2c442eda747c5c4ec0533642754202e47a1be81c 25-Sep-2008 Dan Gohman <gohman@apple.com> Don't forget the newline in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56613 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
468ba15fd77ae7106aa2aafcd5d986d9e9c310c4 25-Sep-2008 Dan Gohman <gohman@apple.com> Don't forget the newline in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56613 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
33134c4a75558288d663267c8991f6bd37a530af 25-Sep-2008 Dan Gohman <gohman@apple.com> FastISel support for debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
78ae76d54c1a523366be7e1c3cde16287e94de5f 25-Sep-2008 Dan Gohman <gohman@apple.com> FastISel support for debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
4b052dc63d31e764b85d62c056bffe576d501ed4 25-Sep-2008 Richard Pennington <rich@pennware.com> bug 2812: Segmentation fault on a big emdiam processor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56609 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
73ae9e46e3fe3343f26ab84a0868a828ddba0285 25-Sep-2008 Richard Pennington <rich@pennware.com> bug 2812: Segmentation fault on a big emdiam processor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56609 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
dceffe66b9e73ce372ea11c0fc6975504eb8c31d 25-Sep-2008 Dan Gohman <gohman@apple.com> Fix a recent fast-isel coverage regression - don't bail out before
giving the target a chance to materialize constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
1c395700bf2f54e4585d6d986096bd67138dccae 25-Sep-2008 Dan Gohman <gohman@apple.com> Fix a recent fast-isel coverage regression - don't bail out before
giving the target a chance to materialize constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
2c4bf119be8aa05cdc3dc88c57006353f07f0d2c 25-Sep-2008 Dan Gohman <gohman@apple.com> Enable DeadMachineInstructionElim when Fast-ISel is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56604 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
electionDAG/SelectionDAGISel.cpp
6a9b05fbd4af5abb5e2f369025409e4450df27c4 25-Sep-2008 Dan Gohman <gohman@apple.com> Enable DeadMachineInstructionElim when Fast-ISel is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56604 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
electionDAG/SelectionDAGISel.cpp
723ac3720f6d983e0ed01504964fde1aa63951ff 25-Sep-2008 Dan Gohman <gohman@apple.com> Add debug output to this pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56602 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
0d92febb032b145e15dc97d5b93fc882d35e1af3 25-Sep-2008 Dan Gohman <gohman@apple.com> Add debug output to this pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56602 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
02dae4ba06a05d28b24b3c1b39d54de751271c95 25-Sep-2008 Dan Gohman <gohman@apple.com> Refactor the code that adds standard LLVM codegen passes into
a separate function, eliminating duplication between the
add-passes-for-file and add-passes-for-machine-code code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56599 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
7e71ccf4f074e350939287118766afac4ba0250a 25-Sep-2008 Dan Gohman <gohman@apple.com> Refactor the code that adds standard LLVM codegen passes into
a separate function, eliminating duplication between the
add-passes-for-file and add-passes-for-machine-code code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56599 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
aa765b8c35aa3a5cca9681d6e3c44091d94f23d9 25-Sep-2008 Evan Cheng <evan.cheng@apple.com> <rdar://problem/6234798> Assertion failed: (!OpInfo.AssignedRegs.Regs.empty() && "Couldn't allocate input reg!")


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56597 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
0adee05c7c1c98d6ab9084173ad3742a558d64f4 25-Sep-2008 Evan Cheng <evan.cheng@apple.com> <rdar://problem/6234798> Assertion failed: (!OpInfo.AssignedRegs.Regs.empty() && "Couldn't allocate input reg!")


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56597 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
bd0f144cc2549e8c2f853ea0a914abd0aa29444f 25-Sep-2008 Dan Gohman <gohman@apple.com> Give LowerSubregs.cpp a top-level description.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56596 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
c93e70764bfa48e3b2141a70cf8eae9de0047618 25-Sep-2008 Dan Gohman <gohman@apple.com> Give LowerSubregs.cpp a top-level description.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56596 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
8e3455ba1734a64dc5a6884d4a5218d436da54e2 25-Sep-2008 Dale Johannesen <dalej@apple.com> Remove SelectionDag early allocation of registers
for earlyclobbers. Teach Local RA about earlyclobber,
and add some tests for it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56592 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
47e30e4ea5156557c5d6f869f80168092ef66890 25-Sep-2008 Dale Johannesen <dalej@apple.com> Remove SelectionDag early allocation of registers
for earlyclobbers. Teach Local RA about earlyclobber,
and add some tests for it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56592 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
541af7f769c89de8a7f52d563cf317ad7a86c245 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Use helper

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56584 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b191f5c0f2244f65efccca3a5986a4e2aa706d67 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Use helper

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56584 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4cad98a0bb3c0c10a53b7f3c373be7af32788f51 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> SmallPtrSet will be better

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56583 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
96df425d01400afddde470e4e868a4008d0d801a 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> SmallPtrSet will be better

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56583 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
088ae8393f124564ca9ab70654645aa656e5646f 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Use generic section-handling stuff to emit constant pool entries

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56579 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b866b259e562f1eafa7475694a4076372f55eaf2 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Use generic section-handling stuff to emit constant pool entries

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56579 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
315690ec2a99e1c0867853955f81d99f548178be 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of duplicate char*/Section* DataSection

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56575 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
smPrinter/OcamlGCPrinter.cpp
cca60fa0d98abdf7dbe69a4ef15c539d80f6e9bf 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of duplicate char*/Section* DataSection

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56575 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/DwarfWriter.cpp
smPrinter/OcamlGCPrinter.cpp
d7ca416d6c9ae1966e0df8193112e3c5f430a053 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of duplicate char*/Section* TextSection

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56574 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
smPrinter/OcamlGCPrinter.cpp
55b94965b25917c590987db1b92b730b64f17c0c 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of duplicate char*/Section* TextSection

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56574 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
smPrinter/OcamlGCPrinter.cpp
c25e1ea5e9aa54952b6736a9579e25a5c2d8139f 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Move actual section printing stuff to AsmPrinter from TAI reducing heap traffic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56573 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1a9edae76b2e7cf15c5f7c36928b3701ac2ef47b 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Move actual section printing stuff to AsmPrinter from TAI reducing heap traffic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56573 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
0c8e80607bc3296a4775f05c02f0d11df8e5cb04 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Drop obsolete hook and change all usage to new interface

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56572 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
cf87a3dd015c7e2acfc0b4feff48fc7fc2a16f01 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Drop obsolete hook and change all usage to new interface

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56572 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b5a32e2e8ce2f3de3a340c5a2dfcd3a159968466 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Provide direct function to switch to Section

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56571 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
801e0fd4ead5fe89dc7ced7f7d6c4278a607f580 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Provide direct function to switch to Section

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56571 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
f835f8407196812c76ec5c20aa6a03d1249e8baa 24-Sep-2008 Owen Anderson <resistor@mac.com> Fix off-by-one error when updating live intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56567 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
65b8c7130208374d2200bc895f1386fd68be3027 24-Sep-2008 Owen Anderson <resistor@mac.com> Fix off-by-one error when updating live intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56567 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
f3cbca279db891403659208a99f8e1cceb8c9ea6 24-Sep-2008 Bill Wendling <isanbard@gmail.com> Reapplying r56550

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56553 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0445c4c532ae56f12727165e35ddd0cb31ba0234 24-Sep-2008 Bill Wendling <isanbard@gmail.com> Reapplying r56550

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56553 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
688d1c4ccf358a35fcdb54a28afc6e47d661b1cf 24-Sep-2008 Bill Wendling <isanbard@gmail.com> Forgot this part with my last patch. Sorry about the breakage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56552 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
16bc18cdd116afa48ba7c6c35f6213c0972c184a 24-Sep-2008 Bill Wendling <isanbard@gmail.com> Forgot this part with my last patch. Sorry about the breakage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56552 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
83e05c48de05d66a6f664a3e6631692b5baae6e2 24-Sep-2008 Eric Christopher <echristo@apple.com> Temporarily revert r56550 until missing commit can be added.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56551 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c1287f6f5fb874631bcb93162041b216f4cecacc 24-Sep-2008 Eric Christopher <echristo@apple.com> Temporarily revert r56550 until missing commit can be added.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56551 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
df0c7bc52d206782872b54a38a3374f0317ce6ff 24-Sep-2008 Bill Wendling <isanbard@gmail.com> Refactor the constant folding code into it's own function. And call it from both
the SelectionDAG and DAGCombiner code. The only functionality change is that now
the DAG combiner is performing the constant folding for these operations instead
of being a no-op.

This is *not* in response to a bug, so there isn't a testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56550 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
80759d020563820841f51b941a78655fb96d0fca 24-Sep-2008 Bill Wendling <isanbard@gmail.com> Refactor the constant folding code into it's own function. And call it from both
the SelectionDAG and DAGCombiner code. The only functionality change is that now
the DAG combiner is performing the constant folding for these operations instead
of being a no-op.

This is *not* in response to a bug, so there isn't a testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56550 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
86b49f8e2de796cb46c7c8b6a4c4900533fd53f4 24-Sep-2008 Dale Johannesen <dalej@apple.com> Next round of earlyclobber handling. Approach the
RA problem by expanding the live interval of an
earlyclobber def back one slot. Remove
overlap-earlyclobber throughout. Remove
earlyclobber bits and their handling from
live internals.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56539 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
achineInstr.cpp
egAllocLinearScan.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
9446407963005f3edfa8ac70e265c81839a416c9 24-Sep-2008 Dale Johannesen <dalej@apple.com> Next round of earlyclobber handling. Approach the
RA problem by expanding the live interval of an
earlyclobber def back one slot. Remove
overlap-earlyclobber throughout. Remove
earlyclobber bits and their handling from
live internals.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56539 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
achineInstr.cpp
egAllocLinearScan.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
3d84a76917c4bb1e4d5b99009a7fb32970fb20b8 24-Sep-2008 Dan Gohman <gohman@apple.com> Refactor the logic for testing if an instruction is dead into a
separate method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56531 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
3d6031a8379c44c22f3ac9f92f643351591896fe 24-Sep-2008 Dan Gohman <gohman@apple.com> Refactor the logic for testing if an instruction is dead into a
separate method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56531 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
035268eaf79f5492792a965226ea3a2244e6853e 24-Sep-2008 Dan Gohman <gohman@apple.com> Set SetStore to false, to allow this pass to delete
dead loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56529 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
eb2de89d4bfcc9f5c2b58a6c22a5f6e78c30d910 24-Sep-2008 Dan Gohman <gohman@apple.com> Set SetStore to false, to allow this pass to delete
dead loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56529 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
3e4fb70c6af53a2d00e057a7e4a8f93eb2ff2112 24-Sep-2008 Dan Gohman <gohman@apple.com> Add a method to MachineInstr for testing whether it makes
any volatile memory references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56528 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9ffbed86220058f577345dc2de09d3be12cbb96c 24-Sep-2008 Dan Gohman <gohman@apple.com> Add a method to MachineInstr for testing whether it makes
any volatile memory references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56528 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
da43bcf624acb56a3d77bb5ae9a02728af032613 24-Sep-2008 Evan Cheng <evan.cheng@apple.com> Properly handle 'm' inline asm constraints. If a GV is being selected for the addressing mode, it requires the same logic for PIC relative addressing, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56526 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
7f250d639b8fba12b89199b92dcef45d7354b202 24-Sep-2008 Evan Cheng <evan.cheng@apple.com> Properly handle 'm' inline asm constraints. If a GV is being selected for the addressing mode, it requires the same logic for PIC relative addressing, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56526 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
eaf42abab6d465c38891345d999255871cf03943 24-Sep-2008 Devang Patel <dpatel@apple.com> s/ParameterAttributes/Attributes/g



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56513 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
e480dfa79c90cf5a85680bc1ff503f21e6439a72 24-Sep-2008 Devang Patel <dpatel@apple.com> s/ParameterAttributes/Attributes/g



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56513 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
b2c3e3fdd9987fc2d08eb8f7892db2cbc7ec74d9 24-Sep-2008 Dan Gohman <gohman@apple.com> Now that DeadMachineInstructionElim is basically working
correctly, it's not necessary to explicitly remove registers
from their use-def lists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56509 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
bc1621e7d36e13bee6298e6067ad1f70be7dbd03 24-Sep-2008 Dan Gohman <gohman@apple.com> Now that DeadMachineInstructionElim is basically working
correctly, it's not necessary to explicitly remove registers
from their use-def lists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56509 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
d57dd5f4e6740520820bc0fca42a540e31c27a73 23-Sep-2008 Dan Gohman <gohman@apple.com> Arrange for FastISel code to have access to the MachineModuleInfo
object. This will be needed to support debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56508 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
76dd96eda05c0dc7dfc62b5b5fbdd20aae86808b 23-Sep-2008 Dan Gohman <gohman@apple.com> Arrange for FastISel code to have access to the MachineModuleInfo
object. This will be needed to support debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56508 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
8468d1a84527ca5dbf0a6476b11fc0730810d2fa 23-Sep-2008 Dan Gohman <gohman@apple.com> Track local physical register liveness. This is not the most
efficient implementation possible, but it's pretty simple and
good enough for the time being.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56504 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
665eff59e660d500cdf882d2ed606b6e6000d069 23-Sep-2008 Dan Gohman <gohman@apple.com> Track local physical register liveness. This is not the most
efficient implementation possible, but it's pretty simple and
good enough for the time being.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56504 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
086ec9976ff6cee083de618429c78473491d5713 23-Sep-2008 Dan Gohman <gohman@apple.com> Replace the LiveRegs SmallSet with a simple counter that keeps
track of the number of live registers, which is all the set was
being used for.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56498 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
9b79a803c53157db657250db167a22afd18514f8 23-Sep-2008 Dan Gohman <gohman@apple.com> Replace the LiveRegs SmallSet with a simple counter that keeps
track of the number of live registers, which is all the set was
being used for.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56498 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
electionDAG/ScheduleDAGRRList.cpp
fae86eddeb6453e5d27a19ba2a07a7bb4505fc4f 23-Sep-2008 Owen Anderson <resistor@mac.com> Add initial support for inserting last minute copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56485 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
1f5f969ab4bdb68d4f43c1d678237479b571c821 23-Sep-2008 Owen Anderson <resistor@mac.com> Add initial support for inserting last minute copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56485 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
87a0f10dc7eff8cf5e83a754f75adf9cb3991435 23-Sep-2008 Dan Gohman <gohman@apple.com> Fix the alignment of loads from constant pool entries when the
load address has an offset from the base of the constant pool
entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56479 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
dc5901ac9279b8635acf1ed8d8877e5bd82eb45d 23-Sep-2008 Dan Gohman <gohman@apple.com> Fix the alignment of loads from constant pool entries when the
load address has an offset from the base of the constant pool
entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56479 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
ef901c57563eb841ac86648d533272776706cb64 23-Sep-2008 Evan Cheng <evan.cheng@apple.com> Livestacks really does preserve everything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56476 91177308-0d34-0410-b5e6-96231b3b80d8
iveStackAnalysis.cpp
8aa49e5bcd68381421af4e103c9cf33ca53197dd 23-Sep-2008 Evan Cheng <evan.cheng@apple.com> Livestacks really does preserve everything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56476 91177308-0d34-0410-b5e6-96231b3b80d8
iveStackAnalysis.cpp
8b56a90bec639665fc024896d2fc2bdd095c76a3 23-Sep-2008 Evan Cheng <evan.cheng@apple.com> Instead of setPreservesAll, just mark them preseving machine loop info and machine dominators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56475 91177308-0d34-0410-b5e6-96231b3b80d8
iveStackAnalysis.cpp
oopAligner.cpp
owerSubregs.cpp
achineModuleInfo.cpp
rologEpilogInserter.cpp
tackSlotColoring.cpp
1b42ac1ee38e24ff2b2e1fc811246cb2cf8ea1f2 23-Sep-2008 Evan Cheng <evan.cheng@apple.com> Instead of setPreservesAll, just mark them preseving machine loop info and machine dominators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56475 91177308-0d34-0410-b5e6-96231b3b80d8
iveStackAnalysis.cpp
oopAligner.cpp
owerSubregs.cpp
achineModuleInfo.cpp
rologEpilogInserter.cpp
tackSlotColoring.cpp
e04cec0ecf19750da68e0622d52e0f37297723b4 22-Sep-2008 Owen Anderson <resistor@mac.com> Significant improvements to the logic for merging live intervals. This code can't
just use LI::MergeValueAsValue, as its behavior in the presence of overlapping ranges
isn't what StrongPHIElimination wants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56472 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
c0156c44a0a7ff93f0e1a28afcebbc5fbc364ecb 22-Sep-2008 Owen Anderson <resistor@mac.com> Significant improvements to the logic for merging live intervals. This code can't
just use LI::MergeValueAsValue, as its behavior in the presence of overlapping ranges
isn't what StrongPHIElimination wants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56472 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0bb41608e94adfe9884bc188457c4f6ae47ea43c 22-Sep-2008 Dale Johannesen <dalej@apple.com> Make log, log2, log10, exp, exp2 use Expand by
default.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56471 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b02a1c07cb1e1b9cdae3bf1ddb0578c779b9c8ff 22-Sep-2008 Dale Johannesen <dalej@apple.com> Make log, log2, log10, exp, exp2 use Expand by
default.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56471 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
bbeeb2a61ea19fbb5449260165b56c40fdc4860b 22-Sep-2008 Evan Cheng <evan.cheng@apple.com> Mark several codegen passes as preserving all analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56469 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
iveStackAnalysis.cpp
oopAligner.cpp
owerSubregs.cpp
achineModuleInfo.cpp
rologEpilogInserter.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
465a66e263a9e032ddb5bdb2702226ec0480d0ef 22-Sep-2008 Evan Cheng <evan.cheng@apple.com> Mark several codegen passes as preserving all analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56469 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
iveStackAnalysis.cpp
oopAligner.cpp
owerSubregs.cpp
achineModuleInfo.cpp
rologEpilogInserter.cpp
impleRegisterCoalescing.cpp
tackSlotColoring.cpp
f74185b80e07d58208b24f0314d94853d48ec9bd 22-Sep-2008 Dale Johannesen <dalej@apple.com> More refactoring. Yawn.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56468 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
2c8e108717655569e8ccebded65a8663a1686105 22-Sep-2008 Dale Johannesen <dalej@apple.com> More refactoring. Yawn.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56468 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
c4342eab9bb999050dd94be929093c6e36a49c67 22-Sep-2008 Dale Johannesen <dalej@apple.com> Refactor FP intrinisic setup. Per review feedback.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56456 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
4f35283a4353afdcb7a85fbe3c65cc1d1cf60150 22-Sep-2008 Dale Johannesen <dalej@apple.com> Refactor FP intrinisic setup. Per review feedback.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56456 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
242ebd145dea945364b4fa6ca6a187efe322036d 22-Sep-2008 Evan Cheng <evan.cheng@apple.com> Per review feedback: Only perform
(srl x, (trunc (and y, c))) -> (srl x, (and (trunc y), c))
etc. when both "trunc" and "and" have single uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56452 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
11c34297585ebbbefc91421394c70dab368a497e 22-Sep-2008 Evan Cheng <evan.cheng@apple.com> Per review feedback: Only perform
(srl x, (trunc (and y, c))) -> (srl x, (and (trunc y), c))
etc. when both "trunc" and "and" have single uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56452 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3d01fc7de86c75926e4e5ac7cc49f0116018893d 22-Sep-2008 Oscar Fuentes <ofv@wanadoo.es> Initial support for the CMake build system.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56419 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
electionDAG/CMakeLists.txt
00905d5339fd277781c7393112f80febe86b2945 22-Sep-2008 Oscar Fuentes <ofv@wanadoo.es> Initial support for the CMake build system.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56419 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
electionDAG/CMakeLists.txt
cd4c73aa708d9ecf5d7e0a711dbf359d22b6dd3a 22-Sep-2008 Bill Wendling <isanbard@gmail.com> Add helper function to get a 32-bit floating point constant. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56418 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
8b2e2d87623407365983d465744b0669b8beb436 22-Sep-2008 Bill Wendling <isanbard@gmail.com> Add helper function to get a 32-bit floating point constant. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56418 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
3bdf5fe71ad2d48d81d013b16181766bde295f58 21-Sep-2008 Dan Gohman <gohman@apple.com> Factor out code into HandleVirtRegDef, for consistency with
Handle{Virt,Phys}Reg{Def,Use}. Remove a redundant check
for register zero, and redundant checks for isPhysicalRegister.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56412 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
706847e559f690608c6bfafdab0382a0d3e20e54 21-Sep-2008 Dan Gohman <gohman@apple.com> Factor out code into HandleVirtRegDef, for consistency with
Handle{Virt,Phys}Reg{Def,Use}. Remove a redundant check
for register zero, and redundant checks for isPhysicalRegister.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56412 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
134eb73fc35e6ead3cfd3ed5024d0d7efa507441 21-Sep-2008 Owen Anderson <resistor@mac.com> Fetch the starting index of the block when assigning intervals. This gets live-in indices
correct in the presence of things like EH labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56410 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f9817737ba964da17010b77fc2c2ec52c36c28fe 21-Sep-2008 Owen Anderson <resistor@mac.com> Fetch the starting index of the block when assigning intervals. This gets live-in indices
correct in the presence of things like EH labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56410 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ca19a3fd116a0a7dab15e49509a3fea565b5e738 21-Sep-2008 Chris Lattner <sabre@nondot.org> don't print GlobalAddressSDNode's with an offset of zero as "foo0".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
1659476b8ad97985ff3c4fff02f39018582f2e5f 21-Sep-2008 Chris Lattner <sabre@nondot.org> don't print GlobalAddressSDNode's with an offset of zero as "foo0".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
34d8f7559cfe3a416c400b863919dbc6e4f347f9 20-Sep-2008 Dale Johannesen <dalej@apple.com> Teach coalescer about earlyclobber bits.
Check bits for preferred register.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56384 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
d9e4fd611933c2e32a8b1173c9ffa5133a6e18d5 20-Sep-2008 Dale Johannesen <dalej@apple.com> Teach coalescer about earlyclobber bits.
Check bits for preferred register.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56384 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
5e8d9def77b4a68e6be32f21cda28d2a451267a9 20-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2808. When regalloc runs out of register, it spill a physical register around the live interval being allocated. Do not continue to try to spill another register, just grab the physical register and move on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56381 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
af3c4e378b4151a3192cc83e4e886f8d28f98f17 20-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2808. When regalloc runs out of register, it spill a physical register around the live interval being allocated. Do not continue to try to spill another register, just grab the physical register and move on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56381 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
fee2d6937cf56a2018a0707f9ed2c9c02870df2b 20-Sep-2008 Evan Cheng <evan.cheng@apple.com> Continue after removing the current MI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56372 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b92cd3ca9f6c4176aacfa16d05ac45dc2983f8fc 20-Sep-2008 Evan Cheng <evan.cheng@apple.com> Continue after removing the current MI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56372 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
2ff7fd146159d97abe94391a33b4385abb06bbb0 20-Sep-2008 Dan Gohman <gohman@apple.com> Refactor X86SelectConstAddr, folding it into X86SelectAddress. This
results in better code for globals. Also, unbreak the local CSE for
GlobalValue stub loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
0dd5fd980f4c89143bd4e19403cf550ab4dd38aa 20-Sep-2008 Dan Gohman <gohman@apple.com> Refactor X86SelectConstAddr, folding it into X86SelectAddress. This
results in better code for globals. Also, unbreak the local CSE for
GlobalValue stub loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d6bd73353403fd6f132d20b68750fe4bf8c0af64 19-Sep-2008 Dale Johannesen <dalej@apple.com> Make earlyclobber stuff work when virtual regs
have previously been assigned conflicting physreg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56364 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
6513fc7f33783639b73b19c92452720a8f6db4bf 19-Sep-2008 Dale Johannesen <dalej@apple.com> Make earlyclobber stuff work when virtual regs
have previously been assigned conflicting physreg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56364 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
20580a1cf658388f357d58a71ac81e4167acc34f 19-Sep-2008 Evan Cheng <evan.cheng@apple.com> Re-materalized definition instructions may be dead. Whack them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56352 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
ed576401ad71daf707fa14396042124476ba4218 19-Sep-2008 Evan Cheng <evan.cheng@apple.com> Re-materalized definition instructions may be dead. Whack them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56352 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
fa48f941304f29f967e0a7fc6807d7026ba99b7b 19-Sep-2008 Dale Johannesen <dalej@apple.com> Remove AsmThatEarlyClobber etc. from LiveIntervalAnalysis
and redo as linked list walk. Logic moved into RA.
Per review feedback.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56326 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
f9b08792f0b05b1d6de43152960ca84aaee84602 19-Sep-2008 Dale Johannesen <dalej@apple.com> Remove AsmThatEarlyClobber etc. from LiveIntervalAnalysis
and redo as linked list walk. Logic moved into RA.
Per review feedback.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56326 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
841ee1a12b6c291ebaf1ba5c853c2e0d97128001 19-Sep-2008 Evan Cheng <evan.cheng@apple.com> Somehow RegAllocLinearScan is keeping two pointers to MachineRegisterInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56314 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
06b74c590d2888b25aebcd82f93ecd7cca0253e9 19-Sep-2008 Evan Cheng <evan.cheng@apple.com> Somehow RegAllocLinearScan is keeping two pointers to MachineRegisterInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56314 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
e251b1529f40131ce5931420448a1e847f42e4af 18-Sep-2008 Dan Gohman <gohman@apple.com> Don't consider instructions with implicit physical register
defs to be necessarily live.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56310 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
f6767b71a168e501b4708e806120dcdb20804a22 18-Sep-2008 Dan Gohman <gohman@apple.com> Don't consider instructions with implicit physical register
defs to be necessarily live.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56310 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
ee2e4035450a2d0d6159831e9b9cfa3ffd8da8bc 18-Sep-2008 Dan Gohman <gohman@apple.com> Add a new "fast" scheduler. This is currently basically just a
copy of the BURRList scheduler, but with several parts ripped
out, such as backtracking, online topological sort maintenance
(needed by backtracking), the priority queue, and Sethi-Ullman
number computation and maintenance (needed by the priority
queue). As a result of all this, it generates somewhat lower
quality code, but that's its tradeoff for running about 30%
faster than list-burr in -fast mode in many cases.

This is somewhat experimental. Moving forward, major pieces of
this can be refactored with pieces in common with
ScheduleDAGRRList.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56307 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
917d3e7ed6d10587b4ce468da17fde14e00a2fd3 18-Sep-2008 Dan Gohman <gohman@apple.com> Add a new "fast" scheduler. This is currently basically just a
copy of the BURRList scheduler, but with several parts ripped
out, such as backtracking, online topological sort maintenance
(needed by backtracking), the priority queue, and Sethi-Ullman
number computation and maintenance (needed by the priority
queue). As a result of all this, it generates somewhat lower
quality code, but that's its tradeoff for running about 30%
faster than list-burr in -fast mode in many cases.

This is somewhat experimental. Moving forward, major pieces of
this can be refactored with pieces in common with
ScheduleDAGRRList.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56307 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGFast.cpp
91aac1015e6714d959801dd8d60f55a72827dc4d 17-Sep-2008 Dale Johannesen <dalej@apple.com> Add a bit to mark operands of asm's that conflict
with an earlyclobber operand elsewhere. Propagate
this bit and the earlyclobber bit through SDISel.
Change linear-scan RA not to allocate regs in a way
that conflicts with an earlyclobber. See also comments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56290 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
iveIntervalAnalysis.cpp
achineInstr.cpp
egAllocLinearScan.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
bac3c81377340735d0674a0529dba69ef20e679b 17-Sep-2008 Dale Johannesen <dalej@apple.com> Add a bit to mark operands of asm's that conflict
with an earlyclobber operand elsewhere. Propagate
this bit and the earlyclobber bit through SDISel.
Change linear-scan RA not to allocate regs in a way
that conflicts with an earlyclobber. See also comments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56290 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
iveIntervalAnalysis.cpp
achineInstr.cpp
egAllocLinearScan.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
870e4bef419b1bd3e5ee05673975f1c05198b612 17-Sep-2008 Evan Cheng <evan.cheng@apple.com> Unallocatable registers do not have live intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56287 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
13af991aa22eabaf36be6acb70edd354d0242a89 17-Sep-2008 Evan Cheng <evan.cheng@apple.com> Unallocatable registers do not have live intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56287 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
59932584a812685b16ad6a53a023b2bb3fc21819 17-Sep-2008 Dan Gohman <gohman@apple.com> Don't worry about clobbering physical register defs that aren't used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56281 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f2d8a25c86ba97b406b2e190bbb504fe1e4680f6 17-Sep-2008 Dan Gohman <gohman@apple.com> Don't worry about clobbering physical register defs that aren't used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56281 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d3ead4329eaa46937245f5cc8402e749af2a37dc 17-Sep-2008 Dan Gohman <gohman@apple.com> Add a new MachineInstr-level DCE pass. It is very simple, and is intended to
be used with fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56268 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
58e9ae2f35c2296bf6391825bfc8b6f7c698d82f 17-Sep-2008 Dan Gohman <gohman@apple.com> Add a new MachineInstr-level DCE pass. It is very simple, and is intended to
be used with fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56268 91177308-0d34-0410-b5e6-96231b3b80d8
eadMachineInstructionElim.cpp
1cd332725f7e5fc93f08a8d3ed9806827e9b5509 17-Sep-2008 Evan Cheng <evan.cheng@apple.com> When converting a CopyFromReg to a copy instruction, use the register class of its uses to determine the right destination register class of the copy. This is important for targets where a physical register may belong to multiple register classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56258 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGEmit.cpp
f7d58137a00ffaf1c210dcb859b784b5584403d7 17-Sep-2008 Evan Cheng <evan.cheng@apple.com> When converting a CopyFromReg to a copy instruction, use the register class of its uses to determine the right destination register class of the copy. This is important for targets where a physical register may belong to multiple register classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56258 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGEmit.cpp
50284d81f863a6576582e1a171a22eb0f012ddf3 17-Sep-2008 Dan Gohman <gohman@apple.com> Change SelectionDAG::getConstantPool to always set the alignment of the
ConstantPoolSDNode, using the target's preferred alignment for the
constant type.

In LegalizeDAG, when performing loads from the constant pool, the
ConstantPoolSDNode's alignment is used in the calls to getLoad and
getExtLoad.

This change prevents SelectionDAG::getLoad/getExtLoad from incorrectly
choosing the ABI alignment for constant pool loads when Alignment == 0.
The incorrect alignment is only a performance issue when ABI alignment
does not equal preferred alignment (i.e., on x86 it was generating
MOVUPS instead of MOVAPS for v4f32 constant loads when the default ABI
alignment for 128bit vectors is forced to 1 byte.)

Patch by Paul Redmond!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56253 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
04637d141bc5df1df4000c04b63f35528645802c 17-Sep-2008 Dan Gohman <gohman@apple.com> Change SelectionDAG::getConstantPool to always set the alignment of the
ConstantPoolSDNode, using the target's preferred alignment for the
constant type.

In LegalizeDAG, when performing loads from the constant pool, the
ConstantPoolSDNode's alignment is used in the calls to getLoad and
getExtLoad.

This change prevents SelectionDAG::getLoad/getExtLoad from incorrectly
choosing the ABI alignment for constant pool loads when Alignment == 0.
The incorrect alignment is only a performance issue when ABI alignment
does not equal preferred alignment (i.e., on x86 it was generating
MOVUPS instead of MOVAPS for v4f32 constant loads when the default ABI
alignment for 128bit vectors is forced to 1 byte.)

Patch by Paul Redmond!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56253 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
056292fd738924f3f7703725d8f630983794b5a5 16-Sep-2008 Bill Wendling <isanbard@gmail.com> Reverting r56249. On further investigation, this functionality isn't needed.

Apologies for the thrashing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56251 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGPrinter.cpp
fef06056071dcd275f5ec539713a0dfcc33db436 16-Sep-2008 Bill Wendling <isanbard@gmail.com> Reverting r56249. On further investigation, this functionality isn't needed.

Apologies for the thrashing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56251 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGPrinter.cpp
aed48bfee87046f40330fc35d17265dd3aaf5dd5 16-Sep-2008 Dan Gohman <gohman@apple.com> Include the alignment value when displaying ConstantPoolSDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56250 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
27d5317c5bf5a71f4cd720f84ae78c5b7b3f2cd1 16-Sep-2008 Dan Gohman <gohman@apple.com> Include the alignment value when displaying ConstantPoolSDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56250 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
9468a9b6beed640eca64274c8dcc5aed3b94450b 16-Sep-2008 Bill Wendling <isanbard@gmail.com> - Change "ExternalSymbolSDNode" to "SymbolSDNode".
- Add linkage to SymbolSDNode (default to external).
- Change ISD::ExternalSymbol to ISD::Symbol.
- Change ISD::TargetExternalSymbol to ISD::TargetSymbol

These changes pave the way to allowing SymbolSDNodes with non-external linkage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGPrinter.cpp
bdad5cfcd10bce155a51f3658a57ed3866903c5b 16-Sep-2008 Bill Wendling <isanbard@gmail.com> - Change "ExternalSymbolSDNode" to "SymbolSDNode".
- Add linkage to SymbolSDNode (default to external).
- Change ISD::ExternalSymbol to ISD::Symbol.
- Change ISD::TargetExternalSymbol to ISD::TargetSymbol

These changes pave the way to allowing SymbolSDNodes with non-external linkage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGPrinter.cpp
05ae98346a190d74c2c8799c3af2f8ca23e47c27 16-Sep-2008 Dan Gohman <gohman@apple.com> Fix these comments to reflect current reality. Surprisingly,
MachineConstantPool::getConstantPoolIndex actually expects
a log2-encoded alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56248 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
62e7d9fb481f9a9c7e6ef32e121b5edae09126d8 16-Sep-2008 Dan Gohman <gohman@apple.com> Fix these comments to reflect current reality. Surprisingly,
MachineConstantPool::getConstantPoolIndex actually expects
a log2-encoded alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56248 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
1937e2f6ca0e6a04c4ad5fdb5b606b5ed9533e74 16-Sep-2008 Dan Gohman <gohman@apple.com> Don't take the time to CheckDAGForTailCallsAndFixThem when tail calls
are not enabled. Instead just omit the tail call flag when calls are
created.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56235 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
5ea89a04a96691210f0ad8e56ad6a91bae8e5f82 16-Sep-2008 Dan Gohman <gohman@apple.com> Don't take the time to CheckDAGForTailCallsAndFixThem when tail calls
are not enabled. Instead just omit the tail call flag when calls are
created.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56235 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
99500aeb7c9a05db57e228544a3f81de2faf24ef 16-Sep-2008 Owen Anderson <resistor@mac.com> Live intervals for live-in registers should begin at the beginning of a basic block, not at the first
instruction. Also, their valno's should have an unknown def. This has no effect currently, but was
causing issues when StrongPHIElimination was enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56231 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b2ae26997b43c481907304882912440f34cdf801 16-Sep-2008 Owen Anderson <resistor@mac.com> Live intervals for live-in registers should begin at the beginning of a basic block, not at the first
instruction. Also, their valno's should have an unknown def. This has no effect currently, but was
causing issues when StrongPHIElimination was enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56231 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5eb0cecbc5dd370e33d4e0ab1abee7ce8597ca9c 15-Sep-2008 Dan Gohman <gohman@apple.com> Re-enable SelectionDAG CSE for calls. It matters in the case of
libcalls, as in this testcase on ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56226 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
791e12a20b8097a9986c06a9d400f419563d7542 15-Sep-2008 Dan Gohman <gohman@apple.com> Re-enable SelectionDAG CSE for calls. It matters in the case of
libcalls, as in this testcase on ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56226 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
25f34a30d66e33381a023d97d72ce44ded2c7f72 15-Sep-2008 Evan Cheng <evan.cheng@apple.com> Correctly update kill infos after extending a live range and merge 2 val#'s; fix 56165 - do not mark val# copy field if the copy does not define the val#.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56199 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
8e8f02c175b9e5ff581d38d4e459d7943915b76d 15-Sep-2008 Evan Cheng <evan.cheng@apple.com> Correctly update kill infos after extending a live range and merge 2 val#'s; fix 56165 - do not mark val# copy field if the copy does not define the val#.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56199 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
e009180f2bbcf5edbe3b583936c37c4b3be2d082 14-Sep-2008 Dale Johannesen <dalej@apple.com> adjust last patch per review feedback



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56194 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1b0c5786c6c93e048cd535e7f52173dc36584d96 14-Sep-2008 Dale Johannesen <dalej@apple.com> adjust last patch per review feedback



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56194 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
014278e6a11fa0767853b831e5bf51b95bf541c5 13-Sep-2008 Dan Gohman <gohman@apple.com> Remove isImm(), isReg(), and friends, in favor of
isImmediate(), isRegister(), and friends, to avoid confusion
about having two different names with the same meaning. I'm
not attached to the longer names, and would be ok with
changing to the shorter names if others prefer it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56189 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineSink.cpp
egAllocLocal.cpp
impleRegisterCoalescing.cpp
argetInstrInfoImpl.cpp
nreachableBlockElim.cpp
7f7f365665a22e1b4397d0924f24b929607f9690 13-Sep-2008 Dan Gohman <gohman@apple.com> Remove isImm(), isReg(), and friends, in favor of
isImmediate(), isRegister(), and friends, to avoid confusion
about having two different names with the same meaning. I'm
not attached to the longer names, and would be ok with
changing to the shorter names if others prefer it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56189 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineSink.cpp
egAllocLocal.cpp
impleRegisterCoalescing.cpp
argetInstrInfoImpl.cpp
nreachableBlockElim.cpp
095cc29f321382e1f7d295e262a28197f92c5491 13-Sep-2008 Dan Gohman <gohman@apple.com> Define CallSDNode, an SDNode subclass for use with ISD::CALL.
Currently it just holds the calling convention and flags
for isVarArgs and isTailCall.

And it has several utility methods, which eliminate magic
5+2*i and similar index computations in several places.

CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle
nodes that are not CSE'd gracefully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56183 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
705e3f774254a03ef28a27c1d15903547a0e9d4c 13-Sep-2008 Dan Gohman <gohman@apple.com> Define CallSDNode, an SDNode subclass for use with ISD::CALL.
Currently it just holds the calling convention and flags
for isVarArgs and isTailCall.

And it has several utility methods, which eliminate magic
5+2*i and similar index computations in several places.

CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle
nodes that are not CSE'd gracefully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56183 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
ee9e1b0a855bfce7650899ae757f5ef96a19e95d 12-Sep-2008 Evan Cheng <evan.cheng@apple.com> On some targets, non-move instructions can become move instructions because of coalescing. e.g.
vr2 = OR vr0, vr1
=>
vr2 = OR vr1, vr1 // after coalescing vr0 with vr1

Update the value# of the destination register with the copy instruction if that happens.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56165 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
549f260a506e20e775021c94c7c1c1403a89c761 12-Sep-2008 Evan Cheng <evan.cheng@apple.com> On some targets, non-move instructions can become move instructions because of coalescing. e.g.
vr2 = OR vr0, vr1
=>
vr2 = OR vr1, vr1 // after coalescing vr0 with vr1

Update the value# of the destination register with the copy instruction if that happens.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56165 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
4fbd796a1251a27e6590765a0a34876f436a0af9 12-Sep-2008 Dan Gohman <gohman@apple.com> Change ConstantSDNode and ConstantFPSDNode to use ConstantInt* and
ConstantFP* instead of APInt and APFloat directly.

This reduces the amount of time to create ConstantSDNode
and ConstantFPSDNode nodes when ConstantInt* and ConstantFP*
respectively are already available, as is the case in
SelectionDAGBuild.cpp. Also, it reduces the amount of time
to legalize constants into constant pools, and the amount of
time to add ConstantFP operands to MachineInstrs, due to
eliminating ConstantInt::get and ConstantFP::get calls.

It increases the amount of work needed to create new constants
in cases where the client doesn't already have a ConstantInt*
or ConstantFP*, such as legalize expanding 64-bit integer constants
to 32-bit constants. And it adds a layer of indirection for the
accessor methods. But these appear to be outweight by the benefits
in most cases.

It will also make it easier to make ConstantSDNode and
ConstantFPNode more consistent with ConstantInt and ConstantFP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56162 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
c1f3a074a653f0faeec34a9d78f76379c1fe10c0 12-Sep-2008 Dan Gohman <gohman@apple.com> Change ConstantSDNode and ConstantFPSDNode to use ConstantInt* and
ConstantFP* instead of APInt and APFloat directly.

This reduces the amount of time to create ConstantSDNode
and ConstantFPSDNode nodes when ConstantInt* and ConstantFP*
respectively are already available, as is the case in
SelectionDAGBuild.cpp. Also, it reduces the amount of time
to legalize constants into constant pools, and the amount of
time to add ConstantFP operands to MachineInstrs, due to
eliminating ConstantInt::get and ConstantFP::get calls.

It increases the amount of work needed to create new constants
in cases where the client doesn't already have a ConstantInt*
or ConstantFP*, such as legalize expanding 64-bit integer constants
to 32-bit constants. And it adds a layer of indirection for the
accessor methods. But these appear to be outweight by the benefits
in most cases.

It will also make it easier to make ConstantSDNode and
ConstantFPNode more consistent with ConstantInt and ConstantFP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56162 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
913d3dfac43f29921467f33aa743f28ee1bfc5d1 12-Sep-2008 Dale Johannesen <dalej@apple.com> Pass "earlyclobber" bit through to machine
representation; coalescer and RA need to know
about it. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56161 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAGBuild.cpp
38438f720b9b9f6dec65f16956d2b6b24349102b 12-Sep-2008 Dale Johannesen <dalej@apple.com> Pass "earlyclobber" bit through to machine
representation; coalescer and RA need to know
about it. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56161 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAGBuild.cpp
f5aeb1a8e4cf272c7348376d185ef8d8267653e0 12-Sep-2008 Dan Gohman <gohman@apple.com> Rename ConstantSDNode::getValue to getZExtValue, for consistency
with ConstantInt. This led to fixing a bug in TargetLowering.cpp
using getValue instead of getAPIntValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56159 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
faeb4a35197737b3674fcfc34fd6e84220aa437b 12-Sep-2008 Dan Gohman <gohman@apple.com> Rename ConstantSDNode::getValue to getZExtValue, for consistency
with ConstantInt. This led to fixing a bug in TargetLowering.cpp
using getValue instead of getAPIntValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56159 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
e2f2083f9ca6f9a9a9d7dbb75d59a779a0452f4a 12-Sep-2008 Dale Johannesen <dalej@apple.com> The sequence for ppcf128 compares was not IEEE
safe in the presence of NaNs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56136 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
26317b6e91cd82031e4049c0e290ee34b9ecd887 12-Sep-2008 Dale Johannesen <dalej@apple.com> The sequence for ppcf128 compares was not IEEE
safe in the presence of NaNs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56136 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8db866808c803f9bdcd45c56a042fedd8cccd5bc 11-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2748. Avoid coalescing physical register with virtual register which would create illegal extract_subreg. e.g.
vr1024 = extract_subreg vr1025, 1
...
vr1024 = mov8rr AH
If vr1024 is coalesced with AH, the extract_subreg is now illegal since AH does not have a super-reg whose sub-register 1 is AH.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56118 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
f0c1813358127ce429ae7b5ed04686062fc399f5 11-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2748. Avoid coalescing physical register with virtual register which would create illegal extract_subreg. e.g.
vr1024 = extract_subreg vr1025, 1
...
vr1024 = mov8rr AH
If vr1024 is coalesced with AH, the extract_subreg is now illegal since AH does not have a super-reg whose sub-register 1 is AH.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56118 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
4086906a0f813065244cc9f845e45527ae704b58 11-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2783 - coalescer bug. Missing a TargetRegisterInfo::isVirtualRegister check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56112 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c5d589ffa6efaf4188aedcb9745cb5a09f5c4d3e 11-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2783 - coalescer bug. Missing a TargetRegisterInfo::isVirtualRegister check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56112 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
3885578a36072dd55c3381b99d4a88299dddbfa3 11-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix a 80 column violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56097 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
aefc93dac613930bd53be9a4e60a0b74eb9ef060 11-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix a 80 column violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56097 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
d9c553f2622f751f9c474aa348e2f8b595d7d9ca 11-Sep-2008 Evan Cheng <evan.cheng@apple.com> Propagate subreg index when promoting a load to a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56085 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
bc5ee75f357ae1c001330f4fb10f3295f2b59d4e 11-Sep-2008 Evan Cheng <evan.cheng@apple.com> Propagate subreg index when promoting a load to a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56085 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
74321abb4f7e32e29c0e391b3ebb196c7da86525 10-Sep-2008 Dan Gohman <gohman@apple.com> FastISel support for i1 PHI nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56069 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
109994919cad0392c790f65b0f6af9030e3a4244 10-Sep-2008 Dan Gohman <gohman@apple.com> FastISel support for i1 PHI nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56069 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
821164875706dd28e48c6cc3cea5c8ffa6e658d1 10-Sep-2008 Dan Gohman <gohman@apple.com> FastISel support for i1 constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56068 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
805005db3515111884a4b5d5b804abdffb3aec99 10-Sep-2008 Dan Gohman <gohman@apple.com> FastISel support for i1 constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56068 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
369e98760bfdd6a72ef64929f3c560f80a4ffc92 10-Sep-2008 Owen Anderson <resistor@mac.com> Fix a bug in the coalescer where it didn't check if a live interval existed before trying to manipulate it. This
was exposed by fast isel's handling of shifts on X86-64. With this, FreeBench/pcompress2 passes on X86-64 in fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56067 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
ef89f2d17aef8e803bf454fdddea997cc79771dc 10-Sep-2008 Owen Anderson <resistor@mac.com> Fix a bug in the coalescer where it didn't check if a live interval existed before trying to manipulate it. This
was exposed by fast isel's handling of shifts on X86-64. With this, FreeBench/pcompress2 passes on X86-64 in fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56067 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0586d91bb3e516d5826826522d9a90ed6ef74d86 10-Sep-2008 Dan Gohman <gohman@apple.com> Add X86FastISel support for static allocas, and refences
to static allocas. As part of this change, refactor the
address mode code for laods and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56066 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
d6211a741f5af81e08ad7682deee98eec5b9523e 10-Sep-2008 Dan Gohman <gohman@apple.com> Add X86FastISel support for static allocas, and refences
to static allocas. As part of this change, refactor the
address mode code for laods and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56066 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
014264b70f2af002a41f8e36a9430fcf20e77bc7 10-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2664 - spiller GetRegForReload wasn't respecting sub-register indices on machine operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56065 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
8d3c5719d73f12f83d424c11b996cdeaa18bc5a6 10-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2664 - spiller GetRegForReload wasn't respecting sub-register indices on machine operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56065 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
3ee25dca5b2f321103e879fb125b7870683e7085 10-Sep-2008 Dan Gohman <gohman@apple.com> Add a break statement that I accidentally deleted when
I shuffled the fast-isel command-line options around. This fixes
a bunch of fast-isel failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56057 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6b2d852835e271222e0f1d0d732d8e9846b2c60b 10-Sep-2008 Dan Gohman <gohman@apple.com> Add a break statement that I accidentally deleted when
I shuffled the fast-isel command-line options around. This fixes
a bunch of fast-isel failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56057 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fc2508eb78eb4e754c85e01e082fcd79e7e66645 10-Sep-2008 Bill Wendling <isanbard@gmail.com> Remove unnecessary bit-wise AND from the limited precision work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56049 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
e0ab0f3b6046a66683dc79e048f231c91f20537b 10-Sep-2008 Bill Wendling <isanbard@gmail.com> Remove unnecessary bit-wise AND from the limited precision work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56049 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
c0c3b9a3d07a86490c4dae66e4f4c8eb40dec339 10-Sep-2008 Daniel Dunbar <daniel@zuster.org> Fix 80 col violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56048 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
9dc7b4ed59136b563a6c6cc48406b20c6d8ddfd0 10-Sep-2008 Daniel Dunbar <daniel@zuster.org> Fix 80 col violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56048 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
8ec3389aafb69f5320c32c75442be8deb7f9d70c 10-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56037 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f43873282b6ff9a967c67a98665f48292fc4b9d6 10-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56037 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
277fc24a7c19aba06fa9d268c5a09a366acf7875 10-Sep-2008 Bill Wendling <isanbard@gmail.com> Check that both operands are f32 before attempting to lower.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56036 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
1249d2f26eec15fc129ed7dd60860907c3d60846 10-Sep-2008 Bill Wendling <isanbard@gmail.com> Check that both operands are f32 before attempting to lower.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56036 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
aeb5c7b3532bd9bcb5e7e3c9ef2991160511c5d2 10-Sep-2008 Bill Wendling <isanbard@gmail.com> Implement "visitPow". This is mainly used to see if we have a pow() call of this
form:

powf(10.0f, x);

If this is the case, and also we want limited precision floating-point
calculations, then lower to do the limited-precision stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56035 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
96f6fa1c3397e424565625702a3aec10bd303998 10-Sep-2008 Bill Wendling <isanbard@gmail.com> Implement "visitPow". This is mainly used to see if we have a pow() call of this
form:

powf(10.0f, x);

If this is the case, and also we want limited precision floating-point
calculations, then lower to do the limited-precision stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56035 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
9d24ac56e1f9f1025a473d6b013557431fd05b7c 10-Sep-2008 Evan Cheng <evan.cheng@apple.com> A few more places where FPOW is being ignored.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56032 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1fac69555885ed315dd2247fdb5726098651df3c 10-Sep-2008 Evan Cheng <evan.cheng@apple.com> A few more places where FPOW is being ignored.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56032 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4344a5d0d7b280f0b891e0e6a4413b059d9080b3 10-Sep-2008 Dan Gohman <gohman@apple.com> Change -fast-isel-no-abort to -fast-isel-abort, which now defaults
to being off by default. Also, add assertion checks to check that
the various fast-isel-related command-line options are only used
when -fast-isel itself is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56029 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ee70e1df841384eb96625495506e840c9091fc18 10-Sep-2008 Dan Gohman <gohman@apple.com> Change -fast-isel-no-abort to -fast-isel-abort, which now defaults
to being off by default. Also, add assertion checks to check that
the various fast-isel-related command-line options are only used
when -fast-isel itself is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56029 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4b88702ac3fac540b970e2d92f3dcc5071f16a84 10-Sep-2008 Evan Cheng <evan.cheng@apple.com> Legalizer was missing code that expand fpow to a libcall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56028 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5316b39b4a29f4b68c5c7c437fa827f939bcf68f 10-Sep-2008 Evan Cheng <evan.cheng@apple.com> Legalizer was missing code that expand fpow to a libcall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56028 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e10c814c52a4cf39a541b4631a64067b1969b124 10-Sep-2008 Bill Wendling <isanbard@gmail.com> Adding 6-, 12-, and 18-bit limited-precision floating-point support for exp2
function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56025 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
d1641c96b86af37b623f764e01adbfe0a5fc13d0 10-Sep-2008 Bill Wendling <isanbard@gmail.com> Adding 6-, 12-, and 18-bit limited-precision floating-point support for exp2
function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56025 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
d2e51af0358b571367a9f1e5175b87e9dd72edf8 10-Sep-2008 Dale Johannesen <dalej@apple.com> Move the uglier parts of deciding not to emit a
UsedDirective for some symbols in llvm.used into
Darwin-specific code. I've decided LessPrivateGlobal
is potentially a useful abstraction and left it in
the target-independent area, with improved comment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56024 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
60567624019d288f4fc733d44e7205c463a9bd75 10-Sep-2008 Dale Johannesen <dalej@apple.com> Move the uglier parts of deciding not to emit a
UsedDirective for some symbols in llvm.used into
Darwin-specific code. I've decided LessPrivateGlobal
is potentially a useful abstraction and left it in
the target-independent area, with improved comment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56024 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
b4ec2830499b8c3c5e0de56a2620fb2b21c88b9e 10-Sep-2008 Bill Wendling <isanbard@gmail.com> Add support for 6-, 12-, and 18-bit limited precision calculations of exp for
floating-point numbers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56023 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
25893a3884b7d16d5e8a4eb1e50a7a28a805e019 10-Sep-2008 Bill Wendling <isanbard@gmail.com> Add support for 6-, 12-, and 18-bit limited precision calculations of exp for
floating-point numbers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56023 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
293d5f8bc02a9148238b2c79484637f56de65b9c 10-Sep-2008 Dan Gohman <gohman@apple.com> Add a new option, -fast-isel-verbose, that can be used with
-fast-isel-no-abort to get a dump of all unhandled instructions,
without an abort.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56021 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
69740ec6261a4a8e22e8a106710f88edf3f288cd 10-Sep-2008 Dan Gohman <gohman@apple.com> Add a new option, -fast-isel-verbose, that can be used with
-fast-isel-no-abort to get a dump of all unhandled instructions,
without an abort.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56021 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3ef2d60e95f320fe2377d62b1f460cae44f5fdbe 09-Sep-2008 Evan Cheng <evan.cheng@apple.com> Clear preference when it no longer makes sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56019 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
421f0e8713bb03acd049a26301f06974e8bb6e74 09-Sep-2008 Evan Cheng <evan.cheng@apple.com> Clear preference when it no longer makes sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56019 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0d95267e499082b658eaeaca85b7c5a226753f69 09-Sep-2008 Owen Anderson <resistor@mac.com> Clean this up, based on Evan's suggestions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56009 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
585dabb2082dbc6f7bc1b25bbf35032f4d35f5d0 09-Sep-2008 Owen Anderson <resistor@mac.com> Clean this up, based on Evan's suggestions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56009 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3915025a4fb6add2e787013b54c1552ede388c17 09-Sep-2008 Bill Wendling <isanbard@gmail.com> - Add support for 6-, 12-, and 18-bit limited precision floating-point "log"
values.
- Refactored some of the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56008 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f590a04731db8fd97742fb0f202697e36ab73405 09-Sep-2008 Bill Wendling <isanbard@gmail.com> - Add support for 6-, 12-, and 18-bit limited precision floating-point "log"
values.
- Refactored some of the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56008 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
55302169891f136b72706aee31eebeb308398ad2 09-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2757. Ignore liveinterval register allocation preference if the preference register is not in the right register class. This can happen due to sub-register coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56006 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
ad28af8f9da9fa01cae34034d0c12ccd33876a34 09-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2757. Ignore liveinterval register allocation preference if the preference register is not in the right register class. This can happen due to sub-register coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56006 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
19e861a4ffb896f16a691d5ac869e894df3cd464 09-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Make safer variant of alias resolution routine to be default

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56005 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c7b9091a9b49563aaf8a6ca14b6f31f34ffbe044 09-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Make safer variant of alias resolution routine to be default

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56005 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bd297bcd4a69dd14e97afae555b593a25071fb6f 09-Sep-2008 Bill Wendling <isanbard@gmail.com> Add limited precision floating-point conversions of log10 for 6- and 18-bit
precisions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56000 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
f083e007f8ad7e80518317b8a6f2ce1dbd25ea0d 09-Sep-2008 Bill Wendling <isanbard@gmail.com> Add limited precision floating-point conversions of log10 for 6- and 18-bit
precisions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56000 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
baf37cd5568a7449b6b3822d2dc19582f0270877 09-Sep-2008 Owen Anderson <resistor@mac.com> Check for type legality before materializing integer constants in fast isel. With this change,
all of MultiSource/Applications passes on Darwin/X86 under FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55982 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d09a49a5a03e9e8d4ed5b7b143cd0dd85a117d10 09-Sep-2008 Owen Anderson <resistor@mac.com> Check for type legality before materializing integer constants in fast isel. With this change,
all of MultiSource/Applications passes on Darwin/X86 under FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55982 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
cf01f7a78c18224866595b4b493d03a3de305e1f 09-Sep-2008 Dan Gohman <gohman@apple.com> Remove the code that protected FastISel from aborting in
the case of loads, stores, and conditional branches. It can
handle those now, so any that aren't handled should trigger
the abort.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55977 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
63cb3eb817e8d8f74a4d3b744b5beedf1ca48d8d 09-Sep-2008 Dan Gohman <gohman@apple.com> Remove the code that protected FastISel from aborting in
the case of loads, stores, and conditional branches. It can
handle those now, so any that aren't handled should trigger
the abort.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55977 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
59fbc80f6b3b5c71dfb84149f589625f7ed510e3 09-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix a constant lowering bug. Now we can do load and store instructions with funky getelementptr embedded in the address operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55975 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
483f0db2d164142681731eb5dff96442af72c255 09-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix a constant lowering bug. Now we can do load and store instructions with funky getelementptr embedded in the address operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55975 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
b2dfb89e0e7f1ee3e4fe4a3a1b3af148f0aec34f 09-Sep-2008 Dale Johannesen <dalej@apple.com> Fix logic for not emitting no-dead-strip for some
objects in llvm.used (thanks Anton). Makes visible
the magic 'l' prefix for symbols on Darwin which are
to be passed through the assembler, then removed at
linktime (previously all references to this had been
hidden in the ObjC FE code, oh well).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55973 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2d34f9f9db93f596ea731c546d833ab5d6bb5735 09-Sep-2008 Dale Johannesen <dalej@apple.com> Fix logic for not emitting no-dead-strip for some
objects in llvm.used (thanks Anton). Makes visible
the magic 'l' prefix for symbols on Darwin which are
to be passed through the assembler, then removed at
linktime (previously all references to this had been
hidden in the ObjC FE code, oh well).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55973 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
3eb594013f666d6af9f943df5fb6ac4d902debee 09-Sep-2008 Bill Wendling <isanbard@gmail.com> Add support for floating-point calculations of log2 with limited precisions of 6
and 18.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55968 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
0b40cbd218a942004770b0bc939e345bb383595a 09-Sep-2008 Bill Wendling <isanbard@gmail.com> Add support for floating-point calculations of log2 with limited precisions of 6
and 18.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55968 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
14b0a2b13705d47916b6ea7e2d7c0db898a0fb81 08-Sep-2008 Dale Johannesen <dalej@apple.com> Don't suppress no-dead-strip for used static functions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55962 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
1e1f6c65f20b51c9f609a9aeb7ecdac19c542f98 08-Sep-2008 Dale Johannesen <dalej@apple.com> Don't suppress no-dead-strip for used static functions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55962 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a0e8a1e5d305ad58db3200a56c3ed8b2571cf6d6 08-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Reapply 55904: Unbreak and fix indentation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55958 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
382fb24804392888b06194484e38a44e3f4c6fcd 08-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Reapply 55904: Unbreak and fix indentation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55958 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
a8657e3587eb71eb920c4f0d7d4baa58f33a277d 08-Sep-2008 Dan Gohman <gohman@apple.com> Fix a few I's that were meant to be renamed to BI's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55942 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
dc7d3aab55b75cd27af47224278e30451729711b 08-Sep-2008 Dan Gohman <gohman@apple.com> Fix a few I's that were meant to be renamed to BI's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55942 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
07cabb9432dd927a6d7b1f72039d9475c1742971 08-Sep-2008 Dale Johannesen <dalej@apple.com> Redo the 3 existing low-precision expansions to
use float constants. An oversight by the numerics
people who supplied this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55930 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
9b70c70a4815508b3306961be66f4f0eddd29988 08-Sep-2008 Dale Johannesen <dalej@apple.com> Redo the 3 existing low-precision expansions to
use float constants. An oversight by the numerics
people who supplied this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55930 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
a425e0073df51ab99665062a8c00d704e89d2ef8 08-Sep-2008 Bill Wendling <isanbard@gmail.com> Reverting r55898 to r55909. One of these patches was causing an ICE during the full bootstrap on Darwin:

/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/bin/
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/lib/
-isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/include
-isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/sys-include
-O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition
-isystem ./include -fPIC -pipe -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2
-D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../llvm-gcc.src/gcc
-I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include
-I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include
-I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include
-DSHARED -m64 -DL_negdi2 -c ../../llvm-gcc.src/gcc/libgcc2.c -o
libgcc/x86_64/_negdi2_s.o
Assertion failed: (TargetRegisterInfo::isVirtualRegister(regA) &&
TargetRegisterInfo::isVirtualRegister(regB) && "cannot update physical
register live information"), function runOnMachineFunction, file
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/lib/CodeGen/TwoAddressInstructionPass.cpp,
line 311.
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/bin/
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/lib/
-isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/include
-isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/sys-include
-O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition
-isystem ./include -fPIC -pipe -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2
-D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../llvm-gcc.src/gcc
-I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include
-I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include
-I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include
-DSHARED -m64 -DL_lshrdi3 -c ../../llvm-gcc.src/gcc/libgcc2.c -o
libgcc/x86_64/_lshrdi3_s.o
../../llvm-gcc.src/gcc/unwind-dw2.c:1527: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
{standard input}:unknown:Undefined local symbol LBB21_11
{standard input}:unknown:Undefined local symbol LBB21_12
{standard input}:unknown:Undefined local symbol LBB21_13
{standard input}:unknown:Undefined local symbol LBB21_8


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55928 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
cef079df78ff49684e5fe1444edf513c6f62e2af 08-Sep-2008 Bill Wendling <isanbard@gmail.com> Reverting r55898 to r55909. One of these patches was causing an ICE during the full bootstrap on Darwin:

/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/bin/
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/lib/
-isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/include
-isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/sys-include
-O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition
-isystem ./include -fPIC -pipe -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2
-D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../llvm-gcc.src/gcc
-I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include
-I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include
-I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include
-DSHARED -m64 -DL_negdi2 -c ../../llvm-gcc.src/gcc/libgcc2.c -o
libgcc/x86_64/_negdi2_s.o
Assertion failed: (TargetRegisterInfo::isVirtualRegister(regA) &&
TargetRegisterInfo::isVirtualRegister(regB) && "cannot update physical
register live information"), function runOnMachineFunction, file
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/lib/CodeGen/TwoAddressInstructionPass.cpp,
line 311.
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/bin/
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/lib/
-isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/include
-isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.4.0/sys-include
-O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition
-isystem ./include -fPIC -pipe -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2
-D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../llvm-gcc.src/gcc
-I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include
-I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include
-I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include
-DSHARED -m64 -DL_lshrdi3 -c ../../llvm-gcc.src/gcc/libgcc2.c -o
libgcc/x86_64/_lshrdi3_s.o
../../llvm-gcc.src/gcc/unwind-dw2.c:1527: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
{standard input}:unknown:Undefined local symbol LBB21_11
{standard input}:unknown:Undefined local symbol LBB21_12
{standard input}:unknown:Undefined local symbol LBB21_13
{standard input}:unknown:Undefined local symbol LBB21_8


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55928 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
942ca7f808b88b8789c665a3733e58c75320834f 08-Sep-2008 Dan Gohman <gohman@apple.com> In visitUREM, arrange for the temporary UDIV node to be
revisited, consistent with the code in visitSREM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2e1517f88a329930dc52013b99027df840b8254d 08-Sep-2008 Dan Gohman <gohman@apple.com> In visitUREM, arrange for the temporary UDIV node to be
revisited, consistent with the code in visitSREM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1e0e04caace14a1bdedcf5aef2271e1c031b27b4 08-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add VISIBILITY_HIDDEN on SDISelAsmOperandInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
01b954547ff6c7474af7098adaa2d6d8ca7801d8 08-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add VISIBILITY_HIDDEN on SDISelAsmOperandInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
82f94f1ad98fdcc90e44053437fa555d339a4449 08-Sep-2008 Dan Gohman <gohman@apple.com> Add AsmPrinter support for i128 and larger static initializer data.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55919 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
07a91ea6453f89a1828751fde0dd1fb9790575c3 08-Sep-2008 Dan Gohman <gohman@apple.com> Add AsmPrinter support for i128 and larger static initializer data.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55919 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
a47916d3792b47ec60d5152471db48d50dd9bb35 08-Sep-2008 Dan Gohman <gohman@apple.com> Fix the string for ISD::UDIVREM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2e66b05a2b2a88a8b73692e8187c0be784e0ad57 08-Sep-2008 Dan Gohman <gohman@apple.com> Fix the string for ISD::UDIVREM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9f1185076d60153fd35feb3cadb1b4cd8debc0b6 08-Sep-2008 Evan Cheng <evan.cheng@apple.com> Avoid redefinition and nnbreak windows build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55911 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e9d9a1655da3de0329a15faf93c37e8af32a60ca 08-Sep-2008 Evan Cheng <evan.cheng@apple.com> Avoid redefinition and nnbreak windows build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55911 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d4fde0b11c44f2261eea615389dc5da48d7f439c 08-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Unbreak and fix indentation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55904 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
791a0d1afadd356f742513908dfb54f4a7e4c23b 08-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Unbreak and fix indentation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55904 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
5960e4eb68be6b3bca6369f6a95d7de5ed8a9ead 08-Sep-2008 Evan Cheng <evan.cheng@apple.com> Add fast isel physical register definition support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55892 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
82bfc84a90a617cc6eb014a287ff413adaa21f02 08-Sep-2008 Evan Cheng <evan.cheng@apple.com> Add fast isel physical register definition support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55892 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
9a0d1ba0510ef68f35c21a43861dad957759d86f 08-Sep-2008 Bill Wendling <isanbard@gmail.com> Revert my previous change -- the subtraction of two constants was a no-op
before. This is taken care of in the selection DAG pass. In my opinion, this
should be in one place or the other. I.e., it should probably be removed from
the DAG combiner (along with the other arithmetic transformations on constants
that are essentially no-ops).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55889 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d1e8abcb189a7cd074f91ce813336341c71ce84e 08-Sep-2008 Bill Wendling <isanbard@gmail.com> Revert my previous change -- the subtraction of two constants was a no-op
before. This is taken care of in the selection DAG pass. In my opinion, this
should be in one place or the other. I.e., it should probably be removed from
the DAG combiner (along with the other arithmetic transformations on constants
that are essentially no-ops).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55889 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ca460d5a39e09836e279405b85e2390fa7e7d859 07-Sep-2008 Bill Wendling <isanbard@gmail.com> Convert

// fold (sub c1, c2) -> c1-c2

from a no-op into an actual transformation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55886 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0cdbd3696b83b2d784f656afcd9aa4d2a10fa493 07-Sep-2008 Bill Wendling <isanbard@gmail.com> Convert

// fold (sub c1, c2) -> c1-c2

from a no-op into an actual transformation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55886 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f09917847bb082829feba34d1818eb97764839d9 07-Sep-2008 Evan Cheng <evan.cheng@apple.com> Indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5bbf59abc615c3521d85dc04abfabf4cbbf66a4d 07-Sep-2008 Evan Cheng <evan.cheng@apple.com> Indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c7fcfa07d9c358e5fe20cf1da82f6b60a862920d 07-Sep-2008 Evan Cheng <evan.cheng@apple.com> - Doh. Pass vector by value is bad.
- Add a AnalyzeCallResult specialized for calls which produce a single value. This is used by fastisel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
a2608b581eac67e7e040162a32c507db18ee3b5b 07-Sep-2008 Evan Cheng <evan.cheng@apple.com> - Doh. Pass vector by value is bad.
- Add a AnalyzeCallResult specialized for calls which produce a single value. This is used by fastisel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
853244f8a6d314a9d90824c3d13e8cd368fb88ed 06-Sep-2008 Dale Johannesen <dalej@apple.com> Next limited float precision expansion (log2 12 bits)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
d2cd53d2e46308a9da977fb55df98d1559e62d01 06-Sep-2008 Dale Johannesen <dalej@apple.com> Next limited float precision expansion (log2 12 bits)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
6e6074508c2f781c3e52dfe0e301cb1c7f395a91 06-Sep-2008 Owen Anderson <resistor@mac.com> Revert r55859. This is breaking the build in the abscence of its companion commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55865 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
134f6e5b6d7246384eaaeacbf5052a3a218cc887 06-Sep-2008 Owen Anderson <resistor@mac.com> Revert r55859. This is breaking the build in the abscence of its companion commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55865 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8a11053f3ca7efb29312c4293c4fdb5d2ca3e20f 06-Sep-2008 Dan Gohman <gohman@apple.com> Move the code that inserts copies for function livein registers
out of ScheduleDAGEmit.cpp and into SelectionDAGISel.cpp. This
allows it to be run exactly once per function, even if multiple
SelectionDAG iterations happen in the entry block, as may happen
with FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55863 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAGISel.cpp
283e4995a27b39e2d5b206ba64cffb06a9c35dd4 06-Sep-2008 Dan Gohman <gohman@apple.com> Move the code that inserts copies for function livein registers
out of ScheduleDAGEmit.cpp and into SelectionDAGISel.cpp. This
allows it to be run exactly once per function, even if multiple
SelectionDAG iterations happen in the entry block, as may happen
with FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55863 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGEmit.cpp
electionDAG/SelectionDAGISel.cpp
852680a8fa4d70055177c7e1d9b0b43f218064d5 05-Sep-2008 Dale Johannesen <dalej@apple.com> Add the next limited-precision expansion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55856 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
91e305b18628619eb5abd3d7a162c7d99f292824 05-Sep-2008 Dale Johannesen <dalej@apple.com> Add the next limited-precision expansion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55856 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
638c6830c6d0d6871065d2b00178ee4aa7d4d044 05-Sep-2008 Dan Gohman <gohman@apple.com> FastISel support for AND and OR with type i1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55846 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8a8980ec4bd58e7e75d364a1144b94343828e32a 05-Sep-2008 Dan Gohman <gohman@apple.com> FastISel support for AND and OR with type i1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55846 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
59e577f73c9908a37cd23b81ff5e81c911d0b25e 05-Sep-2008 Dale Johannesen <dalej@apple.com> Add hooks for other intrinsics to get low-precision expansions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55845 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
062bb5dd33d7eb88e6944708b724c3d06cb1fe00 05-Sep-2008 Dale Johannesen <dalej@apple.com> Add hooks for other intrinsics to get low-precision expansions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55845 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
40b189e4e257924d90aaf63bf2e12bc7bbca961a 05-Sep-2008 Dan Gohman <gohman@apple.com> FastISel support for ConstantExprs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
336a193d3d6a38ebde42cbfc3a688a4c36ad80e6 05-Sep-2008 Dan Gohman <gohman@apple.com> FastISel support for ConstantExprs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
be0034e3c2f671f255249d51ec95d746709fe1f1 05-Sep-2008 Dan Gohman <gohman@apple.com> Revert r55817. It broke PIC. FastISel will need to find a different
approach here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55842 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGEmit.cpp
0542d559a1e2f5cc319dfc125064ef74283a11c3 05-Sep-2008 Dan Gohman <gohman@apple.com> Revert r55817. It broke PIC. FastISel will need to find a different
approach here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55842 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGEmit.cpp
c89d2feb35560883688e43b553b8e94e7cd371de 05-Sep-2008 Evan Cheng <evan.cheng@apple.com> Add a variant of AnalyzeCallOperands that can be used by fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55838 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
0a9e7c548fecba00b96212e1bbafc9fc8e59c6ff 05-Sep-2008 Evan Cheng <evan.cheng@apple.com> Add a variant of AnalyzeCallOperands that can be used by fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55838 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
1c11debc94baa65b7af702bbc20c813c266afb19 05-Sep-2008 Duncan Sands <baldrick@free.fr> "Fix" PR2762. The testcase now crashes codegen
elsewhere due to a missing pattern for
v2f64 = sint_to_fp v2i32. That is PR2687.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55828 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
e0a0f55447c818391fd4820b25ef5de47ed7252e 05-Sep-2008 Duncan Sands <baldrick@free.fr> "Fix" PR2762. The testcase now crashes codegen
elsewhere due to a missing pattern for
v2f64 = sint_to_fp v2i32. That is PR2687.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55828 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
3dd168d4452d0aff4960f01c5a7471a79eec45f3 05-Sep-2008 Dan Gohman <gohman@apple.com> Fix a search+replace-o.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
83c6e8ac87761b247f664a6875a33bb403d917e9 05-Sep-2008 Dan Gohman <gohman@apple.com> Fix a search+replace-o.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
601d3c014588ad87f6625cd8848c8d76ffe72c37 05-Sep-2008 Dale Johannesen <dalej@apple.com> Add -flimit-float-precision to enable some faster,
but less accurate (non-IEEE) code sequences for
certain math library functions. Add the first of
several such expansions. Don't worry, if you don't
turn it on it won't affect you.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55823 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
d93d7996fa5ae499eeadb734e5a14480143ea9b5 05-Sep-2008 Dale Johannesen <dalej@apple.com> Add -flimit-float-precision to enable some faster,
but less accurate (non-IEEE) code sequences for
certain math library functions. Add the first of
several such expansions. Don't worry, if you don't
turn it on it won't affect you.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55823 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
087c8507e592bbbede1746f07bd44b28559e3684 05-Sep-2008 Dan Gohman <gohman@apple.com> FastISel support for unreachable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55818 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
36c296ea13462818567a96faed62ef8a0746a4b9 05-Sep-2008 Dan Gohman <gohman@apple.com> FastISel support for unreachable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55818 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c7f4a8a80cb7e8cf09495f4b60ae45734e7d5d98 05-Sep-2008 Dan Gohman <gohman@apple.com> In FastISel mode, the scheduler may be invoked multiple times
in the same block. Fix the entry-block handling to only run at
at the beginning of the entry block, and not any other times.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55817 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGEmit.cpp
fe9f74a6a0878266f0198c1b0186dbd7c95e23c6 05-Sep-2008 Dan Gohman <gohman@apple.com> In FastISel mode, the scheduler may be invoked multiple times
in the same block. Fix the entry-block handling to only run at
at the beginning of the entry block, and not any other times.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55817 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGEmit.cpp
95267a1e671efc3c14e916b6978bbb15973b4cdc 05-Sep-2008 Owen Anderson <resistor@mac.com> Add initial support for selecting constant materializations that require constant
pool loads on X86 in fast isel. This isn't actually used yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55814 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
51f958e134f0daa4e29c06d08d2477c1c4712f51 05-Sep-2008 Owen Anderson <resistor@mac.com> Add initial support for selecting constant materializations that require constant
pool loads on X86 in fast isel. This isn't actually used yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55814 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5b2298005d71d74650197462cab402ed92c2f583 04-Sep-2008 Dan Gohman <gohman@apple.com> Add an include of SmallSet.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55793 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
a76b35962b7aafeed91c607d1fd7568586280dd2 04-Sep-2008 Dan Gohman <gohman@apple.com> Add an include of SmallSet.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55793 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
ae73dc1448d25b02cabc7c64c86c64371453dda8 04-Sep-2008 Dan Gohman <gohman@apple.com> Tidy up several unbeseeming casts from pointer to intptr_t.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55779 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
LFWriter.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
oopAligner.cpp
owerSubregs.cpp
achOWriter.cpp
achineFunction.cpp
achineLICM.cpp
achineModuleInfo.cpp
achineSink.cpp
HIElimination.cpp
ostRASchedulerList.cpp
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.h
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
26f8c27c34b44f7d87de74d1de2128c1a02855bf 04-Sep-2008 Dan Gohman <gohman@apple.com> Tidy up several unbeseeming casts from pointer to intptr_t.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55779 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
ranchFolding.cpp
LFWriter.cpp
CMetadata.cpp
CStrategy.cpp
fConversion.cpp
oopAligner.cpp
owerSubregs.cpp
achOWriter.cpp
achineFunction.cpp
achineLICM.cpp
achineModuleInfo.cpp
achineSink.cpp
HIElimination.cpp
ostRASchedulerList.cpp
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.h
tackSlotColoring.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
6448d91ad1e5497fe2f7015d61b57cb5f3040879 04-Sep-2008 Dan Gohman <gohman@apple.com> Clean up uses of TargetLowering::getTargetMachine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55769 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
404e854a4bc184d46c235708a901770dba1a903d 04-Sep-2008 Dan Gohman <gohman@apple.com> Clean up uses of TargetLowering::getTargetMachine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55769 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGBuild.cpp
90960280ee79987f53b4952793a867143145a36a 04-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix an overly strict assertion. Source register of a copy may not be killed, it may be killed by an implicit super-register use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55762 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
c7e737e1ce677ae43da7767cbecddfca4df32eca 04-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix an overly strict assertion. Source register of a copy may not be killed, it may be killed by an implicit super-register use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55762 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
7794f2a3a7778bdbc9bdd861db1fe914450e0470 04-Sep-2008 Dale Johannesen <dalej@apple.com> Add intrinsics for log, log2, log10, exp, exp2.
No functional change (and no FE change to generate them).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55753 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
92b33088469bee2ea489b79574d26cd3847220ac 04-Sep-2008 Dale Johannesen <dalej@apple.com> Add intrinsics for log, log2, log10, exp, exp2.
No functional change (and no FE change to generate them).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55753 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/TargetLowering.cpp
104e4ce1629ea84736691bd1ee7867bdf90e8a2e 04-Sep-2008 Dan Gohman <gohman@apple.com> Do trivial local CSE for constants and other non-Instruction values
in FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55748 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5ac35427d2e43a9f5eea212591e26cf2fa895eae 04-Sep-2008 Dan Gohman <gohman@apple.com> Do trivial local CSE for constants and other non-Instruction values
in FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55748 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
2a7c671e2eb93e316f1214b1f5ea0f2dfa072943 04-Sep-2008 Dan Gohman <gohman@apple.com> Put RegsForValue in the llvm namespace to avoid warnings about
classes in the llvm namespace having members with types from
anonymous namespaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
92f8b6cb0c99820939cc800a0bef47b8a535a7cc 04-Sep-2008 Dan Gohman <gohman@apple.com> Put RegsForValue in the llvm namespace to avoid warnings about
classes in the llvm namespace having members with types from
anonymous namespaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
3df24e667f04a7003342b534310919abc9c87418 04-Sep-2008 Dan Gohman <gohman@apple.com> Create HandlePHINodesInSuccessorBlocksFast, a version of
HandlePHINodesInSuccessorBlocks that works FastISel-style. This
allows PHI nodes to be updated correctly while using FastISel.

This also involves some code reorganization; ValueMap and
MBBMap are now members of the FastISel class, so they needn't
be passed around explicitly anymore. Also, SelectInstructions
is changed to SelectInstruction, and only does one instruction
at a time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55746 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
ca4857aa26b7ad55a975d4053ce1cd400b6bf4a0 04-Sep-2008 Dan Gohman <gohman@apple.com> Create HandlePHINodesInSuccessorBlocksFast, a version of
HandlePHINodesInSuccessorBlocks that works FastISel-style. This
allows PHI nodes to be updated correctly while using FastISel.

This also involves some code reorganization; ValueMap and
MBBMap are now members of the FastISel class, so they needn't
be passed around explicitly anymore. Also, SelectInstructions
is changed to SelectInstruction, and only does one instruction
at a time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55746 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGISel.cpp
61e6093dc8d92def3dfe0b379df83f70b0558247 03-Sep-2008 Dale Johannesen <dalej@apple.com> Do not emit a UsedDirective for things in the llvm.used
list that have internal linkage; the linker doesn't need
or want this. (These objects must still be preserved
at compile time, so just removing them from the llvm.used
list doesn't work.) Should affect only Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55722 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
4911fb83d8a8357f67d01620b4b8979df15aa52c 03-Sep-2008 Dale Johannesen <dalej@apple.com> Do not emit a UsedDirective for things in the llvm.used
list that have internal linkage; the linker doesn't need
or want this. (These objects must still be preserved
at compile time, so just removing them from the llvm.used
list doesn't work.) Should affect only Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55722 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
d5d81a457b5ff758b3fcc527af38827490bc68a5 03-Sep-2008 Owen Anderson <resistor@mac.com> Oops, I accidentally broke the fallback case with my last commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55704 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
9ecc0c73c371ddf95184b9b75a66d92c17160ad7 03-Sep-2008 Owen Anderson <resistor@mac.com> Oops, I accidentally broke the fallback case with my last commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55704 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
99aaf108cdf4ac5b972757abbf4e0a3d547804b1 03-Sep-2008 Owen Anderson <resistor@mac.com> Fix an issue where we were reusing materializations of constants in blocks not dominated by the materialization. This is
the simple fix, materializing the constant before every use. It might be better to either track domination of uses or
to materialize all constants and the beginning of the function and let remat sort when to do materialization at uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
95a87fdc33d8f0dff5ffb35839c4369619db0577 03-Sep-2008 Owen Anderson <resistor@mac.com> Fix an issue where we were reusing materializations of constants in blocks not dominated by the materialization. This is
the simple fix, materializing the constant before every use. It might be better to either track domination of uses or
to materialize all constants and the beginning of the function and let remat sort when to do materialization at uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
f0cbcd48804961b05359ee41859bbd7774f41fe0 03-Sep-2008 Dan Gohman <gohman@apple.com> Split the SelectionDAG-building code, including the FunctionLoweringInfo
and SelectionDAGLowering classes, out of SelectionDAGISel.cpp and put
it in a separate file, SelectionDAGBuild.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
13aeef9ec42c49c4d7f6786b86b3fa23e547860c 03-Sep-2008 Dan Gohman <gohman@apple.com> Split the SelectionDAG-building code, including the FunctionLoweringInfo
and SelectionDAGLowering classes, out of SelectionDAGISel.cpp and put
it in a separate file, SelectionDAGBuild.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGBuild.cpp
electionDAG/SelectionDAGBuild.h
electionDAG/SelectionDAGISel.cpp
94b8d7ea63c5b533c299226677a0973a39f98e91 03-Sep-2008 Dan Gohman <gohman@apple.com> Separate MachineInstr-emitting routines from actual scheduling
routines and move them into a separate file, ScheduleDAGEmit.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55699 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGEmit.cpp
c38611548b659f379def8161173e73025d3e648a 03-Sep-2008 Dan Gohman <gohman@apple.com> Separate MachineInstr-emitting routines from actual scheduling
routines and move them into a separate file, ScheduleDAGEmit.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55699 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGEmit.cpp
3f62940561760fe5dcc8675853be57ee4ac8069a 03-Sep-2008 Dan Gohman <gohman@apple.com> Fix addRegisterDead and addRegisterKilled to be more thorough
when searching for redundant subregister dead/kill bits.

Previously it was common to see instructions marked like this:
"RET %EAX<imp-use,kill>, %AX<imp-use,kill>"

With this change, addRegisterKilled continues scanning after
finding the %EAX operand, so it proceeds to discover the
redundant %AX kill and eliminates it, producing this:
"RET %EAX<imp-use,kill>"

This currently has no effect on the generated code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55698 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
244b86aa5261f8cc7e7cb2a018005136379ab76d 03-Sep-2008 Dan Gohman <gohman@apple.com> Fix addRegisterDead and addRegisterKilled to be more thorough
when searching for redundant subregister dead/kill bits.

Previously it was common to see instructions marked like this:
"RET %EAX<imp-use,kill>, %AX<imp-use,kill>"

With this change, addRegisterKilled continues scanning after
finding the %EAX operand, so it proceeds to discover the
redundant %AX kill and eliminates it, producing this:
"RET %EAX<imp-use,kill>"

This currently has no effect on the generated code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55698 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f45261fb9b2f429c4f1f5a0270e2f5e127e39467 03-Sep-2008 Evan Cheng <evan.cheng@apple.com> If TargetSelectInstruction returns true, move to next instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
088cb64f204b806453c5aa7fd9697f523257a89f 03-Sep-2008 Evan Cheng <evan.cheng@apple.com> If TargetSelectInstruction returns true, move to next instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
36fd941fc029c6ea50ed08d26a2bfe4932b9789c 02-Sep-2008 Evan Cheng <evan.cheng@apple.com> 80 col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55668 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d00ed04e9c5e13055f4375af165af2ee4e58735e 02-Sep-2008 Evan Cheng <evan.cheng@apple.com> 80 col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55668 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d2ff647964ed242e67ac12f7d21a58c864309d95 02-Sep-2008 Dan Gohman <gohman@apple.com> Ensure that HandlePHINodesInSuccessorBlocks is run for all blocks,
even in FastISel mode in the case where FastISel successfully
selects all the instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55641 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
61a1f1ceb9f0fd2cb796eba50663c79cbdda63f5 02-Sep-2008 Dan Gohman <gohman@apple.com> Ensure that HandlePHINodesInSuccessorBlocks is run for all blocks,
even in FastISel mode in the case where FastISel successfully
selects all the instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55641 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ed63214fcbebcaf989dbc6a5bf7c3b6df67732f5 01-Sep-2008 Gabor Greif <ggreif@gmail.com> Provide two overloads of AnalyzeNewNode.

The first can update the SDNode in an SDValue
while the second is called with SDNode* and
returns a possibly updated SDNode*.

This patch has no intended functional impact,
but helps eliminating ugly temporary SDValues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55608 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
6b54ff33bcf5bdcc966f2f560c8f1daa44e263ba 01-Sep-2008 Gabor Greif <ggreif@gmail.com> Provide two overloads of AnalyzeNewNode.

The first can update the SDNode in an SDValue
while the second is called with SDNode* and
returns a possibly updated SDNode*.

This patch has no intended functional impact,
but helps eliminating ugly temporary SDValues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55608 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
1189f3ac3b84063f1569eddeacfcb3b79bc25c69 01-Sep-2008 Duncan Sands <baldrick@free.fr> Even though no caller actually uses the new value
(what matters is that it is added to the worklist),
it seems more logical to return it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55606 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
f6789d1b11e3e53af5a32cfe4e72c758df26926d 01-Sep-2008 Duncan Sands <baldrick@free.fr> Even though no caller actually uses the new value
(what matters is that it is added to the worklist),
it seems more logical to return it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55606 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
acb04ec4273516242fe87cb0a57a43136805dedd 31-Aug-2008 Bill Wendling <isanbard@gmail.com> Cosmetic changes to Machine LICM. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55578 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
59559ae411283564acf76f16a038cffeb3c2f30d 31-Aug-2008 Bill Wendling <isanbard@gmail.com> Cosmetic changes to Machine LICM. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55578 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
2692d5957482184e767503d9c0ae703163b338e3 31-Aug-2008 Bill Wendling <isanbard@gmail.com> Another situation where ROTR is cheaper than ROTL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55577 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
89f05f5f1df2c1fbc3c6590d545227c11a589c0d 31-Aug-2008 Bill Wendling <isanbard@gmail.com> Another situation where ROTR is cheaper than ROTL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55577 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
353dea2f0aca7ddbdad242b9dabb065337744d98 31-Aug-2008 Bill Wendling <isanbard@gmail.com> For this pattern, ROTR is the cheaper option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55576 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a70293dc8277d8e96fe80efc059334025f4d7857 31-Aug-2008 Bill Wendling <isanbard@gmail.com> For this pattern, ROTR is the cheaper option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55576 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c5cbda12e933591ce76135aa776c44193255b2e9 31-Aug-2008 Bill Wendling <isanbard@gmail.com> - Fix comment so that it describes how the code really works:

// fold (or (shl x, (*ext y)), (srl x, (*ext (sub 32, y)))) ->
// (rotl x, y)
// fold (or (shl x, (*ext y)), (srl x, (*ext (sub 32, y)))) ->
// (rotr x, (sub 32, y))

Example: (x == 0xDEADBEEF and y == 4)

(x << 4) | (x >> 28)
=> 0xEADBEEF0 | 0x0000000D
=> 0xEADBEEFD

(rotl x, 4)
=> 0xEADBEEFD

(rotr x, 28)
=> 0xEADBEEFD

- Fix comment and code for second version. It wasn't using the rot* propertly.

// fold (or (shl x, (*ext (sub 32, y))), (srl x, (*ext r))) ->
// (rotr x, y)
// fold (or (shl x, (*ext (sub 32, y))), (srl x, (*ext r))) ->
// (rotl x, (sub 32, y))

(x << 28) | (x >> 4)
=> 0xD0000000 | 0x0DEADBEE
=> 0xDDEADBEE

(rotl x, 4)
=> 0xEADBEEFD

(rotr x, 28)
=> (0xEADBEEFD)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55575 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f3dd73946866550a805bc8dd9b797073135ab3ca 31-Aug-2008 Bill Wendling <isanbard@gmail.com> - Fix comment so that it describes how the code really works:

// fold (or (shl x, (*ext y)), (srl x, (*ext (sub 32, y)))) ->
// (rotl x, y)
// fold (or (shl x, (*ext y)), (srl x, (*ext (sub 32, y)))) ->
// (rotr x, (sub 32, y))

Example: (x == 0xDEADBEEF and y == 4)

(x << 4) | (x >> 28)
=> 0xEADBEEF0 | 0x0000000D
=> 0xEADBEEFD

(rotl x, 4)
=> 0xEADBEEFD

(rotr x, 28)
=> 0xEADBEEFD

- Fix comment and code for second version. It wasn't using the rot* propertly.

// fold (or (shl x, (*ext (sub 32, y))), (srl x, (*ext r))) ->
// (rotr x, y)
// fold (or (shl x, (*ext (sub 32, y))), (srl x, (*ext r))) ->
// (rotl x, (sub 32, y))

(x << 28) | (x >> 4)
=> 0xD0000000 | 0x0DEADBEE
=> 0xDDEADBEE

(rotl x, 4)
=> 0xEADBEEFD

(rotr x, 28)
=> (0xEADBEEFD)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55575 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
dc71563794a6a30f66278af5a9cdccde36b1797e 31-Aug-2008 Gabor Greif <ggreif@gmail.com> typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8b2235cf951f5004fd1f097ab228d226540a1237 31-Aug-2008 Gabor Greif <ggreif@gmail.com> typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
12632d2222d983a1db197929df0f66393a239316 30-Aug-2008 Gabor Greif <ggreif@gmail.com> fix some 80-col violations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b420b9d7c400aff8027b7cdfc818c9a72b00315d 30-Aug-2008 Gabor Greif <ggreif@gmail.com> fix some 80-col violations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cd04708f59b2777370a7c812c72572b1dae91221 30-Aug-2008 Evan Cheng <evan.cheng@apple.com> Re-apply 55467 with fix. If copy is being replaced by remat'ed def, transfer the implicit defs onto the remat'ed instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55564 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
b3b1bd72634e76fa8df2243bbf8712c0fb915a2f 30-Aug-2008 Evan Cheng <evan.cheng@apple.com> Re-apply 55467 with fix. If copy is being replaced by remat'ed def, transfer the implicit defs onto the remat'ed instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55564 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
3689ff450ae2d72aadf48c70f499e4368684d1e3 30-Aug-2008 Evan Cheng <evan.cheng@apple.com> Fold isRematerializable checks into isSafeToReMat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55563 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a07a9a214b371f0cbc62fe77941971a1ff5063b8 30-Aug-2008 Evan Cheng <evan.cheng@apple.com> Fold isRematerializable checks into isSafeToReMat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55563 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
eb9f89287e8ff3daeb9191ecd0cc3241a4f4137d 30-Aug-2008 Evan Cheng <evan.cheng@apple.com> Transform (x << (y&31)) -> (x << y). This takes advantage of the fact x86 shift instructions 2nd operand (shift count) is limited to 0 to 31 (or 63 in the x86-64 case).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
76a64c7811554a1f8ff4a8a9b8b9c741d6fc87cc 30-Aug-2008 Evan Cheng <evan.cheng@apple.com> Transform (x << (y&31)) -> (x << y). This takes advantage of the fact x86 shift instructions 2nd operand (shift count) is limited to 0 to 31 (or 63 in the x86-64 case).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cc54e76cc67bbc9badc024ab29053602769bd255 30-Aug-2008 Owen Anderson <resistor@mac.com> Fix an issue where a use might be selected before a def, and then we didn't respect the pre-chosen vreg
assignment when selecting the def. This is the naive solution to the problem: insert a copy to the pre-chosen
vreg. Other solutions might be preferable, such as:
1) Passing the dest reg into FastEmit_. However, this would require the higher level code to know about reg classes, which they don't currently.
2) Selecting blocks in reverse postorder. This has some compile time cost for computing the order, and we'd need to measure its impact.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55555 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
6420503b3ee467796fa9e120627a8af2eadc34d4 30-Aug-2008 Owen Anderson <resistor@mac.com> Fix an issue where a use might be selected before a def, and then we didn't respect the pre-chosen vreg
assignment when selecting the def. This is the naive solution to the problem: insert a copy to the pre-chosen
vreg. Other solutions might be preferable, such as:
1) Passing the dest reg into FastEmit_. However, this would require the higher level code to know about reg classes, which they don't currently.
2) Selecting blocks in reverse postorder. This has some compile time cost for computing the order, and we'd need to measure its impact.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55555 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
4529966d996bfb657a977c67b9bb777e5b244e0f 30-Aug-2008 Evan Cheng <evan.cheng@apple.com> Fix 80 col. violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55551 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c296a30ea7510c9ec388b1cf8b0498dbba92710d 30-Aug-2008 Evan Cheng <evan.cheng@apple.com> Fix 80 col. violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55551 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
17a568b6682874f7a5dfe92728d372421de3e645 30-Aug-2008 Evan Cheng <evan.cheng@apple.com> Back out 55498. It broken Apple style bootstrapping.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55549 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
56550ae09a9d0151533e3ca9ab370a4eb0ed1b15 30-Aug-2008 Evan Cheng <evan.cheng@apple.com> Back out 55498. It broken Apple style bootstrapping.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55549 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
99b218218c0ca3ebfdd568ddfeafa07842e9d69d 29-Aug-2008 Dan Gohman <gohman@apple.com> Add a target callback for FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55512 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cb9b4d32a9754f2a33c595bc0ddf758093caca9a 29-Aug-2008 Dan Gohman <gohman@apple.com> Add a target callback for FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55512 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ba36cb5242eb02b12b277f82b9efe497f7da4d7f 28-Aug-2008 Gabor Greif <ggreif@gmail.com> erect abstraction boundaries for accessing SDValue members, rename Val -> Node to reflect semantics

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55504 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
1c80d116c6a34e02059593964233f2e641bdbc5b 28-Aug-2008 Gabor Greif <ggreif@gmail.com> erect abstraction boundaries for accessing SDValue members, rename Val -> Node to reflect semantics

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55504 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
205d92589bc8c59d4bba9ddf89e0eb3c4d548cda 28-Aug-2008 Dan Gohman <gohman@apple.com> Implement null and undef values for FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55500 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
41e4a503114e3123167e76a456c90c310d90f8d1 28-Aug-2008 Dan Gohman <gohman@apple.com> Implement null and undef values for FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55500 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a3f8b7a4ce8ab5c46d52077162851105a390a6ac 28-Aug-2008 Dan Gohman <gohman@apple.com> Optimize DAGCombiner's worklist processing. Previously it started
its work by putting all nodes in the worklist, requiring a big
dynamic allocation. Now, DAGCombiner just iterates over the AllNodes
list and maintains a worklist for nodes that are newly created or
need to be revisited. This allows the worklist to stay small in most
cases, so it can be a SmallVector.

This has the side effect of making DAGCombine not miss a folding
opportunity in alloca-align-rounding.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55498 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ef709393e46697d18fbbedc9fe5c5aa279b15ae2 28-Aug-2008 Dan Gohman <gohman@apple.com> Optimize DAGCombiner's worklist processing. Previously it started
its work by putting all nodes in the worklist, requiring a big
dynamic allocation. Now, DAGCombiner just iterates over the AllNodes
list and maintains a worklist for nodes that are newly created or
need to be revisited. This allows the worklist to stay small in most
cases, so it can be a SmallVector.

This has the side effect of making DAGCombine not miss a folding
opportunity in alloca-align-rounding.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55498 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9ffd8b5720d606eb7da702c97ed6491697867949 28-Aug-2008 Dan Gohman <gohman@apple.com> Move CaseBlock, JumpTable, and BitTestBlock to be members of
SelectionDAGLowering instead of being in an anonymous namespace.
This fixes warnings about SelectionDAGLowering having fields
using anonymous namespaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55497 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2e0fa9da8574ffc5da044f2c027cc46da9855440 28-Aug-2008 Dan Gohman <gohman@apple.com> Move CaseBlock, JumpTable, and BitTestBlock to be members of
SelectionDAGLowering instead of being in an anonymous namespace.
This fixes warnings about SelectionDAGLowering having fields
using anonymous namespaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55497 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5edd361497f4c78a20fcbb75c6e7e94ff8046ed1 28-Aug-2008 Dan Gohman <gohman@apple.com> Fix a FastISel bug where the instructions from lowering the arguments
were being emitted after the first instructions of the entry block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55496 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2c44e9a51341abb17ff11f516a46f026024e03b6 28-Aug-2008 Dan Gohman <gohman@apple.com> Fix a FastISel bug where the instructions from lowering the arguments
were being emitted after the first instructions of the entry block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55496 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
91ee5454ae8f15de769a7316b4c36734b6103e45 28-Aug-2008 Rafael Espindola <rafael.espindola@gmail.com> Reduce the size of the Parts vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55483 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ccd63ce576e408a08d9afb66a87109e2685daeb0 28-Aug-2008 Rafael Espindola <rafael.espindola@gmail.com> Reduce the size of the Parts vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55483 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c0bb68b98267c75168e6596d20610a8a8b3c0635 28-Aug-2008 Owen Anderson <resistor@mac.com> Hook up support for fast-isel of trunc instructions, using the newly working support for EXTRACT_SUBREG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
75645a085bef73d6bdc7ebaa4ebecf627961d2e1 28-Aug-2008 Owen Anderson <resistor@mac.com> Hook up support for fast-isel of trunc instructions, using the newly working support for EXTRACT_SUBREG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
40a468f24909792f000e3ccc1dda7a27b9c34b69 28-Aug-2008 Owen Anderson <resistor@mac.com> FastEmitInst_extractsubreg doesn't need to be passed the register class. It can get it from MachineRegisterInfo instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55476 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8b6bf04830a9593fa8ce80f38299bac6c96e2f25 28-Aug-2008 Owen Anderson <resistor@mac.com> FastEmitInst_extractsubreg doesn't need to be passed the register class. It can get it from MachineRegisterInfo instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55476 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
f641395435ddfe2e3f0d9857fff4f6da77ee5427 28-Aug-2008 Dan Gohman <gohman@apple.com> Revert r55467; it causes regressions in UnitTests/Vector/divides,
Benchmarks/sim/sim, and others on x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55475 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
bdea9b3ba772dfd5459ceb8ebd877fb535d20ea9 28-Aug-2008 Dan Gohman <gohman@apple.com> Revert r55467; it causes regressions in UnitTests/Vector/divides,
Benchmarks/sim/sim, and others on x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55475 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
c748ffa4e4408545b6adf102bfba52001f8a0a92 28-Aug-2008 Rafael Espindola <rafael.espindola@gmail.com> Correctly resize the Parts array.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55471 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5c9e03a46f17cde2ccab566713ed212bf7343991 28-Aug-2008 Rafael Espindola <rafael.espindola@gmail.com> Correctly resize the Parts array.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55471 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9242cb8b8288664da4147fd6dda43514926a9041 28-Aug-2008 Evan Cheng <evan.cheng@apple.com> If a copy isn't coalesced, but its src is defined by trivial computation. Re-materialize the src to replace the copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55467 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
cbe48593bc4048978f388a50de5f8c896d8d2813 28-Aug-2008 Evan Cheng <evan.cheng@apple.com> If a copy isn't coalesced, but its src is defined by trivial computation. Re-materialize the src to replace the copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55467 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
e00a8a2a2e11a37fd1ddf2504bd22d225d0994d0 28-Aug-2008 Dale Johannesen <dalej@apple.com> Split the ATOMIC NodeType's to include the size, e.g.
ATOMIC_LOAD_ADD_{8,16,32,64} instead of ATOMIC_LOAD_ADD.
Increased the Hardcoded Constant OpActionsCapacity to match.
Large but boring; no functional change.

This is to support partial-word atomics on ppc; i8 is
not a valid type there, so by the time we get to lowering, the
ATOMIC_LOAD nodes looks the same whether the type was i8 or i32.
The information can be added to the AtomicSDNode, but that is the
largest SDNode; I don't fully understand the SDNode allocation,
but it is sensitive to the largest node size, so increasing
that must be bad. This is the alternative.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55457 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
bc18766ddb484864750c40e1b2763ad81120a6ac 28-Aug-2008 Dale Johannesen <dalej@apple.com> Split the ATOMIC NodeType's to include the size, e.g.
ATOMIC_LOAD_ADD_{8,16,32,64} instead of ATOMIC_LOAD_ADD.
Increased the Hardcoded Constant OpActionsCapacity to match.
Large but boring; no functional change.

This is to support partial-word atomics on ppc; i8 is
not a valid type there, so by the time we get to lowering, the
ATOMIC_LOAD nodes looks the same whether the type was i8 or i32.
The information can be added to the AtomicSDNode, but that is the
largest SDNode; I don't fully understand the SDNode allocation,
but it is sensitive to the largest node size, so increasing
that must be bad. This is the alternative.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55457 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
7c3234c6be0dc0bdf4b5d6f848cd728a77f349d7 28-Aug-2008 Dan Gohman <gohman@apple.com> Reorganize the lifetimes of the major objects SelectionDAGISel
works with.

SelectionDAG, FunctionLoweringInfo, and SelectionDAGLowering
objects now get created once per SelectionDAGISel instance, and
can be reused across blocks and across functions. Previously,
they were created and destroyed each time they were needed.

This reorganization simplifies the handling of PHI nodes, and
also SwitchCases, JumpTables, and BitTestBlocks. This
simplification has the side effect of fixing a bug in FastISel
where successor PHI nodes weren't being updated correctly.

This is also a step towards making the transition from FastISel
into and out of SelectionDAG faster, and also making
plain SelectionDAG faster on code with lots of little blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55450 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
0f2d71dbffc79d57fec930214b092cf3ce6b4adc 28-Aug-2008 Dan Gohman <gohman@apple.com> Reorganize the lifetimes of the major objects SelectionDAGISel
works with.

SelectionDAG, FunctionLoweringInfo, and SelectionDAGLowering
objects now get created once per SelectionDAGISel instance, and
can be reused across blocks and across functions. Previously,
they were created and destroyed each time they were needed.

This reorganization simplifies the handling of PHI nodes, and
also SwitchCases, JumpTables, and BitTestBlocks. This
simplification has the side effect of fixing a bug in FastISel
where successor PHI nodes weren't being updated correctly.

This is also a step towards making the transition from FastISel
into and out of SelectionDAG faster, and also making
plain SelectionDAG faster on code with lots of little blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55450 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
8970f00deff00ffce1f35cf00883357e1582daa1 28-Aug-2008 Owen Anderson <resistor@mac.com> Add a helper method that will be used to support EXTRACT_SUBREG for selecting trunc's in fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55439 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
44e9a2f03a75f20f3218a8a8463e9342b9ea113c 28-Aug-2008 Owen Anderson <resistor@mac.com> Add a helper method that will be used to support EXTRACT_SUBREG for selecting trunc's in fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55439 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8763c1c54413c9cd0b56e2860edb5856151a69fc 27-Aug-2008 Evan Cheng <evan.cheng@apple.com> Move the check whether it's worth remating to caller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55434 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
woAddressInstructionPass.cpp
a02c669b712be61831109eabf521e937d577faca 27-Aug-2008 Evan Cheng <evan.cheng@apple.com> Move the check whether it's worth remating to caller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55434 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
woAddressInstructionPass.cpp
a318dabc0edbcc7a2b54d99b026a093361ec14fc 27-Aug-2008 Dan Gohman <gohman@apple.com> Fix FastISel's bitcast code for the case where getRegForValue fails.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55431 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
f2075e053142cf60be2df91c4ea675a913333fe5 27-Aug-2008 Dan Gohman <gohman@apple.com> Fix FastISel's bitcast code for the case where getRegForValue fails.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55431 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
df3b99381f1c211071cc1daf0cc297666877bbcb 27-Aug-2008 Evan Cheng <evan.cheng@apple.com> Refactor isSafeToReMat out of 2addr pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55430 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
woAddressInstructionPass.cpp
75e2ceec552574757669f41dfbe605a6c0a58097 27-Aug-2008 Evan Cheng <evan.cheng@apple.com> Refactor isSafeToReMat out of 2addr pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55430 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
woAddressInstructionPass.cpp
6336b70541204d1a8377ec1f33748a7260e0a31d 27-Aug-2008 Owen Anderson <resistor@mac.com> Use TargetLowering to get the types in fast isel, which handles pointer types correctly for our purposes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
1dd5b85daf38ed2ef91dd4b595e2346b6a9580df 27-Aug-2008 Owen Anderson <resistor@mac.com> Use TargetLowering to get the types in fast isel, which handles pointer types correctly for our purposes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
151ed61a2f9c3482d35a54d502e7cd147f22a21b 27-Aug-2008 Dan Gohman <gohman@apple.com> Don't check TLI.getOperationAction. The FastISel way is to
just try to do the action and let the tablegen-generated code
determine if there is target-support for an operation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55427 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
5396e7b841b1173c1e011e3a94824058faa30f64 27-Aug-2008 Dan Gohman <gohman@apple.com> Don't check TLI.getOperationAction. The FastISel way is to
just try to do the action and let the tablegen-generated code
determine if there is target-support for an operation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55427 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
ad368ac2b5f303050e9aaa357e2b806fae38f81b 27-Aug-2008 Dan Gohman <gohman@apple.com> Add a new FastISel method, getRegForValue, which takes care of
the details of materializing constants and other values into
registers, and make use of it in several places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55426 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
1e0ff77b66490ccb73f7c9e6093bdc3adebe63e1 27-Aug-2008 Dan Gohman <gohman@apple.com> Add a new FastISel method, getRegForValue, which takes care of
the details of materializing constants and other values into
registers, and make use of it in several places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55426 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
96a9999d79345fa7bc7e2f2a3f28edef4c69e6b5 27-Aug-2008 Dan Gohman <gohman@apple.com> Add a comment about the current floating-point constant code in FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55425 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3087240477f138ba016975e1205b375e79393122 27-Aug-2008 Dan Gohman <gohman@apple.com> Add a comment about the current floating-point constant code in FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55425 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
e5a8dc5cc4647cdfd97c71165d4c8f805b4c78a3 27-Aug-2008 Dan Gohman <gohman@apple.com> Optimize ScheduleDAGRRList's topological sort to use one pass instead
of two, and to not need a scratch std::vector. Also, compute the ordering
immediately in the result array, instead of in another scratch std::vector
that is copied to the result array.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55421 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
a43387185bc30b5a81a1b6472a8524b80505065f 27-Aug-2008 Dan Gohman <gohman@apple.com> Optimize ScheduleDAGRRList's topological sort to use one pass instead
of two, and to not need a scratch std::vector. Also, compute the ordering
immediately in the result array, instead of in another scratch std::vector
that is copied to the result array.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55421 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3a09d891a47c3f887bb1d9fec0355dffdc205b38 27-Aug-2008 Dan Gohman <gohman@apple.com> Optimize ScheduleDAG's ComputeDepths and ComputeHeights to not need
a scratch std::vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55420 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
4c43d5ab346da71dedc99ccd6c3cd7f87e86498b 27-Aug-2008 Dan Gohman <gohman@apple.com> Optimize ScheduleDAG's ComputeDepths and ComputeHeights to not need
a scratch std::vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55420 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
a8b8332e81cb2eb1dfed70ff507e752f7fef5479 27-Aug-2008 Dan Gohman <gohman@apple.com> Remove the std::ostream form of PseudoSourceValue's print,
which isn't needed anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55419 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
7afc3b7f03c1c226ad4d924b36a6d232999546e4 27-Aug-2008 Dan Gohman <gohman@apple.com> Remove the std::ostream form of PseudoSourceValue's print,
which isn't needed anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55419 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
10df0fa73e396bbc93a8940e8b53827390c54d10 27-Aug-2008 Dan Gohman <gohman@apple.com> Basic FastISel support for floating-point constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55401 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
9f28bc56ecd6c87bf4875a6c3ded509ef08b9231 27-Aug-2008 Dan Gohman <gohman@apple.com> Basic FastISel support for floating-point constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55401 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
96c5ea878c96ce123c2c84bafcfb70032b56c9ab 27-Aug-2008 Owen Anderson <resistor@mac.com> Fix handling of inttoptr and ptrtoint when unhandled operands are present.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55400 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
32e6eeefeacc64395e8a616e876d25a8a4dc1060 27-Aug-2008 Owen Anderson <resistor@mac.com> Fix handling of inttoptr and ptrtoint when unhandled operands are present.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55400 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
9d5b41624003daf259b33fc953aa471049700353 27-Aug-2008 Owen Anderson <resistor@mac.com> Add support for fast isel of inttoptr and ptrtoint in the cases where truncation is not needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d5d9a90ab4c97946e242ff3072cbff591e8ddb68 27-Aug-2008 Owen Anderson <resistor@mac.com> Add support for fast isel of inttoptr and ptrtoint in the cases where truncation is not needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d0533c9998d3baf41848ba559a9b2f2c65296d14 27-Aug-2008 Owen Anderson <resistor@mac.com> Factor out a large amoutn of the cast handling code in fast isel into helper methods.
This simultaneously makes the code simpler and adds support for sext as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c619ed247847c6b4b523f8148a9c5a65cfe5fde8 27-Aug-2008 Owen Anderson <resistor@mac.com> Factor out a large amoutn of the cast handling code in fast isel into helper methods.
This simultaneously makes the code simpler and adds support for sext as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
97e2568f46f66e67cfa6a61403bddaeba38a252f 27-Aug-2008 Owen Anderson <resistor@mac.com> Add support for fast isel of zext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55396 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
7c3dd1f2cead8b5e37024f352716b1e7df6d231e 27-Aug-2008 Owen Anderson <resistor@mac.com> Add support for fast isel of zext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55396 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
99a6cb92d173c142073416c81efe6d3daeb80b49 27-Aug-2008 Gabor Greif <ggreif@gmail.com> disallow direct access to SDValue::ResNo, provide a getter instead

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55394 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
46bf54702f3d06e26fcc6520ad347540696f263d 27-Aug-2008 Gabor Greif <ggreif@gmail.com> disallow direct access to SDValue::ResNo, provide a getter instead

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55394 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
13269335a55395f2914c81ddb2401524abb4fa5e 27-Aug-2008 Owen Anderson <resistor@mac.com> Add support for fptosi of constants in fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55393 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
30eba3f242c82aac1d939288be0b1d81b3629692 27-Aug-2008 Owen Anderson <resistor@mac.com> Add support for fptosi of constants in fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55393 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3200d92947cd64f82ca748d65d1e58c3d45f440f 26-Aug-2008 Dan Gohman <gohman@apple.com> Optimize SelectionDAG's topological sort to use one pass instead
of two, and to not need a scratch std::vector. Also, use the
SelectionDAG's topological sort in LegalizeDAG instead of having
a separate implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55389 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
509fca48f04bb2681773ab3a02eff9226f12aba6 26-Aug-2008 Dan Gohman <gohman@apple.com> Optimize SelectionDAG's topological sort to use one pass instead
of two, and to not need a scratch std::vector. Also, use the
SelectionDAG's topological sort in LegalizeDAG instead of having
a separate implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55389 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
763d89343be210eb62a13318ca0cc9321ce46bfb 26-Aug-2008 Dan Gohman <gohman@apple.com> Refactor the bitcast code into its own function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55387 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3940b9989ce24b8305ae346ea332f95d3da10701 26-Aug-2008 Dan Gohman <gohman@apple.com> Refactor the bitcast code into its own function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55387 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
80bc6e2243b7ae99da42bf2e61df4ebccf8d8821 26-Aug-2008 Dan Gohman <gohman@apple.com> Make FastISel use the correct argument type when casting GEP indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8d6f1b29ffbe6d270707ea528e26cc4769b7d17e 26-Aug-2008 Dan Gohman <gohman@apple.com> Make FastISel use the correct argument type when casting GEP indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
b71fea248fd7cf9ab2c5737997a3dc5682948dc4 26-Aug-2008 Dan Gohman <gohman@apple.com> Don't select binary instructions with illegal types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
0254ba1639d3ab02a8c5be6466f4eed9efe94cf6 26-Aug-2008 Dan Gohman <gohman@apple.com> Don't select binary instructions with illegal types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a843b8d391de28ca0f532b22ab3e791e1e09c47b 26-Aug-2008 Owen Anderson <resistor@mac.com> Add support for fast isel of sitofp, and remove some unnecessary and imprecise legality checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55381 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
f579570994627d4a0aa2837019002e62c67b90a3 26-Aug-2008 Owen Anderson <resistor@mac.com> Add support for fast isel of sitofp, and remove some unnecessary and imprecise legality checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55381 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
77a218765ac85b2e0c6ce01bf8a7b07dfe80bead 26-Aug-2008 Owen Anderson <resistor@mac.com> Use a combination of copyRegToReg and ISD::BIT_CONVERT when doing fast isel of bitcasts,
allowing it to support the full range of conversions people might ask for in a correct manner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
540611c238df4f1d298bf21c9ed1c68ca153a43c 26-Aug-2008 Owen Anderson <resistor@mac.com> Use a combination of copyRegToReg and ISD::BIT_CONVERT when doing fast isel of bitcasts,
allowing it to support the full range of conversions people might ask for in a correct manner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
940f83e772ca2007d62faffc83094bd7e8da6401 26-Aug-2008 Owen Anderson <resistor@mac.com> Make TargetInstrInfo::copyRegToReg return a bool indicating whether the copy requested
was inserted or not. This allows bitcast in fast isel to properly handle the case
where an appropriate reg-to-reg copy is not available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55375 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
9fa72d9078dbead41d24462d0588135804999171 26-Aug-2008 Owen Anderson <resistor@mac.com> Make TargetInstrInfo::copyRegToReg return a bool indicating whether the copy requested
was inserted or not. This allows bitcast in fast isel to properly handle the case
where an appropriate reg-to-reg copy is not available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55375 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
46aa2f5aab3d39e9cba840ecd8068a6531f8f8a9 26-Aug-2008 Owen Anderson <resistor@mac.com> Add support for fast isel of non-constant fptosi instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
90e7b1e55332b1b54264d016126e5acd7c3f4518 26-Aug-2008 Owen Anderson <resistor@mac.com> Add support for fast isel of non-constant fptosi instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
09c5d8baa2c068fead50630ec2432a5dd1e7b904 26-Aug-2008 Chris Lattner <sabre@nondot.org> typo fix.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5fedcd4d0cd4188dfcbd3c5513d0c3f5d8013798 26-Aug-2008 Chris Lattner <sabre@nondot.org> typo fix.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1146728bfaeb471f675b805ceb27a08d28bbf468 26-Aug-2008 Dan Gohman <gohman@apple.com> Actually recycle SDNode allocations. SelectionDAG is using
RecyclingAllocator, but this change is needed for the nodes
to actually be recycled. This cuts SelectionDAG's memory
usage high-water-mark in half in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55351 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0b08b15eca3e5893384df86a140260d68d2205f5 26-Aug-2008 Dan Gohman <gohman@apple.com> Actually recycle SDNode allocations. SelectionDAG is using
RecyclingAllocator, but this change is needed for the nodes
to actually be recycled. This cuts SelectionDAG's memory
usage high-water-mark in half in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55351 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0f84e4e31009eecf2dfcbe6113b65d0919f30254 26-Aug-2008 Owen Anderson <resistor@mac.com> Add a RetVT parameter to emitted FastISel methods, so that we will be able to pass the desired return
type down. This is not currently used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55345 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
3ac15da88f1a81f8a2adc9b20b7e1f154d995395 26-Aug-2008 Owen Anderson <resistor@mac.com> Add a RetVT parameter to emitted FastISel methods, so that we will be able to pass the desired return
type down. This is not currently used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55345 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
b41aec54767a825ac54c8822e787700bb08a3460 26-Aug-2008 Evan Cheng <evan.cheng@apple.com> Unbreak build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55342 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
993d00682c245c5d33d03fecd71d2c774df2e9d3 26-Aug-2008 Evan Cheng <evan.cheng@apple.com> Unbreak build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55342 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d894f1d274515db527962b6db2d9983827fdcbd6 25-Aug-2008 Owen Anderson <resistor@mac.com> Expand bitcast support in fast isel to support bitcasts of non-constant values by emitting reg-reg copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
0658ade677cfe44b6a154094a8a32ac390b329e1 25-Aug-2008 Owen Anderson <resistor@mac.com> Expand bitcast support in fast isel to support bitcasts of non-constant values by emitting reg-reg copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
6d0c25ec3a7ca822e68f73a4481eee43eb5c9485 25-Aug-2008 Owen Anderson <resistor@mac.com> Add support for fast isel of (integer) immediate materialization pattens, and use them to support
bitcast of constants in fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55325 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
4333727d1bd840bbd80eda307c94a2c4aa57d42b 25-Aug-2008 Owen Anderson <resistor@mac.com> Add support for fast isel of (integer) immediate materialization pattens, and use them to support
bitcast of constants in fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55325 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
edfb72c6288118ab9c900a560ded89dfaa107296 24-Aug-2008 Chris Lattner <sabre@nondot.org> simplify PseudoSourceValue printing a bit. Unnest all of PseudoSourceValue.cpp from the llvm namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55293 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
seudoSourceValue.cpp
24ae2a98650e6390dd3bb2d5d6870370798a728c 24-Aug-2008 Chris Lattner <sabre@nondot.org> simplify PseudoSourceValue printing a bit. Unnest all of PseudoSourceValue.cpp from the llvm namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55293 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
seudoSourceValue.cpp
40ab164d3ae6fddb279ae49ab2f9756b466c640a 24-Aug-2008 Evan Cheng <evan.cheng@apple.com> Print PseudoSourceValue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55291 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
seudoSourceValue.cpp
2a65caa6ce4e0c97ac34374c7711be155ba9dc45 24-Aug-2008 Evan Cheng <evan.cheng@apple.com> Print PseudoSourceValue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55291 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
seudoSourceValue.cpp
c56711c212849fe68b8d00597efda6fcb28f891e 24-Aug-2008 Chris Lattner <sabre@nondot.org> make sure to flush the stream after dumping, to make sure it goes out immediately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55288 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b787620a3a34e277e1343651ff4d1bb95e3f93e0 24-Aug-2008 Chris Lattner <sabre@nondot.org> make sure to flush the stream after dumping, to make sure it goes out immediately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55288 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
62ca32540f950d500227f1863b95cd08ad28099e 24-Aug-2008 Chris Lattner <sabre@nondot.org> get MachineConstantPool off std::ostream, onto raw_ostream. It would be
really nice if someone converted MachineFunction::print to raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55268 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAGPrinter.cpp
491f783caa6d53724a49d4746428a0313facbb86 24-Aug-2008 Chris Lattner <sabre@nondot.org> get MachineConstantPool off std::ostream, onto raw_ostream. It would be
really nice if someone converted MachineFunction::print to raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55268 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAGPrinter.cpp
944fac71e082cc2664cc71b4d3f6c72bab7143fb 24-Aug-2008 Chris Lattner <sabre@nondot.org> Switch the asmprinter (.ll) and all the stuff it requires over to
use raw_ostream instead of std::ostream. Among other goodness,
this speeds up llvm-dis of kc++ with a release build from 0.85s
to 0.49s (88% faster).

Other interesting changes:
1) This makes Value::print be non-virtual.
2) AP[S]Int and ConstantRange can no longer print to ostream directly,
use raw_ostream instead.
3) This fixes a bug in raw_os_ostream where it didn't flush itself
when destroyed.
4) This adds a new SDNode::print method, instead of only allowing "dump".


A lot of APIs have both std::ostream and raw_ostream versions, it would
be useful to go through and systematically anihilate the std::ostream
versions.

This passes dejagnu, but there may be minor fallout, plz let me know if
so and I'll fix it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55263 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAG.cpp
1fefaacfde9c8c1e88d97758b0b3a6aa587698c8 24-Aug-2008 Chris Lattner <sabre@nondot.org> Switch the asmprinter (.ll) and all the stuff it requires over to
use raw_ostream instead of std::ostream. Among other goodness,
this speeds up llvm-dis of kc++ with a release build from 0.85s
to 0.49s (88% faster).

Other interesting changes:
1) This makes Value::print be non-virtual.
2) AP[S]Int and ConstantRange can no longer print to ostream directly,
use raw_ostream instead.
3) This fixes a bug in raw_os_ostream where it didn't flush itself
when destroyed.
4) This adds a new SDNode::print method, instead of only allowing "dump".


A lot of APIs have both std::ostream and raw_ostream versions, it would
be useful to go through and systematically anihilate the std::ostream
versions.

This passes dejagnu, but there may be minor fallout, plz let me know if
so and I'll fix it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55263 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAG.cpp
6ecf50908c78aae0feff1c378fbb75dcf013ed21 23-Aug-2008 Dan Gohman <gohman@apple.com> Make MBBMap a DenseMap instead of a std::map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55220 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
42e10a8a7f9ad7590bd88473b41ebaab9a5f98df 23-Aug-2008 Dan Gohman <gohman@apple.com> Make MBBMap a DenseMap instead of a std::map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55220 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
f350b277f32d7d47f86c0e54f4aec4d470500618 23-Aug-2008 Dan Gohman <gohman@apple.com> Move the point at which FastISel taps into the SelectionDAGISel
process up to a higher level. This allows FastISel to leverage
more of SelectionDAGISel's infastructure, such as updating Machine
PHI nodes.

Also, implement transitioning from SDISel back to FastISel in
the middle of a block, so it's now possible to go back and
forth. This allows FastISel to hand individual CallInsts and other
complicated things off to SDISel to handle, while handling the rest
of the block itself.

To help support this, reorganize the SelectionDAG class so that it
is allocated once and reused throughout a function, instead of
being completely reallocated for each block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55219 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
14a6644251df9ccb261bb4e3ab386b738df36633 23-Aug-2008 Dan Gohman <gohman@apple.com> Move the point at which FastISel taps into the SelectionDAGISel
process up to a higher level. This allows FastISel to leverage
more of SelectionDAGISel's infastructure, such as updating Machine
PHI nodes.

Also, implement transitioning from SDISel back to FastISel in
the middle of a block, so it's now possible to go back and
forth. This allows FastISel to hand individual CallInsts and other
complicated things off to SDISel to handle, while handling the rest
of the block itself.

To help support this, reorganize the SelectionDAG class so that it
is allocated once and reused throughout a function, instead of
being completely reallocated for each block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55219 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
6679906d9724868bf2198e04952ba42f31d7b7fe 23-Aug-2008 Dan Gohman <gohman@apple.com> Avoid creating shift-by-zero SDNodes in the common case of
i8* getelementptr. DAGCombine eliminates these, but this is
a fairly common case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55214 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c8d0a961f0669d8d727e33fb75e97a88483de489 23-Aug-2008 Dan Gohman <gohman@apple.com> Avoid creating shift-by-zero SDNodes in the common case of
i8* getelementptr. DAGCombine eliminates these, but this is
a fairly common case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55214 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6f17966a804f53518aa06fd0b5f035d5b1a51589 23-Aug-2008 Dan Gohman <gohman@apple.com> Move SelectionDAG's constructor out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55212 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
03405562a8d67da8a86c8864c8a2914482abb7ad 23-Aug-2008 Dan Gohman <gohman@apple.com> Move SelectionDAG's constructor out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55212 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3c8f36fd03d046ee2a8700c60b5a52887d9f07b9 22-Aug-2008 Dan Gohman <gohman@apple.com> Reapply r55191 and r55192.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55205 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
e60171e20f9578a2cfa810fd8e7bc6157153f118 22-Aug-2008 Dan Gohman <gohman@apple.com> Reapply r55191 and r55192.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55205 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
449416deb6d08bbc0939c51e5e82f55decdff601 22-Aug-2008 Bill Wendling <isanbard@gmail.com> Reverting r55190, r55191, and r55192. They broke the build with this error message:

{standard input}:17:bad register name `%sil'
make[4]: *** [libgcc/./_addvsi3.o] Error 1
make[4]: *** Waiting for unfinished jobs....
{standard input}:23:bad register name `%dil'
{standard input}:28:bad register name `%dil'
make[4]: *** [libgcc/./_addvdi3.o] Error 1
{standard input}:18:bad register name `%sil'
make[4]: *** [libgcc/./_subvsi3.o] Error 1



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55200 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
ce1c5c11e59f565a2fcb5e53b407233c999884f1 22-Aug-2008 Bill Wendling <isanbard@gmail.com> Reverting r55190, r55191, and r55192. They broke the build with this error message:

{standard input}:17:bad register name `%sil'
make[4]: *** [libgcc/./_addvsi3.o] Error 1
make[4]: *** Waiting for unfinished jobs....
{standard input}:23:bad register name `%dil'
{standard input}:28:bad register name `%dil'
make[4]: *** [libgcc/./_addvdi3.o] Error 1
{standard input}:18:bad register name `%sil'
make[4]: *** [libgcc/./_subvsi3.o] Error 1



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55200 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
5ed3cbb753ac3cd1967d6e2d37b6985655607559 22-Aug-2008 Dan Gohman <gohman@apple.com> Fix the InsertBranch call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55192 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
fe91948efff85cf0d5fbc60c9434c652694e4f50 22-Aug-2008 Dan Gohman <gohman@apple.com> Fix the InsertBranch call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55192 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
e0182ec0e473ae2cd23f6451d2539b7ec449f04e 22-Aug-2008 Dan Gohman <gohman@apple.com> Support non-fallthrough unconditional branches in FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55191 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
2ce6c3194a049b9f59fe79e917c51118e7db2d27 22-Aug-2008 Dan Gohman <gohman@apple.com> Support non-fallthrough unconditional branches in FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55191 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
3b7753be2e899cf3a79835a8ff810e869035c87b 22-Aug-2008 Dan Gohman <gohman@apple.com> Add FastISel support for PHINodes. Machine PHI nodes
are not yet updated properly, but that's a separate
task.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55187 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8727e81a492c121589909b7583152c28b0eac7e3 22-Aug-2008 Dan Gohman <gohman@apple.com> Add FastISel support for PHINodes. Machine PHI nodes
are not yet updated properly, but that's a separate
task.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55187 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
1501cdbf63cff3afd92df6cd249096770334b268 22-Aug-2008 Dan Gohman <gohman@apple.com> Fix SmallVector's size calculation so that a size of 0 is
handled correctly, and change a few SmallVector uses to use
size 0 to more clearly reflect their intent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55181 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
e458ea810c21132ec659af98842d5dae560bf8b8 22-Aug-2008 Dan Gohman <gohman@apple.com> Fix SmallVector's size calculation so that a size of 0 is
handled correctly, and change a few SmallVector uses to use
size 0 to more clearly reflect their intent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55181 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
2dba6a1bdb7d78b4d1e5e69b81989816193e6b70 22-Aug-2008 Chris Lattner <sabre@nondot.org> consolidate DenseMapInfo implementations, and add one for std::pair.
Patch contributed by m-s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55167 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
382d903dddd288dc9f2a2f94a9a367f706e06f3d 22-Aug-2008 Chris Lattner <sabre@nondot.org> consolidate DenseMapInfo implementations, and add one for std::pair.
Patch contributed by m-s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55167 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
22bb31103de3337f0bb74c7bee16d1817d4dca14 22-Aug-2008 Dan Gohman <gohman@apple.com> Factor out the predicate check code from DAGISelEmitter.cpp
and use it in FastISelEmitter.cpp, and make FastISel
subtarget aware. Among other things, this lets it work
properly on x86 targets that don't have SSE, where it
successfully selects x87 instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55156 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
e97f1a3c474394928caac5f85f8554eab0471a05 22-Aug-2008 Dan Gohman <gohman@apple.com> Factor out the predicate check code from DAGISelEmitter.cpp
and use it in FastISelEmitter.cpp, and make FastISel
subtarget aware. Among other things, this lets it work
properly on x86 targets that don't have SSE, where it
successfully selects x87 instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55156 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a6211d9e83dfce3f8e3109af0d4b9a8e6647eedf 22-Aug-2008 Bill Wendling <isanbard@gmail.com> Remove tabs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55154 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
d3d47fe10ad0095b34b568a454231682878cf117 22-Aug-2008 Bill Wendling <isanbard@gmail.com> Remove tabs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55154 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
c8d3a620921740175f500311edeb75ea8666cf27 21-Aug-2008 Owen Anderson <resistor@mac.com> Remove unneeded #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55134 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
02d56e123fc3098e559dac247bfe69183dd8baa7 21-Aug-2008 Owen Anderson <resistor@mac.com> Remove unneeded #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55134 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
2bb1e3eede14dd8a965506465e2876fb1ae765c2 21-Aug-2008 Dan Gohman <gohman@apple.com> Add libcalls for the new rounding opcodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55133 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
b215823aff08e6a519995bedf3b27b62ed862e9a 21-Aug-2008 Dan Gohman <gohman@apple.com> Add libcalls for the new rounding opcodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55133 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
509e84fa7146175c86dec5ef2167290f294dc89e 21-Aug-2008 Dan Gohman <gohman@apple.com> Add libm-oriented ISD opcodes for rounding operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55130 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
c8b20e2ce912e391766ba70e959e8a50ad020db8 21-Aug-2008 Dan Gohman <gohman@apple.com> Add libm-oriented ISD opcodes for rounding operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55130 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
f93cf79505f07cb97597fbc5955462ad7670ca5c 21-Aug-2008 Dan Gohman <gohman@apple.com> Have FastISel skip the multiply by 1 for getelementptr on i8*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55129 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
747675ca64694761cfeb43aa6c38c5202267a630 21-Aug-2008 Dan Gohman <gohman@apple.com> Have FastISel skip the multiply by 1 for getelementptr on i8*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55129 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
7a0e6593d03bd2dd21c3ac7dcf189f1da86b16da 21-Aug-2008 Dan Gohman <gohman@apple.com> MVT::getMVT uses iPTR for pointer types, while we need the actual
intptr_t type in this case. FastISel can now select simple
getelementptr instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55125 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
32db96430d11a6891309b8bc2b03f01f1eabca08 21-Aug-2008 Dan Gohman <gohman@apple.com> MVT::getMVT uses iPTR for pointer types, while we need the actual
intptr_t type in this case. FastISel can now select simple
getelementptr instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55125 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
ca84121596640c99887f909f3b9a3ae830391e64 21-Aug-2008 Dan Gohman <gohman@apple.com> Elements in DeadNodeSet are checked for use_empty() before they
are actually deleted, so it's not necessary to remove re-used
nodes from the set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55123 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9b93aed3ded5061f3c45401032f12d152a35c0e2 21-Aug-2008 Dan Gohman <gohman@apple.com> Elements in DeadNodeSet are checked for use_empty() before they
are actually deleted, so it's not necessary to remove re-used
nodes from the set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55123 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d5fe57d2f980c6bd1a61450f99c254a76d0f1683 21-Aug-2008 Dan Gohman <gohman@apple.com> Basic fast-isel support for instructions with constant int operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55099 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
895213e6bfa31d95d7dc01b388c859f8b61a2ec1 21-Aug-2008 Dan Gohman <gohman@apple.com> Basic fast-isel support for instructions with constant int operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55099 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
2076aa800e78a2e196eac47cc8413a074a761d8d 21-Aug-2008 Evan Cheng <evan.cheng@apple.com> Type of first GEP operand is always the same as the target pointer type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55097 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
6e0066a16aaa8b4ca87bd319215d6811c515493a 21-Aug-2008 Evan Cheng <evan.cheng@apple.com> Type of first GEP operand is always the same as the target pointer type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55097 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
cb3718832375a581c5ea23f15918f3ea447a446c 21-Aug-2008 Owen Anderson <resistor@mac.com> Use raw_ostream throughout the AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55092 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
smPrinter/OcamlGCPrinter.cpp
LFWriter.cpp
LFWriter.h
CMetadataPrinter.cpp
LVMTargetMachine.cpp
achOWriter.cpp
achOWriter.h
847b99b2df4534498b514c439324e7c60de5c3b7 21-Aug-2008 Owen Anderson <resistor@mac.com> Use raw_ostream throughout the AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55092 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
smPrinter/OcamlGCPrinter.cpp
LFWriter.cpp
LFWriter.h
CMetadataPrinter.cpp
LVMTargetMachine.cpp
achOWriter.cpp
achOWriter.h
fd903944de8ddcbe88902fa1eca9366eb9641201 21-Aug-2008 Dan Gohman <gohman@apple.com> Fix unused variable warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55089 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c758a96d041534cc31f7ed393cd7d8d7b83f2aa9 21-Aug-2008 Dan Gohman <gohman@apple.com> Fix unused variable warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55089 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
83785c80968165b30fcdd111ceb2c28d38bcff86 21-Aug-2008 Evan Cheng <evan.cheng@apple.com> First cut, un-optimized (and untested) fast isel lowering of GetElementPtrInst.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55085 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
d486a9d33864b8a5bc62d9bd148dda5a26a494b3 21-Aug-2008 Evan Cheng <evan.cheng@apple.com> First cut, un-optimized (and untested) fast isel lowering of GetElementPtrInst.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55085 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
f990b571c5c4828206b4e14ae7f95d36739b4336 20-Aug-2008 Dan Gohman <gohman@apple.com> Simplify the BuildMI calls even more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55077 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
0fb23e3f764d090d0ad1331d38aafd329d94c4d5 20-Aug-2008 Dan Gohman <gohman@apple.com> Simplify the BuildMI calls even more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55077 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
bb466331e7e50d03497ce40ee344870236fd9c32 20-Aug-2008 Dan Gohman <gohman@apple.com> Simplify FastISel's constructor argument list, make the FastISel
class hold a MachineRegisterInfo member, and make the
MachineBasicBlock be passed in to SelectInstructions rather
than the FastISel constructor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55076 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
7bc5a3d9a8791f8c097df5482f8594a4f73a2e5f 20-Aug-2008 Dan Gohman <gohman@apple.com> Simplify FastISel's constructor argument list, make the FastISel
class hold a MachineRegisterInfo member, and make the
MachineBasicBlock be passed in to SelectInstructions rather
than the FastISel constructor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55076 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
electionDAG/SelectionDAGISel.cpp
2385852b5b9b82e15eb4502d71b5f916882418d7 20-Aug-2008 Dan Gohman <gohman@apple.com> Dump the instruction that foiled ISel even when -debug is not used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55075 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7dfbbd201354b9316d1ab5470fbee878935bac5c 20-Aug-2008 Dan Gohman <gohman@apple.com> Dump the instruction that foiled ISel even when -debug is not used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55075 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fb018d0433f7b52c3f1235e675276adb1f92d597 20-Aug-2008 Bill Wendling <isanbard@gmail.com> Don't hoist instructions that define a physical register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55074 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
84eead6c6aaa8ff881c344844a41fbb71baf3805 20-Aug-2008 Bill Wendling <isanbard@gmail.com> Don't hoist instructions that define a physical register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55074 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
cb34cd7b5e4de914c1177a683f9cbb146ad50634 20-Aug-2008 Dan Gohman <gohman@apple.com> Make more use of the BuildMI API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
00d2fd7f460c14102d6cc148da34bcc102b08e8e 20-Aug-2008 Dan Gohman <gohman@apple.com> Make more use of the BuildMI API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
4cbe0662abb2cd6025eff51e19574a48f1a83b97 20-Aug-2008 Dan Gohman <gohman@apple.com> Minor code reorganization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55071 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
47d5918f9e6bb7b799dc122bab1eb6a508d1c58d 20-Aug-2008 Dan Gohman <gohman@apple.com> Minor code reorganization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55071 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
77ad79689d755c49146f534107421cb3d9703fed 20-Aug-2008 Dan Gohman <gohman@apple.com> Minor whitespace cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55070 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a4c482f2135949a043b0b7ba3cbaa8765c08ff51 20-Aug-2008 Dan Gohman <gohman@apple.com> Minor whitespace cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55070 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
b7864a9e23be526f4f8cde529a57c8943c61c0c7 20-Aug-2008 Dan Gohman <gohman@apple.com> Fix 80 column violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55069 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
67645aa871e122d44398facfe2af150d9380868e 20-Aug-2008 Dan Gohman <gohman@apple.com> Fix 80 column violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55069 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
d4207893014f2d36f31fce607405336fc38cd4b7 20-Aug-2008 Evan Cheng <evan.cheng@apple.com> Kill off SimpleBBISel, it's replaced by FastISel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55067 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/SimpleBBISel.cpp
electionDAG/SimpleBBISel.h
ae3c2e4c6e3365c33f0206785a4cd93dc236d6e6 20-Aug-2008 Evan Cheng <evan.cheng@apple.com> Kill off SimpleBBISel, it's replaced by FastISel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55067 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/SimpleBBISel.cpp
electionDAG/SimpleBBISel.h
a267651b7ec4f96e01b31f541d446758bf8da8a9 20-Aug-2008 Dan Gohman <gohman@apple.com> Disable DAGCombine's alignment inference in "fast" codegen mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55059 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGISel.cpp
ea12c0c272e09ac5a313bc78dcf78438da1c3832 20-Aug-2008 Dan Gohman <gohman@apple.com> Disable DAGCombine's alignment inference in "fast" codegen mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55059 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGISel.cpp
b8d2f550b84523e8a73198f98e5d450ec3b4fee7 20-Aug-2008 Dan Gohman <gohman@apple.com> Change the FoldingSetNodeID usage for objects which carry
alignment and volatility information, such as loads and
stores, to reduce the number of integer values added to
the FoldingSetNodeID.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55058 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/SelectionDAG.cpp
98beebe566fa5b99ec93de1296613776cec31143 20-Aug-2008 Dan Gohman <gohman@apple.com> Change the FoldingSetNodeID usage for objects which carry
alignment and volatility information, such as loads and
stores, to reduce the number of integer values added to
the FoldingSetNodeID.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55058 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/SelectionDAG.cpp
c53ec498857aa3e6d4fc17bd67dd282dcfc821da 20-Aug-2008 Dan Gohman <gohman@apple.com> Use BitVector instead of std::vector<unsigned char>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55054 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4c9d123db7057dbaeb83092b8e1f0974e734e116 20-Aug-2008 Dan Gohman <gohman@apple.com> Use BitVector instead of std::vector<unsigned char>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55054 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7a30bc4e7c034ecd0a3bcbfb385ac2a129e6583c 20-Aug-2008 Dan Gohman <gohman@apple.com> Avoid an empty-if-body warning in release builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
f5027d2a556421d1ccdd64736011b89197343e71 20-Aug-2008 Dan Gohman <gohman@apple.com> Avoid an empty-if-body warning in release builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
08293f6b6cd4ca3a7d6c02dc747e8432193422c7 20-Aug-2008 Dan Gohman <gohman@apple.com> Fix indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55049 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
e8e20236fb7d41e3d03d4de4eeca3f3fef537645 20-Aug-2008 Dan Gohman <gohman@apple.com> Fix indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55049 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
e6798b757acb3a2077c2498e9913fff2f5e4325c 20-Aug-2008 Dan Gohman <gohman@apple.com> Fix FastISel to recognize that the last block in the function does
not have a fall-through successor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55033 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
65e1f6f7249de7e3d9b008382df095f4e4d9c5bd 20-Aug-2008 Dan Gohman <gohman@apple.com> Fix FastISel to recognize that the last block in the function does
not have a fall-through successor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55033 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
cc8430f742b0f1e567292c8a776e94fc1c930b2a 20-Aug-2008 Dan Gohman <gohman@apple.com> Fix a leak in the FastISel code that Chris pointed out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55031 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d0e0bb53cf9f0709feb854430a54b5c039016705 20-Aug-2008 Dan Gohman <gohman@apple.com> Fix a leak in the FastISel code that Chris pointed out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55031 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3e697cfa979538c77459a3e4237e9bc1ac638761 20-Aug-2008 Dan Gohman <gohman@apple.com> Add support for running SelectionDAG if FastISel fails. This is under
a command-line option, so that the default behavior is an abort, which
is useful for exposing code that isn't supported yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55028 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
869a5adbeb67720acdafb0e8c6c2edc52cbcedc4 20-Aug-2008 Dan Gohman <gohman@apple.com> Add support for running SelectionDAG if FastISel fails. This is under
a command-line option, so that the default behavior is an abort, which
is useful for exposing code that isn't supported yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55028 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a7f2dff98e68ed8b2ac32f953768c04f26b52bea 20-Aug-2008 Dan Gohman <gohman@apple.com> Fix FastISel to recognize unhandled operands, such as constants
that aren't available as virtual registers (for now).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
06b9c5110a9ea5ca98a858a83f7427c52bea1a5e 20-Aug-2008 Dan Gohman <gohman@apple.com> Fix FastISel to recognize unhandled operands, such as constants
that aren't available as virtual registers (for now).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
8014e865800cc911697a4c0c42f077df9fcc9805 20-Aug-2008 Dan Gohman <gohman@apple.com> Add FastISel support for floating-point operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55021 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
c712e8fc1d8b1d522d68ab95b4fe8e9c320dc579 20-Aug-2008 Dan Gohman <gohman@apple.com> Add FastISel support for floating-point operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55021 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
bdedd4477331b3b0d28d74658baf05f675f2d195 20-Aug-2008 Dan Gohman <gohman@apple.com> Add FastISel support for several more binary operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55020 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
e9ab71e437e58383dd42cc1759c2a224b08370f2 20-Aug-2008 Dan Gohman <gohman@apple.com> Add FastISel support for several more binary operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55020 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
78eca170e9ac5db7fd525f9bbf27090fefcbb646 20-Aug-2008 Dan Gohman <gohman@apple.com> Add code to call FastISel, and a command-line option to enable it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55015 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
91ad312e590695f0a3b407f589903992d555cee1 20-Aug-2008 Dan Gohman <gohman@apple.com> Add code to call FastISel, and a command-line option to enable it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55015 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6f2766d59744bb3d48867f3151643eac7111e773 20-Aug-2008 Dan Gohman <gohman@apple.com> Support unconditional fall-through branches in FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55014 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
0193cd4779ab0f4f0bf5cec1dc8e61039d8263ad 20-Aug-2008 Dan Gohman <gohman@apple.com> Support unconditional fall-through branches in FastISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55014 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
a41e47afc19d2beb741edae16e3918aadade325d 20-Aug-2008 Owen Anderson <resistor@mac.com> Allow the fast-path spilling code to attempt folding, but still leaving out remat and splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55012 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
51dcfbe96f66305314f5605c189ca7fc9aa1b301 20-Aug-2008 Owen Anderson <resistor@mac.com> Allow the fast-path spilling code to attempt folding, but still leaving out remat and splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55012 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8133a52eb5e69078c184eb2339d60d4c82e2a363 19-Aug-2008 Dan Gohman <gohman@apple.com> Use the BuildMI overload that sets up a destination register
instead of the one that doesn't and then adding it manually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55006 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
6065377fb50e758e7f189fd2431e47c8cee43cf9 19-Aug-2008 Dan Gohman <gohman@apple.com> Use the BuildMI overload that sets up a destination register
instead of the one that doesn't and then adding it manually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55006 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
32155acb8af11fbe21553ef4056c555dcc4a0b99 19-Aug-2008 Dan Gohman <gohman@apple.com> Handle the case where target-specific fastisel code doesn't have
a desired opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55005 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
54ad58161ba867d2e40e76a37d8852003e09e687 19-Aug-2008 Dan Gohman <gohman@apple.com> Handle the case where target-specific fastisel code doesn't have
a desired opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55005 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
712c9f069048e18c1b3782046487f5e1f74b2483 19-Aug-2008 Owen Anderson <resistor@mac.com> The fast-path still needs to set kill markers and spill/restore points as appropriate.
With this patch, all of MultiSource/Applications and all of SPEC2000/2006 pass with
the SimpleSpiller and this fast-path enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55000 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ae600bf03eabb8b4ca2388ab4093d3b115281d69 19-Aug-2008 Owen Anderson <resistor@mac.com> The fast-path still needs to set kill markers and spill/restore points as appropriate.
With this patch, all of MultiSource/Applications and all of SPEC2000/2006 pass with
the SimpleSpiller and this fast-path enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55000 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3b26693d33f77dc8c1ad358c3008c1b6e38c7be4 19-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Delete a dead field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54995 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
feafff79ec2705a1001e3980cbda9301947d1d39 19-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Delete a dead field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54995 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
fcbcfaa95f6ca975094d0a832ecdc3f342d2ff46 19-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> [PR2327] Leverage TargetRegisterInfo to compute frame offsets for GC metadata.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54994 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
19e86e1a45f99ce15949ea2cb04ba7eb447d4770 19-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> [PR2327] Leverage TargetRegisterInfo to compute frame offsets for GC metadata.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54994 91177308-0d34-0410-b5e6-96231b3b80d8
CStrategy.cpp
65a7bd8b8e111c51a51278ab46f1a1c91744441b 19-Aug-2008 Chris Lattner <sabre@nondot.org> don't use the result of WriteTypeSymbolic or WriteAsOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54978 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAG.cpp
2e5c7aee6f777d1350944efd4a83a73788889223 19-Aug-2008 Chris Lattner <sabre@nondot.org> don't use the result of WriteTypeSymbolic or WriteAsOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54978 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
electionDAG/SelectionDAG.cpp
724651ab6e5efc6b4a321c6c9f58a3a716072d50 19-Aug-2008 Owen Anderson <resistor@mac.com> Make SimpleSpiller respect subregister indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54968 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
a2554f867fc785d0897bbe3fc333948bfd7e1e58 19-Aug-2008 Owen Anderson <resistor@mac.com> Make SimpleSpiller respect subregister indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54968 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
ae339babb2a2445e7bb009912a39994718f10d54 19-Aug-2008 Owen Anderson <resistor@mac.com> Add a flag to enable the fast spilling path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54958 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a92056972e2b26dbce4f8fe2ee3556072a974a57 19-Aug-2008 Owen Anderson <resistor@mac.com> Add a flag to enable the fast spilling path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54958 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1719731d3d8ab6a986d67912f35daaad4f6910db 19-Aug-2008 Owen Anderson <resistor@mac.com> Fix a few more bugs:
1) Assign stack slots to new temporaries.
2) Don't insert an interval into the return vector more than once.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54956 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
06ab6d7f5d71f9c939f88d2519482ad1d42fcc1b 19-Aug-2008 Owen Anderson <resistor@mac.com> Fix a few more bugs:
1) Assign stack slots to new temporaries.
2) Don't insert an interval into the return vector more than once.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54956 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9a032931453209505f6765a35be108ae5ea39b3b 18-Aug-2008 Owen Anderson <resistor@mac.com> Fix several bugs in the new fast-path:
1) Remove an incorrect assertion.
2) Set the stack slot weight properly.
3) Resize the VirtRegMap when needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54949 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
268000d17d94168fff4884fc622c1aa28f7285ed 18-Aug-2008 Owen Anderson <resistor@mac.com> Fix several bugs in the new fast-path:
1) Remove an incorrect assertion.
2) Set the stack slot weight properly.
3) Resize the VirtRegMap when needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54949 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
133f10f9bddc857d86fab89cfe5573f2515ae7cf 18-Aug-2008 Owen Anderson <resistor@mac.com> Clients of addIntervalForSpills expect the added intervals to be returned sorted by starting index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54939 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1cf81693af5626bbe196955fff612141a7c0115c 18-Aug-2008 Owen Anderson <resistor@mac.com> Clients of addIntervalForSpills expect the added intervals to be returned sorted by starting index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54939 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8dc2cbe793ff577f69c17426d6dfaef94ad69191 18-Aug-2008 Owen Anderson <resistor@mac.com> Simplify the fast-patch interval spilling by using MachineRegisterInfo::reg_iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54930 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
fcfae3ebd73ceb1f7c035fb7f01038d4eff9fa84 18-Aug-2008 Owen Anderson <resistor@mac.com> Simplify the fast-patch interval spilling by using MachineRegisterInfo::reg_iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54930 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d6664311acbd05a8a710ccea8f9f5fdbfa35f834 18-Aug-2008 Owen Anderson <resistor@mac.com> Resurrect some ancient code to add spill ranges without attempting folding, remat, or splitting. This code has been updated to current APIs
in so far as it compiles and, in theory, works, but does not take advantage of recent advancements. For instance, it could be improved by using
MachineRegisterInfo::use_iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54924 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
29042789b97f1898acc637713aa5189053131631 18-Aug-2008 Owen Anderson <resistor@mac.com> Resurrect some ancient code to add spill ranges without attempting folding, remat, or splitting. This code has been updated to current APIs
in so far as it compiles and, in theory, works, but does not take advantage of recent advancements. For instance, it could be improved by using
MachineRegisterInfo::use_iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54924 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d3361e996b272084d8ebe5bae8a0d420206c8e37 18-Aug-2008 Bill Wendling <isanbard@gmail.com> Don't hoist instructions that have implicit uses or defines. Before, it was
hoisting out some "test" and "cmp" instructions. This was obvious badness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54908 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
478993815335b6a1ccc49553a05d9963afebd319 18-Aug-2008 Bill Wendling <isanbard@gmail.com> Don't hoist instructions that have implicit uses or defines. Before, it was
hoisting out some "test" and "cmp" instructions. This was obvious badness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54908 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
8715367182244e784b9f5688baf1ed607768e687 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Don't require Registry specializations to define random static variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54902 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadataPrinter.cpp
CStrategy.cpp
f1bbd1f3e1067c0494af9527f06dc3da265930ae 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Don't require Registry specializations to define random static variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54902 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadataPrinter.cpp
CStrategy.cpp
a08f5186b0687d1110af5d669a84d59e6413aa68 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Drop an unnecessary include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54901 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
a069940d5217d56525dbb76188a8fa4a8c1f85c4 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Drop an unnecessary include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54901 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/OcamlGCPrinter.cpp
5eca075b74d62c621b160aa216b4cd50829a2cc7 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Rename some GC classes so that their roll will hopefully be clearer.

In particular, Collector was confusing to implementors. Several
thought that this compile-time class was the place to implement
their runtime GC heap. Of course, it doesn't even exist at runtime.
Specifically, the renames are:

Collector -> GCStrategy
CollectorMetadata -> GCFunctionInfo
CollectorModuleMetadata -> GCModuleInfo
CollectorRegistry -> GCRegistry
Function::getCollector -> getGC (setGC, hasGC, clearGC)

Several accessors and nested types have also been renamed to be
consistent. These changes should be obvious.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54899 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/OcamlGCPrinter.cpp
CMetadata.cpp
CMetadataPrinter.cpp
CStrategy.cpp
Cs.cpp
LVMTargetMachine.cpp
camlGC.cpp
electionDAG/SelectionDAGISel.cpp
hadowStackGC.cpp
1aed599aac357d2aaf0df6f4683d59f6455bae0d 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Rename some GC classes so that their roll will hopefully be clearer.

In particular, Collector was confusing to implementors. Several
thought that this compile-time class was the place to implement
their runtime GC heap. Of course, it doesn't even exist at runtime.
Specifically, the renames are:

Collector -> GCStrategy
CollectorMetadata -> GCFunctionInfo
CollectorModuleMetadata -> GCModuleInfo
CollectorRegistry -> GCRegistry
Function::getCollector -> getGC (setGC, hasGC, clearGC)

Several accessors and nested types have also been renamed to be
consistent. These changes should be obvious.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54899 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/OcamlGCPrinter.cpp
CMetadata.cpp
CMetadataPrinter.cpp
CStrategy.cpp
Cs.cpp
LVMTargetMachine.cpp
camlGC.cpp
electionDAG/SelectionDAGISel.cpp
hadowStackGC.cpp
418b6e875f844261064c5dd43e76cb401117ac74 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Don't instantiate GC metadata for declarations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54895 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
CStrategy.cpp
46c16c5696d6c94551ffc77e88ed1ae857884b55 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Don't instantiate GC metadata for declarations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54895 91177308-0d34-0410-b5e6-96231b3b80d8
CMetadata.cpp
CStrategy.cpp
4a8978b61c0536d57bfa32bc5c590fdb6d0113a4 17-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Fix merge error

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54891 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/OcamlGCMetadataPrinter.cpp
smPrinter/OcamlGCPrinter.cpp
camlGCPrinter.cpp
7800a19b18ec441d907773591adf895801a2d38b 17-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Fix merge error

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54891 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/AsmPrinter.cpp
smPrinter/OcamlGCMetadataPrinter.cpp
smPrinter/OcamlGCPrinter.cpp
camlGCPrinter.cpp
abb247fc036d55d06b06853cae66ab055269d605 17-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Move all assembler printing related stuff into new libAsmPrinter

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54885 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
smPrinter/Makefile
smPrinter/OcamlGCMetadataPrinter.cpp
warfWriter.cpp
akefile
eb7f720c42be56b140c4e02cbd699cb082e5b0c9 17-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Move all assembler printing related stuff into new libAsmPrinter

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54885 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
smPrinter/AsmPrinter.cpp
smPrinter/DwarfWriter.cpp
smPrinter/Makefile
smPrinter/OcamlGCMetadataPrinter.cpp
warfWriter.cpp
akefile
9e422dd4f630fe4d253143371488e25bfe5b0a79 17-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Factor out asmprinters from collector interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54884 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
5eb4d097eb9e8f3f5fce4554b794db5b20e58b7c 17-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Factor out asmprinters from collector interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54884 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
5a29c9eed157af51a8d338b5a225b146881819e8 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Factor GC metadata table assembly generation out of Collector in preparation for splitting AsmPrinter into its own library.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54881 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ollector.cpp
ollectorMetadata.cpp
ollectors.cpp
CMetadata.cpp
CMetadataPrinter.cpp
CStrategy.cpp
Cs.cpp
LVMTargetMachine.cpp
camlCollector.cpp
camlGC.cpp
camlGCPrinter.cpp
electionDAG/SelectionDAGISel.cpp
hadowStackCollector.cpp
hadowStackGC.cpp
f194af2c195199ed66d8a1a9df60acf69bb14410 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Factor GC metadata table assembly generation out of Collector in preparation for splitting AsmPrinter into its own library.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54881 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ollector.cpp
ollectorMetadata.cpp
ollectors.cpp
CMetadata.cpp
CMetadataPrinter.cpp
CStrategy.cpp
Cs.cpp
LVMTargetMachine.cpp
camlCollector.cpp
camlGC.cpp
camlGCPrinter.cpp
electionDAG/SelectionDAGISel.cpp
hadowStackCollector.cpp
hadowStackGC.cpp
c317a60c2714a5b90700a11ba646285cb754a5d3 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Factor GC metadata table assembly generation out of Collector in preparation for splitting AsmPrinter into its own library.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54880 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ollector.cpp
ollectors.cpp
camlCollector.cpp
3385c9b3aefbeb3fedca07320b1a7eedc68f220d 17-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Factor GC metadata table assembly generation out of Collector in preparation for splitting AsmPrinter into its own library.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54880 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ollector.cpp
ollectors.cpp
camlCollector.cpp
fad86b003a839cef40ec8ce8408322f4913368ca 17-Aug-2008 Chris Lattner <sabre@nondot.org> Rework the routines that convert AP[S]Int into a string. Now, instead of
returning an std::string by value, it fills in a SmallString/SmallVector
passed in. This significantly reduces string thrashing in some cases.

More specifically, this:
- Adds an operator<< and a print method for APInt that allows you to
directly send them to an ostream.
- Reimplements APInt::toString to be much simpler and more efficient
algorithmically in addition to not thrashing strings quite as much.

This speeds up llvm-dis on kc++ by 7%, and may also slightly speed up the
asmprinter. This also fixes a bug I introduced into the asmwriter in a
previous patch w.r.t. alias printing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54873 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/SelectionDAG.cpp
89b36587e1795cf3f9b480e77508448181d2ab3c 17-Aug-2008 Chris Lattner <sabre@nondot.org> Rework the routines that convert AP[S]Int into a string. Now, instead of
returning an std::string by value, it fills in a SmallString/SmallVector
passed in. This significantly reduces string thrashing in some cases.

More specifically, this:
- Adds an operator<< and a print method for APInt that allows you to
directly send them to an ostream.
- Reimplements APInt::toString to be much simpler and more efficient
algorithmically in addition to not thrashing strings quite as much.

This speeds up llvm-dis on kc++ by 7%, and may also slightly speed up the
asmprinter. This also fixes a bug I introduced into the asmwriter in a
previous patch w.r.t. alias printing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54873 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/SelectionDAG.cpp
ffe31d7bf1e070650b0ff9ebfac815ea172a82bb 16-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Move SLEB/ULEB size calculation routines from AsmPrinter to TargetAsmInfo. This makes JIT asmprinter-free.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54843 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
c200b1113703eaae82f7232f07c5f185a566cf0e 16-Aug-2008 asl <asl@91177308-0d34-0410-b5e6-96231b3b80d8> Move SLEB/ULEB size calculation routines from AsmPrinter to TargetAsmInfo. This makes JIT asmprinter-free.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54843 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
cd1dcbd4fb67c711f013833821ba9b68fea72dd1 15-Aug-2008 Owen Anderson <resistor@mac.com> Convert several std::vectors over to SmallVector, and use reserve() as appropriate for cases where std::vector is still used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54820 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
ba926a3fd35afe26e02871df1a4a7af7def840ce 15-Aug-2008 Owen Anderson <resistor@mac.com> Convert several std::vectors over to SmallVector, and use reserve() as appropriate for cases where std::vector is still used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54820 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
bbf55832831482a73fa59fcd1746f9272e82a144 15-Aug-2008 Owen Anderson <resistor@mac.com> Use SmallSet instead of std::set to save allocations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54810 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
7ba9a8fce7b62cd3ec4eb74cbbcb991b046af6bb 15-Aug-2008 Owen Anderson <resistor@mac.com> Use SmallSet instead of std::set to save allocations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54810 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
79e6ed9d4733ef6bfaf6e6ae71a013c8b226b7c9 15-Aug-2008 Owen Anderson <resistor@mac.com> Move MachineInstr::getOpcode inline.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54807 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
29bf84e051bb3798e12fe28df10761f8af1a0b40 15-Aug-2008 Owen Anderson <resistor@mac.com> Move MachineInstr::getOpcode inline.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54807 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
44eb65cf58e3ab9b5621ce72256d1621a18aeed7 15-Aug-2008 Owen Anderson <resistor@mac.com> Convert uses of std::vector in TargetInstrInfo to SmallVector. This change had to be propoagated down into all the targets and up into all clients of this API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54802 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
impleRegisterCoalescing.cpp
argetInstrInfoImpl.cpp
d131b5b3c78084f3b452b97a678c16e815f0a0d8 15-Aug-2008 Owen Anderson <resistor@mac.com> Convert uses of std::vector in TargetInstrInfo to SmallVector. This change had to be propoagated down into all the targets and up into all clients of this API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54802 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
impleRegisterCoalescing.cpp
argetInstrInfoImpl.cpp
e285a74f7cf9dd3ccf4fe758576cf83301f8a43e 14-Aug-2008 Dan Gohman <gohman@apple.com> Make FastISel's constructor protected, and give it a destructor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54793 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
eeb6e3049f0a62d2d61b87cc02ec5f7372731ab3 14-Aug-2008 Dan Gohman <gohman@apple.com> Make FastISel's constructor protected, and give it a destructor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54793 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
eaa009d963f0715257a26c6bf32ce6dd14326415 14-Aug-2008 Owen Anderson <resistor@mac.com> Remove more uses of std::set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54787 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
43ada1d6727973fd9e0e60548e566ed8c4189b0b 14-Aug-2008 Owen Anderson <resistor@mac.com> Remove more uses of std::set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54787 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
7f8613e5b8398b688080e3c944ab8c11593e1ed0 14-Aug-2008 Dan Gohman <gohman@apple.com> Improve support for vector casts in LLVM IR and CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54784 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
29c3cef3955599d8b5433a74150531ffbd115837 14-Aug-2008 Dan Gohman <gohman@apple.com> Improve support for vector casts in LLVM IR and CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54784 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAG.cpp
22ae99908258dd5631fde7128a94c418ed08eae5 14-Aug-2008 Owen Anderson <resistor@mac.com> Speed up addRegisterDead by adding more fast checks before performing the expensive
subregister query, and by increasing the size of the subregister hashtable so
that there are fewer collisions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54781 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
c11fa059e7594240b6ccc23dcf0d921465239053 14-Aug-2008 Owen Anderson <resistor@mac.com> Speed up addRegisterDead by adding more fast checks before performing the expensive
subregister query, and by increasing the size of the subregister hashtable so
that there are fewer collisions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54781 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a8c763b3071ae1a58ee8baeb282331245527e004 14-Aug-2008 Dan Gohman <gohman@apple.com> Use empty() instead of begin() == end().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54780 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
oopAligner.cpp
impleRegisterCoalescing.cpp
trongPHIElimination.cpp
c8424dea0d4d223edbf5b6ed10d92d0567fd3c2c 14-Aug-2008 Dan Gohman <gohman@apple.com> Use empty() instead of begin() == end().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54780 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
oopAligner.cpp
impleRegisterCoalescing.cpp
trongPHIElimination.cpp
97382166dd09ffafa91015cbf752bac4497abc08 14-Aug-2008 Owen Anderson <resistor@mac.com> Get rid of a use of std::map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54770 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
4a472711c76faa15bdb773de9c542af0f672f6f6 14-Aug-2008 Owen Anderson <resistor@mac.com> Get rid of a use of std::map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54770 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
a60832b0187642d01fd726dc766cd62587f6add0 14-Aug-2008 Dan Gohman <gohman@apple.com> Fix a bogus srem rule - a negative value srem'd by a power-of-2
can have a non-negative result; for example, -16%16 is 0. Also,
clarify the related comments. This fixes PR2670.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54767 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2275be08f6b263b0fd20e0e37109f371ad4974fd 14-Aug-2008 Dan Gohman <gohman@apple.com> Fix a bogus srem rule - a negative value srem'd by a power-of-2
can have a non-negative result; for example, -16%16 is 0. Also,
clarify the related comments. This fixes PR2670.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54767 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
289983123ba4170c8a27e9638935818f8142bc89 14-Aug-2008 Owen Anderson <resistor@mac.com> Expunge the last uses of std::map from LiveIntervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54766 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
feab1a8e51cbc9733543ffea47af7ea7380ad7b3 14-Aug-2008 Owen Anderson <resistor@mac.com> Expunge the last uses of std::map from LiveIntervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54766 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
20e2839cb975a2d4ee931e1ea4c4660a36ef0177 14-Aug-2008 Owen Anderson <resistor@mac.com> Move r2iMap_ over to DenseMap from std::map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54765 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
36bb2baee6402816b6a99690b05f5abd52e770d3 14-Aug-2008 Owen Anderson <resistor@mac.com> Move r2iMap_ over to DenseMap from std::map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54765 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6ab6422f25f3deb1041130ff6bb285b22586ab32 13-Aug-2008 Dan Gohman <gohman@apple.com> Allow SelectionDAG to create EXTRACT_VECTOR_ELT nodes with
non-constant indices. Only a few of the peephole checks require
a constant index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54764 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
101124c57c4e622a92f8a0275b914a7a3b5f26fa 13-Aug-2008 Dan Gohman <gohman@apple.com> Allow SelectionDAG to create EXTRACT_VECTOR_ELT nodes with
non-constant indices. Only a few of the peephole checks require
a constant index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54764 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
03857b29d8271a23943254579e6cf7b7df4b1bd3 13-Aug-2008 Owen Anderson <resistor@mac.com> Make the allocation of LiveIntervals explicit, rather than holding them in the r2iMap_ by value. This will prevent references to them from being invalidated
if the map is changed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54763 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
348d1d86f8e4ad7f9acc6d2a66c34c54afaa2d9a 13-Aug-2008 Owen Anderson <resistor@mac.com> Make the allocation of LiveIntervals explicit, rather than holding them in the r2iMap_ by value. This will prevent references to them from being invalidated
if the map is changed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54763 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
b0cf29c5cfff797284b3660dc233e135feb65d9a 13-Aug-2008 Dan Gohman <gohman@apple.com> Initial checkin of the new "fast" instruction selection support. See
the comments in FastISelEmitter.cpp for details on what this is.
This is currently experimental and unusable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54751 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
b75dead2c1c85c970e5ed73096f76a0c00a7f1d5 13-Aug-2008 Dan Gohman <gohman@apple.com> Initial checkin of the new "fast" instruction selection support. See
the comments in FastISelEmitter.cpp for details on what this is.
This is currently experimental and unusable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54751 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/FastISel.cpp
925a7e8ed6522f291b4ae559ccfa56db461016e3 13-Aug-2008 Dan Gohman <gohman@apple.com> Rename SelectionDAGISel's FastISel to Fast, to begin to make
room for the new FastISel instruction selection code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
04dcf8d17ba3de19b9b517dbcf26b31d5ed8f5a5 13-Aug-2008 Dan Gohman <gohman@apple.com> Rename SelectionDAGISel's FastISel to Fast, to begin to make
room for the new FastISel instruction selection code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
32767955a462a493f419e00421836cf89c23ad3b 13-Aug-2008 Owen Anderson <resistor@mac.com> Get rid of unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54742 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
21a7f6092adad106b6c7487d2163dab27cd87ae9 13-Aug-2008 Owen Anderson <resistor@mac.com> Get rid of unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54742 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
27d6681496a77aed117ec2d8bcee0d48cdf9072d 13-Aug-2008 Owen Anderson <resistor@mac.com> 1) Merge entire live intervals instead of parts of them.
2) Conditionalize temporary insertion if we don't need it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54741 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
a9253c721f3f29572a1d982e1bcc2a6790c5b625 13-Aug-2008 Owen Anderson <resistor@mac.com> 1) Merge entire live intervals instead of parts of them.
2) Conditionalize temporary insertion if we don't need it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54741 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
04f4f4f447806cd92a2fb6f4b66d11f6d5003a82 12-Aug-2008 Dan Gohman <gohman@apple.com> Correct the filename in the top-of-file comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54688 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
6be552e80d2b91fcad05e220a0abf35840298b83 12-Aug-2008 Dan Gohman <gohman@apple.com> Correct the filename in the top-of-file comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54688 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
8cea8ff34c7fb7a64b6fd247b9db0d097d1ffeea 11-Aug-2008 Dan Gohman <gohman@apple.com> Take the FrameOffset into account when computing the alignment
of stack objects. This fixes PR2656.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54646 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b0a2ff9a86e197df8886c974c988bb1608242aa4 11-Aug-2008 Dan Gohman <gohman@apple.com> Take the FrameOffset into account when computing the alignment
of stack objects. This fixes PR2656.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54646 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
08db7367b1d498f13c581c143802e7d4cf32c403 09-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Fix some typos. Apparently I think C needs a power-of operator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54574 91177308-0d34-0410-b5e6-96231b3b80d8
camlCollector.cpp
86302f25b62161b85f211df3d763854d3ec2c85e 09-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Fix some typos. Apparently I think C needs a power-of operator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54574 91177308-0d34-0410-b5e6-96231b3b80d8
camlCollector.cpp
7a61d701c0870642e075e90b6a1ad03a8ac9bc67 08-Aug-2008 Eric Christopher <echristo@apple.com> Have IRBuilder take a template argument on whether or not to preserve
names. This can save a lot of allocations if you aren't going to be
looking at the output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54546 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackCollector.cpp
730102bf69237ff12d61019d65cd860656adf3fa 08-Aug-2008 Eric Christopher <echristo@apple.com> Have IRBuilder take a template argument on whether or not to preserve
names. This can save a lot of allocations if you aren't going to be
looking at the output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54546 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackCollector.cpp
f5b6a47bb57fb5ffc734416d4d5d993e1a06273b 08-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Handle visibility printing with all generality. Remove bunch of duplicate code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54540 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
78d69aa0e6ad2d32243e3b4e8ff28d6e4572313d 08-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Handle visibility printing with all generality. Remove bunch of duplicate code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54540 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
b12ab97bbdb86e978bbaba62f3dbb402b53010da 08-Aug-2008 Owen Anderson <resistor@mac.com> Reduce the entries in a phi before testing it for deadness, because removing the entries might make it dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54535 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
45d4b48e5871672750bdb88f704dc7d8e831e0bf 08-Aug-2008 Owen Anderson <resistor@mac.com> Reduce the entries in a phi before testing it for deadness, because removing the entries might make it dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54535 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
381cb07544a2bc119e39969d7d508a6247773e1c 08-Aug-2008 Evan Cheng <evan.cheng@apple.com> Add skeleton of simple basic block instruction selector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54522 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/SimpleBBISel.cpp
electionDAG/SimpleBBISel.h
b11ac88a997a2d07c5400c43a2217225fc896ce2 08-Aug-2008 Evan Cheng <evan.cheng@apple.com> Add skeleton of simple basic block instruction selector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54522 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/SimpleBBISel.cpp
electionDAG/SimpleBBISel.h
d6227385fc499a8b8bc23766735f1d809d194378 08-Aug-2008 Nick Lewycky <nicholas@mxc.ca> Don't crash printing the asm for a ConstantExpr PtrToInt just because the int
is narrower than the pointer. This testcase emits:

.byte (((17) - 16) & 255)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54517 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
95353adcb56796c4d56a24630beaa1e5de1955a7 08-Aug-2008 Nick Lewycky <nicholas@mxc.ca> Don't crash printing the asm for a ConstantExpr PtrToInt just because the int
is narrower than the pointer. This testcase emits:

.byte (((17) - 16) & 255)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54517 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
e36bfe678df09f46e1eac60b15105c1ccd2c5382 07-Aug-2008 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add the remaining fp_round libcalls:
FPROUND_F80_F32, FPROUND_PPCF128_F32,
FPROUND_F80_F64, FPROUND_PPCF128_F64

Support for soften float fp_round operands is added, Mips
needs this to round f64->f32.

Also added support to soften float FABS result, Mips doesn't
support double fabs results while in 'single float only' mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
b1f11b5b89b0733baeefe1cdbda652674934fe8c 07-Aug-2008 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add the remaining fp_round libcalls:
FPROUND_F80_F32, FPROUND_PPCF128_F32,
FPROUND_F80_F64, FPROUND_PPCF128_F64

Support for soften float fp_round operands is added, Mips
needs this to round f64->f32.

Also added support to soften float FABS result, Mips doesn't
support double fabs results while in 'single float only' mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
724acf1c52fcd844637a189e7490c3069ef359f2 07-Aug-2008 Owen Anderson <resistor@mac.com> Do a dominator walk when scheduling copies, rather than a DFS on the CFG. Also, fix a few problems when creating
live intervals for temporaries created by phi elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54483 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
e8bddf3c3891b61009a614cbe19b0fb900aa96f5 07-Aug-2008 Owen Anderson <resistor@mac.com> Do a dominator walk when scheduling copies, rather than a DFS on the CFG. Also, fix a few problems when creating
live intervals for temporaries created by phi elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54483 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
e3d920699c6df959f3e0844aeadd983b2955b23e 07-Aug-2008 Dan Gohman <gohman@apple.com> Re-enable elimination of unnecessary SUBREG_TO_REG instructions in
LowerSubregs, and fix an x86-64 isel bug that this exposed.

SUBREG_TO_REG for x86-64 implicit zero extension is only safe for
isel to generate when the source is known to always have zeros in
the high 32 bits. The EXTRACT_SUBREG instruction does not clear
the high 32 bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54444 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
47a419d5d39a59a6c763ff8f47d2f4ca3d0f4dfa 07-Aug-2008 Dan Gohman <gohman@apple.com> Re-enable elimination of unnecessary SUBREG_TO_REG instructions in
LowerSubregs, and fix an x86-64 isel bug that this exposed.

SUBREG_TO_REG for x86-64 implicit zero extension is only safe for
isel to generate when the source is known to always have zeros in
the high 32 bits. The EXTRACT_SUBREG instruction does not clear
the high 32 bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54444 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
39fd6e81b1b0de8b820155dc6a0dae226c109de6 07-Aug-2008 Evan Cheng <evan.cheng@apple.com> Factor code that finalize PHI nodes, jump tables, etc. out of SelectBasicBlock. No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54438 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
61828a851435cf03ce60b1f3c66f6b062f063637 07-Aug-2008 Evan Cheng <evan.cheng@apple.com> Factor code that finalize PHI nodes, jump tables, etc. out of SelectBasicBlock. No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54438 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9200e81a1828f7d3aa59a48c52317e1beeeac0b1 07-Aug-2008 Owen Anderson <resistor@mac.com> SDISel's constant branch folding can fold away self-loops, which doesn't result in any dead blocks, but
rather an incorrect phi input. Add code to UnreachableMachineBlockElim to get rid of these entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54432 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
c11ae74f1fd8dad8517849495716b33c20896f79 07-Aug-2008 Owen Anderson <resistor@mac.com> SDISel's constant branch folding can fold away self-loops, which doesn't result in any dead blocks, but
rather an incorrect phi input. Add code to UnreachableMachineBlockElim to get rid of these entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54432 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
883771f86a111c43ce7c30085a1f4820b66f5712 07-Aug-2008 Owen Anderson <resistor@mac.com> Correct handle cases where two phis are coalesced together, and correct break up the case where two different
phis want to coalesce with the same vreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54426 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
c4f163edfdc9d26cf564c99f9df306157d8d1c0f 07-Aug-2008 Owen Anderson <resistor@mac.com> Correct handle cases where two phis are coalesced together, and correct break up the case where two different
phis want to coalesce with the same vreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54426 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
aa111080dfb161054255c9c367779f1ea2581849 06-Aug-2008 Owen Anderson <resistor@mac.com> Oops, didn't mean to commit this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54425 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ee7b97c18de0c0ab2cff845eff51d0d8a4b25c83 06-Aug-2008 Owen Anderson <resistor@mac.com> Oops, didn't mean to commit this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54425 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9860b71b6a23bc0ae620d7dfc621ea1ffafbf8d8 06-Aug-2008 Owen Anderson <resistor@mac.com> We don't need to try to coalesce input vregs that are the same as the output vreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54422 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
95d1b6999b03c0425e891c99bcbe8b52c6753371 06-Aug-2008 Owen Anderson <resistor@mac.com> We don't need to try to coalesce input vregs that are the same as the output vreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54422 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
9b49120408e6c0e10e18ce38cae7120c954fe708 06-Aug-2008 Owen Anderson <resistor@mac.com> Only trim a live interval if the register is not used after the PHI node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54421 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
78d3c0d30c12583a4cf2301b2d674f470d08c3ab 06-Aug-2008 Owen Anderson <resistor@mac.com> Only trim a live interval if the register is not used after the PHI node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54421 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
788d04152a132121dfc04e63382c1e87e7b9607f 06-Aug-2008 Owen Anderson <resistor@mac.com> Only remap each VNInfo once when doing renumbering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54420 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d45a11ac9bcf958d5296bf7571934c20a1008291 06-Aug-2008 Owen Anderson <resistor@mac.com> Only remap each VNInfo once when doing renumbering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54420 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
24d79ba2ef120ed9708ac10fc9fa146334df00c7 06-Aug-2008 Owen Anderson <resistor@mac.com> Fix breakage on ARM/2008-04-10-ScavengerAssert.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54378 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
0e67df6283f6fd31c13d09a94a84a7afbc27ba0e 06-Aug-2008 Owen Anderson <resistor@mac.com> Fix breakage on ARM/2008-04-10-ScavengerAssert.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54378 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
e3b8a48d3285cdaf3593af9d4b658e15df037b9f 05-Aug-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2596: out of bound reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54375 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
547df1a7004df315a73894f377d31cc5a9fd9b5b 05-Aug-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2596: out of bound reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54375 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
5d2f8072d41bcde63c9f4267efe2d50bacc1e5f3 05-Aug-2008 Owen Anderson <resistor@mac.com> Correctly handle replacement and removal of PHIs with one incoming register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54374 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
b12a5b04f0195d0e2a148ddf0eac707c789b52d8 05-Aug-2008 Owen Anderson <resistor@mac.com> Correctly handle replacement and removal of PHIs with one incoming register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54374 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
71ac0be6bb8ef79b79b3b9874cb2886fbb04d2d5 05-Aug-2008 Owen Anderson <resistor@mac.com> Oops, we were already checking for dead phis. Handle this the proper way, then.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54371 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
222ea6aa45912951b866645343f587e64f9e851f 05-Aug-2008 Owen Anderson <resistor@mac.com> Oops, we were already checking for dead phis. Handle this the proper way, then.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54371 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
e7b8205e6ec63502c6375077faf0887ddf776ba0 05-Aug-2008 Owen Anderson <resistor@mac.com> We don't need to update live intervals for dead PHIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54369 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
a55b0a7291054836a0db304c09af51da6ac2dbd9 05-Aug-2008 Owen Anderson <resistor@mac.com> We don't need to update live intervals for dead PHIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54369 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
3bc9c6f3e75dba02c1cc647b1f56ee1f39919046 05-Aug-2008 Owen Anderson <resistor@mac.com> Remove the -disable-correct-folding option, which was ugly and is no longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2ddb96c9496a9180501ef2bc03c1203776d9a2a7 05-Aug-2008 Owen Anderson <resistor@mac.com> Remove the -disable-correct-folding option, which was ugly and is no longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
430b8a22e2717d3dfb6b4f096bc23c9538fd7959 05-Aug-2008 Dan Gohman <gohman@apple.com> Fix several const-correctness issues, resolving some -Wcast-qual warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
333948fb559121b6d3a79f2d86c270fe4eb13b7d 05-Aug-2008 Dan Gohman <gohman@apple.com> Fix several const-correctness issues, resolving some -Wcast-qual warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
4fa393aae146891b33bfe072addb12bf44d61449 05-Aug-2008 Evan Cheng <evan.cheng@apple.com> Remove #if 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54347 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d78e8640acc1e24354dbb3909b5429683423586a 05-Aug-2008 Evan Cheng <evan.cheng@apple.com> Remove #if 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54347 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
068b4ff5531062a0c6e93d038c24fcf209527406 05-Aug-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2568: Fix bug that cause redudant kill marker after its live interval has been extended due to coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54346 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
eed97ef5d0254bc5e89ef434c4e4857922fbc3d1 05-Aug-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2568: Fix bug that cause redudant kill marker after its live interval has been extended due to coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54346 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
59c0d4fcde6f112dd8e83293c6aa6b7138a05424 05-Aug-2008 Owen Anderson <resistor@mac.com> Remove unneeded iteration. Thanks to Dan for the feedback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54337 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
7a5d914f5c4e8860dfa5c68c156e560d1fa38fea 05-Aug-2008 Owen Anderson <resistor@mac.com> Remove unneeded iteration. Thanks to Dan for the feedback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54337 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
6ac8df7f611b5b129af7192ad931862fc8169aae 05-Aug-2008 Owen Anderson <resistor@mac.com> This option doesn't need to be a target option. It can be in SDISel instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54336 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c55989acf9cd3d4eef3448e082e935a5324b36f1 05-Aug-2008 Owen Anderson <resistor@mac.com> This option doesn't need to be a target option. It can be in SDISel instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54336 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
bd3ba461eb5578a81ba09ff7bd7eb271d1130196 05-Aug-2008 Owen Anderson <resistor@mac.com> - Fix SelectionDAG to generate correct CFGs.
- Add a basic machine-level dead block eliminator.

These two have to go together, since many other parts of the code generator are unable to handle the unreachable blocks otherwise created.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54333 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
electionDAG/SelectionDAGISel.cpp
nreachableBlockElim.cpp
fb6914f85e270628cdda612e7e6c250110c5977c 05-Aug-2008 Owen Anderson <resistor@mac.com> - Fix SelectionDAG to generate correct CFGs.
- Add a basic machine-level dead block eliminator.

These two have to go together, since many other parts of the code generator are unable to handle the unreachable blocks otherwise created.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54333 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
electionDAG/SelectionDAGISel.cpp
nreachableBlockElim.cpp
6f498b0a8eeb69a9aa20319e2c803b1d58525547 05-Aug-2008 Dan Gohman <gohman@apple.com> Fix SDISel lowering of PHI nodes to use ComputeValueVTs.
This allows it to work correctly on aggregate values.
This fixes PR2623.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54331 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
802a48abd6ec7eadcb04f37c77c92c0e43d2ac26 05-Aug-2008 Dan Gohman <gohman@apple.com> Fix SDISel lowering of PHI nodes to use ComputeValueVTs.
This allows it to work correctly on aggregate values.
This fixes PR2623.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54331 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1f565bcff6781d0a4395b4c386f7168df13ddbca 05-Aug-2008 Dan Gohman <gohman@apple.com> Fix SDISel lowering of zeroinitializer and undef to use ComputeValueVTs.
This allows it to work correctly on nested aggregate values.
This fixes PR2625.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
89ce05fbcb1cd2804169883559f10b8d8113ec23 05-Aug-2008 Dan Gohman <gohman@apple.com> Fix SDISel lowering of zeroinitializer and undef to use ComputeValueVTs.
This allows it to work correctly on nested aggregate values.
This fixes PR2625.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7232464bdaae5e6e48986a1e3b9a95fac7aa7bdf 31-Jul-2008 Dale Johannesen <dalej@apple.com> Add a flag to disable jump table generation (all
switches use the binary search algorithm) for
environments that don't support it. PPC64 JIT
is such an environment; turn the flag on for that.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54248 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
493492f301ac4a2a4355c95164a49c3d3e51377c 31-Jul-2008 Dale Johannesen <dalej@apple.com> Add a flag to disable jump table generation (all
switches use the binary search algorithm) for
environments that don't support it. PPC64 JIT
is such an environment; turn the flag on for that.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54248 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
75dcf08243d19a40d2e1cc12057bf9c00ca3df3b 31-Jul-2008 Dan Gohman <gohman@apple.com> Improve dagcombining for sext-loads and sext-in-reg nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54239 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
759ed2963a64ee04da967847866cd67f62764aac 31-Jul-2008 Dan Gohman <gohman@apple.com> Improve dagcombining for sext-loads and sext-in-reg nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54239 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0b12aef49087b57d276ed760a83525d1e2602144 30-Jul-2008 Dan Gohman <gohman@apple.com> Move SelectionDAG::viewGraph() out of line; as an inline function
it isn't always visible to gdb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
8c8928602025b9cedf099605aaaf15ea6268992e 30-Jul-2008 Dan Gohman <gohman@apple.com> Move SelectionDAG::viewGraph() out of line; as an inline function
it isn't always visible to gdb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
90d33ee746f354030a4144c4ffa028599663615b 30-Jul-2008 Dan Gohman <gohman@apple.com> Don't look for leaf values to store when lowering stores of
empty structs. This fixes PR2612.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54226 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4a136fc9156329b73728717877251e00c430dff2 30-Jul-2008 Dan Gohman <gohman@apple.com> Don't look for leaf values to store when lowering stores of
empty structs. This fixes PR2612.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54226 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d723f722b2457dd847ece84f9cfa7cfae33f9bb0 30-Jul-2008 Owen Anderson <resistor@mac.com> Use existing LiveInterval methods to simplify live interval merging. Thanks to Evan for pointing these out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54225 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
54bf2bcbccae6e82ec7cbbc9c110c97195ba1801 30-Jul-2008 Owen Anderson <resistor@mac.com> Use existing LiveInterval methods to simplify live interval merging. Thanks to Evan for pointing these out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54225 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
912923925f790427a77781b8a0469fa832c7740d 30-Jul-2008 Owen Anderson <resistor@mac.com> Value numbers whose def index is a special sentinel value should not be remapped.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54218 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ad45783e93509a9d0131cac2fe8a797870f56355 30-Jul-2008 Owen Anderson <resistor@mac.com> Value numbers whose def index is a special sentinel value should not be remapped.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54218 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9382b9310f008a3347e565d76aadda6a97351de9 30-Jul-2008 Owen Anderson <resistor@mac.com> More fixes for corner cases when remapping live range indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54186 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
edbeff29f441329dcf0f7150150cc8e58f0d8d33 30-Jul-2008 Owen Anderson <resistor@mac.com> More fixes for corner cases when remapping live range indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54186 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b9fb8d1e69aa910eb6bb03d3d66e5a2e25a20cd8 30-Jul-2008 Owen Anderson <resistor@mac.com> When merging live intervals, we also need to merge in any live ranges that are inputs to two-address instructions
that themselves define a range we already care about.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54185 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
7f937b3ec0135683dff5d75734b803f984e9a63d 30-Jul-2008 Owen Anderson <resistor@mac.com> When merging live intervals, we also need to merge in any live ranges that are inputs to two-address instructions
that themselves define a range we already care about.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54185 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
83ea1f8e19dc1fae54a3e40689ad0a76a8ff3992 29-Jul-2008 Owen Anderson <resistor@mac.com> When merging a PHI operand's live interval into the PHI's live interval, we need to merge over all liveranges in
the operand's interval that share the relevant value number, not just the range that immediately precedes the PHI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54174 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
766a5428898004cc5f4cd9067ec7a50c4465cb73 29-Jul-2008 Owen Anderson <resistor@mac.com> When merging a PHI operand's live interval into the PHI's live interval, we need to merge over all liveranges in
the operand's interval that share the relevant value number, not just the range that immediately precedes the PHI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54174 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
a0c032f9b2eeae3a436850eaca54de4c6a5f23b6 29-Jul-2008 Owen Anderson <resistor@mac.com> Don't decrement the BB remap when we don't need to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54173 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3fe23ede7821a156ed0914b0ba11c3e4e644c73d 29-Jul-2008 Owen Anderson <resistor@mac.com> Don't decrement the BB remap when we don't need to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54173 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
68d4d1d49c813d10047ad116e897a17d67112c10 29-Jul-2008 Duncan Sands <baldrick@free.fr> Fix PR2609. If a label is deleted, then it needs
to be marked invalid regardless of whether it is
a debug, an exception handling or (hopefully) a
GC label.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54172 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
342271d198b74e10df0c6132c39994d291ad57a8 29-Jul-2008 Duncan Sands <baldrick@free.fr> Fix PR2609. If a label is deleted, then it needs
to be marked invalid regardless of whether it is
a debug, an exception handling or (hopefully) a
GC label.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54172 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
24dc346a16397bf740d8d961cd1ebec8d2f46957 29-Jul-2008 Nate Begeman <natebegeman@mac.com> Fix broken CellSPU lowering, re-instate braces in Legalize


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54168 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7569e76ac7241ab4d3d59d30699a1c38fda61190 29-Jul-2008 Nate Begeman <natebegeman@mac.com> Fix broken CellSPU lowering, re-instate braces in Legalize


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54168 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f09d131126cd60552f09d4fb1c078c085139dcf2 29-Jul-2008 Nate Begeman <natebegeman@mac.com> Disable a fix in the previous patch, since it breaks CellSPU.
The CellSPU codegen is broken, but needs to be fixed before we can
put this back in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e5493112eabf9297fa39a4c959303c90b2fbda22 29-Jul-2008 Nate Begeman <natebegeman@mac.com> Disable a fix in the previous patch, since it breaks CellSPU.
The CellSPU codegen is broken, but needs to be fixed before we can
put this back in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5bc1ea0736a5785ed596d58beeff2ab23909e33d 29-Jul-2008 Nate Begeman <natebegeman@mac.com> Add vector shifts to the IR, patch by Eli Friedman.
CodeGen & Clang work coming next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54161 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
bb1ce94fe83d9d97f9dcd1e6f8943bc4a0b2e63c 29-Jul-2008 Nate Begeman <natebegeman@mac.com> Add vector shifts to the IR, patch by Eli Friedman.
CodeGen & Clang work coming next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54161 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
fed90b6d097d50881afb45e4d79f430db66dd741 28-Jul-2008 Dan Gohman <gohman@apple.com> Fold the useful features of alist and alist_node into ilist, and
a new ilist_node class, and remove them. Unlike alist_node,
ilist_node doesn't attempt to manage storage itself, so it avoids
the associated problems, including being opaque in gdb.

Adjust the Recycler class so that it doesn't depend on alist_node.
Also, change it to use explicit Size and Align parameters, allowing
it to work when the largest-sized node doesn't have the greatest
alignment requirement.

Change MachineInstr's MachineMemOperand list from a pool-backed
alist to a std::list for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54146 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
2fcbc7e8303dfee61147d76bbf16ed0297133c77 28-Jul-2008 Dan Gohman <gohman@apple.com> Fold the useful features of alist and alist_node into ilist, and
a new ilist_node class, and remove them. Unlike alist_node,
ilist_node doesn't attempt to manage storage itself, so it avoids
the associated problems, including being opaque in gdb.

Adjust the Recycler class so that it doesn't depend on alist_node.
Also, change it to use explicit Size and Align parameters, allowing
it to work when the largest-sized node doesn't have the greatest
alignment requirement.

Change MachineInstr's MachineMemOperand list from a pool-backed
alist to a std::list for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54146 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
0471a79f2000eb1eb4458e7b3dcd254172fae739 28-Jul-2008 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54136 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4306f139d75d3847ae8bdc6b12fff8ffeb4bc67e 28-Jul-2008 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54136 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
29cdb26bbae007c0c1fe620136f8dfc8a2d1e84d 28-Jul-2008 Dan Gohman <gohman@apple.com> Make the ScheduleDAG's GraphRoot edge be blue and dashed too, like
the SelectionDAG's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54129 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
a7cc4ffa7b2817bba430ffbc8c70436ee4b917af 28-Jul-2008 Dan Gohman <gohman@apple.com> Make the ScheduleDAG's GraphRoot edge be blue and dashed too, like
the SelectionDAG's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54129 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
475871a144eb604ddaf37503397ba0941442e5fb 27-Jul-2008 Dan Gohman <gohman@apple.com> Rename SDOperand to SDValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54128 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
8181bd1f95ae9994edb390dd9acd0b7b12375219 27-Jul-2008 Dan Gohman <gohman@apple.com> Rename SDOperand to SDValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54128 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
8968450305c28444edc3c272d8752a8db0c2f34a 27-Jul-2008 Dan Gohman <gohman@apple.com> Tidy SDNode::use_iterator, and complete the transition to have it
parallel its analogue, Value::value_use_iterator. The operator* method
now returns the user, rather than the use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54127 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
0c97f1da6784c4097fd6c9d1a15813ad9802cc5b 27-Jul-2008 Dan Gohman <gohman@apple.com> Tidy SDNode::use_iterator, and complete the transition to have it
parallel its analogue, Value::value_use_iterator. The operator* method
now returns the user, rather than the use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54127 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
2a6299543fa22f389158409e897fe7099fda3812 27-Jul-2008 Dan Gohman <gohman@apple.com> Rename isOnlyUseOf to isOnlyUserOf.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
07fadb01ea99e46adea484af8f884662a21e9a5c 27-Jul-2008 Dan Gohman <gohman@apple.com> Rename isOnlyUseOf to isOnlyUserOf.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4ddc41e58cae9236b7959cbed62a5a052f05e70e 27-Jul-2008 Duncan Sands <baldrick@free.fr> Some binary operations were being treated as
unary operations! Add support for softening
some additional unary operations like fp_to_sint.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
ba23c3b860fce7b2dd11e3ed321540470b192955 27-Jul-2008 Duncan Sands <baldrick@free.fr> Some binary operations were being treated as
unary operations! Add support for softening
some additional unary operations like fp_to_sint.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
a279a896ecd1601060adcc6563488f27b12319ef 26-Jul-2008 Owen Anderson <resistor@mac.com> Fix the issues originally addressed in r54070. After thinking about it some more, I realized that the right thing to do
is to have StrongPHIElimination use its knowledge of the PHIs before they're erased to update the intervals appropriate. This is
both simpler and more accurate than the alternative, which was having LIA figure it out when it renumbered things, plus it's just
the right thing to do!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54077 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
32be027c49be99b605395c4dc50fce4ed07ef716 26-Jul-2008 Owen Anderson <resistor@mac.com> Fix the issues originally addressed in r54070. After thinking about it some more, I realized that the right thing to do
is to have StrongPHIElimination use its knowledge of the PHIs before they're erased to update the intervals appropriate. This is
both simpler and more accurate than the alternative, which was having LIA figure it out when it renumbered things, plus it's just
the right thing to do!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54077 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0a7615af25542d5e7d824b520f94094cdc8a2179 26-Jul-2008 Owen Anderson <resistor@mac.com> Revert my previous patch. In retrospect, this is completely the wrong way to fix this problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54072 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a7d223a2cf294308e8efe4e8efe9d705fc5af65d 26-Jul-2008 Owen Anderson <resistor@mac.com> Revert my previous patch. In retrospect, this is completely the wrong way to fix this problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54072 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
0c525ca72f9cbebf92fc7eabc0f0d9d95cf59c2d 26-Jul-2008 Owen Anderson <resistor@mac.com> Special cases are needed in renumbering when dealing with renumbering after a PHI has been removed. The interval previously defined
by the PHI needs to be extended to the beginning of its basic block, and the intervals that were inputs need to be trimmed to the end
of their basic blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54070 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
815e4dd7b1efd42daae6e7b8bf1101322a65b3c5 26-Jul-2008 Owen Anderson <resistor@mac.com> Special cases are needed in renumbering when dealing with renumbering after a PHI has been removed. The interval previously defined
by the PHI needs to be extended to the beginning of its basic block, and the intervals that were inputs need to be trimmed to the end
of their basic blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54070 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
020decc2b4a193a22314e174808269a5ea430dfe 25-Jul-2008 Owen Anderson <resistor@mac.com> In order to avoid reprocessing a register more than once, we need to add it
to the handled set so it will get filtered out in future iterations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54065 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
80fcff0d5b74373076f3e49634dfe7c69f03bc52 25-Jul-2008 Owen Anderson <resistor@mac.com> In order to avoid reprocessing a register more than once, we need to add it
to the handled set so it will get filtered out in future iterations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54065 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
55c64358d1c04990cd5f50785d3e3b27447dac21 25-Jul-2008 Owen Anderson <resistor@mac.com> Remove live interval entries for an interval if we're eliminating its only VN.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54062 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
faed201a4a9f6351a07e039ed6d8fd698109d7ba 25-Jul-2008 Owen Anderson <resistor@mac.com> Remove live interval entries for an interval if we're eliminating its only VN.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54062 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
8d0cc0af5a4b4c08eb74b6e36761651b63816d06 25-Jul-2008 Owen Anderson <resistor@mac.com> Properly remap live ranges whose end indices are the end of the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54061 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
30d056d917b1d6cc03b416688430050b7b37cf6c 25-Jul-2008 Owen Anderson <resistor@mac.com> Properly remap live ranges whose end indices are the end of the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54061 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d7dcbecdbcf5d7a1efc5ed65ddcc26bb8c20c1e6 25-Jul-2008 Owen Anderson <resistor@mac.com> Make the remapping of interval indices (particularly ending indices) more robust.
This is tricky business, and will probably take a few more iterations to get
the last kinks out of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54043 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cadb9b18d0c31620db3f83c40152f7aa98ca0232 25-Jul-2008 Owen Anderson <resistor@mac.com> Make the remapping of interval indices (particularly ending indices) more robust.
This is tricky business, and will probably take a few more iterations to get
the last kinks out of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54043 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4c8f87038ddc0fbcce751f0e2e7c0e564abca096 25-Jul-2008 Dan Gohman <gohman@apple.com> Disable the new aggressive remat logic introduced in 54000; it causes some
regressions, such as PR2595. Also, there is a significant code-quality
issue in SPEC 464.h264ref and a few others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54014 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f14c94f6c2d439a2d9eff5f88ef5f8e1cbe17c72 25-Jul-2008 Dan Gohman <gohman@apple.com> Disable the new aggressive remat logic introduced in 54000; it causes some
regressions, such as PR2595. Also, there is a significant code-quality
issue in SPEC 464.h264ref and a few others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54014 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
92879f3a9e6625d4a17a3d93e6250a59b0497660 25-Jul-2008 Mon P Wang <wangmp@apple.com> When splitting a vector shuffle, fixed which type we used for the hi part


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54007 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2e89b1112ee8434f877fa135000fad0eb2199245 25-Jul-2008 Mon P Wang <wangmp@apple.com> When splitting a vector shuffle, fixed which type we used for the hi part


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54007 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8b4588fa64f0ebfbb7d2b9b4af8c682ddddf29c0 25-Jul-2008 Dan Gohman <gohman@apple.com> Use AliasAnalysis::pointsToConstantMemory in SDISel to avoid unnecessary
dependencies with constant load nodes. This allows them to be scheduled
freely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e45821b0546acd571b7c22ee4cd32ac5437913bd 25-Jul-2008 Dan Gohman <gohman@apple.com> Use AliasAnalysis::pointsToConstantMemory in SDISel to avoid unnecessary
dependencies with constant load nodes. This allows them to be scheduled
freely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6d69ba8a6901c69d78488cbc41f8dbf080618fde 25-Jul-2008 Dan Gohman <gohman@apple.com> Enable rematerialization of constants using AliasAnalysis::pointsToConstantMemory,
and knowledge of PseudoSourceValues. This unfortunately isn't sufficient to allow
constants to be rematerialized in PIC mode -- the extra indirection is a
complication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54000 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
seudoSourceValue.cpp
e342753a069f6082c331523c0cb9881ecfde43ae 25-Jul-2008 Dan Gohman <gohman@apple.com> Enable rematerialization of constants using AliasAnalysis::pointsToConstantMemory,
and knowledge of PseudoSourceValues. This unfortunately isn't sufficient to allow
constants to be rematerialized in PIC mode -- the extra indirection is a
complication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54000 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
seudoSourceValue.cpp
c12417edc9fe88918e09b58716bdb26bd9618239 24-Jul-2008 Owen Anderson <resistor@mac.com> Store the predecessor MBB in the PHIUnion, rather than an index, since the indices will change after renumbering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53985 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
afe9039190469578aa55f8bdb1dec7b76c480194 24-Jul-2008 Owen Anderson <resistor@mac.com> Store the predecessor MBB in the PHIUnion, rather than an index, since the indices will change after renumbering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53985 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
7fbad27cfb7298c707e50af10609d463900d7211 23-Jul-2008 Owen Anderson <resistor@mac.com> Enable the insertion of empty indices into LiveInterals, thereby making renumbering possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53961 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4065ac9c927a1659f22a28109d7c1c26adae9dab 23-Jul-2008 Owen Anderson <resistor@mac.com> Enable the insertion of empty indices into LiveInterals, thereby making renumbering possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53961 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
496bac5b084474ac33109bad24c1ef94c843e16f 23-Jul-2008 Owen Anderson <resistor@mac.com> Fix a compile-time regression introduced by my heuristic-changing patch. I forgot
to multiply the instruction count by a constant factor in a few places, which
caused the register allocator to require many more iterations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53959 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
50ca1a232b23265d72dc745102abd9492cff55db 23-Jul-2008 Owen Anderson <resistor@mac.com> Fix a compile-time regression introduced by my heuristic-changing patch. I forgot
to multiply the instruction count by a constant factor in a few places, which
caused the register allocator to require many more iterations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53959 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
fc74abfba5128544a750fce22fdf13eb0403e3ce 23-Jul-2008 Dan Gohman <gohman@apple.com> Enable first-class aggregates support.

Remove the GetResultInst instruction. It is still accepted in LLVM assembly
and bitcode, where it is now auto-upgraded to ExtractValueInst. Also, remove
support for return instructions with multiple values. These are auto-upgraded
to use InsertValueInst instructions.

The IRBuilder still accepts multiple-value returns, and auto-upgrades them
to InsertValueInst instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
29474e9327b30f3f79a5ce3d4264cc23e1e6dcdb 23-Jul-2008 Dan Gohman <gohman@apple.com> Enable first-class aggregates support.

Remove the GetResultInst instruction. It is still accepted in LLVM assembly
and bitcode, where it is now auto-upgraded to ExtractValueInst. Also, remove
support for return instructions with multiple values. These are auto-upgraded
to use InsertValueInst instructions.

The IRBuilder still accepts multiple-value returns, and auto-upgrades them
to InsertValueInst instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
11e56cb4dc73bbb0bdc083042657ea3a5aad63f2 23-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for VSETCC. Fixes PR2575.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53938 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
f871b535b84b7edca3587afa730019772474b6b0 23-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for VSETCC. Fixes PR2575.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53938 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
a1566f2e12ce87a5bca30bc0189a0cdbb40136a4 23-Jul-2008 Owen Anderson <resistor@mac.com> Change the heuristics used in the coalescer, register allocator, and within
live intervals itself to use an instruction count approximation that is
not affected by inserting empty indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53937 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
a0e6513323c190e4994a80706f7aadf365655e2a 23-Jul-2008 Owen Anderson <resistor@mac.com> Change the heuristics used in the coalescer, register allocator, and within
live intervals itself to use an instruction count approximation that is
not affected by inserting empty indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53937 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
292578676524036842aecb2d932e3995dddd9c2a 22-Jul-2008 Evan Cheng <evan.cheng@apple.com> Fix pr2566: incorrect assumption about bit_convert. It doesn't not have to output a vector value. Patch by Nicolas Capens!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53932 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
76b20d1829f7204eb3aa614241cd41e3c22da264 22-Jul-2008 Evan Cheng <evan.cheng@apple.com> Fix pr2566: incorrect assumption about bit_convert. It doesn't not have to output a vector value. Patch by Nicolas Capens!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53932 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
694caf56f15bec971d493069a1613a8f992f510a 22-Jul-2008 Dan Gohman <gohman@apple.com> Make the GraphRoot edge look like a chain edge, which is more accurate,
and use the right result number, in the off chance that the graph root
has multiple result values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
7951f804442942b1befc8c583e442854d4040723 22-Jul-2008 Dan Gohman <gohman@apple.com> Make the GraphRoot edge look like a chain edge, which is more accurate,
and use the right result number, in the off chance that the graph root
has multiple result values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
c91d0b9bddb01c132fb2fe85a6f6c9205c690f13 22-Jul-2008 Bill Wendling <isanbard@gmail.com> Another buildbot test commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53896 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
5b4796a690a5cc2b96d1027e4fc14360518d7c2b 22-Jul-2008 Bill Wendling <isanbard@gmail.com> Another buildbot test commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53896 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
4e97401e1fe39f5b847ab778880e0d272977dd8b 22-Jul-2008 Bill Wendling <isanbard@gmail.com> Trivial check-in to test buildbot. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53889 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
dc7b5a5b17d817f630b676ec683da841bfa40591 22-Jul-2008 Bill Wendling <isanbard@gmail.com> Trivial check-in to test buildbot. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53889 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
79acd2b51ff81db67d8383ec117039cb99fdc04d 22-Jul-2008 Dan Gohman <gohman@apple.com> Fix grammaros in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7d919eaea1320859914e1deab20e2d2781af5b68 22-Jul-2008 Dan Gohman <gohman@apple.com> Fix grammaros in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
358033102ffaef4d1afb1c0b7e96440906f0b48f 21-Jul-2008 Dan Gohman <gohman@apple.com> Enhance the GraphWriter support for edge destinations, and teach the
SelectionDAG graph writer to make use of them. Now, nodes with multiple
values are displayed as such, with incoming edges pointing to the
specific value they use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53875 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
b38a0053b72ab70719e3b280ed90949c5e79598d 21-Jul-2008 Dan Gohman <gohman@apple.com> Enhance the GraphWriter support for edge destinations, and teach the
SelectionDAG graph writer to make use of them. Now, nodes with multiple
values are displayed as such, with incoming edges pointing to the
specific value they use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53875 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
2dbc167294c1a7a4cd7a43f86bff104afd6110e5 21-Jul-2008 Dan Gohman <gohman@apple.com> After early-lowering the FORMAL_ARGUMENTS node, delete it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53874 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
890404fa0e973d1cb983c10631a0094b6be2fe7f 21-Jul-2008 Dan Gohman <gohman@apple.com> After early-lowering the FORMAL_ARGUMENTS node, delete it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53874 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
462dc7f4960e5074ddf4769ec8b2ef1ba7a4d2c8 21-Jul-2008 Dan Gohman <gohman@apple.com> Add titles to the various SelectionDAG viewGraph calls
that include useful information like the name of the
block being viewed and the current phase of compilation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
b552df7665675a434d8f60a0535f7ba21b1f7851 21-Jul-2008 Dan Gohman <gohman@apple.com> Add titles to the various SelectionDAG viewGraph calls
that include useful information like the name of the
block being viewed and the current phase of compilation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
80f3d46968c56bb93597248d7e0157e746c5ce1b 21-Jul-2008 Dan Gohman <gohman@apple.com> Fix uses of underscore-capital names.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53870 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
4ae08288321dce3826a0da22b917e95bb7efd365 21-Jul-2008 Dan Gohman <gohman@apple.com> Fix uses of underscore-capital names.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53870 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
6116a73da420d9b414a34ce2599dc7f6476e23fc 21-Jul-2008 Dan Gohman <gohman@apple.com> Now that the MachineInstr leaks are fixed, enable leak checking
in the MachineInstr clone code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53868 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ce232957a7412d95d03ff1764b356dd821fd0004 21-Jul-2008 Dan Gohman <gohman@apple.com> Now that the MachineInstr leaks are fixed, enable leak checking
in the MachineInstr clone code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53868 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
d038e04188047eca4749d025ef1f05f7ae660bca 21-Jul-2008 Duncan Sands <baldrick@free.fr> Add VerifyNode, a place to put sanity checks on
generic SDNode's (nodes with their own constructors
should do sanity checking in the constructor). Add
sanity checks for BUILD_VECTOR and fix all the places
that were producing bogus BUILD_VECTORs, as found by
"make check". My favorite is the BUILD_VECTOR with
only two operands that was being used to build a
vector with four elements!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53850 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
d3ace285922063c12ec57627134b564b5d7b9f7c 21-Jul-2008 Duncan Sands <baldrick@free.fr> Add VerifyNode, a place to put sanity checks on
generic SDNode's (nodes with their own constructors
should do sanity checking in the constructor). Add
sanity checks for BUILD_VECTOR and fix all the places
that were producing bogus BUILD_VECTORs, as found by
"make check". My favorite is the BUILD_VECTOR with
only two operands that was being used to build a
vector with four elements!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53850 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
fbbd701bbd7b8dacd657cd686113f3412bd48bc1 20-Jul-2008 Bill Wendling <isanbard@gmail.com> Pull r53795 from Gaz into mainline:

If .loc and .file aren't used, always emit the "debug_line" section. This
requires at least one entry in the line matrix. So if there's nothing to emit
into the matrix, emit an end of matrix value anyway.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53803 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
1983a2a6fdcd777d6d3a757baa61307b5ddcb227 20-Jul-2008 Bill Wendling <isanbard@gmail.com> Pull r53795 from Gaz into mainline:

If .loc and .file aren't used, always emit the "debug_line" section. This
requires at least one entry in the line matrix. So if there's nothing to emit
into the matrix, emit an end of matrix value anyway.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53803 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
1ed9922794cda9dbe295e74674b909287e544632 19-Jul-2008 Evan Cheng <evan.cheng@apple.com> Fix a memory leak in LiveIntervalAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53779 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
4ce1a527c1586c262bbc981101f3bfea2ed8dfd1 19-Jul-2008 Evan Cheng <evan.cheng@apple.com> Fix a memory leak in LiveIntervalAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53779 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
c3e26727c18e15b64098fc7f397e09147cd78eeb 18-Jul-2008 Duncan Sands <baldrick@free.fr> Softfloat support for FDIV. Patch by
Richard Pennington.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53773 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
788a6e23ebd29db3137ee4d0ac03f83057578c04 18-Jul-2008 Duncan Sands <baldrick@free.fr> Softfloat support for FDIV. Patch by
Richard Pennington.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53773 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
f8ac645c59094b1165af6a06af3cc63af96a1dd9 18-Jul-2008 Duncan Sands <baldrick@free.fr> Eliminate unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53772 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
cc8209c892e8a2f535a033c92e1efea4dba3406e 18-Jul-2008 Duncan Sands <baldrick@free.fr> Eliminate unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53772 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
77926da196908244598627408babdc5254b4a991 18-Jul-2008 Duncan Sands <baldrick@free.fr> Revert 53729, after waking up in the middle of
the night realising that it was wrong :) I
think the reason the same type was being used
for the shufflevec of indices as for the actual
indices is so that if one of them needs splitting
then so does the other. After my patch it might
be that the indices need splitting but not the
rest, yet there is no good way of handling that.
I think the right solution is to not have the
shufflevec be an operand at all: just have it
be the list of numbers it actually is, stored
as extra info in the node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
41903b53e0cd2acd6751827431a6c46a778e80ab 18-Jul-2008 Duncan Sands <baldrick@free.fr> Revert 53729, after waking up in the middle of
the night realising that it was wrong :) I
think the reason the same type was being used
for the shufflevec of indices as for the actual
indices is so that if one of them needs splitting
then so does the other. After my patch it might
be that the indices need splitting but not the
rest, yet there is no good way of handling that.
I think the right solution is to not have the
shufflevec be an operand at all: just have it
be the list of numbers it actually is, stored
as extra info in the node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fa82857e413578c35b39f5dc1e7ea8525e02e6bf 18-Jul-2008 Dan Gohman <gohman@apple.com> Fix a LocalSpiller leak. This fixes tramp3d-v4.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53766 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
d6da6e28cbf9f6be789124e015f255e4af50cf83 18-Jul-2008 Dan Gohman <gohman@apple.com> Fix a LocalSpiller leak. This fixes tramp3d-v4.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53766 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
2c3f7ae3843bdc9dcfe85393e178211976c1f9bd 18-Jul-2008 Dan Gohman <gohman@apple.com> Re-introduce LeakDetector support for MachineInstrs and MachineBasicBlocks.
Fix a leak that this turned up in LowerSubregs.cpp.
And, comment a leak in LiveIntervalAnalysis.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53746 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
owerSubregs.cpp
achineBasicBlock.cpp
achineInstr.cpp
8b3b5171b5dd6ae6ec4c305cb16f8c17f5dc9a8e 18-Jul-2008 Dan Gohman <gohman@apple.com> Re-introduce LeakDetector support for MachineInstrs and MachineBasicBlocks.
Fix a leak that this turned up in LowerSubregs.cpp.
And, comment a leak in LiveIntervalAnalysis.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53746 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
owerSubregs.cpp
achineBasicBlock.cpp
achineInstr.cpp
dc5f936bf898a945b7b5a823d00ef9b336f2dc6a 17-Jul-2008 Dan Gohman <gohman@apple.com> When printing MemOperand nodes, only use print() for
PseudoSourceValue values, which never have names. Use getName()
for all other values, because we want to print just a short summary
of the value, not the entire instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53738 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
e36d39c5431dffa42167c3fecc5520eb0f2588ce 17-Jul-2008 Dan Gohman <gohman@apple.com> When printing MemOperand nodes, only use print() for
PseudoSourceValue values, which never have names. Use getName()
for all other values, because we want to print just a short summary
of the value, not the entire instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53738 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
76a4d58998ca41d04f03d21afe0257c36d9ce303 17-Jul-2008 Evan Cheng <evan.cheng@apple.com> Subreg live interval valno may not have a corresponding def machineinstr since it's less precise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53734 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0d5c14bf053b0baffe6e53667caa0e17820c34f5 17-Jul-2008 Evan Cheng <evan.cheng@apple.com> Subreg live interval valno may not have a corresponding def machineinstr since it's less precise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53734 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f1bb7f1d3e6b06185580ad4b4c343d402bf0a453 17-Jul-2008 Duncan Sands <baldrick@free.fr> Use a legal type for elements of the vector_shuffle
mask. These are just indices into the shuffled vector
so their type is unrelated to the type of the
shuffled elements (which is what was being used before).
This fixes vec_shuffle-11.ll when using LegalizeTypes.
What seems to have happened is that Dan's recent change
r53687, which corrected the result type of the shuffle,
somehow caused LegalizeTypes to notice that the mask
operand was a BUILD_VECTOR with a legal type but elements
of an illegal type (i64). LegalizeTypes legalized this
by introducing a new BUILD_VECTOR of i32 and bitcasting
it to the old type. But the mask operand is not supposed
to be a bitcast but a straight BUILD_VECTOR of constants,
causing a crash.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53729 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
22d073b0f0f5eb22ec7f27591feae615aa5bb5ed 17-Jul-2008 Duncan Sands <baldrick@free.fr> Use a legal type for elements of the vector_shuffle
mask. These are just indices into the shuffled vector
so their type is unrelated to the type of the
shuffled elements (which is what was being used before).
This fixes vec_shuffle-11.ll when using LegalizeTypes.
What seems to have happened is that Dan's recent change
r53687, which corrected the result type of the shuffle,
somehow caused LegalizeTypes to notice that the mask
operand was a BUILD_VECTOR with a legal type but elements
of an illegal type (i64). LegalizeTypes legalized this
by introducing a new BUILD_VECTOR of i32 and bitcasting
it to the old type. But the mask operand is not supposed
to be a bitcast but a straight BUILD_VECTOR of constants,
causing a crash.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53729 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e8be6c63915e0389f1eef6b53c64300d13b2ce99 17-Jul-2008 Dan Gohman <gohman@apple.com> Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk
replacement of multiple values. This is slightly more efficient
than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
could be optimized even further. However, an important property of this
new function is that it handles the case where the source value set and
destination value set overlap. This makes it feasible for isel to use
SelectNodeTo in many very common cases, which is advantageous because
SelectNodeTo avoids a temporary node and it doesn't require CSEMap
updates for users of values that don't change position.

Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
handle operand lists more efficiently, and to correctly handle a number
of corner cases to which its new wider use exposes it.

This commit also includes a change to the encoding of post-isel opcodes
in SDNodes; now instead of being sandwiched between the target-independent
pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
opcodes are now represented as negative values. This makes it possible
to test if an opcode is pre-isel or post-isel without having to know
the size of the current target's post-isel instruction set.

These changes speed up llc overall by 3% and reduce memory usage by 10%
on the InstructionCombining.cpp testcase with -fast and -regalloc=local.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53728 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
bd68c79fb898ebb9b42140fb39bab3baf3cb8f4e 17-Jul-2008 Dan Gohman <gohman@apple.com> Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk
replacement of multiple values. This is slightly more efficient
than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
could be optimized even further. However, an important property of this
new function is that it handles the case where the source value set and
destination value set overlap. This makes it feasible for isel to use
SelectNodeTo in many very common cases, which is advantageous because
SelectNodeTo avoids a temporary node and it doesn't require CSEMap
updates for users of values that don't change position.

Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
handle operand lists more efficiently, and to correctly handle a number
of corner cases to which its new wider use exposes it.

This commit also includes a change to the encoding of post-isel opcodes
in SDNodes; now instead of being sandwiched between the target-independent
pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
opcodes are now represented as negative values. This makes it possible
to test if an opcode is pre-isel or post-isel without having to know
the size of the current target's post-isel instruction set.

These changes speed up llc overall by 3% and reduce memory usage by 10%
on the InstructionCombining.cpp testcase with -fast and -regalloc=local.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53728 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
79ada108dd0d85af15d301be5479992a2d54e5ba 17-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for what seems to be the
only missing ppc long double operations: FNEG
and FP_EXTEND.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53723 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
38a9de35d55d7a5a3224cea99528fae4067bdc2b 17-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for what seems to be the
only missing ppc long double operations: FNEG
and FP_EXTEND.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53723 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
f00e74f4d64385e6b2ee29887114e7c8abdf1f17 17-Jul-2008 Duncan Sands <baldrick@free.fr> Turn LegalizeTypes back off again for the moment:
it is breaking Darwin bootstrap due to missing
functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53721 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
31ddf4c7cd7e66064d2bac0de8d4aa4f883ef1a8 17-Jul-2008 Duncan Sands <baldrick@free.fr> Turn LegalizeTypes back off again for the moment:
it is breaking Darwin bootstrap due to missing
functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53721 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b2ff885aaed8f9b033b16ca78d645650efc32433 17-Jul-2008 Duncan Sands <baldrick@free.fr> Factorize some code for determining which libcall to use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53713 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
f68dffb360f3174503e553a9d3b1ca8a85a79081 17-Jul-2008 Duncan Sands <baldrick@free.fr> Factorize some code for determining which libcall to use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53713 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
7a9a5af6a06058e86e9eae5a5486f651aeeda2ec 16-Jul-2008 Dan Gohman <gohman@apple.com> Fix the result type of a VECTOR_SHUFFLE+BIT_CONVERT dagcombine. This
was turned up by some new SelectionDAG assertion checks that I'm
working on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53687 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4c2199063ce303203e69cfbaeeac4485db4cc827 16-Jul-2008 Dan Gohman <gohman@apple.com> Fix the result type of a VECTOR_SHUFFLE+BIT_CONVERT dagcombine. This
was turned up by some new SelectionDAG assertion checks that I'm
working on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53687 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
95db39a9de48f69f4d764335b492b83a698c7854 16-Jul-2008 Duncan Sands <baldrick@free.fr> Add support for promoting and expanding AssertZext
and AssertSext. Needed when passing huge integer
parameters with the zeroext or signext attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53684 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
5d55dd1f8c8452d6c57563a545864f046867db33 16-Jul-2008 Duncan Sands <baldrick@free.fr> Add support for promoting and expanding AssertZext
and AssertSext. Needed when passing huge integer
parameters with the zeroext or signext attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53684 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
c0d6012b31afa2220306afa27db1b02e18427776 16-Jul-2008 Dan Gohman <gohman@apple.com> Fix a comment to say nonnegative instead of positive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53681 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
8baf6efe727fae10682480f424bcc0b15978841f 16-Jul-2008 Dan Gohman <gohman@apple.com> Fix a comment to say nonnegative instead of positive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53681 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c5e1f98fdf44993c2bfe4c1ef633b2358cd718c1 16-Jul-2008 Dan Gohman <gohman@apple.com> Add an assert to check for empty flags for MachineMemOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53680 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
78f9a467bafe90ce2211b12faae6ee029df9cecd 16-Jul-2008 Dan Gohman <gohman@apple.com> Add an assert to check for empty flags for MachineMemOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53680 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
05c397d52a145c8844790d6491c4c51d4bbfed7c 16-Jul-2008 Duncan Sands <baldrick@free.fr> Reorder methods alphabetically. No functionality change.
While this is not a wonderful organizing principle, it
does make it easy to find routines, and clear where to
insert new ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
f0b594c39bf02032fe570d1c6cb9a92325177def 16-Jul-2008 Duncan Sands <baldrick@free.fr> Reorder methods alphabetically. No functionality change.
While this is not a wonderful organizing principle, it
does make it easy to find routines, and clear where to
insert new ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
7f1d8aeef6ce0075e5dd144c669614813738be24 16-Jul-2008 Duncan Sands <baldrick@free.fr> Turn on LegalizeTypes by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53671 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
991e158149cc55baf31b1c927da62be5eb88739d 16-Jul-2008 Duncan Sands <baldrick@free.fr> Turn on LegalizeTypes by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53671 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4093d8301021c9dde8d3577903366cfb8b5d82d0 15-Jul-2008 Dan Gohman <gohman@apple.com> SelectionDAG::AssignNodeIds is unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ee9ed4b0ee802ea8414e7dee7dcb4664d0c739de 15-Jul-2008 Dan Gohman <gohman@apple.com> SelectionDAG::AssignNodeIds is unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
90a7b8fba69503c950aa598fac2edc77123b6bf0 15-Jul-2008 Dan Gohman <gohman@apple.com> Don't sort SDNodes by their addresses in SelectionDAG::dump. Instead,
just use the AllNodes order, which is at least relatively stable
across runs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5fafd4262faf2ac59dd3480d34408ea04f750c10 15-Jul-2008 Dan Gohman <gohman@apple.com> Don't sort SDNodes by their addresses in SelectionDAG::dump. Instead,
just use the AllNodes order, which is at least relatively stable
across runs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
295a7cddbdbafc4f91d96c6779034f0afef1829a 15-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for fabs on ppc long double.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53613 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
0172480d059f95ca622d1177f7d34e0e601713ca 15-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for fabs on ppc long double.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53613 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
c07e6e53f757da1a7c79c66ed53f2844de85a77e 15-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for promotion of bswap.
In LegalizeDAG the value is zero-extended to
the new type before byte swapping. It doesn't
matter how the extension is done since the new
bits are shifted off anyway after the swap, so
extend by any old rubbish bits. This results
in the final assembler for the testcase being
one line shorter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
0d4f8ac1aedb0b78bd089dcb0b7ceed83e054532 15-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for promotion of bswap.
In LegalizeDAG the value is zero-extended to
the new type before byte swapping. It doesn't
matter how the extension is done since the new
bits are shifted off anyway after the swap, so
extend by any old rubbish bits. This results
in the final assembler for the testcase being
one line shorter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
8d56a6f4d8b010d4c582225a08ece971613f6fe3 15-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for promotion of SIGN_EXTEND_INREG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53603 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
c3444388f5a69418a0b2c427b23e33a6c46c759c 15-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for promotion of SIGN_EXTEND_INREG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53603 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
bf304c20651b80309af4c0fb3a14c0d73eaa984f 15-Jul-2008 Duncan Sands <baldrick@free.fr> Reorder the integer promotion methods alphabetically.
No change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53602 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
495efad527f8d4e03e12860b44aba7cdfba1b57b 15-Jul-2008 Duncan Sands <baldrick@free.fr> Reorder the integer promotion methods alphabetically.
No change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53602 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
2920d2b7b601d9dfcec783cb91316f35b6811be1 15-Jul-2008 Mon P Wang <wangmp@apple.com> Fixed potential bug if the source and target of a bit convert have different alignment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53590 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
36b59ac6b0e4d5e56d61d92d6b53364db73c36a2 15-Jul-2008 Mon P Wang <wangmp@apple.com> Fixed potential bug if the source and target of a bit convert have different alignment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53590 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5e84368b26415b3bb7f3f8d9cff3e05938dd82d0 14-Jul-2008 Dan Gohman <gohman@apple.com> Reapply 53476 and 53480, with a fix so that it properly updates
the BB member to the current basic block after emitting
instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53567 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
368a08b238a4d0a938b7639930f149dbdeb71259 14-Jul-2008 Dan Gohman <gohman@apple.com> Reapply 53476 and 53480, with a fix so that it properly updates
the BB member to the current basic block after emitting
instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53567 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
91d49f5ba1374df9db98b6ee45402ddaa84d08b0 14-Jul-2008 Dan Gohman <gohman@apple.com> Improve debug output for MemOperandSDNode. PseudoSourceValue nodes
don't have value names, so use print instead of getName() to get a
useful string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53563 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
6295ea2cf304f9fa01dd8584b6fc1cd1dbdb354e 14-Jul-2008 Dan Gohman <gohman@apple.com> Improve debug output for MemOperandSDNode. PseudoSourceValue nodes
don't have value names, so use print instead of getName() to get a
useful string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53563 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
2b062994a62a5e1db930e52f46e734f3d8c87a29 14-Jul-2008 Dan Gohman <gohman@apple.com> Fix edito in the PseudoSourceValue name list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53562 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
660c02c239bbb0c1c041ad610d6015c261e9675d 14-Jul-2008 Dan Gohman <gohman@apple.com> Fix edito in the PseudoSourceValue name list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53562 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
189a2b32f8dfcf35de60e04800ecac4553578e0d 14-Jul-2008 Duncan Sands <baldrick@free.fr> I don't think BUILD_PAIR can have a vector result.
Remove support for this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
f2c3e77e07a3c464841820783eaad7ca9b97626f 14-Jul-2008 Duncan Sands <baldrick@free.fr> I don't think BUILD_PAIR can have a vector result.
Remove support for this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
a489be59ef460fc1f699a62c21ecb3f630c6dbf0 14-Jul-2008 Duncan Sands <baldrick@free.fr> Tighten up some checks. Fix FPOWI splitting for
non-power-of-two vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
ae7b70f5789cc14f7db5e1ca691b12ca2d1cd73f 14-Jul-2008 Duncan Sands <baldrick@free.fr> Tighten up some checks. Fix FPOWI splitting for
non-power-of-two vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
262e04b3078e38c8dc5cdc40bf51e7cd467fd57a 14-Jul-2008 Duncan Sands <baldrick@free.fr> An INSERT_VECTOR_ELT can insert a larger value
than the vector element type. Don't forget to
handle this when the insertion index is not a
constant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53556 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
38b7a7cc96b46cee339eebbffb578e9e3945cf79 14-Jul-2008 Duncan Sands <baldrick@free.fr> An INSERT_VECTOR_ELT can insert a larger value
than the vector element type. Don't forget to
handle this when the insertion index is not a
constant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53556 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
8cc364c5cc210c56808011a5ebad28a719f106b7 14-Jul-2008 Duncan Sands <baldrick@free.fr> According to the docs, it is possible to have an
extending load of a vector. Handle this case when
splitting vector loads. I'm not completely sure
what is supposed to happen, but I think it means
hi should be set to undef. LegalizeDAG does not
consider this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53555 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
953a83d09f658d621cd27ce874567f221b88e8db 14-Jul-2008 Duncan Sands <baldrick@free.fr> According to the docs, it is possible to have an
extending load of a vector. Handle this case when
splitting vector loads. I'm not completely sure
what is supposed to happen, but I think it means
hi should be set to undef. LegalizeDAG does not
consider this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53555 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
28c05ac995c8063ecf4e05ef7c0879467ca98221 14-Jul-2008 Duncan Sands <baldrick@free.fr> There should be no extending loads or truncating
stores of one-element vectors. Also, neaten the
handling of INSERT_VECTOR_ELT when the inserted
type is larger than the vector element type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53554 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
692bd6e01bd264f322a3516737b6bae5708a77ac 14-Jul-2008 Duncan Sands <baldrick@free.fr> There should be no extending loads or truncating
stores of one-element vectors. Also, neaten the
handling of INSERT_VECTOR_ELT when the inserted
type is larger than the vector element type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53554 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeVectorTypes.cpp
d164ea2fb07ab3540121ffe1c59ad2cdc0a7a0a3 14-Jul-2008 Duncan Sands <baldrick@free.fr> Ignore TargetConstant with an illegal type. These
are used for passing huge immediates in inline ASM
from the front-end straight down to the ASM writer.
Of course this is a hack, but it is simple, limited
in scope, works in practice, and is what LegalizeDAG
does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53553 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
42e89f49db9df19c3d2f4fa428f740031f150a07 14-Jul-2008 Duncan Sands <baldrick@free.fr> Ignore TargetConstant with an illegal type. These
are used for passing huge immediates in inline ASM
from the front-end straight down to the ASM writer.
Of course this is a hack, but it is simple, limited
in scope, works in practice, and is what LegalizeDAG
does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53553 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
b9890ae3c35ad7d8e49261650d5b98f49f97a705 12-Jul-2008 Evan Cheng <evan.cheng@apple.com> Typos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53504 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c3c41c98299d01d0962a45d2432908988721abea 12-Jul-2008 Evan Cheng <evan.cheng@apple.com> Typos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53504 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
79a796c2b17c7ebd4dd489b5de1078fc2148adba 12-Jul-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2536: a nasty spiller bug. If a two-address instruction uses a register but the use portion of its live range is not part of its liveinterval, it must be defined by an implicit_def. In that case, do not spill the use. e.g.
8 %reg1024<def> = IMPLICIT_DEF
12 %reg1024<def> = INSERT_SUBREG %reg1024<kill>, %reg1025, 2

The live range [12, 14) are not part of the r1024 live interval since it's defined by an implicit def. It will not conflicts with live interval of r1025. Now suppose both registers are spilled, you can easily see a situation where both registers are reloaded before the INSERT_SUBREG and both target registers that would overlap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53503 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c33577bb74e48f0211386d667198c4098d47cddb 12-Jul-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2536: a nasty spiller bug. If a two-address instruction uses a register but the use portion of its live range is not part of its liveinterval, it must be defined by an implicit_def. In that case, do not spill the use. e.g.
8 %reg1024<def> = IMPLICIT_DEF
12 %reg1024<def> = INSERT_SUBREG %reg1024<kill>, %reg1025, 2

The live range [12, 14) are not part of the r1024 live interval since it's defined by an implicit def. It will not conflicts with live interval of r1025. Now suppose both registers are spilled, you can easily see a situation where both registers are reloaded before the INSERT_SUBREG and both target registers that would overlap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53503 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b5eec33dcde63bee6048d54bee2a376737028e5c 12-Jul-2008 Evan Cheng <evan.cheng@apple.com> Back out 53476 and 53480 for now. Somehow they cause llc to miscompile 179.art.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53502 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
58a6a6b201041761b7ae929694542c4580ee3fe3 12-Jul-2008 Evan Cheng <evan.cheng@apple.com> Back out 53476 and 53480 for now. Somehow they cause llc to miscompile 179.art.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53502 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
a54cf176613f9ae8301519a61b8935652c0fb8ae 12-Jul-2008 Dan Gohman <gohman@apple.com> Include a frame index in the "fixed stack" pseudo source value
instead of using the frame index for the SVOffset, which was
inconsistent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53486 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
1fc34bc02d40d5f55a5d9f8ed5ce32bdeb533491 12-Jul-2008 Dan Gohman <gohman@apple.com> Include a frame index in the "fixed stack" pseudo source value
instead of using the frame index for the SVOffset, which was
inconsistent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53486 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
5e76c3be731b516f51270d4334fb61c1af20f21d 12-Jul-2008 Dan Gohman <gohman@apple.com> Fix an obsolete top-level comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53481 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
e39d99044c056315bc96527d72fde5850e583502 12-Jul-2008 Dan Gohman <gohman@apple.com> Fix an obsolete top-level comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53481 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
0f4012f4759a6c6ca28f11ed1eb98feb8ab1481b 12-Jul-2008 Dan Gohman <gohman@apple.com> Factor out debugging code into the common base class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53480 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
4195c05b0dd629d5f31a1511f7627ea6e36f2fb1 12-Jul-2008 Dan Gohman <gohman@apple.com> Factor out debugging code into the common base class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53480 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
dbe2a5a26925cd3ed8a4c2cf02c8273fcf9919d7 11-Jul-2008 Dan Gohman <gohman@apple.com> Add support for putting NamedRegionTimers in TimerGroups, and
use a timer group for the timers in SelectionDAGISel. Also,
Split scheduling out from emitting, to give each their own
timer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53476 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
5e29bafdd4026d91dfcc021dab82e21975b98911 11-Jul-2008 Dan Gohman <gohman@apple.com> Add support for putting NamedRegionTimers in TimerGroups, and
use a timer group for the timers in SelectionDAGISel. Also,
Split scheduling out from emitting, to give each their own
timer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53476 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
dc2fbddd9d204e904b8e61d1da1428579e7c55af 11-Jul-2008 Dan Gohman <gohman@apple.com> Trim unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53471 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
electionDAG/CallingConvLower.cpp
02983113c9d593fc6d0e7c769e88754a980da8bd 11-Jul-2008 Dan Gohman <gohman@apple.com> Trim unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53471 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
electionDAG/CallingConvLower.cpp
92e0834ac7d9ff2539706522ef521bd2319dc15f 11-Jul-2008 Duncan Sands <baldrick@free.fr> Remove an apparently useless routine: there should
be no need to split the result of a vector RET node,
since they are always already legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53462 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
758ef8357de3f04f8c7a2cbd9b9571a322c035da 11-Jul-2008 Duncan Sands <baldrick@free.fr> Remove an apparently useless routine: there should
be no need to split the result of a vector RET node,
since they are always already legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53462 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
ac6cecec189ba9689c42543c3106c02b96d788da 11-Jul-2008 Duncan Sands <baldrick@free.fr> It is pointless to turn a UINT_TO_FP into an
SINT_TO_FP libcall plus additional operations:
it might as well be a direct UINT_TO_FP libcall.
So only turn it into an SINT_TO_FP if the target
has special handling for SINT_TO_FP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
25df46a15574ee05b1a18202d6eb6fbca2ac74f3 11-Jul-2008 Duncan Sands <baldrick@free.fr> It is pointless to turn a UINT_TO_FP into an
SINT_TO_FP libcall plus additional operations:
it might as well be a direct UINT_TO_FP libcall.
So only turn it into an SINT_TO_FP if the target
has special handling for SINT_TO_FP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/TargetLowering.cpp
9bed0f58eb7f5e9e22d062f3880a5fabfdd0dfdd 11-Jul-2008 Duncan Sands <baldrick@free.fr> Add two missing SINT_TO_FP libcalls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53460 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
3f71497401444fc6eace071a129048e1256119a4 11-Jul-2008 Duncan Sands <baldrick@free.fr> Add two missing SINT_TO_FP libcalls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53460 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
edfba7e707a4f2f2e800843a7ef980c27d7f4eff 11-Jul-2008 Duncan Sands <baldrick@free.fr> Port a shift-by-1 optimization from LegalizeDAG: it
was presumably added after the rest of the code was
copied to LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53459 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
9b9e7a456de7cb654bb0f34dfb59aebb15717eae 11-Jul-2008 Duncan Sands <baldrick@free.fr> Port a shift-by-1 optimization from LegalizeDAG: it
was presumably added after the rest of the code was
copied to LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53459 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
dddc6291fb5274282a20d5923b50535d456d34a4 11-Jul-2008 Duncan Sands <baldrick@free.fr> Add support for 128 bit shifts and 32 bit shifts
on 16 bit machines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53458 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
8783398a4cfee14740a03dfb3084694ce6d23e02 11-Jul-2008 Duncan Sands <baldrick@free.fr> Add support for 128 bit shifts and 32 bit shifts
on 16 bit machines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53458 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
c563e1d8fe2e0e9bb47e99ec55c277404969287e 11-Jul-2008 Chris Lattner <sabre@nondot.org> Fix a bug in the soft-float handling of FCOPYSIGN that Duncan noticed
when working on legalizetypes. Both legalizetypes and legalizeops now
produce hte same code for CodeGen/ARM/fcopysign.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53435 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e6fa1454f1f990ebe5e3ab79c80eedd3930d9dc6 11-Jul-2008 Chris Lattner <sabre@nondot.org> Fix a bug in the soft-float handling of FCOPYSIGN that Duncan noticed
when working on legalizetypes. Both legalizetypes and legalizeops now
produce hte same code for CodeGen/ARM/fcopysign.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53435 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
70587ea813986bb0dbef71610091d496e28c22a6 11-Jul-2008 Chris Lattner <sabre@nondot.org> make legalize types be a command line option: -enable-legalize-types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53434 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b29a6a47e8b6be7a868d0aa838186cd73c1c79ab 11-Jul-2008 Chris Lattner <sabre@nondot.org> make legalize types be a command line option: -enable-legalize-types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53434 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fdeb4b3f1d5a17afdf9a9b3a27ea60bee5972ebd 10-Jul-2008 Dan Gohman <gohman@apple.com> Make stack slot coloring's debug output more consistent with
other passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53415 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
d01117dbe736fc77f3aba6145ace32882ae7b355 10-Jul-2008 Dan Gohman <gohman@apple.com> Make stack slot coloring's debug output more consistent with
other passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53415 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
bdb10fe0f6d0de760a8b040d531aa3ef3af6f4b7 10-Jul-2008 Evan Cheng <evan.cheng@apple.com> Change StackSlotForVirtReg (which maps vregs to frame indices) from std::map to IndexedMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53414 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
33dc971d51e7d07d0a535f0c7d45bedaa7870b15 10-Jul-2008 Evan Cheng <evan.cheng@apple.com> Change StackSlotForVirtReg (which maps vregs to frame indices) from std::map to IndexedMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53414 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
5ac319ac7125b009adddcc49294d2e040c4a91e5 10-Jul-2008 Duncan Sands <baldrick@free.fr> Add support for 128 bit multiplicative operations.
Lack of these caused a bootstrap failure with Fortran
on x86-64 with LegalizeTypes turned on. While there,
be nice to 16 bit machines and support expansion of
i32 too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53408 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
05de150b9ca151d912e57656b61bbecc11a595db 10-Jul-2008 Duncan Sands <baldrick@free.fr> Add support for 128 bit multiplicative operations.
Lack of these caused a bootstrap failure with Fortran
on x86-64 with LegalizeTypes turned on. While there,
be nice to 16 bit machines and support expansion of
i32 too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53408 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
be1ad4de2900451626c8d4ace07b9ea16099ea1d 10-Jul-2008 Duncan Sands <baldrick@free.fr> Add a mysteriously missing libcall, FPTOSINT_F80_I32.
Be nice to 16 bit machines by supporting FP_TO_XINT
expansion for these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53407 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
d27dafec5358dbe5bdc764060a156c8b535d07db 10-Jul-2008 Duncan Sands <baldrick@free.fr> Add a mysteriously missing libcall, FPTOSINT_F80_I32.
Be nice to 16 bit machines by supporting FP_TO_XINT
expansion for these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53407 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/TargetLowering.cpp
03dc093a2e63d20984c8fd67809fa762f1e31f1a 10-Jul-2008 Duncan Sands <baldrick@free.fr> Fix a FIXME: use an apint in CTTZ legalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53406 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
3e1c701db4f40baa420d7e829d92b2e7ed003e3f 10-Jul-2008 Duncan Sands <baldrick@free.fr> Fix a FIXME: use an apint in CTTZ legalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53406 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
ae099d54428f4113f8a71c53314975fb8a8e8bbc 10-Jul-2008 Duncan Sands <baldrick@free.fr> Remove PromoteIntRes_FP_ROUND - not sure what it
was doing there: FP_ROUND returns a float, not an
integer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53405 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
0767358e0d5a8460a03953846d4a13bace723f36 10-Jul-2008 Duncan Sands <baldrick@free.fr> Remove PromoteIntRes_FP_ROUND - not sure what it
was doing there: FP_ROUND returns a float, not an
integer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53405 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
c5ffb45934a5f6c19b6279a42622f1b4d9e7ec88 10-Jul-2008 Duncan Sands <baldrick@free.fr> Make sure the alignment of the temporary created
in CreateStackStoreLoad is good enough for both
the source and destination types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53404 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
079db020f8f3d0c6bc54872f1a509f75a4831e65 10-Jul-2008 Duncan Sands <baldrick@free.fr> Make sure the alignment of the temporary created
in CreateStackStoreLoad is good enough for both
the source and destination types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53404 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
f4e4629ee8c218f892ad8ae3e182fe40bc160895 10-Jul-2008 Duncan Sands <baldrick@free.fr> Make the LegalizeType method naming scheme more regular.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53403 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
c5b0c2b113d6bf8546d9cedfe8ca3fddef536161 10-Jul-2008 Duncan Sands <baldrick@free.fr> Make the LegalizeType method naming scheme more regular.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53403 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
e1d97b1a748e96d5ca479c38cfd1775d6469bf80 10-Jul-2008 Duncan Sands <baldrick@free.fr> Don't barf when dumping a constant that contains
a ginormous value (eg: i128 -1).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53402 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
52a36a2571511f6c0ebd3df4bfed014c5d0e65a1 10-Jul-2008 Duncan Sands <baldrick@free.fr> Don't barf when dumping a constant that contains
a ginormous value (eg: i128 -1).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53402 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ef0732d25a9882c947984ae3f2afbef5463ba00f 10-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Change the horrible N^2 isRegReDefinedByTwoAddr. Now callers must supply the operand index of def machineoperand and at most one full scan of non-implicit operands is needed.
- Change local register allocator to use the new isRegReDefinedByTwoAddr instead of reinventing the wheel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53394 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
egAllocLocal.cpp
f1107fd43d82a369fd53b60b202b6c3bcd7b362d 10-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Change the horrible N^2 isRegReDefinedByTwoAddr. Now callers must supply the operand index of def machineoperand and at most one full scan of non-implicit operands is needed.
- Change local register allocator to use the new isRegReDefinedByTwoAddr instead of reinventing the wheel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53394 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
egAllocLocal.cpp
743a1e6a9ced9152e24a70b7dd87153eb55c772f 10-Jul-2008 Owen Anderson <resistor@mac.com> Use DenseMap instead of std::map in local register allocation. This improves the time on instcombine from .31s to .22s


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53390 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
8050fa1460ad6c856ea20b6d3276accdd5a899f3 10-Jul-2008 Owen Anderson <resistor@mac.com> Use DenseMap instead of std::map in local register allocation. This improves the time on instcombine from .31s to .22s


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53390 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
ecee36ece65957e3756ec63b6413eac25fff1b24 10-Jul-2008 Owen Anderson <resistor@mac.com> Fix 403.gcc. Finally got the check for two-address-ness correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53389 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
348946ae146886743c344a3cfc817cd5f18b8abc 10-Jul-2008 Owen Anderson <resistor@mac.com> Fix 403.gcc. Finally got the check for two-address-ness correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53389 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
eacdef21c65308fe5169b53bdbc2757bd75fdc0e 10-Jul-2008 Owen Anderson <resistor@mac.com> Revert r53367, which was breaking things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53378 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
4560c26a3aff6f500efa414d3007abadf728946a 10-Jul-2008 Owen Anderson <resistor@mac.com> Revert r53367, which was breaking things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53378 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
b9c33c32292d0ae5da2d75623a84a0e7796a2b63 10-Jul-2008 Dan Gohman <gohman@apple.com> Simplify hasNUsesOfValue and hasAnyUsesOfValue even more. This
makes their special-case checks of use_size() less beneficial,
so remove them. This eliminates all but one use of use_size(),
which is in AssignTopologicalOrder, which uses it only once for
each node, and so can reasonably afford to recompute it, as
this allows the UsesSize field of SDNode to be removed
altogether.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53377 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
de5b8cc1b2d1cc030a388c8092e6eff11e63e04e 10-Jul-2008 Dan Gohman <gohman@apple.com> Simplify hasNUsesOfValue and hasAnyUsesOfValue even more. This
makes their special-case checks of use_size() less beneficial,
so remove them. This eliminates all but one use of use_size(),
which is in AssignTopologicalOrder, which uses it only once for
each node, and so can reasonably afford to recompute it, as
this allows the UsesSize field of SDNode to be removed
altogether.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53377 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1373c1c3951ddd785d4f7f83c0bc89df699d22a0 10-Jul-2008 Dan Gohman <gohman@apple.com> hasAnyUseOfValue can check SDUse nodes of its users directly instead
of examining every operand of every user.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53374 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a965173e103a03b86ae4dcbd2b5c4c2e186ae2ca 10-Jul-2008 Dan Gohman <gohman@apple.com> hasAnyUseOfValue can check SDUse nodes of its users directly instead
of examining every operand of every user.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53374 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1ea58a52a4296afff10e9db1e54928f38e6d74c6 10-Jul-2008 Dan Gohman <gohman@apple.com> Move MemoryVT out of LSBaseNode into MemSDNode, allowing the
getMemOperand function to be moved into the base class as well
and made non-virtual.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7ad1ccaddf096ca75d84d589765f930ab7a2894a 10-Jul-2008 Dan Gohman <gohman@apple.com> Move MemoryVT out of LSBaseNode into MemSDNode, allowing the
getMemOperand function to be moved into the base class as well
and made non-virtual.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d41141942239c10c9979106e82ab45f22ad7c16c 09-Jul-2008 Evan Cheng <evan.cheng@apple.com> Avoid creating expensive comment string if it's not going to be printed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53369 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
6181e06e65b1ea8dab32737555e3ed23b2705191 09-Jul-2008 Evan Cheng <evan.cheng@apple.com> Avoid creating expensive comment string if it's not going to be printed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53369 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
eb580ee133594a821d971352c9b93dd2689def05 09-Jul-2008 Owen Anderson <resistor@mac.com> Loosen our check here. Local regalloc only cares that the reg is used and def'd by the same instruction, but about the details of
the relationship.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53367 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
add4c88f11f8f4ba34ec38da85e8056a6e10f810 09-Jul-2008 Owen Anderson <resistor@mac.com> Loosen our check here. Local regalloc only cares that the reg is used and def'd by the same instruction, but about the details of
the relationship.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53367 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
492f276cbc7be564c6af7b302618ee5436e4619c 09-Jul-2008 Dan Gohman <gohman@apple.com> Move the IsVolatile and SVOffset fields into the MemSDNode base
class, and store IsVolatile and Alignment in a more compact form.
This makes AtomicSDNode slightly larger, but it shrinks LoadSDNode
and StoreSDNode, which are much more common and are the largest of
the SDNode subclasses. Also, this lets the isVolatile() and
getAlignment() accessors be non-virtual.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
846947a7b701b3bd92d7ee80554280ff885d91ea 09-Jul-2008 Dan Gohman <gohman@apple.com> Move the IsVolatile and SVOffset fields into the MemSDNode base
class, and store IsVolatile and Alignment in a more compact form.
This makes AtomicSDNode slightly larger, but it shrinks LoadSDNode
and StoreSDNode, which are much more common and are the largest of
the SDNode subclasses. Also, this lets the isVolatile() and
getAlignment() accessors be non-virtual.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
dd4b47c9b27eec402b56b27159c4323dd9aa5e94 09-Jul-2008 Owen Anderson <resistor@mac.com> Don't use an expensive check for two-address-ness when we have the information sitting around to determine it much more quickly,
This speeds up the local register allocator from 0.37s to 0.31s on instcombine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53359 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
771624006c4f5630db309f44d69ea7724277f7b0 09-Jul-2008 Owen Anderson <resistor@mac.com> Don't use an expensive check for two-address-ness when we have the information sitting around to determine it much more quickly,
This speeds up the local register allocator from 0.37s to 0.31s on instcombine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53359 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
9094db17b41e9c59a47a8cacd1b44916b05219b1 09-Jul-2008 Owen Anderson <resistor@mac.com> Factor local liveness computation out into its own function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53352 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
ff01ccff60f7f47744ca3f73ca5cbb82e6a1497a 09-Jul-2008 Owen Anderson <resistor@mac.com> Factor local liveness computation out into its own function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53352 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
85e6815d83d2b0027b5197aa17b5f32074bc9a8e 09-Jul-2008 Dan Gohman <gohman@apple.com> Reuse the MO variable instead of recomputing it in RegAllocLocal.
Keep RegAllocSimple in sync.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53351 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
egAllocSimple.cpp
7f31037a53c27b13ef35fa785d5807ced80352b0 09-Jul-2008 Dan Gohman <gohman@apple.com> Reuse the MO variable instead of recomputing it in RegAllocLocal.
Keep RegAllocSimple in sync.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53351 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
egAllocSimple.cpp
88cef2480f1c3977c70eb549ecf83f5a2c99a7a8 09-Jul-2008 Dan Gohman <gohman@apple.com> Give RegAllocSimple a TargetInstrInfo member to keep it consistent
with RegAllocLocal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53347 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
ef83bfc94ecf8e400644c63592b3ee417f0d20fc 09-Jul-2008 Dan Gohman <gohman@apple.com> Give RegAllocSimple a TargetInstrInfo member to keep it consistent
with RegAllocLocal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53347 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
88490546240c1f1e3ded46a103c2b4f53c19a008 09-Jul-2008 Dan Gohman <gohman@apple.com> RegAllocLocal has a TargetInstrInfo data member. Use it instead
of having local variables duplicate it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53346 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
245462c737ea57219ce5fda82cfad6d93dd43cad 09-Jul-2008 Dan Gohman <gohman@apple.com> RegAllocLocal has a TargetInstrInfo data member. Use it instead
of having local variables duplicate it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53346 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
0383bc014c82ce3979416e5fe28caaca59142a05 09-Jul-2008 Dan Gohman <gohman@apple.com> Use find with std::map, when that's what's needed, instead of lower_bound
with extra checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53344 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
egAllocSimple.cpp
7fb3d54c9213e7e51ae90493f193f6f9497e8377 09-Jul-2008 Dan Gohman <gohman@apple.com> Use find with std::map, when that's what's needed, instead of lower_bound
with extra checks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53344 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
egAllocSimple.cpp
e87f52d722d4184becb2ecaf4500dd01d176bfc2 09-Jul-2008 Anton Korobeynikov <asl@math.spbu.ru> Switch to new section name handling facility

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53316 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
7f3fa2c8c29f17e7d1ee5d178ab1c72b2d43d91c 09-Jul-2008 Anton Korobeynikov <asl@math.spbu.ru> Switch to new section name handling facility

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53316 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
dd1c20d2580236280694a22264fa26b36cb8fbe6 09-Jul-2008 Duncan Sands <baldrick@free.fr> Remove some unneeded includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53289 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
cef41b324c8fe02da3e6232762aac79a4b893f8b 09-Jul-2008 Duncan Sands <baldrick@free.fr> Remove some unneeded includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53289 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
b5508e423727b2c56a136cb1a20647f831d53982 09-Jul-2008 Duncan Sands <baldrick@free.fr> Redo LegalizeTypes soft float support for
SINT_TO_FP and UINT_TO_FP. This now produces
the same code as LegalizeDAG (the previous
code was based on a mistaken idea of what
LegalizeDAG did in this case).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53288 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
a89216d3b32fbdaf76eb4999d441ffaa5262b34c 09-Jul-2008 Duncan Sands <baldrick@free.fr> Redo LegalizeTypes soft float support for
SINT_TO_FP and UINT_TO_FP. This now produces
the same code as LegalizeDAG (the previous
code was based on a mistaken idea of what
LegalizeDAG did in this case).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53288 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
452911c468a8d3b7571a3eb9aeff37c3880adb94 09-Jul-2008 Duncan Sands <baldrick@free.fr> Forgot to update the chain result when softening
loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53287 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
1e4e4c198fcec51f1113aaf1cdd9b37f3ac63d99 09-Jul-2008 Duncan Sands <baldrick@free.fr> Forgot to update the chain result when softening
loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53287 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
f8568b464f65f26efd0d7615dcf3f72a09bdf088 09-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes soft float support for FP_TO_SINT and
FP_TO_UINT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53286 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
ad8879c32142bf822e8e6380c20363391bcddd28 09-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes soft float support for FP_TO_SINT and
FP_TO_UINT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53286 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
851b1ee83f7a0e7f88cd378bf3849809b19dfd01 09-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for powi soft float.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53285 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
ac3e399e292a826f305e831a2030fdb4909945c7 09-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for powi soft float.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53285 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
ddc7aa3417fbd9719dd021a9fff383addfc49eb3 09-Jul-2008 Duncan Sands <baldrick@free.fr> Make the role of MVT::i32 clearer here, and add a
note since it is not clear whether it is correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53284 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
488328d081d9fb9ec48273bbac01a8a1c495d7fc 09-Jul-2008 Duncan Sands <baldrick@free.fr> Make the role of MVT::i32 clearer here, and add a
note since it is not clear whether it is correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53284 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
1afe5c3ff8f37a94e47379ff9535b5e03faca020 09-Jul-2008 Evan Cheng <evan.cheng@apple.com> Missed alignment argument on stores lowered from memcpy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53281 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
757ec3147604ed7c1d03ad13df6c90fa929e72bd 09-Jul-2008 Evan Cheng <evan.cheng@apple.com> Missed alignment argument on stores lowered from memcpy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53281 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3e30cbb457509aff5645286f29d7d34adfe625bb 09-Jul-2008 Bill Wendling <isanbard@gmail.com> Make the DICountVisitor not a visitor. This keeps us from calling virtual
functions and junk.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53279 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
5591f60c580b221eede1f019d3a0d877a6d61a94 09-Jul-2008 Bill Wendling <isanbard@gmail.com> Make the DICountVisitor not a visitor. This keeps us from calling virtual
functions and junk.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53279 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
f877b735ad4987f26cafcbaf22aa4c2199458b5d 09-Jul-2008 Dan Gohman <gohman@apple.com> const-ify SelectionDAG::getNodeValueTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53264 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a36422a0679c4cabf61d802a63d6beda43b24783 09-Jul-2008 Dan Gohman <gohman@apple.com> const-ify SelectionDAG::getNodeValueTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53264 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4e526b9a5b36d9bac170c03df0a5d6fb76740ae2 09-Jul-2008 Dan Gohman <gohman@apple.com> It's no longer necessary to test if a MachineBasicBlock's
parent is non-null. It now always is.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53263 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
073688225a85d6adb89d412fdffb0cba0851d216 09-Jul-2008 Dan Gohman <gohman@apple.com> It's no longer necessary to test if a MachineBasicBlock's
parent is non-null. It now always is.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53263 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f1bf29e648a25a440d3dcf5a445b30c4129c9bca 09-Jul-2008 Dan Gohman <gohman@apple.com> Verify that MachineMemOperand alignment is a non-zero power of 2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53262 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9b4f0791051f063387e0a90a4bee2945334bc7b5 09-Jul-2008 Dan Gohman <gohman@apple.com> Verify that MachineMemOperand alignment is a non-zero power of 2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53262 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9c6e70eca9a49c146b26621cbcbb9464ceeac024 09-Jul-2008 Dan Gohman <gohman@apple.com> Factor out the code for computing an alignment value, and make it
available to getAtomic in addition to just getLoad and getStore,
to prevent MachineMemOperands with 0 alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53261 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9e3a342ffca179370dfe8637d4d80e236a8f0d2d 09-Jul-2008 Dan Gohman <gohman@apple.com> Factor out the code for computing an alignment value, and make it
available to getAtomic in addition to just getLoad and getStore,
to prevent MachineMemOperands with 0 alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53261 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0966f0f0e4902481b2d0e4d65813a5d32207192c 09-Jul-2008 Owen Anderson <resistor@mac.com> Fix the build. Apparently MachineInstr& is no longer implicitly convertable to MachineBasicBlock::iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53260 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
074e69a3609c0be00b9770a0602d2410f492754e 09-Jul-2008 Owen Anderson <resistor@mac.com> Fix the build. Apparently MachineInstr& is no longer implicitly convertable to MachineBasicBlock::iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53260 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
491fccc4b4df32a14f33fa87cb3799cf45bb5fdd 09-Jul-2008 Owen Anderson <resistor@mac.com> Make the local register allocator compute (purely local) liveness information for itself
rather than depending on LiveVariables. This decreases compile time from:
0.5909s (LV + Regalloc) to 0.421s (just regalloc).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53256 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
9196a390739a41384391100d354b3693fb04d152 09-Jul-2008 Owen Anderson <resistor@mac.com> Make the local register allocator compute (purely local) liveness information for itself
rather than depending on LiveVariables. This decreases compile time from:
0.5909s (LV + Regalloc) to 0.421s (just regalloc).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53256 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
33d9b356ab7d75eba8eb70745051794fe8fcc558 08-Jul-2008 Dale Johannesen <dalej@apple.com> Remove some dead code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53253 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
ca0eb2c252984687bbf562947cf46682e90f8cf0 08-Jul-2008 Dale Johannesen <dalej@apple.com> Remove some dead code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53253 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
71e8685633e7938ee752004cceedccbd0d850527 08-Jul-2008 Evan Cheng <evan.cheng@apple.com> Do not CSE DEBUG_LOC, DBG_LABEL, DBG_STOPPOINT, DECLARE, and EH_LABEL SDNode's. This improves compile time slightly at -O0 -g.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53246 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
d6f5768dcc9e5956742ae6ea6af5f610080489ee 08-Jul-2008 Evan Cheng <evan.cheng@apple.com> Do not CSE DEBUG_LOC, DBG_LABEL, DBG_STOPPOINT, DECLARE, and EH_LABEL SDNode's. This improves compile time slightly at -O0 -g.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53246 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
7ba11c552b8a25ad1272b44d96e886a784dae0b7 08-Jul-2008 Duncan Sands <baldrick@free.fr> Remove custom expansion from LegalizeTypes when doing
soft float: experiments show that targets aren't
expecting this for results or for operands. Add
support select/select_cc result soft float and
correct operand soft float for these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53245 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
9ad22121801c7031f51715d5796388a0c60decaa 08-Jul-2008 Duncan Sands <baldrick@free.fr> Remove custom expansion from LegalizeTypes when doing
soft float: experiments show that targets aren't
expecting this for results or for operands. Add
support select/select_cc result soft float and
correct operand soft float for these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53245 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
3a2eb297afd2d5d57dfd041cdd5a1db2ceaa89b1 08-Jul-2008 Duncan Sands <baldrick@free.fr> Add missing select_cc libcall line, somehow omitted
in LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53244 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
2235f6373a486a15340af3cfa7fbf709665e2c23 08-Jul-2008 Duncan Sands <baldrick@free.fr> Add missing select_cc libcall line, somehow omitted
in LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53244 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
ab8faba2fb17e540751adf75161a25b18c94b818 08-Jul-2008 Evan Cheng <evan.cheng@apple.com> Unbreak C++ tests on x86 Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53237 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
1cd2dc58ece0d6d278677a339042cf4db78ecd5e 08-Jul-2008 Evan Cheng <evan.cheng@apple.com> Unbreak C++ tests on x86 Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53237 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
28124ac6066795e69046371936f73faa09f15aba 08-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for FP_ROUND and FP_EXTEND
soft float.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53231 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
75ee49e55747b7027802d40d14c5cac923544457 08-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for FP_ROUND and FP_EXTEND
soft float.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53231 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
77c8f7674db1a3c57fa9d8916957a01f9961ef9c 08-Jul-2008 Evan Cheng <evan.cheng@apple.com> Avoid unnecessary string construction during asm printing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53215 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
76443dc7b2033c24134bd7c896813aa34b2c1951 08-Jul-2008 Evan Cheng <evan.cheng@apple.com> Avoid unnecessary string construction during asm printing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53215 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
8e5f2c6f65841542e2a7092553fe42a00048e4c7 08-Jul-2008 Dan Gohman <gohman@apple.com> Pool-allocation for MachineInstrs, MachineBasicBlocks, and
MachineMemOperands. The pools are owned by MachineFunctions.

This drastically reduces the number of calls to malloc/free made
during the "Emit" phase of scheduling, as well as later phases
in CodeGen. Combined with other changes, this speeds up the
"instruction selection" phase of CodeGen by 10% in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53212 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
HIElimination.cpp
electionDAG/ScheduleDAG.cpp
argetInstrInfoImpl.cpp
irtRegMap.cpp
221a4371f95ebdb25ac7d4363accb35c88cb5ea4 08-Jul-2008 Dan Gohman <gohman@apple.com> Pool-allocation for MachineInstrs, MachineBasicBlocks, and
MachineMemOperands. The pools are owned by MachineFunctions.

This drastically reduces the number of calls to malloc/free made
during the "Emit" phase of scheduling, as well as later phases
in CodeGen. Combined with other changes, this speeds up the
"instruction selection" phase of CodeGen by 10% in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53212 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
HIElimination.cpp
electionDAG/ScheduleDAG.cpp
argetInstrInfoImpl.cpp
irtRegMap.cpp
0e5f1306b059b62d7725f324e087efbc8e7a782d 08-Jul-2008 Dan Gohman <gohman@apple.com> Pool-allocation for SDNodes. The pool is allocated once for each function,
and reused across SelectionDAGs.

This drastically reduces the number of calls to malloc/free made during
instruction selection, and improves memory locality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53211 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
ed825d11548be9f8268490d26d0d0bab0347d6fd 08-Jul-2008 Dan Gohman <gohman@apple.com> Pool-allocation for SDNodes. The pool is allocated once for each function,
and reused across SelectionDAGs.

This drastically reduces the number of calls to malloc/free made during
instruction selection, and improves memory locality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53211 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
4925567f85ea60019a9cd45b8230fa72a1bd78df 07-Jul-2008 Bill Wendling <isanbard@gmail.com> Use the canonical way to get an empty structure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53206 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
993b3dd3d5cf100b4d59b9e5c62acb56c53fb7ac 07-Jul-2008 Bill Wendling <isanbard@gmail.com> Use the canonical way to get an empty structure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53206 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
667a68b96aad48c053d6678ee5cb6d440072e81a 07-Jul-2008 Bill Wendling <isanbard@gmail.com> Use StringMap for greater justice!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53202 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
e63647899d5a8a702a3e6de6998e6a1789b1df54 07-Jul-2008 Bill Wendling <isanbard@gmail.com> Use StringMap for greater justice!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53202 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
0fe9c6e7babb3c0731d9cb864ec498ec4184760f 07-Jul-2008 Dan Gohman <gohman@apple.com> Fix SDNode::MorphNodeTo (a function used by by SelectNodeTo) to
properly track dead nodes that are on the original SDNode's operand
list but not the new one, and have no other uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53201 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b997a4e4f92a1b9b4be917a32bc21cb52a63c399 07-Jul-2008 Dan Gohman <gohman@apple.com> Fix SDNode::MorphNodeTo (a function used by by SelectNodeTo) to
properly track dead nodes that are on the original SDNode's operand
list but not the new one, and have no other uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53201 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ce42e404a26454f4332c2c350c75ad27bbbb16f7 07-Jul-2008 Dan Gohman <gohman@apple.com> Move MachineMemOperand's constructor out of line, to avoid a
#include dependency on Support/MathExtras.h in the header file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53200 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ac6f892ed0130543aa55a7891644c7599aacbb78 07-Jul-2008 Dan Gohman <gohman@apple.com> Move MachineMemOperand's constructor out of line, to avoid a
#include dependency on Support/MathExtras.h in the header file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53200 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
fd3ff032b8a46bc56170e544fc9f104e5e66eef4 07-Jul-2008 Dan Gohman <gohman@apple.com> Use of operator* is redundant and confusing here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53197 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
8ca75f0779ae9c540f18a8058b9f923ec887069f 07-Jul-2008 Dan Gohman <gohman@apple.com> Use of operator* is redundant and confusing here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53197 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
4542611bb9793e8376d7d5f33b4a1e2d11712894 07-Jul-2008 Dan Gohman <gohman@apple.com> Minor const-correctness fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53196 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
e4da641adc6f0989b558036c9c238ff3ce050669 07-Jul-2008 Dan Gohman <gohman@apple.com> Minor const-correctness fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53196 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
03bafaf802579d0c659af6f2bc1ca539ac0704ca 07-Jul-2008 Dan Gohman <gohman@apple.com> Assert that all MachineInstrs update PhysRegUseDefLists in
their cleanup code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53194 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
604db2aeb99f94376a8babaa04ea94d04d53a027 07-Jul-2008 Dan Gohman <gohman@apple.com> Assert that all MachineInstrs update PhysRegUseDefLists in
their cleanup code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53194 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
6d9cdd56173fb915a9e3a8f0f6b5a8ed9bed1098 07-Jul-2008 Dan Gohman <gohman@apple.com> Remove most of the uses of SDOperandPtr, usually replacing it with a
simple const SDOperand*, which is what's usually needed.

For AddNodeIDOperands, which is small, just duplicate the function to
accept an SDUse*.

For SelectionDAG::getNode - Add an overload that accepts SDUse* that
copies the operands into a temporary SDOperand array, but also has
special-case checks for 0 through 3 operands to avoid the copy in
the common cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53183 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
703ce5d0c363816b7cac7310461fad4fc3796267 07-Jul-2008 Dan Gohman <gohman@apple.com> Remove most of the uses of SDOperandPtr, usually replacing it with a
simple const SDOperand*, which is what's usually needed.

For AddNodeIDOperands, which is small, just duplicate the function to
accept an SDUse*.

For SelectionDAG::getNode - Add an overload that accepts SDUse* that
copies the operands into a temporary SDOperand array, but also has
special-case checks for 0 through 3 operands to avoid the copy in
the common cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53183 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1002c0203450620594a85454c6a095ca94b87cb2 07-Jul-2008 Dan Gohman <gohman@apple.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53179 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
e887fdff72486ad0e83f402c8c105fa91fff1036 07-Jul-2008 Dan Gohman <gohman@apple.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53179 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
6b345ee9b2833cf1b2f79dc16d06d4060bec36ef 07-Jul-2008 Dan Gohman <gohman@apple.com> Make DenseMap's insert return a pair, to more closely resemble std::map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53177 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
55d1966e9afdeeb33e7611bc0ac9b4b4268d68d3 07-Jul-2008 Dan Gohman <gohman@apple.com> Make DenseMap's insert return a pair, to more closely resemble std::map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53177 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
21cacc4de88098a6f2ccfcde18ccec0aa6654f3e 07-Jul-2008 Evan Cheng <evan.cheng@apple.com> LegalizeSetCCOperands should legalize the result of ExpandLibCall. Patch by Richard Osborne.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
18a1ab1d6b0f8e6ae6d85b922e27b5467ef444e6 07-Jul-2008 Evan Cheng <evan.cheng@apple.com> LegalizeSetCCOperands should legalize the result of ExpandLibCall. Patch by Richard Osborne.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8870ce951d3f545edc8a5ce89ce3e7cdbf38eb25 07-Jul-2008 Bill Wendling <isanbard@gmail.com> Prevent option name conflict.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53166 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
31376589fcfc44bd3e17ab514d5569bd771d156f 07-Jul-2008 Bill Wendling <isanbard@gmail.com> Prevent option name conflict.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53166 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
990f032907ae171cc3d465a694e8e6d2a6545f57 07-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes soft-float support for stores of a
float value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
6627c56987be5203d44db5e3206f4a4f2b1bbe71 07-Jul-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes soft-float support for stores of a
float value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
364d73ddab43b699ab90240f11b7a2eb5cf69bd8 05-Jul-2008 Mon P Wang <wangmp@apple.com> Fixed generating incorrect aligned stores that I backout of r53031
that fixed problems in EmitStackConvert where the source and target type
have different alignment by creating a stack slot with the max
alignment of source and target type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
55854cc1b3acd8103c1dc674dad5de4b7a41d33d 05-Jul-2008 Mon P Wang <wangmp@apple.com> Fixed generating incorrect aligned stores that I backout of r53031
that fixed problems in EmitStackConvert where the source and target type
have different alignment by creating a stack slot with the max
alignment of source and target type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
126d90770bdb17e6925b2fe26de99aa079b7b9b3 04-Jul-2008 Duncan Sands <baldrick@free.fr> Rather than having a different custom legalization
hook for each way in which a result type can be
legalized (promotion, expansion, softening etc),
just use one: ReplaceNodeResults, which returns
a node with exactly the same result types as the
node passed to it, but presumably with a bunch of
custom code behind the scenes. No change if the
new LegalizeTypes infrastructure is not turned on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53137 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAGISel.cpp
ac496a17678473310a3c468a8ac5a5a30426876c 04-Jul-2008 Duncan Sands <baldrick@free.fr> Rather than having a different custom legalization
hook for each way in which a result type can be
legalized (promotion, expansion, softening etc),
just use one: ReplaceNodeResults, which returns
a node with exactly the same result types as the
node passed to it, but presumably with a bunch of
custom code behind the scenes. No change if the
new LegalizeTypes infrastructure is not turned on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53137 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeVectorTypes.cpp
electionDAG/SelectionDAGISel.cpp
ececf99c07febbcaeec73822519f0d36d3ee50c4 04-Jul-2008 Duncan Sands <baldrick@free.fr> Linux also does not require exception handling
moves in order to get correct debug info. Since
I can't imagine how any target could possibly
be any different, I've just stripped out the
option: now all the world's like Darwin!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53134 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
cbc28b1d8bceba8861692157c8725070cdb54a59 04-Jul-2008 Duncan Sands <baldrick@free.fr> Linux also does not require exception handling
moves in order to get correct debug info. Since
I can't imagine how any target could possibly
be any different, I've just stripped out the
option: now all the world's like Darwin!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53134 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
c04f46567c3ebf64257d8f03e29d80a69606a6bc 04-Jul-2008 Bill Wendling <isanbard@gmail.com> Don't return std::vector by value, but pass it in by reference to be filled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53123 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
75091f9f5f90908dfdaa725b690d1f18020904f4 04-Jul-2008 Bill Wendling <isanbard@gmail.com> Don't return std::vector by value, but pass it in by reference to be filled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53123 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
10fff6078a7bc42f142c536bd55e9569253b280b 04-Jul-2008 Bill Wendling <isanbard@gmail.com> Revert my previous check-in that split up MachineModuleInfo. It turns out to
slow the compiler down at -O0 some 30% or more. Ooops.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53120 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfoDesc.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
4de8de500e6cfb18604557d24a18d684227e95e6 04-Jul-2008 Bill Wendling <isanbard@gmail.com> Revert my previous check-in that split up MachineModuleInfo. It turns out to
slow the compiler down at -O0 some 30% or more. Ooops.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53120 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfoDesc.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
a122f2f51e4cc9edc5f1c4020e51909b585a0f90 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> Backed out 53031.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53110 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
639dee91a803062997a3714d45dc1ac5ac6dc258 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> Backed out 53031.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53110 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
9f1c8317a4676945b4961ddb9827ef2412551620 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc.
- Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53097 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
HIElimination.cpp
woAddressInstructionPass.cpp
e52c191890057ab4cec065505b0b27f8586eb1b5 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc.
- Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53097 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
HIElimination.cpp
woAddressInstructionPass.cpp
2ebc11ac6d19ec806da97bd4f2d49a27932d09fb 03-Jul-2008 Dan Gohman <gohman@apple.com> Reapply r52988, "Simplify addRegisterKilled and addRegisterDead." The
254.gap failure was not due to this mod.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53068 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9d90c638c42e609fcc1302b00690e9a587633e9c 03-Jul-2008 Dan Gohman <gohman@apple.com> Reapply r52988, "Simplify addRegisterKilled and addRegisterDead." The
254.gap failure was not due to this mod.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53068 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9b44c1f2a0ebe31e670994cfe131c7c3e0e80494 03-Jul-2008 Dan Gohman <gohman@apple.com> Avoid unnecessarily copying APInt objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53065 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1b1a3c6492001e401d5b74d35a4a28abd59c41bc 03-Jul-2008 Dan Gohman <gohman@apple.com> Avoid unnecessarily copying APInt objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53065 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5b9f60bc22582e80b081d4277a47d8b7fa14e3f4 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> Use std::replace instead of std::find and push_back.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53063 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
c2c8ebb7a73489bdc18da99aa3c2d180d200346c 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> Use std::replace instead of std::find and push_back.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53063 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
be04dc1413bdab0c8687a8086792af6cfd7540c0 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Add LiveVariables::replaceKillInstruction. This does a subset of instructionChanged. That is, it only update the VarInfo.kills if the new instruction is known to have the correct dead and kill markers.
- CommuteInstruction copies kill / dead markers over to new instruction. So use replaceKillInstruction instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53061 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
woAddressInstructionPass.cpp
d1c7e8fcf6f334f747da3f04418adccb2ca2cac8 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Add LiveVariables::replaceKillInstruction. This does a subset of instructionChanged. That is, it only update the VarInfo.kills if the new instruction is known to have the correct dead and kill markers.
- CommuteInstruction copies kill / dead markers over to new instruction. So use replaceKillInstruction instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53061 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
woAddressInstructionPass.cpp
f660c171c838793b87b7e58e91609cecf256378d 03-Jul-2008 Owen Anderson <resistor@mac.com> Make LiveVariables even more optional, by making it optional in the call to TargetInstrInfo::convertToThreeAddressInstruction
Also, if LV isn't around, then TwoAddr doesn't need to be updating flags, since they won't have been set in the first place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53058 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
c6959726ab99e740101d8b5b663aee5fa1332791 03-Jul-2008 Owen Anderson <resistor@mac.com> Make LiveVariables even more optional, by making it optional in the call to TargetInstrInfo::convertToThreeAddressInstruction
Also, if LV isn't around, then TwoAddr doesn't need to be updating flags, since they won't have been set in the first place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53058 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
cd920d9ecfcefff13c3619a32b58399cac2e3630 03-Jul-2008 Dan Gohman <gohman@apple.com> Replace a few uses of SelectionDAG::getTargetNode with
SelectionDAG::SelectNodeTo in the instruction selector. This
updates existing nodes in place instead of creating new ones.

Go back to selecting ISD::DBG_LABEL nodes into
TargetInstrInfo::DBG_LABEL nodes instead of leaving them
unselected, now that SelectNodeTo allows us to update them
in place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53057 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
7eced110b0549fe8f7b400bbad655586d42d8765 03-Jul-2008 Dan Gohman <gohman@apple.com> Replace a few uses of SelectionDAG::getTargetNode with
SelectionDAG::SelectNodeTo in the instruction selector. This
updates existing nodes in place instead of creating new ones.

Go back to selecting ISD::DBG_LABEL nodes into
TargetInstrInfo::DBG_LABEL nodes instead of leaving them
unselected, now that SelectNodeTo allows us to update them
in place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53057 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
8b69135f05cc2b8fff0f50bc826666b1da0661c4 03-Jul-2008 Dan Gohman <gohman@apple.com> Revert r52988. It broke 254.gap on x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53050 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
560eec5f23ac38ac2c6a0f0c957862fa0db05c41 03-Jul-2008 Dan Gohman <gohman@apple.com> Revert r52988. It broke 254.gap on x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53050 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
802af11460f090fe53710c44c061a70e5bd7aa2d 02-Jul-2008 Owen Anderson <resistor@mac.com> TwoAddressInstructionPass doesn't really require LiveVariables, it just needs to update it if it's already around.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53049 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b92321782ef4216b5f098104edb60e9d4fa6cc5f 02-Jul-2008 Owen Anderson <resistor@mac.com> TwoAddressInstructionPass doesn't really require LiveVariables, it just needs to update it if it's already around.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53049 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
4bdcb61af33399d4e01fdf3c47ca1f1f5356e370 02-Jul-2008 Duncan Sands <baldrick@free.fr> Add a new getMergeValues method that does not need
to be passed the list of value types, and use this
where appropriate. Inappropriate places are where
the value type list is already known and may be
long, in which case the existing method is more
efficient.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53035 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
698842f7b62573cc6a3af154727e5d59daea4c1d 02-Jul-2008 Duncan Sands <baldrick@free.fr> Add a new getMergeValues method that does not need
to be passed the list of value types, and use this
where appropriate. Inappropriate places are where
the value type list is already known and may be
long, in which case the existing method is more
efficient.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53035 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
bee98c66c0c3d1f43244cdf237e572a9df031e40 02-Jul-2008 Mon P Wang <wangmp@apple.com> Fixed problem in EmitStackConvert where the source and target type
have different alignment by creating a stack slot with the max
alignment of source and target type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53031 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
cd0e9b32e09067519485bf89a55f8b69c3c42eee 02-Jul-2008 Mon P Wang <wangmp@apple.com> Fixed problem in EmitStackConvert where the source and target type
have different alignment by creating a stack slot with the max
alignment of source and target type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53031 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
349db1738d58d52cae2ab1e06cbd128dd9f0aab6 02-Jul-2008 Chris Lattner <sabre@nondot.org> instead of aborting on shifts of i1, just implicitly fold them.
The dag combiner can produce a shift of i1 when folding icmp i1's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53030 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a113d3e7f84958bf2289297d014e2512a84ce80e 02-Jul-2008 Chris Lattner <sabre@nondot.org> instead of aborting on shifts of i1, just implicitly fold them.
The dag combiner can produce a shift of i1 when folding icmp i1's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53030 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8dd5af562b8ab9ddf4c6e3a74ca3c4f66dcd0e9e 02-Jul-2008 Duncan Sands <baldrick@free.fr> Fix typo compounded by a cut-and-pasto.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53012 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
8bed0bd41e91f45f3219103e8dfee33fbeb61a1d 02-Jul-2008 Duncan Sands <baldrick@free.fr> Fix typo compounded by a cut-and-pasto.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53012 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
3a38e5e3c465c10fe5f859114f9077cb00cc17b9 02-Jul-2008 Duncan Sands <baldrick@free.fr> Let AnalyzeNewNode take care of calling ExpungeNode.
This makes sure that all new nodes are expunged, not
just those the top node of a new subtree.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
136fbc0e3e8697881c95e73249b5c6985e16970f 02-Jul-2008 Duncan Sands <baldrick@free.fr> Let AnalyzeNewNode take care of calling ExpungeNode.
This makes sure that all new nodes are expunged, not
just those the top node of a new subtree.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
c6be777208f4539af400ac694d9d1dc8b992bc80 02-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Use a faster priority comparison function if -fast.
- Code clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53010 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
f2639ba040bb28433c7fc4c1ce89ed49e3e02f6d 02-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Use a faster priority comparison function if -fast.
- Code clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53010 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
fce6e546aab64602c41eeb83381b7617f97d0069 02-Jul-2008 Chris Lattner <sabre@nondot.org> Add a new (simple) StringMap::clear method, patch by Pratik
Solanki!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53008 91177308-0d34-0410-b5e6-96231b3b80d8
ollectorMetadata.cpp
7749f9f9529ad333869157d4bf269863e3a08569 02-Jul-2008 Chris Lattner <sabre@nondot.org> Add a new (simple) StringMap::clear method, patch by Pratik
Solanki!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53008 91177308-0d34-0410-b5e6-96231b3b80d8
ollectorMetadata.cpp
3a43a7f8b247cb3c6273bda3b595155117584e84 02-Jul-2008 Bill Wendling <isanbard@gmail.com> Use the canonical form for getting an empty structure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53003 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
271b732731691c699d13e2e9eac2465f68d76c38 02-Jul-2008 Bill Wendling <isanbard@gmail.com> Use the canonical form for getting an empty structure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53003 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
12432cfc59862e6a71b4f320677a41788cdd0860 02-Jul-2008 Bill Wendling <isanbard@gmail.com> Sorry. I couldn't sleep at night knowing I put these ugly casts into the source tree.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53001 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfoDesc.cpp
achineModuleInfo.cpp
9ac67a7edd2c6dabdcc11b2efd46f0e4458c3bf3 02-Jul-2008 Bill Wendling <isanbard@gmail.com> Sorry. I couldn't sleep at night knowing I put these ugly casts into the source tree.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53001 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfoDesc.cpp
achineModuleInfo.cpp
aa8f8889a861aadc061aec71fb7ed7f628848a2d 02-Jul-2008 Bill Wendling <isanbard@gmail.com> Darwin doesn't need exception handling information for the "move" info when
debug information is being output, because it's leet!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52994 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
ac9639d279b57ccece43fa9742d78f0877b99e85 02-Jul-2008 Bill Wendling <isanbard@gmail.com> Darwin doesn't need exception handling information for the "move" info when
debug information is being output, because it's leet!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52994 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
6547e406cf934346db7a206b61bcf09635afff0d 02-Jul-2008 Evan Cheng <evan.cheng@apple.com> Avoid creating expensive comment string if it's not going to be printed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52992 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
0eeed443610f78fe77f9c170e80c75d363c79207 02-Jul-2008 Evan Cheng <evan.cheng@apple.com> Avoid creating expensive comment string if it's not going to be printed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52992 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
4474c792c6ef21862dd166fd0de59d70c4c8d489 02-Jul-2008 Owen Anderson <resistor@mac.com> No need to use std::distance. We can just count the number of operands
much more cheaply.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
cd9bc792c442008a8bf75d9a4c9146ce9f45cd89 02-Jul-2008 Owen Anderson <resistor@mac.com> No need to use std::distance. We can just count the number of operands
much more cheaply.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1096734011a1ed403cc3a35e5f05f0f56873725d 02-Jul-2008 Evan Cheng <evan.cheng@apple.com> Simplify addRegisterKilled and addRegisterDead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52988 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
152ad1398164aad60fa4e1a97b760d6a80a7bb8e 02-Jul-2008 Evan Cheng <evan.cheng@apple.com> Simplify addRegisterKilled and addRegisterDead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52988 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a28cd12b064d6af333e6c16499ad26c27d010450 02-Jul-2008 Bill Wendling <isanbard@gmail.com> - Update comments.
- Don't use GlobalVariable::LinkageTypes when unsigned works.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52987 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfoDesc.cpp
achineModuleInfo.cpp
4a41e4379b0ac99656e3dd40b0c23141fd29da35 02-Jul-2008 Bill Wendling <isanbard@gmail.com> - Update comments.
- Don't use GlobalVariable::LinkageTypes when unsigned works.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52987 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfoDesc.cpp
achineModuleInfo.cpp
62bc8a44868bd86e96bdbd2f0d66dda690cc66ad 01-Jul-2008 Dale Johannesen <dalej@apple.com> Fix longstanding thinko: don't exclude
predessors of exit blocks from tail merging
consideration.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52985 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
92e846666363737a1b5d288a81f00d14ffe68782 01-Jul-2008 Dale Johannesen <dalej@apple.com> Fix longstanding thinko: don't exclude
predessors of exit blocks from tail merging
consideration.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52985 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
6518c6ed7ea609696304bbbe848342cacd001f12 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Eliminate a compile time warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52982 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2410863be0ab9f2c169053724a1471d69284a5f3 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Eliminate a compile time warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52982 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
25995093e785f4794b3590f3df70fbfe834a00a1 01-Jul-2008 Owen Anderson <resistor@mac.com> Add a version of AsmPrinter::EOL that takes a const char* so that we don't have to do as many implicit std::string constructions.
Unfortunately, this doesn't appear to translate to a real speedup in practice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52981 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
367bfbb1143c437fd1733d985d260513303d2e85 01-Jul-2008 Owen Anderson <resistor@mac.com> Add a version of AsmPrinter::EOL that takes a const char* so that we don't have to do as many implicit std::string constructions.
Unfortunately, this doesn't appear to translate to a real speedup in practice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52981 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
f1a792bc59a4d65d0e346109c681768e07e62be5 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Do run ComputeLiveOutVRegInfo with -fast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52975 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
598f94dc9f2d5dd645b23473388f203d1547dd97 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Do run ComputeLiveOutVRegInfo with -fast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52975 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4576f6d7a9c0f2c6a3b6c5d4d8a3063bbf763ae5 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Do not use computationally expensive scheduling heuristics with -fast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
9b77cae1df76d8be0771563f55dc72b1cdab648c 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Do not use computationally expensive scheduling heuristics with -fast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52971 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
ebffb660a68384dd8b5e2ff36d68e94a3920611b 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Apply Chris' suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52970 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
19733c4a5e3c954dc7f96af361d2f71ed61f9443 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Apply Chris' suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52970 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
528bc028774513ee76125f85ceb8f704f5901cc8 01-Jul-2008 Dan Gohman <gohman@apple.com> Minimize duplicated code in AsmPrinter::printLabel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52944 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
7d54640a828d664d50851eff82d49213bc134614 01-Jul-2008 Dan Gohman <gohman@apple.com> Minimize duplicated code in AsmPrinter::printLabel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52944 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
4406604047423576e36657c7ede266ca42e79642 01-Jul-2008 Dan Gohman <gohman@apple.com> Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminating
the need for a flavor operand, and add a new SDNode subclass,
LabelSDNode, for use with them to eliminate the need for a label id
operand.

Change instruction selection to let these label nodes through
unmodified instead of creating copies of them. Teach the MachineInstr
emitter how to emit a MachineInstr directly from an ISD label node.

This avoids the need for allocating SDNodes for the label id and
flavor value, as well as SDNodes for each of the post-isel label,
label id, and label flavor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52943 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ollector.cpp
warfWriter.cpp
achineInstr.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
fa607c9cc5d2bd142ad8352bdf5e446517562688 01-Jul-2008 Dan Gohman <gohman@apple.com> Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminating
the need for a flavor operand, and add a new SDNode subclass,
LabelSDNode, for use with them to eliminate the need for a label id
operand.

Change instruction selection to let these label nodes through
unmodified instead of creating copies of them. Teach the MachineInstr
emitter how to emit a MachineInstr directly from an ISD label node.

This avoids the need for allocating SDNodes for the label id and
flavor value, as well as SDNodes for each of the post-isel label,
label id, and label flavor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52943 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ollector.cpp
warfWriter.cpp
achineInstr.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
ee4dc16d75e0d06ab434745c116137c4c6332ffc 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Suppress compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
e661893f00c2c4911b026810b49cb83938c1472b 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Suppress compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
9ef4c5302eb547936f6586ece880f31104d2f801 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Don't run stack slot coloring if -fast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52933 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
2ea55507ac8f9c08ece82880c86d12fa07e81aff 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Don't run stack slot coloring if -fast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52933 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
99fe47bc81d53762454ff112ab34378b00299b5a 01-Jul-2008 Dan Gohman <gohman@apple.com> Use a simpler but equivalent form of RecordSource.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52931 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0849b9ef0517d2f4459f19c7f83dda2057caa3ed 01-Jul-2008 Dan Gohman <gohman@apple.com> Use a simpler but equivalent form of RecordSource.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52931 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f667480d84a99a34adcac217e1a4c9fb7e2bfae6 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Add timing report for various sub-passes under SelectionDAGISel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52930 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
419b0e56ff8245b7e1993d637af94ae4f364fc55 01-Jul-2008 Evan Cheng <evan.cheng@apple.com> Add timing report for various sub-passes under SelectionDAGISel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52930 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d19a53ba1d4629f69821f37ca824c65e6df8e8f9 01-Jul-2008 Dan Gohman <gohman@apple.com> std::ostream and std::string microoptimizations for asm printing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52929 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
12ebe3f690e44934d98dceac5e3fd95b16ec06be 01-Jul-2008 Dan Gohman <gohman@apple.com> std::ostream and std::string microoptimizations for asm printing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52929 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
cf8462f3004d3fc72217d09e4b3f135d68a50e9d 30-Jun-2008 Dan Gohman <gohman@apple.com> Use reserve.

SelectionDAG::allnodes_size is linear, but that doesn't appear to
outweigh the benefit of reducing heap traffic. If it does become a
problem, we should teach SelectionDAG to keep a count of how many
nodes are live, because there are several other places where that
information would be useful as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
93466f8e2c9e8f3e769f5d357799a577b01e16bc 30-Jun-2008 Dan Gohman <gohman@apple.com> Use reserve.

SelectionDAG::allnodes_size is linear, but that doesn't appear to
outweigh the benefit of reducing heap traffic. If it does become a
problem, we should teach SelectionDAG to keep a count of how many
nodes are live, because there are several other places where that
information would be useful as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7f460203b0c5350e9b2c592f438e40f7a7de6e45 30-Jun-2008 Dan Gohman <gohman@apple.com> Rename ISD::LOCATION to ISD::DBG_STOPPOINT to better reflect its
purpose, and give it a custom SDNode subclass so that it doesn't
need to have line number, column number, filename string, and
directory string, all existing as individual SDNodes to be the
operands.

This was the only user of ISD::STRING, StringSDNode, etc., so
remove those and some associated code.

This makes stop-points considerably easier to read in
-view-legalize-dags output, and reduces overhead (creating new
nodes and copying std::strings into them) on code containing
debugging information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52924 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
472d12c47f1704853971a564e03c5490ce5066b7 30-Jun-2008 Dan Gohman <gohman@apple.com> Rename ISD::LOCATION to ISD::DBG_STOPPOINT to better reflect its
purpose, and give it a custom SDNode subclass so that it doesn't
need to have line number, column number, filename string, and
directory string, all existing as individual SDNodes to be the
operands.

This was the only user of ISD::STRING, StringSDNode, etc., so
remove those and some associated code.

This makes stop-points considerably easier to read in
-view-legalize-dags output, and reduces overhead (creating new
nodes and copying std::strings into them) on code containing
debugging information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52924 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
db8d56b825efeb576d67b9dbe39d736d93306222 30-Jun-2008 Evan Cheng <evan.cheng@apple.com> Split scheduling from instruction selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
34fd4f3c0eb0d6c2ea2d2208a68bf693ca123d18 30-Jun-2008 Evan Cheng <evan.cheng@apple.com> Split scheduling from instruction selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
edec8d89dfaebd7050df4acafe3d01fa755ffd0d 30-Jun-2008 Dale Johannesen <dalej@apple.com> No need to align the stack if there are no stack
objects. Fixes a couple of tests on Linux.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52921 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c46d81416f6a8aea60d31109c79ebc5753aba93c 30-Jun-2008 Dale Johannesen <dalej@apple.com> No need to align the stack if there are no stack
objects. Fixes a couple of tests on Linux.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52921 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
fdb99838a30eba6ee4e7ae8c8077b4f8d62cf560 30-Jun-2008 Evan Cheng <evan.cheng@apple.com> Remove unneeded include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52920 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
66bf3bac4890e8cd5364cb2055051f939acd3720 30-Jun-2008 Evan Cheng <evan.cheng@apple.com> Remove unneeded include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52920 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
a44b674a42b6ca57128c4eb5a358298ed3bb1406 30-Jun-2008 Dan Gohman <gohman@apple.com> Replace some std::vectors that showed up in heap profiling with
SmallVectors. Change the signature of TargetLowering::LowerArguments
to avoid returning a vector by value, and update the two targets
which still use this directly, Sparc and IA64, accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e0208146435b75f91cab9943f7e1a0fe4259e706 30-Jun-2008 Dan Gohman <gohman@apple.com> Replace some std::vectors that showed up in heap profiling with
SmallVectors. Change the signature of TargetLowering::LowerArguments
to avoid returning a vector by value, and update the two targets
which still use this directly, Sparc and IA64, accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
117b64b3f8277e8882d711ea859bed380a3e6f14 30-Jun-2008 Dan Gohman <gohman@apple.com> Correct the allocation size for CCState's UsedRegs member, which
only needs one bit for each register. UsedRegs is a SmallVector
sized at 16, so this eliminates a heap allocation/free for every
call and return processed by Legalize on most targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52915 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
a1ee9e855c4c0dcb317bd222f31fb0558ef04958 30-Jun-2008 Dan Gohman <gohman@apple.com> Correct the allocation size for CCState's UsedRegs member, which
only needs one bit for each register. UsedRegs is a SmallVector
sized at 16, so this eliminates a heap allocation/free for every
call and return processed by Legalize on most targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52915 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
6f7e1cddf63f91af84996d59cdb5809088ac3fe3 30-Jun-2008 Duncan Sands <baldrick@free.fr> ExpungeNode is only needed for new nodes! This
fixes CodeGen/PowerPC/2008-06-19-LegalizerCrash.ll
when using the new LegalizeTypes infrastructure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52903 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
14d6be397cba6f3c6a18d58bf2be31830a68804a 30-Jun-2008 Duncan Sands <baldrick@free.fr> ExpungeNode is only needed for new nodes! This
fixes CodeGen/PowerPC/2008-06-19-LegalizerCrash.ll
when using the new LegalizeTypes infrastructure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52903 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
d3ca9fc9984d036146886a40ad3f73aaf7a424eb 30-Jun-2008 Duncan Sands <baldrick@free.fr> Support for VAARG. As noted in a comment, this is
wrong for types like x86 long double and i1, but
no worse than what is done in LegalizeDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52898 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
b8b42275d8f3f3a191b5aeb20277d12248534d4c 30-Jun-2008 Duncan Sands <baldrick@free.fr> Support for VAARG. As noted in a comment, this is
wrong for types like x86 long double and i1, but
no worse than what is done in LegalizeDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52898 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
7fc8ab81f5f46dcba0f76b1c546a1d11ccbebe26 30-Jun-2008 Duncan Sands <baldrick@free.fr> Support for promoting select_cc operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52895 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
b6e31d36beabbacadb07d03ca172513c6a8d131f 30-Jun-2008 Duncan Sands <baldrick@free.fr> Support for promoting select_cc operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52895 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
f9516208e57364ab1e7d8748af1f59a2ea5fb572 30-Jun-2008 Duncan Sands <baldrick@free.fr> Revert the SelectionDAG optimization that makes
it impossible to create a MERGE_VALUES node with
only one result: sometimes it is useful to be able
to create a node with only one result out of one of
the results of a node with more than one result, for
example because the new node will eventually be used
to replace a one-result node using ReplaceAllUsesWith,
cf X86TargetLowering::ExpandFP_TO_SINT. On the other
hand, most users of MERGE_VALUES don't need this and
for them the optimization was valuable. So add a new
utility method getMergeValues for creating MERGE_VALUES
nodes which by default performs the optimization.
Change almost everywhere to use getMergeValues (and
tidy some stuff up at the same time).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52893 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
f19591c91ec39496d58bf4835640d25abc026da9 30-Jun-2008 Duncan Sands <baldrick@free.fr> Revert the SelectionDAG optimization that makes
it impossible to create a MERGE_VALUES node with
only one result: sometimes it is useful to be able
to create a node with only one result out of one of
the results of a node with more than one result, for
example because the new node will eventually be used
to replace a one-result node using ReplaceAllUsesWith,
cf X86TargetLowering::ExpandFP_TO_SINT. On the other
hand, most users of MERGE_VALUES don't need this and
for them the optimization was valuable. So add a new
utility method getMergeValues for creating MERGE_VALUES
nodes which by default performs the optimization.
Change almost everywhere to use getMergeValues (and
tidy some stuff up at the same time).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52893 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
0ff39b3feb10477c224138156941234f5fa46f58 30-Jun-2008 Evan Cheng <evan.cheng@apple.com> - Re-apply 52748 and friends with fix. GetConstantStringInfo() returns an empty string for ConstantAggregateZero case which surprises selectiondag.
- Correctly handle memcpy from constant string which is zero-initialized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52891 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAG.cpp
833501d6dd954a79e24dee9bc266f02274ea0c22 30-Jun-2008 Evan Cheng <evan.cheng@apple.com> - Re-apply 52748 and friends with fix. GetConstantStringInfo() returns an empty string for ConstantAggregateZero case which surprises selectiondag.
- Correctly handle memcpy from constant string which is zero-initialized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52891 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAG.cpp
80c1a5622a26794873b0d44e27c04926cd6c6be1 30-Jun-2008 Chris Lattner <sabre@nondot.org> Implement split and scalarize for SELECT_CC, fixing PR2504


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52887 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c74714523d746f78b2b2c519cea065060aa6f886 30-Jun-2008 Chris Lattner <sabre@nondot.org> Implement split and scalarize for SELECT_CC, fixing PR2504


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52887 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6d116bc7ced56a820d33b0dd35ee36af8a810eab 29-Jun-2008 Anton Korobeynikov <asl@math.spbu.ru> Revert (52748 and friends):

Move GetConstantStringInfo to lib/Analysis. Remove
string output routine from Constant. Update all
callers. Change debug intrinsic api slightly to
accomodate move of routine, these now return values
instead of strings.

This unbreaks llvm-gcc bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52884 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAG.cpp
9480db79170be31a39f639e2880303824f1b727c 29-Jun-2008 Anton Korobeynikov <asl@math.spbu.ru> Revert (52748 and friends):

Move GetConstantStringInfo to lib/Analysis. Remove
string output routine from Constant. Update all
callers. Change debug intrinsic api slightly to
accomodate move of routine, these now return values
instead of strings.

This unbreaks llvm-gcc bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52884 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAG.cpp
03a5707955788fc333c6767c054341b12075eff9 28-Jun-2008 Chris Lattner <sabre@nondot.org> Really fix the bootstrap failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52854 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
12cc93b7b21304912b47600ab30bd33c6e7089c9 28-Jun-2008 Chris Lattner <sabre@nondot.org> Really fix the bootstrap failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52854 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b746b82113df707df9555450991eab75b18ffa1b 28-Jun-2008 Chris Lattner <sabre@nondot.org> Add back the capability to include nul characters in strings with
GetConstantStringInfo. This will hopefully restore llvm-gcc to
happy bootstrap land.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52851 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9575737397ad43c8e3ba5960afc86a6a7d6cd92e 28-Jun-2008 Chris Lattner <sabre@nondot.org> Add back the capability to include nul characters in strings with
GetConstantStringInfo. This will hopefully restore llvm-gcc to
happy bootstrap land.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52851 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
77455617fbc5e06591187be83aa349f6be8a95f8 28-Jun-2008 Dan Gohman <gohman@apple.com> When folding a bitcast into a load or store, preserve the alignment
information of the original load or store, which is checked to be
at least as good, and possibly better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52849 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
55a11de4de3c9da6bb48695174b615db6b4fa720 28-Jun-2008 Dan Gohman <gohman@apple.com> When folding a bitcast into a load or store, preserve the alignment
information of the original load or store, which is checked to be
at least as good, and possibly better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52849 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
01b2e236b571e7c22ee8493b7ea19eda9830d75c 28-Jun-2008 Evan Cheng <evan.cheng@apple.com> Looks like this condition is inverted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52841 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
dd562a0055475b417e7fd346581375fc1b73ab04 28-Jun-2008 Evan Cheng <evan.cheng@apple.com> Looks like this condition is inverted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52841 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f0e9c56540367e9e7d0c746b839a1446612498c8 27-Jun-2008 Bill Wendling <isanbard@gmail.com> Reduce number of times .size() is called on a vector. Rename some variables to
match normal naming scheme.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52820 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
266486d86b34fbe70b46aef6876dfc0a3b72b595 27-Jun-2008 Bill Wendling <isanbard@gmail.com> Reduce number of times .size() is called on a vector. Rename some variables to
match normal naming scheme.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52820 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
bffdf66b8050b45188cb265f27e81c41277ab0ca 27-Jun-2008 Owen Anderson <resistor@mac.com> Use a SmallSet when we can to reduce memory allocations.
This speeds up a particular testcase from 0.0302s to 0.0222s in LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52819 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
9a4cb15ecabfd1d9b58ba9262fad749ac7ecff3d 27-Jun-2008 Owen Anderson <resistor@mac.com> Use a SmallSet when we can to reduce memory allocations.
This speeds up a particular testcase from 0.0302s to 0.0222s in LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52819 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
07c68f9b6f2d1009f8c239c27e351fd8246879f5 27-Jun-2008 Chris Lattner <sabre@nondot.org> simplify this check, GetConstantStringInfo validates that a
global is constant already. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52812 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
915da66f02e0208cad90a01ac9f7a9e01dc1fc8d 27-Jun-2008 Chris Lattner <sabre@nondot.org> simplify this check, GetConstantStringInfo validates that a
global is constant already. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52812 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0ac1b6d768411cb84fbf7df3ff759331b816d111 27-Jun-2008 Bill Wendling <isanbard@gmail.com> Cruft left from patch revert...sorry. :-(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52808 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
ff424a9d3445e0322897947e332d8b594f56ee42 27-Jun-2008 Bill Wendling <isanbard@gmail.com> Cruft left from patch revert...sorry. :-(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52808 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
914c970899ce3281a8d14d924ec1bfe335624ac6 27-Jun-2008 Bill Wendling <isanbard@gmail.com> Reverting broken patch r52803.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52806 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
0e679b876edb3f06c137f575e52474dc0c0676b2 27-Jun-2008 Bill Wendling <isanbard@gmail.com> Reverting broken patch r52803.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52806 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
b827c26e1e49944e44604402d2414b259dba6900 27-Jun-2008 Owen Anderson <resistor@mac.com> Don't perform expensive queries checking for super and sub registers when we know that there aren't any.
This speed up LiveVariables on instcombine at -O0 -g from 0.3855s to 0.3503s. Look for more improvements in this area soon!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52804 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
bf00c8120c63583bf2fdad5ee70bf3e4e5be8c49 27-Jun-2008 Owen Anderson <resistor@mac.com> Don't perform expensive queries checking for super and sub registers when we know that there aren't any.
This speed up LiveVariables on instcombine at -O0 -g from 0.3855s to 0.3503s. Look for more improvements in this area soon!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52804 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e6b6bae536a382ca76c738275b82c73b026cd6bf 27-Jun-2008 Bill Wendling <isanbard@gmail.com> - Remove a use of std::vector.
- Make sure that we're not recalculating the size of a vector
that never changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52803 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
ecc696f1491bc35db26cb0e10bd016f8d98e79e6 27-Jun-2008 Bill Wendling <isanbard@gmail.com> - Remove a use of std::vector.
- Make sure that we're not recalculating the size of a vector
that never changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52803 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
305635abeae1d20519b60856c89479e8b7b5d4dd 27-Jun-2008 Bill Wendling <isanbard@gmail.com> Refactor the DebugInfoDesc stuff out of the MachineModuleInfo file. Clean up
some uses of std::vector, where it's return std::vector by value. Yuck!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52800 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfoDesc.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
e15b119252ef67b84346bf18fd32365834d62602 27-Jun-2008 Bill Wendling <isanbard@gmail.com> Refactor the DebugInfoDesc stuff out of the MachineModuleInfo file. Clean up
some uses of std::vector, where it's return std::vector by value. Yuck!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52800 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfoDesc.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
f77e46be6d7c15656009c1e96423c4cdc3e60aa2 26-Jun-2008 Chris Lattner <sabre@nondot.org> duncan points out that isOperationLegal includes a check for
type legality. Thanks Duncan!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9532f02ba80b8149c8c74c74f89248f47a7d9c93 26-Jun-2008 Chris Lattner <sabre@nondot.org> duncan points out that isOperationLegal includes a check for
type legality. Thanks Duncan!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8342cfff9a221dd69c1d9c615414ec3b8c8db776 26-Jun-2008 Owen Anderson <resistor@mac.com> Don't create a whole new string just to copy the elements into it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52785 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
19fcb61031376f8a1895b58b38e4f5e72563dad7 26-Jun-2008 Owen Anderson <resistor@mac.com> Don't create a whole new string just to copy the elements into it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52785 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
b5dae003252d8e650a32bfdf33cba5aed8e41e40 26-Jun-2008 Dale Johannesen <dalej@apple.com> Fixes the last x86-64 test failure in compat.exp:
<16 x float> is 64-byte aligned (for some reason),
which gets us into the stack realignment code. The
computation changing FP-relative offsets to SP-relative
was broken, assiging a spill temp to a location
also used for parameter passing. This
fixes it by rounding up the stack frame to a multiple
of the largest alignment (I concluded it wasn't fixable
without doing this, but I'm not very sure.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52750 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
97215d6dc8d84cc93a8ea441d80a73c1ad24a172 26-Jun-2008 Dale Johannesen <dalej@apple.com> Fixes the last x86-64 test failure in compat.exp:
<16 x float> is 64-byte aligned (for some reason),
which gets us into the stack realignment code. The
computation changing FP-relative offsets to SP-relative
was broken, assiging a spill temp to a location
also used for parameter passing. This
fixes it by rounding up the stack frame to a multiple
of the largest alignment (I concluded it wasn't fixable
without doing this, but I'm not very sure.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52750 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
0d2b0aba424bd3959bb5c807873def8f53e57a3c 26-Jun-2008 Eric Christopher <echristo@apple.com> Move GetConstantStringInfo to lib/Analysis. Remove
string output routine from Constant. Update all
callers. Change debug intrinsic api slightly to
accomodate move of routine, these now return values
instead of strings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52748 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAG.cpp
3e73cd98c44d52f50e91bbad8267c68c9cdf906e 26-Jun-2008 Eric Christopher <echristo@apple.com> Move GetConstantStringInfo to lib/Analysis. Remove
string output routine from Constant. Update all
callers. Change debug intrinsic api slightly to
accomodate move of routine, these now return values
instead of strings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52748 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAG.cpp
cda8875433ef74c39c4151d1a58df0588168b2e2 26-Jun-2008 Chris Lattner <sabre@nondot.org> when we know the signbit of an input to uint_to_fp is zero,
change it to sint_to_fp on targets where that is cheaper (and
visaversa of course). This allows us to compile uint_to_fp to:

_test:
movl 4(%esp), %eax
shrl $23, %eax
cvtsi2ss %eax, %xmm0
movl 8(%esp), %eax
movss %xmm0, (%eax)
ret

instead of:

.align 3
LCPI1_0: ## double
.long 0 ## double least significant word 4.5036e+15
.long 1127219200 ## double most significant word 4.5036e+15
.text
.align 4,0x90
.globl _test
_test:
subl $12, %esp
movl 16(%esp), %eax
shrl $23, %eax
movl %eax, (%esp)
movl $1127219200, 4(%esp)
movsd (%esp), %xmm0
subsd LCPI1_0, %xmm0
cvtsd2ss %xmm0, %xmm0
movl 20(%esp), %eax
movss %xmm0, (%eax)
addl $12, %esp
ret




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8e0e2bdc2b04f49b23bfced688b02162ea842683 26-Jun-2008 Chris Lattner <sabre@nondot.org> when we know the signbit of an input to uint_to_fp is zero,
change it to sint_to_fp on targets where that is cheaper (and
visaversa of course). This allows us to compile uint_to_fp to:

_test:
movl 4(%esp), %eax
shrl $23, %eax
cvtsi2ss %eax, %xmm0
movl 8(%esp), %eax
movss %xmm0, (%eax)
ret

instead of:

.align 3
LCPI1_0: ## double
.long 0 ## double least significant word 4.5036e+15
.long 1127219200 ## double most significant word 4.5036e+15
.text
.align 4,0x90
.globl _test
_test:
subl $12, %esp
movl 16(%esp), %eax
shrl $23, %eax
movl %eax, (%esp)
movl $1127219200, 4(%esp)
movsd (%esp), %xmm0
subsd LCPI1_0, %xmm0
cvtsd2ss %xmm0, %xmm0
movl 20(%esp), %eax
movss %xmm0, (%eax)
addl $12, %esp
ret




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6b098dee286cc6fe5a5a476464d92dec5602e406 26-Jun-2008 Owen Anderson <resistor@mac.com> Remember which MachineOperand we were processing, so we don't have to scan the list to find it again later.
This speeds up live intervals from 0.37s to 0.30s on instcombine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52745 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5b691fc253bcd96e88601ef93115cd926d476faf 26-Jun-2008 Owen Anderson <resistor@mac.com> Remember which MachineOperand we were processing, so we don't have to scan the list to find it again later.
This speeds up live intervals from 0.37s to 0.30s on instcombine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52745 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
48b0b882c75f4f05000c53bc29e52096e1e51be3 26-Jun-2008 Dan Gohman <gohman@apple.com> Fix the text in an assert string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52744 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
2d70201e8e52f22f05c384fe336dc60d0b7134af 26-Jun-2008 Dan Gohman <gohman@apple.com> Fix the text in an assert string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52744 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
ab26227c8c9adce91a606a3691d4da08a9c8551c 25-Jun-2008 Evan Cheng <evan.cheng@apple.com> - Fix a x86 vector isel bug: illegal transformation of a vector_shuffle into a
shift.
- Add a readme entry for a missing vector_shuffle optimization that results in
awful codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52740 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
57db53ba66a5d7dfc7361df50bdf635fa94f4743 25-Jun-2008 Evan Cheng <evan.cheng@apple.com> - Fix a x86 vector isel bug: illegal transformation of a vector_shuffle into a
shift.
- Add a readme entry for a missing vector_shuffle optimization that results in
awful codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52740 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
041cde26eaf4ef6171ff1a44aeedd08d7a1cba6c 25-Jun-2008 Duncan Sands <baldrick@free.fr> Add support for expanding PPC 128 bit floats.
For this it is convenient to permit floats to
be used with EXTRACT_ELEMENT, so I tweaked
things to allow that. I also added libcalls
for ppcf128 to i32 forms of FP_TO_XINT, since
they exist in libgcc and this case can certainly
occur (and does occur in the testsuite) - before
the i64 libcall was being used. Also, the
XINT_TO_FP result seemed to be wrong when
the argument is an i128: the wrong fudge
factor was added (the i32 and i64 cases were
handled directly, but the i128 code fell
through to some generic softening code which
seemed to think it was i64 to f32!). So I
fixed it by adding a fudge factor that I
found in my breakfast cereal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52739 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
1568af892e006cb64363b5e2d23e1098005e7da2 25-Jun-2008 Duncan Sands <baldrick@free.fr> Add support for expanding PPC 128 bit floats.
For this it is convenient to permit floats to
be used with EXTRACT_ELEMENT, so I tweaked
things to allow that. I also added libcalls
for ppcf128 to i32 forms of FP_TO_XINT, since
they exist in libgcc and this case can certainly
occur (and does occur in the testsuite) - before
the i64 libcall was being used. Also, the
XINT_TO_FP result seemed to be wrong when
the argument is an i128: the wrong fudge
factor was added (the i32 and i64 cases were
handled directly, but the i128 code fell
through to some generic softening code which
seemed to think it was i64 to f32!). So I
fixed it by adding a fudge factor that I
found in my breakfast cereal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52739 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
11ac797f5ed142f11aafde3dd76c28a73d84282e 25-Jun-2008 Duncan Sands <baldrick@free.fr> Add/complete support for integer and float
select_cc and friends. This code could be
factorized a bit but I'm not sure that it's
worth it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52724 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
2499e1da9c01b9ef87b30956aec5546da1852ec2 25-Jun-2008 Duncan Sands <baldrick@free.fr> Add/complete support for integer and float
select_cc and friends. This code could be
factorized a bit but I'm not sure that it's
worth it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52724 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
fd4418fc9b4725c44210c169c4d6500be468ca70 25-Jun-2008 Dan Gohman <gohman@apple.com> Remove the OrigVT member from AtomicSDNode, as it is redundant with
the base SDNode's VTList.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52722 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
c70fa75851d6d762833c7d21a5c7790b585e6147 25-Jun-2008 Dan Gohman <gohman@apple.com> Remove the OrigVT member from AtomicSDNode, as it is redundant with
the base SDNode's VTList.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52722 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
28873106309db515d58889a4c4fa3e0a92d1b60e 25-Jun-2008 Mon P Wang <wangmp@apple.com> Added MemOperands to Atomic operations since Atomics touches memory.
Added abstract class MemSDNode for any Node that have an associated MemOperand
Changed atomic.lcs => atomic.cmp.swap, atomic.las => atomic.load.add, and
atomic.lss => atomic.load.sub


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52706 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
6bde9ec4129ed4b265c5b172cfe9b34d1e0247d2 25-Jun-2008 Mon P Wang <wangmp@apple.com> Added MemOperands to Atomic operations since Atomics touches memory.
Added abstract class MemSDNode for any Node that have an associated MemOperand
Changed atomic.lcs => atomic.cmp.swap, atomic.las => atomic.load.add, and
atomic.lss => atomic.load.sub


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52706 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
601ca4b434f5c67503a30575cc36b688b0d959e6 25-Jun-2008 Evan Cheng <evan.cheng@apple.com> Enable two-address remat by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52701 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
d2b9d30c8992c1c3a9b487f47f9885e75e53518e 25-Jun-2008 Evan Cheng <evan.cheng@apple.com> Enable two-address remat by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52701 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
873e1b56427eee7879168b50cca8a85b04f18093 24-Jun-2008 Owen Anderson <resistor@mac.com> Use SmallVector instead of std::vector for a minor compile time improvement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52689 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
88dd62339c9a18aee0552a54347551a3f713de0b 24-Jun-2008 Owen Anderson <resistor@mac.com> Use SmallVector instead of std::vector for a minor compile time improvement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52689 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
51cd9d6e073932fcb37f1857c66249d6c7d368ee 24-Jun-2008 Dan Gohman <gohman@apple.com> A brief survey of priority_queue usage in the tree turned this up
as a questionable case, but the code isn't actually needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52657 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
79a9f15a4d9d06205561756f72ea17b41143ccda 24-Jun-2008 Dan Gohman <gohman@apple.com> A brief survey of priority_queue usage in the tree turned this up
as a questionable case, but the code isn't actually needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52657 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
ebcba612b537f45a033ccd9a60bee0c45e2e2ded 24-Jun-2008 Bill Wendling <isanbard@gmail.com> This situation can occur:

,------.
| |
| v
| t2 = phi ... t1 ...
| |
| v
| t1 = ...
| ... = ... t1 ...
| |
`------'

where there is a use in a PHI node that's a predecessor to the defining
block. We don't want to mark all predecessors as having the value "alive" in
this case. Also, the assert was too restrictive and didn't handle this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52655 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
09d556630a0042c7166fc50ca90a660eab280e21 24-Jun-2008 Bill Wendling <isanbard@gmail.com> This situation can occur:

,------.
| |
| v
| t2 = phi ... t1 ...
| |
| v
| t1 = ...
| ... = ... t1 ...
| |
`------'

where there is a use in a PHI node that's a predecessor to the defining
block. We don't want to mark all predecessors as having the value "alive" in
this case. Also, the assert was too restrictive and didn't handle this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52655 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
aabdded3b4e8b87e586c6fed7d0f1d6906eb3351 24-Jun-2008 Dan Gohman <gohman@apple.com> Use the new PriorityQueue in ScheduleDAGList too, which also
needs arbitrary-element removal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52654 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
f02ae79c808c7be63992f2c5042af3bd1c5c6bf2 24-Jun-2008 Dan Gohman <gohman@apple.com> Use the new PriorityQueue in ScheduleDAGList too, which also
needs arbitrary-element removal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52654 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
b3db9c90d24682340f043a8151063128fe3b220b 24-Jun-2008 Owen Anderson <resistor@mac.com> Use getMBBEndIdx rather than assuming that the end is right after the last instruction in the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52649 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
747ac3674e5010248eb3a8d10fd32c6e12ef4d39 24-Jun-2008 Owen Anderson <resistor@mac.com> Use getMBBEndIdx rather than assuming that the end is right after the last instruction in the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52649 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d17e44769fcd2ca4052ea0cd8890c8290a94a881 23-Jun-2008 Evan Cheng <evan.cheng@apple.com> Remove option used to debug stack coloring bugs. It's no longer needed since stack coloring is now bug free.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52644 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
e75f53665af72b127cdca7610f07e5d0963f331f 23-Jun-2008 Evan Cheng <evan.cheng@apple.com> Remove option used to debug stack coloring bugs. It's no longer needed since stack coloring is now bug free.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52644 91177308-0d34-0410-b5e6-96231b3b80d8
tackSlotColoring.cpp
8cb8245cf117fc4a4f0a6549d9a773a12895550c 23-Jun-2008 Dan Gohman <gohman@apple.com> Move a DenseMap's declaration outside of a loop, and just call
clear() on each iteration. This avoids allocating and deallocating
all of DenseMap's memory on each iteration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52642 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3941fe11da8ffc3a5a0c444423ee056acfa3231c 23-Jun-2008 Dan Gohman <gohman@apple.com> Move a DenseMap's declaration outside of a loop, and just call
clear() on each iteration. This avoids allocating and deallocating
all of DenseMap's memory on each iteration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52642 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
99ec779a93cf7a09ac336b63d2d67818960343a1 23-Jun-2008 Evan Cheng <evan.cheng@apple.com> Instead of adding an isSS field to LiveInterval to denote stack slot. Use top bit of 'reg' instead. If the top bit is set, than the LiveInterval represents a stack slot live interval.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52639 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
tackSlotColoring.cpp
922e5f6ad546c1636371b3815b9915429e32cada 23-Jun-2008 Evan Cheng <evan.cheng@apple.com> Instead of adding an isSS field to LiveInterval to denote stack slot. Use top bit of 'reg' instead. If the top bit is set, than the LiveInterval represents a stack slot live interval.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52639 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
tackSlotColoring.cpp
0a4627d71f8f836558ef05c9739b560e82412687 23-Jun-2008 Dan Gohman <gohman@apple.com> Duncan pointed out this code could be tidied.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52624 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
edb43e7f3dc23f60f50d3524a1329eabf2b291dc 23-Jun-2008 Dan Gohman <gohman@apple.com> Duncan pointed out this code could be tidied.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52624 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e9c80f4d576bf1ff682958d447c1a60fa9348da3 23-Jun-2008 Duncan Sands <baldrick@free.fr> Port some integer multiplication fixes from LegalizeDAG.
Bail out with an error if there is no libcall available
for the given size of integer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52622 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
9bdaa203bed2e17b18735b99bc1ceba28646a96c 23-Jun-2008 Duncan Sands <baldrick@free.fr> Port some integer multiplication fixes from LegalizeDAG.
Bail out with an error if there is no libcall available
for the given size of integer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52622 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeIntegerTypes.cpp
4a307ecce68f90e0eebf1ded52b947816cdc2304 23-Jun-2008 Duncan Sands <baldrick@free.fr> Support for expanding the result of EXTRACT_ELEMENT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52621 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
5275afbfb6ae643383456cf4293041d2c11c6158 23-Jun-2008 Duncan Sands <baldrick@free.fr> Support for expanding the result of EXTRACT_ELEMENT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52621 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
ab09b7e8f34075c1759127a113f41bdf921f4034 23-Jun-2008 Duncan Sands <baldrick@free.fr> Cleanup up LegalizeTypes handling of loads and
stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
f6a721c7a51d15f54d103e3f0d9ac2df4cf255c7 23-Jun-2008 Duncan Sands <baldrick@free.fr> Cleanup up LegalizeTypes handling of loads and
stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
69bfb15ecd71881ec8d01be94af99b6d90d2fe01 22-Jun-2008 Duncan Sands <baldrick@free.fr> Make custom lowering of ADD work correctly. This
fixes PR2476; patch by Richard Osborne. The same
problem exists for a bunch of other operators, but
I'm ignoring this because they will be automagically
fixed when the new LegalizeTypes infrastructure lands,
since it already solves this problem centrally.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4c3885b732d7f8b882813ad8f7f5ce526bda3984 22-Jun-2008 Duncan Sands <baldrick@free.fr> Make custom lowering of ADD work correctly. This
fixes PR2476; patch by Richard Osborne. The same
problem exists for a bunch of other operators, but
I'm ignoring this because they will be automagically
fixed when the new LegalizeTypes infrastructure lands,
since it already solves this problem centrally.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
56867520990a4fea1353d55f71bb74a0126554e6 22-Jun-2008 Dan Gohman <gohman@apple.com> Simplify some getNode calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6d4bb112c5fbd538b814bac2d241e1f718f711fa 22-Jun-2008 Dan Gohman <gohman@apple.com> Simplify some getNode calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2f1d3108e481758da66662f72673741da86312da 22-Jun-2008 Dan Gohman <gohman@apple.com> canClobberPhysRegDefs shouldn't called without checking hasPhysRegDefs;
check this with an assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52603 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3c7b7d2b5b0ce8b1f5605e4d06bef8a7b4663a6c 22-Jun-2008 Dan Gohman <gohman@apple.com> canClobberPhysRegDefs shouldn't called without checking hasPhysRegDefs;
check this with an assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52603 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
317adcc9c6b29fb491d615996ba70b5c415a9eb2 22-Jun-2008 Dan Gohman <gohman@apple.com> Use clear() to zero an existing APInt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52601 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
75e24fbd4929f09370b005d9926dcc323a61a41f 22-Jun-2008 Dan Gohman <gohman@apple.com> Use clear() to zero an existing APInt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52601 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
719de53742167ca3f0e6b2efafb6eac18bd90452 22-Jun-2008 Dan Gohman <gohman@apple.com> Use back() instead of [size()-1].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52600 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
3d4360013e5125e6254cd5f91f9e9fd02859b868 22-Jun-2008 Dan Gohman <gohman@apple.com> Use back() instead of [size()-1].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52600 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
8d96144b0e9688a7d252be877d08c0699f879d70 21-Jun-2008 Dan Gohman <gohman@apple.com> Remove a redundant return.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52585 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
5c3794ea2a5e703834a43d8441faf8dbe8386f50 21-Jun-2008 Dan Gohman <gohman@apple.com> Remove a redundant return.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52585 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
94d7a5f8156e62532870fbaf197377b34e52ff2a 21-Jun-2008 Dan Gohman <gohman@apple.com> Remove ScheduleDAG's SUnitMap altogether. Instead, use SDNode's NodeId
field, which is otherwise unused after instruction selection, as an index
into the SUnit array.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52583 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGPrinter.cpp
018d7b7b844b0f3a439defbc4636b41ee1365247 21-Jun-2008 Dan Gohman <gohman@apple.com> Remove ScheduleDAG's SUnitMap altogether. Instead, use SDNode's NodeId
field, which is otherwise unused after instruction selection, as an index
into the SUnit array.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52583 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGPrinter.cpp
3627e34486db088661bc7fb6c0dde6a18a543217 21-Jun-2008 Dan Gohman <gohman@apple.com> Add a priority queue class, which is a wrapper around std::priority_queue
and provides fairly efficient removal of arbitrary elements. Switch
ScheduleDAGRRList from std::set to this new priority queue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52582 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
65ffc0df1c43c46b203e6ff88e53c41f33e21aea 21-Jun-2008 Dan Gohman <gohman@apple.com> Add a priority queue class, which is a wrapper around std::priority_queue
and provides fairly efficient removal of arbitrary elements. Switch
ScheduleDAGRRList from std::set to this new priority queue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52582 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
a1ace76c70ae5332d6f33fce5c0c1e2fdb8cca11 21-Jun-2008 Duncan Sands <baldrick@free.fr> Support for load/store of expanded float types. I
don't know if a truncating store is possible here,
but added support for it anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52577 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
0d84c348ed83b6450c6d1a9dba3934eff5c5eaec 21-Jun-2008 Duncan Sands <baldrick@free.fr> Support for load/store of expanded float types. I
don't know if a truncating store is possible here,
but added support for it anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52577 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.h
4c8c83022b501759d8559e224c84ae2a9921ba41 21-Jun-2008 Dan Gohman <gohman@apple.com> Change ScheduleDAG's SUnitMap from DenseMap<SDNode*, vector<SUnit*> >
to DenseMap<SDNode*, SUnit*>, and adjust the way cloned SUnit nodes are
handled so that only the original node needs to be in the map.
This speeds up llc on 447.dealII.llvm.bc by about 2%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52576 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGPrinter.cpp
ab16291b9f0afc54993f31c5ba171c9dd7cb4049 21-Jun-2008 Dan Gohman <gohman@apple.com> Change ScheduleDAG's SUnitMap from DenseMap<SDNode*, vector<SUnit*> >
to DenseMap<SDNode*, SUnit*>, and adjust the way cloned SUnit nodes are
handled so that only the original node needs to be in the map.
This speeds up llc on 447.dealII.llvm.bc by about 2%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52576 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGPrinter.cpp
c3417609ae6e744a29be6962d4fb7811c0102d17 21-Jun-2008 Evan Cheng <evan.cheng@apple.com> Undo spill weight tweak. Need to investigate the performance regressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52572 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
f7b45f47e5f61815ddd9f0481b0afa726d2ef955 21-Jun-2008 Evan Cheng <evan.cheng@apple.com> Undo spill weight tweak. Need to investigate the performance regressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52572 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
16c6859651d08946b769ad44f163216ad124175a 21-Jun-2008 Dan Gohman <gohman@apple.com> Simplify some template parameterization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
6fe96037ff0e10b513259c13ae0627f8f5aad592 21-Jun-2008 Dan Gohman <gohman@apple.com> Simplify some template parameterization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3e172254c136ce8170f17ad01f0706bd6e2e0505 20-Jun-2008 Evan Cheng <evan.cheng@apple.com> Enhanced heuristic to determine the *best* register to spill. Instead of picking the register with the lowest spill weight. Consider (up to) 2 additional registers with spill weights that are close to the lowest spill weight. The one with fewest defs and uses that conflicts with the current interval (weighted by loop depth) is the spill candidate.

This is not always a win, but there are much more wins than loses and wins tend to be more noticeable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52554 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
c59524504d17c07271387b177c5c7781f21c3305 20-Jun-2008 Evan Cheng <evan.cheng@apple.com> Enhanced heuristic to determine the *best* register to spill. Instead of picking the register with the lowest spill weight. Consider (up to) 2 additional registers with spill weights that are close to the lowest spill weight. The one with fewest defs and uses that conflicts with the current interval (weighted by loop depth) is the spill candidate.

This is not always a win, but there are much more wins than loses and wins tend to be more noticeable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52554 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
78cd649ad326f79a1f8424ca2b63cea3239a9a52 20-Jun-2008 Duncan Sands <baldrick@free.fr> Share some code that is common between integer and
float expansion (and sometimes vector splitting too).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
7c667d92c49bdb8938603bf0ff5ee3158945ea25 20-Jun-2008 Duncan Sands <baldrick@free.fr> Share some code that is common between integer and
float expansion (and sometimes vector splitting too).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesGeneric.cpp
electionDAG/LegalizeVectorTypes.cpp
4fc4fd657d4266059dac3849133a3a351b03d99d 20-Jun-2008 Duncan Sands <baldrick@free.fr> Rename the operation of turning a float type into an
integer of the same type. Before it was "promotion",
but this is confusing because it is quite different
to promotion of integers. Call it "softening" instead,
inspired by "soft float".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
8f036b4ae53d52851497a9ddca9f5e3ab77d8fd1 20-Jun-2008 Duncan Sands <baldrick@free.fr> Rename the operation of turning a float type into an
integer of the same type. Before it was "promotion",
but this is confusing because it is quite different
to promotion of integers. Call it "softening" instead,
inspired by "soft float".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeVectorTypes.cpp
3461cc9e9842c7bce46b9d6e114ff8e44d8ba7b9 20-Jun-2008 Dan Gohman <gohman@apple.com> Clean up some uses of std::distance, now that we have allnodes_size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
17495ded2595481ff1ba2aa9299b04f8397bc913 20-Jun-2008 Dan Gohman <gohman@apple.com> Clean up some uses of std::distance, now that we have allnodes_size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
ab8ec0a26caa754f0376dbdede3a33ad84f23e21 20-Jun-2008 Dan Gohman <gohman@apple.com> Teach ReturnInst lowering about aggregate return values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52522 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4f4a3493984b5c0c21b11f70ac4bc0bfad47bbf1 20-Jun-2008 Dan Gohman <gohman@apple.com> Teach ReturnInst lowering about aggregate return values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52522 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
dded0fd398bf744454b2c9c95b68f4a27025f880 20-Jun-2008 Dan Gohman <gohman@apple.com> Fix the index calculations for the extractvalue lowering code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52517 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4ec23c4afb2a38b4ca09c50bd58ac443e61d0919 20-Jun-2008 Dan Gohman <gohman@apple.com> Fix the index calculations for the extractvalue lowering code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52517 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8f36f6d11761246bb4bd4ae1be88a58ba24d96b0 20-Jun-2008 Dan Gohman <gohman@apple.com> Simplify the ComputeLinearIndex logic and fix a few bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52516 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b23f4f1131c7009cbfe647e0c0be43da582d9a19 20-Jun-2008 Dan Gohman <gohman@apple.com> Simplify the ComputeLinearIndex logic and fix a few bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52516 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c8af52c8980fa4a06f24e6fc08678ff8378088a1 20-Jun-2008 Evan Cheng <evan.cheng@apple.com> ISD::UNDEF should be expanded recursively / iteratively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52508 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b7ba44b44eb7feec1baab61778e044244344e380 20-Jun-2008 Evan Cheng <evan.cheng@apple.com> ISD::UNDEF should be expanded recursively / iteratively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52508 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
04478e56f736325d3567e7c0efe2bb5c2766c63b 19-Jun-2008 Dan Gohman <gohman@apple.com> Use the transferSuccessors helper function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52495 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
f995c02abcd8025b13cbc08e38837acaed49cbb4 19-Jun-2008 Dan Gohman <gohman@apple.com> Use the transferSuccessors helper function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52495 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
32a3ac79116ce93471cd18ede24452c6af5b290b 19-Jun-2008 Evan Cheng <evan.cheng@apple.com> Missed a check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52487 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
a18a2532ff420f7bf84a3a0d7a1979c94586efe7 19-Jun-2008 Evan Cheng <evan.cheng@apple.com> Missed a check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52487 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
29b039976fd682716c6b8ed1cb7084226b2ad84b 19-Jun-2008 Owen Anderson <resistor@mac.com> Revert my last patch, which was causing regression test failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52485 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
03d96b966db9f1039c6695482157f864e1e670b0 19-Jun-2008 Owen Anderson <resistor@mac.com> Revert my last patch, which was causing regression test failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52485 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e00f5de361bcc69d05e07303460e6849668b7169 19-Jun-2008 Evan Cheng <evan.cheng@apple.com> Coalesce copy from one register class to a sub register class. e.g. X86::MOV16to16_.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52480 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
ce236271181d58d6308d0f75fc49dd8719250acd 19-Jun-2008 Evan Cheng <evan.cheng@apple.com> Coalesce copy from one register class to a sub register class. e.g. X86::MOV16to16_.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52480 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
1b38ec83f07d5801035567160008cd7cb99a5c1a 19-Jun-2008 Evan Cheng <evan.cheng@apple.com> Cosmetic changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52479 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
a43fc8c36cb7f1bbe1881ad683f4d1373988b035 19-Jun-2008 Evan Cheng <evan.cheng@apple.com> Cosmetic changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52479 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
bdf34bc12bfc39de02c19fa250e83edb5924a6cf 19-Jun-2008 Evan Cheng <evan.cheng@apple.com> Minor spiller tweak to unfavor reload into load/store instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52477 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1e99d271185f0e060d9109d8de9852265a6ff12f 19-Jun-2008 Evan Cheng <evan.cheng@apple.com> Minor spiller tweak to unfavor reload into load/store instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52477 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6c5e5616687e99329ffa790d2b40ab0f9c2e09f7 19-Jun-2008 Owen Anderson <resistor@mac.com> Insert empty slots into the instruction numbering in live intervals, so that we can more easily
add new instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52475 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
25de663f8343317f618460e7f145df1484d91945 19-Jun-2008 Owen Anderson <resistor@mac.com> Insert empty slots into the instruction numbering in live intervals, so that we can more easily
add new instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52475 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f7acf8f288a3e012df363f18aeca788300ddb416 18-Jun-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix the source line debug information for the Windows platform.

According to DWARF-2 specification, the line information is provided through an offset in the .debug_line section.
Replace the label reference that is used with a section offset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52468 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
03449656a5e0c47b8f1720bb4750b91aae70eb15 18-Jun-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Fix the source line debug information for the Windows platform.

According to DWARF-2 specification, the line information is provided through an offset in the .debug_line section.
Replace the label reference that is used with a section offset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52468 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
7543e58a779b1bafc730cec0a9a26b896bd1f71a 18-Jun-2008 Evan Cheng <evan.cheng@apple.com> Complete support for two-address pass rematerialization. Now *almost* always a win.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52452 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
990dd2b465e706d9390b906b6d42991fbfff8d03 18-Jun-2008 Evan Cheng <evan.cheng@apple.com> Complete support for two-address pass rematerialization. Now *almost* always a win.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52452 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
625986afea1b040bcf087156e4a0389ffafdbe1e 18-Jun-2008 Evan Cheng <evan.cheng@apple.com> Cosmetic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52450 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
e3c4f5387879d7287bc6f5ffaf7f07542b360df9 18-Jun-2008 Evan Cheng <evan.cheng@apple.com> Cosmetic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52450 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
f26e8557deccd5fb28b56548ca5f7ea25aee31c6 17-Jun-2008 Evan Cheng <evan.cheng@apple.com> Live-through live interval is [mbb start, mbb end+1].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52431 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5ac16ae31a1a7aae5ecc0aa433bd83092f604558 17-Jun-2008 Evan Cheng <evan.cheng@apple.com> Live-through live interval is [mbb start, mbb end+1].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52431 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
739583be564b487ac8581b9261447f0fbd591778 17-Jun-2008 Evan Cheng <evan.cheng@apple.com> When extending a liveinterval by commuting, don't throw away the live ranges that are not affected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52430 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f4bacb4eb239be6a6ea7ffa127b92a000fee24cb 17-Jun-2008 Evan Cheng <evan.cheng@apple.com> When extending a liveinterval by commuting, don't throw away the live ranges that are not affected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52430 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
95350b9cd2c7ccdc5d1e2118742c1a43012c7a9f 17-Jun-2008 Evan Cheng <evan.cheng@apple.com> It's not safe to remove SUBREG_TO_REG that looks like identity copies, e.g. movl %eax, %eax on x86-64 actually does a zero-extend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52421 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
b8dd4ebdab0aba135dabfba06749c1c4a0c382ac 17-Jun-2008 Evan Cheng <evan.cheng@apple.com> It's not safe to remove SUBREG_TO_REG that looks like identity copies, e.g. movl %eax, %eax on x86-64 actually does a zero-extend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52421 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
69b01e92a29ce6d7e435171aeea3fbc987b81586 17-Jun-2008 Duncan Sands <baldrick@free.fr> Split type expansion into ExpandInteger and ExpandFloat
rather than bundling them together. Rename FloatToInt
to PromoteFloat (better, if not perfect). Reorganize
files by types rather than by operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52408 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesFloatToInt.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
electionDAG/LegalizeVectorTypes.cpp
1947a38d00ef1c405ca32611f5443e91814ca5d4 17-Jun-2008 Duncan Sands <baldrick@free.fr> Split type expansion into ExpandInteger and ExpandFloat
rather than bundling them together. Rename FloatToInt
to PromoteFloat (better, if not perfect). Reorganize
files by types rather than by operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52408 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeFloatTypes.cpp
electionDAG/LegalizeIntegerTypes.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesFloatToInt.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
electionDAG/LegalizeVectorTypes.cpp
ead0d88ad7659dabd66cc3149af97d98256fca84 17-Jun-2008 Chris Lattner <sabre@nondot.org> add a new -enable-value-prop flag for llcbeta, that enables propagation
of value info (sign/zero ext info) from one MBB to another. This doesn't
handle much right now because of two limitations:

1) only handles zext/sext, not random bit propagation (no assert exists
for this)
2) doesn't handle phis.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
68068cc986bf56a5a8dd748313877042a15bb4b8 17-Jun-2008 Chris Lattner <sabre@nondot.org> add a new -enable-value-prop flag for llcbeta, that enables propagation
of value info (sign/zero ext info) from one MBB to another. This doesn't
handle much right now because of two limitations:

1) only handles zext/sext, not random bit propagation (no assert exists
for this)
2) doesn't handle phis.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a47c6c37034f4e57bc8187e959da4eadb6e24afa 17-Jun-2008 Duncan Sands <baldrick@free.fr> Fix spelling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52381 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
10fbb3512c60dd1cff8e6e330aab66dbbb5ea642 17-Jun-2008 Duncan Sands <baldrick@free.fr> Fix spelling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52381 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c3de802ad9f0dbbb5c6531b0d30fbe96fc3c36c4 17-Jun-2008 Evan Cheng <evan.cheng@apple.com> Do not issue identity copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52373 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
b314101dc2607b3f9d2ec089e21aca408078fa45 17-Jun-2008 Evan Cheng <evan.cheng@apple.com> Do not issue identity copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52373 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
31ec841be1f51a60f5b655aa2a008eb68e48c07a 16-Jun-2008 Owen Anderson <resistor@mac.com> Remove special case handling of empty MBBs now that we assign indices to them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52345 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4bebfea3c4faaad5bbed03d57451b6418b827dba 16-Jun-2008 Owen Anderson <resistor@mac.com> Remove special case handling of empty MBBs now that we assign indices to them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52345 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1fbb4545d41e65191ae66a7302276fa5424518c5 16-Jun-2008 Owen Anderson <resistor@mac.com> Re-enable empty block indexing by default, since it doesn't seem to have any
impact on code quality or compile time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52329 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7894e5bbac35100047396161587a0875f93828e1 16-Jun-2008 Owen Anderson <resistor@mac.com> Re-enable empty block indexing by default, since it doesn't seem to have any
impact on code quality or compile time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52329 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ad205a76871b5112a4bf70edca0df9d03b92de49 16-Jun-2008 Duncan Sands <baldrick@free.fr> Allow these transforms for types like i256 while
still excluding types like i1 (not byte sized)
and i120 (loading an i120 requires loading an i64,
an i32, an i16 and an i8, which is expensive).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3ea93358820c13b1e28c13e1a04ee9c12cdaa990 16-Jun-2008 Duncan Sands <baldrick@free.fr> Allow these transforms for types like i256 while
still excluding types like i1 (not byte sized)
and i120 (loading an i120 requires loading an i64,
an i32, an i16 and an i8, which is expensive).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7a15391c8dad7d4ff265b6b8f5aa6bcc50107c7a 16-Jun-2008 Evan Cheng <evan.cheng@apple.com> Fix read after free found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52309 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
c766e67967a936a6bcd056ffffff110838957e01 16-Jun-2008 Evan Cheng <evan.cheng@apple.com> Fix read after free found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52309 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
58dcb0e0cd3fa973b5fd005aecab1df6aeea5cd6 16-Jun-2008 Evan Cheng <evan.cheng@apple.com> Add option to commuteInstruction() which forces it to create a new (commuted) instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52308 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
5de1aaf2f10d461d117f83da132515471b860026 16-Jun-2008 Evan Cheng <evan.cheng@apple.com> Add option to commuteInstruction() which forces it to create a new (commuted) instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52308 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
355780128986e375c7ac2a75025ac129bb8280bf 16-Jun-2008 Owen Anderson <resistor@mac.com> Make indexing empty basic blocks an option for the moment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52306 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d2e874b20d517ede9f6bf2aeeaeb7849f025e192 16-Jun-2008 Owen Anderson <resistor@mac.com> Make indexing empty basic blocks an option for the moment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52306 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8892b6f30792bbc56f40d01a4ae9834a55cf8b1a 16-Jun-2008 Owen Anderson <resistor@mac.com> Assign indices to empty basic blocks. This will be necessary for StrongPHIElimination in the near future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52300 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
951b33d76f5f47281d7bd1c2d660499d4d51b291 16-Jun-2008 Owen Anderson <resistor@mac.com> Assign indices to empty basic blocks. This will be necessary for StrongPHIElimination in the near future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52300 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ec87aa87fea8cc5b5961849a34abb79ef7df64bc 15-Jun-2008 Duncan Sands <baldrick@free.fr> The transforms in visitEXTRACT_VECTOR_ELT are
not valid if the load is volatile. Hopefully
all wrong DAG combiner transforms of volatile
loads and stores have now been caught.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52293 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c218a5aa8938bfc2a48c11b40ba2fad6fdb4484b 15-Jun-2008 Duncan Sands <baldrick@free.fr> The transforms in visitEXTRACT_VECTOR_ELT are
not valid if the load is volatile. Hopefully
all wrong DAG combiner transforms of volatile
loads and stores have now been caught.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52293 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7d0d8460646d1a06ff561775d40123a4cf65bf4d 15-Jun-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for INSERT_VECTOR_ELT with
a non-constant index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52292 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesSplit.cpp
fc2db139e5e1ac954e2f60d1495a832a40d1b705 15-Jun-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for INSERT_VECTOR_ELT with
a non-constant index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52292 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesSplit.cpp
184a876ee61dbbd602597f35e18240a5df8f5ee4 14-Jun-2008 Duncan Sands <baldrick@free.fr> Remove a redundant AfterLegalize check. Turn
on some code when !AfterLegalize - but since
this whole code section is turned off by an
"if (0)" it's not really turning anything on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52276 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6ae1a063bf798a5991a9d599613a4bc28e0b269e 14-Jun-2008 Duncan Sands <baldrick@free.fr> Remove a redundant AfterLegalize check. Turn
on some code when !AfterLegalize - but since
this whole code section is turned off by an
"if (0)" it's not really turning anything on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52276 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
507a58ac9b20ddcea2e56a014be26b8f8cc0ecb8 14-Jun-2008 Andrew Lenharth <andrewl@lenharth.org> add missing atomic intrinsic from gcc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52270 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
af02d599bddfe945ab551f5a934ec0d7ecab3c0b 14-Jun-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> add missing atomic intrinsic from gcc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52270 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
87bb991aa83c269295504443fe3ad1cae16f0f76 14-Jun-2008 Evan Cheng <evan.cheng@apple.com> Teach the spiller to commute instructions in order to fold a reload. This hits 410 times on 444.namd and 122 times on 252.eon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52266 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
5ed91b58a6a6e0ea7c745834be585cbf951a77b3 14-Jun-2008 Evan Cheng <evan.cheng@apple.com> Teach the spiller to commute instructions in order to fold a reload. This hits 410 times on 444.namd and 122 times on 252.eon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52266 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
d4b9c17fb705c2f58ceef4f37d789ddb56783584 13-Jun-2008 Duncan Sands <baldrick@free.fr> Disable some DAG combiner optimizations that may be
wrong for volatile loads and stores. In fact this
is almost all of them! There are three types of
problems: (1) it is wrong to change the width of
a volatile memory access. These may be used to
do memory mapped i/o, in which case a load can have
an effect even if the result is not used. Consider
loading an i32 but only using the lower 8 bits. It
is wrong to change this into a load of an i8, because
you are no longer tickling the other three bytes. It
is also unwise to make a load/store wider. For
example, changing an i16 load into an i32 load is
wrong no matter how aligned things are, since the
fact of loading an additional 2 bytes can have
i/o side-effects. (2) it is wrong to change the
number of volatile load/stores: they may be counted
by the hardware. (3) it is wrong to change a volatile
load/store that requires one memory access into one
that requires several. For example on x86-32, you
can store a double in one processor operation, but to
store an i64 requires two (two i32 stores). In a
multi-threaded program you may want to bitcast an i64
to a double and store as a double because that will
occur atomically, and be indivisible to other threads.
So it would be wrong to convert the store-of-double
into a store of an i64, because this will become two
i32 stores - no longer atomic. My policy here is
to say that the number of processor operations for
an illegal operation is undefined. So it is alright
to change a store of an i64 (requires at least two
stores; but could be validly lowered to memcpy for
example) into a store of double (one processor op).
In short, if the new store is legal and has the same
size then I say that the transform is ok. It would
also be possible to say that transforms are always
ok if before they were illegal, whether after they
are illegal or not, but that's more awkward to do
and I doubt it buys us anything much.
However this exposed an interesting thing - on x86-32
a store of i64 is considered legal! That is because
operations are marked legal by default, regardless of
whether the type is legal or not. In some ways this
is clever: before type legalization this means that
operations on illegal types are considered legal;
after type legalization there are no illegal types
so now operations are only legal if they really are.
But I consider this to be too cunning for mere mortals.
Better to do things explicitly by testing AfterLegalize.
So I have changed things so that operations with illegal
types are considered illegal - indeed they can never
map to a machine operation. However this means that
the DAG combiner is more conservative because before
it was "accidentally" performing transforms where the
type was illegal because the operation was nonetheless
marked legal. So in a few such places I added a check
on AfterLegalize, which I suppose was actually just
forgotten before. This causes the DAG combiner to do
slightly more than it used to, which resulted in the X86
backend blowing up because it got a slightly surprising
node it wasn't expecting, so I tweaked it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
2418becee47126d941d7c1d879df7de9ed20d550 13-Jun-2008 Duncan Sands <baldrick@free.fr> Disable some DAG combiner optimizations that may be
wrong for volatile loads and stores. In fact this
is almost all of them! There are three types of
problems: (1) it is wrong to change the width of
a volatile memory access. These may be used to
do memory mapped i/o, in which case a load can have
an effect even if the result is not used. Consider
loading an i32 but only using the lower 8 bits. It
is wrong to change this into a load of an i8, because
you are no longer tickling the other three bytes. It
is also unwise to make a load/store wider. For
example, changing an i16 load into an i32 load is
wrong no matter how aligned things are, since the
fact of loading an additional 2 bytes can have
i/o side-effects. (2) it is wrong to change the
number of volatile load/stores: they may be counted
by the hardware. (3) it is wrong to change a volatile
load/store that requires one memory access into one
that requires several. For example on x86-32, you
can store a double in one processor operation, but to
store an i64 requires two (two i32 stores). In a
multi-threaded program you may want to bitcast an i64
to a double and store as a double because that will
occur atomically, and be indivisible to other threads.
So it would be wrong to convert the store-of-double
into a store of an i64, because this will become two
i32 stores - no longer atomic. My policy here is
to say that the number of processor operations for
an illegal operation is undefined. So it is alright
to change a store of an i64 (requires at least two
stores; but could be validly lowered to memcpy for
example) into a store of double (one processor op).
In short, if the new store is legal and has the same
size then I say that the transform is ok. It would
also be possible to say that transforms are always
ok if before they were illegal, whether after they
are illegal or not, but that's more awkward to do
and I doubt it buys us anything much.
However this exposed an interesting thing - on x86-32
a store of i64 is considered legal! That is because
operations are marked legal by default, regardless of
whether the type is legal or not. In some ways this
is clever: before type legalization this means that
operations on illegal types are considered legal;
after type legalization there are no illegal types
so now operations are only legal if they really are.
But I consider this to be too cunning for mere mortals.
Better to do things explicitly by testing AfterLegalize.
So I have changed things so that operations with illegal
types are considered illegal - indeed they can never
map to a machine operation. However this means that
the DAG combiner is more conservative because before
it was "accidentally" performing transforms where the
type was illegal because the operation was nonetheless
marked legal. So in a few such places I added a check
on AfterLegalize, which I suppose was actually just
forgotten before. This causes the DAG combiner to do
slightly more than it used to, which resulted in the X86
backend blowing up because it got a slightly surprising
node it wasn't expecting, so I tweaked it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
edfcf598faab9ce294712551ecf67093acd1c66e 11-Jun-2008 Duncan Sands <baldrick@free.fr> Sometimes (rarely) nodes held in LegalizeTypes
maps can be deleted. This happens when RAUW
replaces a node N with another equivalent node
E, deleting the first node. Solve this by
adding (N, E) to ReplacedNodes, which is already
used to remap nodes to replacements. This means
that deleted nodes are being allowed in maps,
which can be delicate: the memory may be reused
for a new node which might get confused with the
old deleted node pointer hanging around in the
maps, so detect this and flush out maps if it
occurs (ExpungeNode). The expunging operation
is expensive, however it never occurs during
a llvm-gcc bootstrap or anywhere in the nightly
testsuite. It occurs three times in "make check":
Alpha/illegal-element-type.ll,
PowerPC/illegal-element-type.ll and
X86/mmx-shift.ll. If expunging proves to be too
expensive then there are other more complicated
ways of solving the problem.
In the normal case this patch adds the overhead
of a few more map lookups, which is hopefully
negligable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52214 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
3866b1c7d4aee4a039018c21125059385152eee2 11-Jun-2008 Duncan Sands <baldrick@free.fr> Sometimes (rarely) nodes held in LegalizeTypes
maps can be deleted. This happens when RAUW
replaces a node N with another equivalent node
E, deleting the first node. Solve this by
adding (N, E) to ReplacedNodes, which is already
used to remap nodes to replacements. This means
that deleted nodes are being allowed in maps,
which can be delicate: the memory may be reused
for a new node which might get confused with the
old deleted node pointer hanging around in the
maps, so detect this and flush out maps if it
occurs (ExpungeNode). The expunging operation
is expensive, however it never occurs during
a llvm-gcc bootstrap or anywhere in the nightly
testsuite. It occurs three times in "make check":
Alpha/illegal-element-type.ll,
PowerPC/illegal-element-type.ll and
X86/mmx-shift.ll. If expunging proves to be too
expensive then there are other more complicated
ways of solving the problem.
In the normal case this patch adds the overhead
of a few more map lookups, which is hopefully
negligable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52214 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/SelectionDAG.cpp
9ea3f56d07875ecb4ae2cd5bc14a9563b9742553 10-Jun-2008 Dan Gohman <gohman@apple.com> Teach isGAPlusOffset to respect a GlobalAddressSDNode's offset
value, which is something that apparently isn't used much.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52158 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
004038485ae911c3e289e43006413802d085452e 10-Jun-2008 Dan Gohman <gohman@apple.com> Teach isGAPlusOffset to respect a GlobalAddressSDNode's offset
value, which is something that apparently isn't used much.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52158 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
f5025cfa683b4cfb9f04b1e63dac7364a5dbf900 09-Jun-2008 Dan Gohman <gohman@apple.com> CodeGen support for aggregate-value function arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52156 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1bb942642c7a94942dace21a884ddcc39217070d 09-Jun-2008 Dan Gohman <gohman@apple.com> CodeGen support for aggregate-value function arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52156 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
893076354a9fdb915cda27678570914dfd5732fa 09-Jun-2008 Duncan Sands <baldrick@free.fr> Various tweaks related to apint codegen. No functionality
change for non-funky-sized integers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52151 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/TargetLowering.cpp
eedb3bf6a63653ac4c76e5f64764294742b9c70a 09-Jun-2008 Duncan Sands <baldrick@free.fr> Various tweaks related to apint codegen. No functionality
change for non-funky-sized integers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52151 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/TargetLowering.cpp
8a6ccb5f73cf2e490faa181ad6662633b3ee38df 09-Jun-2008 Dan Gohman <gohman@apple.com> Handle empty aggregate values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9115c7e89bca18364dba54ec8c7bba2da39b20d8 09-Jun-2008 Dan Gohman <gohman@apple.com> Handle empty aggregate values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8eab8a2798fe74c98703bdeac64661beea0b4dbc 09-Jun-2008 Duncan Sands <baldrick@free.fr> Remove some DAG combiner assumptions about sizes
of integer types. Fix the isMask APInt method to
actually work (hopefully) rather than crashing
because it adds apints of different bitwidths.
It looks like isShiftedMask is also broken, but
I'm leaving that one to the APInt people (it is
not used anywhere).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52142 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6a437fb3735376bcf28fb7d3b4f6d7e44c1d3a34 09-Jun-2008 Duncan Sands <baldrick@free.fr> Remove some DAG combiner assumptions about sizes
of integer types. Fix the isMask APInt method to
actually work (hopefully) rather than crashing
because it adds apints of different bitwidths.
It looks like isShiftedMask is also broken, but
I'm leaving that one to the APInt people (it is
not used anywhere).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52142 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8e4eb09b1e3571965f49edcdfb56b1375b1b7551 08-Jun-2008 Duncan Sands <baldrick@free.fr> Remove comparison methods for MVT. The main cause
of apint codegen failure is the DAG combiner doing
the wrong thing because it was comparing MVT's using
< rather than comparing the number of bits. Removing
the < method makes this mistake impossible to commit.
Instead, add helper methods for comparing bits and use
them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52098 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesFloatToInt.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
ec142ee0b2a63ede390353860e0f22201b850d8b 08-Jun-2008 Duncan Sands <baldrick@free.fr> Remove comparison methods for MVT. The main cause
of apint codegen failure is the DAG combiner doing
the wrong thing because it was comparing MVT's using
< rather than comparing the number of bits. Removing
the < method makes this mistake impossible to commit.
Instead, add helper methods for comparing bits and use
them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52098 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesFloatToInt.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
1d685a46bf0c2f54378bc074c0b874bb7d12032e 07-Jun-2008 Dan Gohman <gohman@apple.com> CodeGen support for insertvalue and extractvalue, and for loads and
stores of aggregate values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52069 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
012bf581771137028c245496f21cae0099c3f2df 07-Jun-2008 Dan Gohman <gohman@apple.com> CodeGen support for insertvalue and extractvalue, and for loads and
stores of aggregate values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52069 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2d389e8ad7e98fa50f8d021a7669ba0aab07a571 07-Jun-2008 Owen Anderson <resistor@mac.com> Connect successors before creating the DAG node for the branch. This has
no visible functionality change, but enables a future patch where node creation
will update the CFG if it decides to create an unconditional rather than a conditional branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52067 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
451a11271e6910c98804acabfe0284ddc5eee348 07-Jun-2008 Owen Anderson <resistor@mac.com> Connect successors before creating the DAG node for the branch. This has
no visible functionality change, but enables a future patch where node creation
will update the CFG if it decides to create an unconditional rather than a conditional branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52067 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
877333b99dd830c3e8bb7eaa1345ea942d29fc06 06-Jun-2008 Evan Cheng <evan.cheng@apple.com> Enable stack coloring by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52057 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
EADME.txt
25b3598596366ffbd88f65ecb8e0b3c273b35622 06-Jun-2008 Evan Cheng <evan.cheng@apple.com> Enable stack coloring by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52057 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
EADME.txt
3b3adbb7456411957681e590b29697b3af307dd1 06-Jun-2008 Duncan Sands <baldrick@free.fr> Tighten up the abstraction slightly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52045 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3f5d243a231822874448d0f6353cdbf8c9f22bf9 06-Jun-2008 Duncan Sands <baldrick@free.fr> Tighten up the abstraction slightly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52045 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
83ec4b6711980242ef3c55a4fa36b2d7a39c1bfb 06-Jun-2008 Duncan Sands <baldrick@free.fr> Wrap MVT::ValueType in a struct to get type safety
and better control the abstraction. Rename the type
to MVT. To update out-of-tree patches, the main
thing to do is to rename MVT::ValueType to MVT, and
rewrite expressions like MVT::getSizeInBits(VT) in
the form VT.getSizeInBits(). Use VT.getSimpleVT()
to extract a MVT::SimpleValueType for use in switch
statements (you will get an assert failure if VT is
an extended value type - these shouldn't exist after
type legalization).
This results in a small speedup of codegen and no
new testsuite failures (x86-64 linux).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52044 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesFloatToInt.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
92c439168b552f73b1459d8ce1e31975cdca6d2a 06-Jun-2008 Duncan Sands <baldrick@free.fr> Wrap MVT::ValueType in a struct to get type safety
and better control the abstraction. Rename the type
to MVT. To update out-of-tree patches, the main
thing to do is to rename MVT::ValueType to MVT, and
rewrite expressions like MVT::getSizeInBits(VT) in
the form VT.getSizeInBits(). Use VT.getSimpleVT()
to extract a MVT::SimpleValueType for use in switch
statements (you will get an assert failure if VT is
an extended value type - these shouldn't exist after
type legalization).
This results in a small speedup of codegen and no
new testsuite failures (x86-64 linux).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52044 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesFloatToInt.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
9c3c2213647e3f1b71722d61875ebac01b65cb91 06-Jun-2008 Evan Cheng <evan.cheng@apple.com> Refine stack slot interval weight computation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52040 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
ba221ca2410097537bad9d3a346ae9eb8e332e7c 06-Jun-2008 Evan Cheng <evan.cheng@apple.com> Refine stack slot interval weight computation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52040 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
417dc2f5958b7233011b55bf36b20eae5a50f83f 05-Jun-2008 Owen Anderson <resistor@mac.com> Remove debugging code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52016 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
dbb3acf4655c2327a474a969c37ebe3743a2091f 05-Jun-2008 Owen Anderson <resistor@mac.com> Remove debugging code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52016 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
a9efb264b02d83fab150b6869ef2d372949a1303 05-Jun-2008 Owen Anderson <resistor@mac.com> Use the newly created helper on LiveIntervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52013 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
4d178405b364d8ab64f5c6bec4acf1ffed6ef5cf 05-Jun-2008 Owen Anderson <resistor@mac.com> Use the newly created helper on LiveIntervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52013 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
c4dc132c8a787fc41b6a162121251234aa618965 05-Jun-2008 Owen Anderson <resistor@mac.com> Add a helper for constructing new live ranges that ended from an instruction to the end of its MBB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52012 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7399f22868d17689ed5e3c6806808998b9963d93 05-Jun-2008 Owen Anderson <resistor@mac.com> Add a helper for constructing new live ranges that ended from an instruction to the end of its MBB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52012 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
fb4db316d835fa9774d608ac58336a24c7867192 05-Jun-2008 Evan Cheng <evan.cheng@apple.com> Fix a memcpy lowering bug. Even though the memcpy alignment is smaller than the desired alignment, the frame destination alignment may still be larger than the desired alignment. Don't change its alignment to something smaller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51970 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
36cd886d9a864f23b8f6f0231fbbffa5e5256481 05-Jun-2008 Evan Cheng <evan.cheng@apple.com> Fix a memcpy lowering bug. Even though the memcpy alignment is smaller than the desired alignment, the frame destination alignment may still be larger than the desired alignment. Don't change its alignment to something smaller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51970 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
75bb734f1d4d50ebb377bd030e2ee002a09be673 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> Oops. Should not be enabled by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51953 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
557d799fcd5a258872de6fef354ef4e4086e221e 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> Oops. Should not be enabled by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51953 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
38b425020b102716d58c0833ff9ef56bc1d750c4 04-Jun-2008 Owen Anderson <resistor@mac.com> Correctly construct live intervals for the copies we inserted into the predecessors of a block containing a PHI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51950 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
28bffa36f38b47fb412000045179d8150c3b48d9 04-Jun-2008 Owen Anderson <resistor@mac.com> Correctly construct live intervals for the copies we inserted into the predecessors of a block containing a PHI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51950 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
7a315e865ab676099c660fec0b6e65f763b97e39 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> Revert this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51949 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
5ca6eb1d0fca8e081504fd6114744ef592893a5d 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> Revert this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51949 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
3f32d65912b4da23793dab618d981be2ce11c331 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> Add a stack slot coloring pass. Not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51934 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
egAllocLinearScan.cpp
tackSlotColoring.cpp
14f8a50ce74830eb97811e52914ddca26ffedaa4 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> Add a stack slot coloring pass. Not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51934 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveStackAnalysis.cpp
egAllocLinearScan.cpp
tackSlotColoring.cpp
d8a46e3a74251989f282ca186893dc90bf48e26d 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> LowerSubregs should not clobber any analysis.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51933 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
375cac23b0efe93bdd869790aee9a5c2e0a6968c 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> LowerSubregs should not clobber any analysis.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51933 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
cb74266cdbcd79efb46f8c1c66ca044cb0ac5f96 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> Move #include to right place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51932 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
1376d86aa7ca10c805382047296b9451943fb108 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> Move #include to right place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51932 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
b3dd264f9d356afd6fdc4a3ab17bf2404d062724 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> Register if-converter pass for -debug-pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51931 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
a911dfe6bf5a3363fdc8df6944a81eafa759fc20 04-Jun-2008 Evan Cheng <evan.cheng@apple.com> Register if-converter pass for -debug-pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51931 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
a0fcc08e6542a0376917b5c76a0af3eb2650c535 04-Jun-2008 Duncan Sands <baldrick@free.fr> Change packed struct layout so that field sizes
are the same as in unpacked structs, only field
positions differ. This only matters for structs
containing x86 long double or an apint; it may
cause backwards compatibility problems if someone
has bitcode containing a packed struct with a
field of one of those types.
The issue is that only 10 bytes are needed to
hold an x86 long double: the store size is 10
bytes, but the ABI size is 12 or 16 bytes (linux/
darwin) which comes from rounding the store size
up by the alignment. Because it seemed silly not
to pack an x86 long double into 10 bytes in a
packed struct, this is what was done. I now
think this was a mistake. Reserving the ABI size
for an x86 long double field even in a packed
struct makes things more uniform: the ABI size is
now always used when reserving space for a type.
This means that developers are less likely to
make mistakes. It also makes life easier for the
CBE which otherwise could not represent all LLVM
packed structs (PR2402).
Front-end people might need to adjust the way
they create LLVM structs - see following change
to llvm-gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51928 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
4afc575cd530a9933527a42e781aacf15481f691 04-Jun-2008 Duncan Sands <baldrick@free.fr> Change packed struct layout so that field sizes
are the same as in unpacked structs, only field
positions differ. This only matters for structs
containing x86 long double or an apint; it may
cause backwards compatibility problems if someone
has bitcode containing a packed struct with a
field of one of those types.
The issue is that only 10 bytes are needed to
hold an x86 long double: the store size is 10
bytes, but the ABI size is 12 or 16 bytes (linux/
darwin) which comes from rounding the store size
up by the alignment. Because it seemed silly not
to pack an x86 long double into 10 bytes in a
packed struct, this is what was done. I now
think this was a mistake. Reserving the ABI size
for an x86 long double field even in a packed
struct makes things more uniform: the ABI size is
now always used when reserving space for a type.
This means that developers are less likely to
make mistakes. It also makes life easier for the
CBE which otherwise could not represent all LLVM
packed structs (PR2402).
Front-end people might need to adjust the way
they create LLVM structs - see following change
to llvm-gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51928 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
3094a4c97af4e81ff3bf9eea1997b86886dffcf2 04-Jun-2008 Owen Anderson <resistor@mac.com> We need to subtract one from this index because live ranges are open at the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51922 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
14e21c4c2258cdc127333127f0cb25882dd4012d 04-Jun-2008 Owen Anderson <resistor@mac.com> We need to subtract one from this index because live ranges are open at the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51922 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
ba12f57ebea3a5b3d0711d194e4584937309bc8b 03-Jun-2008 Scott Michel <scottm@aero.org> Fix spellnig error

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7b54de0925ad741408f765a9ccf5b89f7d063b23 03-Jun-2008 Scott Michel <scottm@aero.org> Fix spellnig error

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
eefc845b5f407adf1992602aaac1142b2d583220 03-Jun-2008 Scott Michel <scottm@aero.org> Find a better place to output hex constants corresponding to integers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51904 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
e067c3c23b3994597b6e43e32ae36d681387f9e7 03-Jun-2008 Scott Michel <scottm@aero.org> Find a better place to output hex constants corresponding to integers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51904 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
a8c63f0fc9feb48f17d702a907f065959c41e337 03-Jun-2008 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fixed bug in bad behavior in calculateFrameObjectOffsets,
the solution commited is different from the previous patch to
avoid int and unsigned comparison


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51899 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
543e04d0418336a8eebceaa9ccc242be48457a40 03-Jun-2008 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fixed bug in bad behavior in calculateFrameObjectOffsets,
the solution commited is different from the previous patch to
avoid int and unsigned comparison


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51899 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
f73ff3aaf64627fb71753032904ee3ab2a7add28 03-Jun-2008 Evan Cheng <evan.cheng@apple.com> Do not run loop-aligner at -fast (e.g. -O0).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51898 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
042de3d7ce35a23c3f0d3bfa1883527e694a95df 03-Jun-2008 Evan Cheng <evan.cheng@apple.com> Do not run loop-aligner at -fast (e.g. -O0).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51898 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
4315eee376450972d111c8e263ca8aecc7a3a13b 03-Jun-2008 Scott Michel <scottm@aero.org> Revert this patch

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51897 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
2c1d0550d65efb30a950cf42764aecac003e1970 03-Jun-2008 Scott Michel <scottm@aero.org> Revert this patch

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51897 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
33b625bee429986b2b3bd11108816d256df39334 03-Jun-2008 Dan Gohman <gohman@apple.com> Fold adds and subtracts of zero immediately, instead of waiting
for dagcombine to do this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51886 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3f76aed6b4602554c3b0929fbe8457223302bc3f 03-Jun-2008 Dan Gohman <gohman@apple.com> Fold adds and subtracts of zero immediately, instead of waiting
for dagcombine to do this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51886 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
83ccc0a50c7c52b2d774c3f4d209a120800ecdc7 03-Jun-2008 Scott Michel <scottm@aero.org> Minor cosmetic patch so that the hex equivalent of a decimal
constant shows up in the assembly language output. Helps with
debugging without a HP calculator having to be handy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51885 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
5c30b9dbe005d33cbe474a160fea04c5e02747e3 03-Jun-2008 Scott Michel <scottm@aero.org> Minor cosmetic patch so that the hex equivalent of a decimal
constant shows up in the assembly language output. Helps with
debugging without a HP calculator having to be handy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51885 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
8bf61e8c2a39bcf070c39848fea83eda57851ebb 03-Jun-2008 Scott Michel <scottm@aero.org> Add necessary 64-bit support so that gcc frontend compiles (mostly). Current
issue is operand promotion for setcc/select... but looks like the fundamental
stuff is implemented for CellSPU.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
67224b24594ea0fdb52ad449d9b849fa713a59c2 03-Jun-2008 Scott Michel <scottm@aero.org> Add necessary 64-bit support so that gcc frontend compiles (mostly). Current
issue is operand promotion for setcc/select... but looks like the fundamental
stuff is implemented for CellSPU.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e3abb0a858ceaea4a4ffa7c1874be8426d2724bc 02-Jun-2008 Owen Anderson <resistor@mac.com> Correctly handle removed instructions at the beginning of MBBs when renumbering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51876 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
605bddd9e2da3646696b4815f2f2d248cb257f30 02-Jun-2008 Owen Anderson <resistor@mac.com> Correctly handle removed instructions at the beginning of MBBs when renumbering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51876 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
28307418668f68e055688922ff8394d8a1ba8f15 31-May-2008 Dan Gohman <gohman@apple.com> Remove an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
055c20167c250d35cf81b86d65160241061d9f77 31-May-2008 Dan Gohman <gohman@apple.com> Remove an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7645e574d2d50b1a737f91013fba75af61426fcf 31-May-2008 Evan Cheng <evan.cheng@apple.com> Fix indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51793 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
2e04590644fca2f233cef951ccfb12cb0d78f59a 31-May-2008 Evan Cheng <evan.cheng@apple.com> Fix indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51793 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
dbb8137c112130fabdebfa0fa6c8949707ff17f2 31-May-2008 Owen Anderson <resistor@mac.com> The coalescer doesn't need LiveVariables now that we have register use iterators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51790 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
0146e3b14123d212cd19bda922ce5aa2a7383d1e 31-May-2008 Owen Anderson <resistor@mac.com> The coalescer doesn't need LiveVariables now that we have register use iterators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51790 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
3947e4d142c8a3fd958e62ace0a1333fb9e5a220 30-May-2008 Owen Anderson <resistor@mac.com> Preserve the register coallescer, and update live intervals more correctly by triggering a renumbering after phi elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51780 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
7fb9cde7e293ad6b1cf6881fba135886da79aa2c 30-May-2008 Owen Anderson <resistor@mac.com> Preserve the register coallescer, and update live intervals more correctly by triggering a renumbering after phi elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51780 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
493e03851d630804830b0439f9a714b08638ab95 30-May-2008 Dan Gohman <gohman@apple.com> Remove an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51721 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0adb35fab3fbe9094dd38242a3b97dfa4f758b86 30-May-2008 Dan Gohman <gohman@apple.com> Remove an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51721 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7eec0c243320fb2629554681547d7384ea9d0c53 30-May-2008 Owen Anderson <resistor@mac.com> Make the renumbering correct in the face of deleted instructions that have been removed from the LiveIntervals maps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51714 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d784874b0e6754238b97fe9bb88759e05c66200b 30-May-2008 Owen Anderson <resistor@mac.com> Make the renumbering correct in the face of deleted instructions that have been removed from the LiveIntervals maps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51714 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ec58498dc911065c122a2a54fa9d1338f7fb187f 29-May-2008 Bill Wendling <isanbard@gmail.com> Remove <iostream>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51704 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
44d37357591b0845b0cbf26e0aaadc1a7bffeaea 29-May-2008 Bill Wendling <isanbard@gmail.com> Remove <iostream>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51704 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
21323f3a829df0e6d9b4566a551619a01e269ba6 29-May-2008 Dan Gohman <gohman@apple.com> Expand small memmovs using inline code. Set the X86 threshold for expanding
memmove to a more plausible value, now that it's actually being used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
42d311cef64ad01eec4e45967dbed33c8aea6b04 29-May-2008 Dan Gohman <gohman@apple.com> Expand small memmovs using inline code. Set the X86 threshold for expanding
memmove to a more plausible value, now that it's actually being used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
fcc6350ac9b99d6590f5256d26bfa489b4531fb3 29-May-2008 Owen Anderson <resistor@mac.com> Revert part of my last patch that I didn't intend to commit yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51694 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
885f9d99645c58cffc35e6e4d4d3c9baa4cb0f15 29-May-2008 Owen Anderson <resistor@mac.com> Revert part of my last patch that I didn't intend to commit yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51694 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4b5b209679f866d3ac6372f963aa7e9906f9a08b 29-May-2008 Owen Anderson <resistor@mac.com> Renumbering needs to account for instruction slot offsets when performing lookups in the index maps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51691 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5f7420b108f55e89abcfa299c6e65cad18103ef2 29-May-2008 Owen Anderson <resistor@mac.com> Renumbering needs to account for instruction slot offsets when performing lookups in the index maps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51691 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f26ffe987cf3643a7bd66bd9f97c34605ba7d08e 29-May-2008 Evan Cheng <evan.cheng@apple.com> Implement vector shift up / down and insert zero with ps{rl}lq / ps{rl}ldq.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
dea99367632d9e326909dbac319fbe04f70f3697 29-May-2008 Evan Cheng <evan.cheng@apple.com> Implement vector shift up / down and insert zero with ps{rl}lq / ps{rl}ldq.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bd0879d7d9790e4bfa4bdcefd3abda0301e37bae 29-May-2008 Bill Wendling <isanbard@gmail.com> Implement "AsCheapAsAMove" for some obviously cheap instructions: xor and the
like.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51662 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
ba5d5b00b3c34af2a644bdfe24608e21ac2d4eb9 29-May-2008 Bill Wendling <isanbard@gmail.com> Implement "AsCheapAsAMove" for some obviously cheap instructions: xor and the
like.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51662 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
8370d38adee63b3a4d87bfe81be4aacc55fe7cda 29-May-2008 Bill Wendling <isanbard@gmail.com> Add a flag to indicate that an instruction is as cheap (or cheaper) than a move
instruction to execute. This can be used for transformations (like two-address
conversion) to remat an instruction instead of generating a "move"
instruction. The idea is to decrease the live ranges and register pressure and
all that jazz.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51660 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
aa25bb1320b4e94d2f90326ab73f2a42e5a4c3b7 29-May-2008 Bill Wendling <isanbard@gmail.com> Add a flag to indicate that an instruction is as cheap (or cheaper) than a move
instruction to execute. This can be used for transformations (like two-address
conversion) to remat an instruction instead of generating a "move"
instruction. The idea is to decrease the live ranges and register pressure and
all that jazz.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51660 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a8db14796b22ba7798ef94fc831d56c8a11d4e2a 29-May-2008 Bill Wendling <isanbard@gmail.com> Check the "isSafeToMove" predicate, which has a series of tests to make sure
that it's safe to remat an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51659 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
023520fc86b25d1db939d9de179118f684948d1c 29-May-2008 Bill Wendling <isanbard@gmail.com> Check the "isSafeToMove" predicate, which has a series of tests to make sure
that it's safe to remat an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51659 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
745825f431920662e97bdab5c1bcfac62e48c52f 29-May-2008 Owen Anderson <resistor@mac.com> Remap VNInfo data as well when doing renumbering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51658 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
fdb3f7007546d0927c20df660e1ee4e0dc95dd19 29-May-2008 Owen Anderson <resistor@mac.com> Remap VNInfo data as well when doing renumbering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51658 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
80b3ce65e294a28b88c882d44a5e749a2924c9e3 28-May-2008 Owen Anderson <resistor@mac.com> Factor the numbering computation into a separate method, and add the slightest attempt at some renumbering logic, which is currently unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51652 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f47fbec2e111ac5252e7df2bee1607394d1bcfae 28-May-2008 Owen Anderson <resistor@mac.com> Factor the numbering computation into a separate method, and add the slightest attempt at some renumbering logic, which is currently unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51652 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d77d4f98fbdeaf3d1b0ba99b547b7ac4ec43b834 28-May-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2289: vr defined by multiple implicit_def as result of coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51648 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
e739519da568ac0fa0683f48ac9f4010877d42e5 28-May-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2289: vr defined by multiple implicit_def as result of coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51648 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
33d3d4ad401e77673b6723ff2bc23ddf3c873351 28-May-2008 Evan Cheng <evan.cheng@apple.com> Teach local register allocator to deal with landing pad MBB's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51647 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
0d17774977d75eb213198d66ec669b42a64413be 28-May-2008 Evan Cheng <evan.cheng@apple.com> Teach local register allocator to deal with landing pad MBB's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51647 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
b0f65e1348cda5b03c5def307c1dc657c6080233 27-May-2008 Bill Wendling <isanbard@gmail.com> Incorporated feedback: Check that the implicitly defined operands aren't used
before deleting the instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51609 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b5746702004f4d5f49a290cad54223bd7f2e843b 27-May-2008 Bill Wendling <isanbard@gmail.com> Incorporated feedback: Check that the implicitly defined operands aren't used
before deleting the instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51609 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
43e2a035309f4e353a8bd5547d10125414597e74 27-May-2008 Duncan Sands <baldrick@free.fr> Fix some constructs that gcc-4.4 warns about.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51591 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
electionDAG/SelectionDAG.cpp
f689071811289c4553024e901981734a4afe90fd 27-May-2008 Duncan Sands <baldrick@free.fr> Fix some constructs that gcc-4.4 warns about.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51591 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
electionDAG/SelectionDAG.cpp
a16157a41098795d5045b197691ef997535ae169 26-May-2008 Bill Wendling <isanbard@gmail.com> The enabling of remat in 2-address conversion breaks this test:

Running /Users/void/llvm/llvm.src/test/CodeGen/X86/dg.exp ...
FAIL: /Users/void/llvm/llvm.src/test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll
Failed with exit(1) at line 1
while running: llvm-as < /Users/void/llvm/llvm.src/test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll | llc -march=x86 -mattr=+sse2 -stats |& grep {1 .*folded into instructions}
child process exited abnormally

Make this conditional for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51563 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
c3852fcce9befe6f75438608b2b485b55d844815 26-May-2008 Bill Wendling <isanbard@gmail.com> The enabling of remat in 2-address conversion breaks this test:

Running /Users/void/llvm/llvm.src/test/CodeGen/X86/dg.exp ...
FAIL: /Users/void/llvm/llvm.src/test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll
Failed with exit(1) at line 1
while running: llvm-as < /Users/void/llvm/llvm.src/test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll | llc -march=x86 -mattr=+sse2 -stats |& grep {1 .*folded into instructions}
child process exited abnormally

Make this conditional for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51563 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
48f7f237ea5224c44e9c2782836fb7b60d8b5db1 26-May-2008 Bill Wendling <isanbard@gmail.com> A problem that's exposed when machine LICM is enabled. Consider this code:

LBB1_3: # bb
...
xorl %ebp, %ebp
subl (%ebx), %ebp
...
incl %ecx
cmpl %edi, %ecx
jl LBB1_3 # bb

Whe using machine LICM, LLVM converts it into:

xorl %esi, %esi
LBB1_3: # bb
...
movl %esi, %ebp
subl (%ebx), %ebp
...
incl %ecx
cmpl %edi, %ecx
jl LBB1_3 # bb

Two address conversion inserts the copy instruction. However, it's cheaper to
rematerialize it, and remat helps reduce register pressure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51562 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
3334b27a03824be6bd21ce3fb92f2f951c3cb904 26-May-2008 Bill Wendling <isanbard@gmail.com> A problem that's exposed when machine LICM is enabled. Consider this code:

LBB1_3: # bb
...
xorl %ebp, %ebp
subl (%ebx), %ebp
...
incl %ecx
cmpl %edi, %ecx
jl LBB1_3 # bb

Whe using machine LICM, LLVM converts it into:

xorl %esi, %esi
LBB1_3: # bb
...
movl %esi, %ebp
subl (%ebx), %ebp
...
incl %ecx
cmpl %edi, %ecx
jl LBB1_3 # bb

Two address conversion inserts the copy instruction. However, it's cheaper to
rematerialize it, and remat helps reduce register pressure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51562 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
0a891ed7d5875a9ccdb93b4472b0f43947d8289b 24-May-2008 Evan Cheng <evan.cheng@apple.com> Revert 51440 as it breaks a bunch of PIC tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51513 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9c48ca7a32b9df51b6e752fd228f946612637011 24-May-2008 Evan Cheng <evan.cheng@apple.com> Revert 51440 as it breaks a bunch of PIC tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51513 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ee335e35acf20d1ed5b781546d647c19b608890e 23-May-2008 Dan Gohman <gohman@apple.com> Add #includes to make some dependencies explicit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51496 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d408d39f59e8fc2445e2cdf90ee1546b3a9c1c57 23-May-2008 Dan Gohman <gohman@apple.com> Add #includes to make some dependencies explicit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51496 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
679860e31bd7b8f043ba1ccdc5990cb9bafd9055 23-May-2008 Dale Johannesen <dalej@apple.com> Rewrite a loop to avoid using iterators pointing to
elements that have been erased. Based on a patch
by Nicolas Capens.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51485 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
3ecd4258f63b12591d37a3ed291eab3dccdbbbed 23-May-2008 Dale Johannesen <dalej@apple.com> Rewrite a loop to avoid using iterators pointing to
elements that have been erased. Based on a patch
by Nicolas Capens.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51485 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
a332f17c8c80bb457617052fb35a3f2cecd05493 23-May-2008 Dan Gohman <gohman@apple.com> Generalize the new code in instcombine's ComputeNumSignBits for handling
and/or to handle more cases (such as this add-sitofp.ll testcase), and
port it to selectiondag's ComputeNumSignBits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51469 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4afc4259d2a6408f4d58be0d54e30e4ed86325c8 23-May-2008 Dan Gohman <gohman@apple.com> Generalize the new code in instcombine's ComputeNumSignBits for handling
and/or to handle more cases (such as this add-sitofp.ll testcase), and
port it to selectiondag's ComputeNumSignBits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51469 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f3061f8210b4be5fc7c92db81258a7e185f187fe 23-May-2008 Bill Wendling <isanbard@gmail.com> Remove warnings about comparison between signed and unsigned expressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51465 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
8c33368479221bbf80ef8f1fca85a74a8aebb2c2 23-May-2008 Bill Wendling <isanbard@gmail.com> Remove warnings about comparison between signed and unsigned expressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51465 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
4fa2a3f0efe0081272b09550fef6251d355047e4 23-May-2008 Dan Gohman <gohman@apple.com> Use isSingleValueType instead of isFirstClassType to
exclude struct and array types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51460 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f9a85a33113be7403c6321c708741036ce04dcc8 23-May-2008 Dan Gohman <gohman@apple.com> Use isSingleValueType instead of isFirstClassType to
exclude struct and array types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51460 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
399101a5990621b0357009ab1852cc00f410a6c6 23-May-2008 Dan Gohman <gohman@apple.com> Use isSingleValueType instead of isFirstClassType to
exclude struct and array types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51459 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
5e8fbc2c0c34b9d212b77a54c38563b75726e13f 23-May-2008 Dan Gohman <gohman@apple.com> Use isSingleValueType instead of isFirstClassType to
exclude struct and array types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51459 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
abe93d95e8cc721a5b24b8225dc1a92569276c8a 22-May-2008 David Greene <greened@obbligato.org> When rewriting defs and uses after spilling, don't set the weight of a
live interval to infinity if the instruction being rewritten is an
original remat def instruction. We were only checking against the clone
of the remat def which doesn't actually appear in the IR at all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51440 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6abf37c8aa70df316db6aa7859a98ae413517f73 22-May-2008 David Greene <greened@obbligato.org> When rewriting defs and uses after spilling, don't set the weight of a
live interval to infinity if the instruction being rewritten is an
original remat def instruction. We were only checking against the clone
of the remat def which doesn't actually appear in the IR at all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51440 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cff860801e8cac730c3b171e1dc8b66b7900dec6 22-May-2008 David Greene <greened@obbligato.org> Don't attempt to update SpillSlotToUsesMap for stack slots that aren't
generated by the spiller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51439 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
022e2b3a580e725e7f0a2a60b08ed89ecf5eed80 22-May-2008 David Greene <greened@obbligato.org> Don't attempt to update SpillSlotToUsesMap for stack slots that aren't
generated by the spiller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51439 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
f4ea5103714fdb7ff9f88df6fd6325e8bef48e19 22-May-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2343. An *interesting* coalescer bug.

BB1:
vr1025 = copy vr1024
..
BB2:
vr1024 = op
= op vr1025
<loop eventually branch back to BB1>

Even though vr1025 is copied from vr1024, it's not safe to coalesced them since live range of vr1025 intersects the def of vr1024. This happens when vr1025 is assigned the value of the previous iteration of vr1024 in the loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51394 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
bab81b14640ff6181577e08a7914d11c8c6dfe78 22-May-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2343. An *interesting* coalescer bug.

BB1:
vr1025 = copy vr1024
..
BB2:
vr1024 = op
= op vr1025
<loop eventually branch back to BB1>

Even though vr1025 is copied from vr1024, it's not safe to coalesced them since live range of vr1025 intersects the def of vr1024. This happens when vr1025 is assigned the value of the previous iteration of vr1024 in the loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51394 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c84941be0af3a721183297ebb5e8511157a0c636 20-May-2008 Dan Gohman <gohman@apple.com> Port the fix for the select operator from instcombine's
ComputeNumSignBits to SelectionDAG's ComputeNumSignBits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6ffcf26d0ae196b4ddd645a1e43a3e719501d306 20-May-2008 Dan Gohman <gohman@apple.com> Port the fix for the select operator from instcombine's
ComputeNumSignBits to SelectionDAG's ComputeNumSignBits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1fdfa6aabf0518373030cdc7db16c281c33a35ce 20-May-2008 Dan Gohman <gohman@apple.com> Code simplification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51345 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2e0e0cf63f8a7bd4fc6da6851d0a60e7859994b8 20-May-2008 Dan Gohman <gohman@apple.com> Code simplification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51345 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7a0f1851ec0ac25d94cebc06f8f611a48e5f4326 20-May-2008 Evan Cheng <evan.cheng@apple.com> More local spiller complexity!
If local spiller optimization turns some instruction into an identity copy, it will be removed. If the output register happens to be dead (and source is obviously killed), transfer the kill / dead information to last use / def in the same MBB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51306 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
5f56c26ff3a6ee1d71e91ca86afbc8efe1123a9b 20-May-2008 Evan Cheng <evan.cheng@apple.com> More local spiller complexity!
If local spiller optimization turns some instruction into an identity copy, it will be removed. If the output register happens to be dead (and source is obviously killed), transfer the kill / dead information to last use / def in the same MBB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51306 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
b0a6f62c9b2e75fc509d84310a9795ffacbc6796 20-May-2008 Evan Cheng <evan.cheng@apple.com> Don't spill dead def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51305 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
87dc769d90f35ae3713d01245e730ddfd91a4564 20-May-2008 Evan Cheng <evan.cheng@apple.com> Don't spill dead def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51305 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c215b3ef5d9627f5fb6fe9034e46bc29ae592916 19-May-2008 Dale Johannesen <dalej@apple.com> Handle quoted names when constructing $stub's,
$non_lazy_ptr's and $lazy_ptr's.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51277 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
a21b5207101fea6703ac85290dbac506b6915dc2 19-May-2008 Dale Johannesen <dalej@apple.com> Handle quoted names when constructing $stub's,
$non_lazy_ptr's and $lazy_ptr's.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51277 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
7cbd8a3e92221437048b484d5ef9c0a22d0f8c58 16-May-2008 Gabor Greif <ggreif@gmail.com> API change for {BinaryOperator|CmpInst|CastInst}::create*() --> Create. Legacy interfaces will be in place for some time. (Merge from use-diet branch.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51200 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
a645dd3694fe06586679809ad2ded420666b4665 16-May-2008 Gabor Greif <ggreif@gmail.com> API change for {BinaryOperator|CmpInst|CastInst}::create*() --> Create. Legacy interfaces will be in place for some time. (Merge from use-diet branch.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51200 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
446efddfcd655131bd0ceeacce9c1166e30ed479 16-May-2008 Evan Cheng <evan.cheng@apple.com> If the result of a BIT_CONVERT is a v1* vector, it doesn't mean its source is a v1* vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51192 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2cc16e768c63832cfabaf3ba69e0f43a148cdffb 16-May-2008 Evan Cheng <evan.cheng@apple.com> If the result of a BIT_CONVERT is a v1* vector, it doesn't mean its source is a v1* vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51192 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
419cafb9fb6e77487197933714abec0426ae06c0 16-May-2008 Duncan Sands <baldrick@free.fr> Silence the compiler warning differently. The
original method caused gcc-4.2 to complain.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51186 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
6517a637609946153088a5d0e37b484968c4ca5c 16-May-2008 Duncan Sands <baldrick@free.fr> Silence the compiler warning differently. The
original method caused gcc-4.2 to complain.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51186 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
b434513a20c2df00b8c1cceb4858786fc9baad9e 15-May-2008 Nate Begeman <natebegeman@mac.com> Actually scalarize the operand to BIT_CONVERT instead of asking someone to do
something with a v1 type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51160 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
17c39753aef7e13d8d52590b38cb60ef16049dd9 15-May-2008 Nate Begeman <natebegeman@mac.com> Actually scalarize the operand to BIT_CONVERT instead of asking someone to do
something with a v1 type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51160 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
041e2eb51721bcfecee5d9c9fc409ff185526e47 15-May-2008 Dan Gohman <gohman@apple.com> IR support for extractvalue and insertvalue instructions. Also, begin
moving toward making structs and arrays first-class types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51157 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8055f7781b0430973392a8ddf54142afb9bcdd3d 15-May-2008 Dan Gohman <gohman@apple.com> IR support for extractvalue and insertvalue instructions. Also, begin
moving toward making structs and arrays first-class types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51157 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f0df03134e698ea84e9cc1c28a853f83c02560d5 15-May-2008 Evan Cheng <evan.cheng@apple.com> Make use of vector load and store operations to implement memcpy, memmove, and memset. Currently only X86 target is taking advantage of these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51140 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8c59037415ea76be1c05ce4d6a70866e0f50f5b0 15-May-2008 Evan Cheng <evan.cheng@apple.com> Make use of vector load and store operations to implement memcpy, memmove, and memset. Currently only X86 target is taking advantage of these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51140 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
97e60d9e8cf83274a1e4ac6443ed6da76d4b6088 14-May-2008 Evan Cheng <evan.cheng@apple.com> Use a better idiom to silence compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51131 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
a6fe65a41e6af51def437f4348241ca05c096b30 14-May-2008 Evan Cheng <evan.cheng@apple.com> Use a better idiom to silence compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51131 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
35213344672fb5215a36c8dd592a7cc7190445fa 14-May-2008 Evan Cheng <evan.cheng@apple.com> Really silence compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51126 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
11193bee277ec4263eafe5884401efaabced9592 14-May-2008 Evan Cheng <evan.cheng@apple.com> Really silence compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51126 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b2031145e3e64f5f6189a6ff8eac828a304cb150 14-May-2008 Evan Cheng <evan.cheng@apple.com> Really silence compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51123 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
328064990075e03dcb709e735fbdc8dd2134a708 14-May-2008 Evan Cheng <evan.cheng@apple.com> Really silence compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51123 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
aafce77b17d340aace52bcd49d1944109d82f14a 14-May-2008 Dale Johannesen <dalej@apple.com> Add CommonLinkage; currently tentative definitions
are represented as "weak", but there are subtle differences
in some cases on Darwin, so we need both. The intent
is that "common" will behave identically to "weak" unless
somebody changes their target to do something else.
No functional change as yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51118 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
49c441222d19a0ae12ef357ec90d82da89e08a94 14-May-2008 Dale Johannesen <dalej@apple.com> Add CommonLinkage; currently tentative definitions
are represented as "weak", but there are subtle differences
in some cases on Darwin, so we need both. The intent
is that "common" will behave identically to "weak" unless
somebody changes their target to do something else.
No functional change as yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51118 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
50871247216dfef8386a112766e972a1792b0b56 14-May-2008 Evan Cheng <evan.cheng@apple.com> Silence some compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51115 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
aaa364e68d32387a9bbe7c6ab5f16c273f23e68c 14-May-2008 Evan Cheng <evan.cheng@apple.com> Silence some compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51115 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
d64a78c9ed62f2615ca1ea524d1f1942f798c8de 14-May-2008 Dan Gohman <gohman@apple.com> When bit-twiddling CondCode values for integer comparisons produces
SETOEQ, is it does with (SETEQ & SETULE), map it to SETEQ.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51112 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f1e8e550d891964106ca26667cb83d38d17fb1ae 14-May-2008 Dan Gohman <gohman@apple.com> When bit-twiddling CondCode values for integer comparisons produces
SETOEQ, is it does with (SETEQ & SETULE), map it to SETEQ.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51112 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9c78a399076f8356a53ee67dca9c78e594e34967 14-May-2008 Dan Gohman <gohman@apple.com> Whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51089 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e8e4a418b0fb94b4de818c7c58a4bb4e022867cf 14-May-2008 Dan Gohman <gohman@apple.com> Whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51089 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
77f0b7a50a08614b5ffd58f1864b68a9a30d0cb0 13-May-2008 Evan Cheng <evan.cheng@apple.com> Instead of a vector load, shuffle and then extract an element. Load the element from address with an offset.
pshufd $1, (%rdi), %xmm0
movd %xmm0, %eax
=>
movl 4(%rdi), %eax


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
411fc17b569bac71b8d0578174d027663202c203 13-May-2008 Evan Cheng <evan.cheng@apple.com> Instead of a vector load, shuffle and then extract an element. Load the element from address with an offset.
pshufd $1, (%rdi), %xmm0
movd %xmm0, %eax
=>
movl 4(%rdi), %eax


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
6ddba2b933645d308428201e942abe1274fa5085 13-May-2008 Dan Gohman <gohman@apple.com> Change class' public PassInfo variables to by initialized with the
address of the PassInfo directly instead of calling getPassInfo.
This eliminates a bunch of dynamic initializations of static data.

Also, fold RegisterPassBase into PassInfo, make a bunch of its
data members const, and rearrange some code to initialize data
members in constructors instead of using setter member functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51022 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
achineLoopInfo.cpp
HIElimination.cpp
impleRegisterCoalescing.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
66a636e07c90c7270b673406f2bac1bfea81ea8b 13-May-2008 Dan Gohman <gohman@apple.com> Change class' public PassInfo variables to by initialized with the
address of the PassInfo directly instead of calling getPassInfo.
This eliminates a bunch of dynamic initializations of static data.

Also, fold RegisterPassBase into PassInfo, make a bunch of its
data members const, and rearrange some code to initialize data
members in constructors instead of using setter member functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51022 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
achineLoopInfo.cpp
HIElimination.cpp
impleRegisterCoalescing.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
844731a7f1909f55935e3514c9e713a62d67662e 13-May-2008 Dan Gohman <gohman@apple.com> Clean up the use of static and anonymous namespaces. This turned up
several things that were neither in an anonymous namespace nor static
but not intended to be global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ollectorMetadata.cpp
iveIntervalAnalysis.cpp
achineDominators.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineSink.cpp
camlCollector.cpp
HIElimination.cpp
asses.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
egisterCoalescer.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
hadowStackCollector.cpp
impleRegisterCoalescing.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
089efffd7d1ca0d10522ace38d36e0a67f4fac2d 13-May-2008 Dan Gohman <gohman@apple.com> Clean up the use of static and anonymous namespaces. This turned up
several things that were neither in an anonymous namespace nor static
but not intended to be global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ollectorMetadata.cpp
iveIntervalAnalysis.cpp
achineDominators.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achineSink.cpp
camlCollector.cpp
HIElimination.cpp
asses.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
egisterCoalescer.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
hadowStackCollector.cpp
impleRegisterCoalescing.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
0d1704b955f9c7ae20e0b3a35b75aaab26e48cfd 13-May-2008 Nate Begeman <natebegeman@mac.com> Teach Legalize how to scalarize VSETCC
Teach X86 a few more vsetcc patterns. Custom lowering for unsupported ones is next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51009 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
78ca4f9144ccd3593d3429d370571ad46eefac85 13-May-2008 Nate Begeman <natebegeman@mac.com> Teach Legalize how to scalarize VSETCC
Teach X86 a few more vsetcc patterns. Custom lowering for unsupported ones is next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51009 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9bfa03c6fd8e02b738e0077fd1af7b18eeeeb4c1 13-May-2008 Evan Cheng <evan.cheng@apple.com> Xform bitconvert(build_pair(load a, load b)) to a single load if the load locations are at the right offset from each other.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51008 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
b62904638976dad2609610ffc593e2db617f5476 13-May-2008 Evan Cheng <evan.cheng@apple.com> Xform bitconvert(build_pair(load a, load b)) to a single load if the load locations are at the right offset from each other.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51008 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
30562b7d4403414936da0661d7c6bda392f26c59 13-May-2008 Dale Johannesen <dalej@apple.com> Be more aggressive about tail-merging small blocks
if those blocks consist entirely of common instructions;
merging will not add an extra branch in this case.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51006 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
daf6ac33236315e1cf8a0e3f1536baac6b9a3d07 13-May-2008 Dale Johannesen <dalej@apple.com> Be more aggressive about tail-merging small blocks
if those blocks consist entirely of common instructions;
merging will not add an extra branch in this case.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51006 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ae94dda61a045cb77681940ecc25aba0d2763f74 13-May-2008 Bill Wendling <isanbard@gmail.com> Constify isSourceDefinedByImplicitDef function. Otherwise, just formatting
changes that don't change functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51004 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
49beda209a4c747cea107880a99108fb058cfd49 13-May-2008 Bill Wendling <isanbard@gmail.com> Constify isSourceDefinedByImplicitDef function. Otherwise, just formatting
changes that don't change functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51004 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
51b2b9e29e4fa828ffd83d36f548bc44a4007822 12-May-2008 Dale Johannesen <dalej@apple.com> Further rework of tail merge algorithm. Not quite
semantically identical, but little difference in
either results or execution speed; but it's much
easier to read, at least IMO.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50999 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
a3fbac949a9a37f77063b1ab491dd3b20b91e9c2 12-May-2008 Dale Johannesen <dalej@apple.com> Further rework of tail merge algorithm. Not quite
semantically identical, but little difference in
either results or execution speed; but it's much
easier to read, at least IMO.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50999 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ad4196b44ae714a6b95e238d9d96303df74b0429 12-May-2008 Evan Cheng <evan.cheng@apple.com> Refactor isConsecutiveLoad from X86 to TargetLowering so DAG combiner can make use of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50991 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
ef7be08d74f0a08484b852934226eae22eb58c8a 12-May-2008 Evan Cheng <evan.cheng@apple.com> Refactor isConsecutiveLoad from X86 to TargetLowering so DAG combiner can make use of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50991 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
c1b7f52fbeb2b637b1cdb1d5e81b3f2b090b8770 12-May-2008 Bill Wendling <isanbard@gmail.com> Revert the previous commit. Go ahead and hoist rematerializable instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50990 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
f3f3f03f813a2b8b9d6630ad079a39899e3816f8 12-May-2008 Bill Wendling <isanbard@gmail.com> Revert the previous commit. Go ahead and hoist rematerializable instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50990 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
b43e9c196542acc80c9e4643809661065710848f 12-May-2008 Nate Begeman <natebegeman@mac.com> Add support for vicmp/vfcmp codegen, more legalize support coming.
This is necessary to unbreak the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50988 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
9a1ce155ed514899f62701a7750e42eacfa3939f 12-May-2008 Nate Begeman <natebegeman@mac.com> Add support for vicmp/vfcmp codegen, more legalize support coming.
This is necessary to unbreak the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50988 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
e4fc1ccd4dd66a7421e911528c1af5337c20167b 12-May-2008 Bill Wendling <isanbard@gmail.com> One real change - don't hoist something that's trivially rematerializable. It's
possible for it to produce worse code than before.

The rest of this patch is code cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50987 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
62e0f4d2869483f170d9fb91b42179118ca51383 12-May-2008 Bill Wendling <isanbard@gmail.com> One real change - don't hoist something that's trivially rematerializable. It's
possible for it to produce worse code than before.

The rest of this patch is code cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50987 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
9ab9ee8209c313713a54db2d9451751d8cfb9e2a 12-May-2008 Dan Gohman <gohman@apple.com> Fix a missing break in the ISD::FLT_ROUNDS_ handling. Patch by giuma!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e09dc8c5d2f5245161a2a1c57942f54911e72e09 12-May-2008 Dan Gohman <gohman@apple.com> Fix a missing break in the ISD::FLT_ROUNDS_ handling. Patch by giuma!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b3e0a6d75c60f01df4fcee4b4309f06ce92a96c9 10-May-2008 Evan Cheng <evan.cheng@apple.com> If all sources of a PHI node are defined by an implicit_def, just emit an implicit_def instead of a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50927 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
7418d080e53c917d409314088b48d032c33e217c 10-May-2008 Evan Cheng <evan.cheng@apple.com> If all sources of a PHI node are defined by an implicit_def, just emit an implicit_def instead of a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50927 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
637980edcee4826143100182afe87e273247f013 10-May-2008 Bill Wendling <isanbard@gmail.com> Cosmetic changes:
- Comment fixes.
- Moar whitespace.
- Made ivars "private" by default.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50926 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
0628927c8c8dce40a5356c20dff44e623bdb81f5 10-May-2008 Bill Wendling <isanbard@gmail.com> Cosmetic changes:
- Comment fixes.
- Moar whitespace.
- Made ivars "private" by default.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50926 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
6b8583cbf1f8a3df5ae859d3da2ca690ff57f91c 10-May-2008 Dale Johannesen <dalej@apple.com> Remove an evil vector bool. Cosmetic refactoring,
no functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50921 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
865e6256f8fb84be293709a1d83094abfe3827b8 10-May-2008 Dale Johannesen <dalej@apple.com> Remove an evil vector bool. Cosmetic refactoring,
no functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50921 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
6ae83faadf715c398e637424a764f6b02f0b6df2 09-May-2008 Dale Johannesen <dalej@apple.com> Rewrite tail merging algorithm to handle the
case where there are multiple blocks with a large
number of common tail instructions more efficiently
(compile time optimization).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50916 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
652b7ff7f4599e36cd8306ea461a43ae7a7b4db5 09-May-2008 Dale Johannesen <dalej@apple.com> Rewrite tail merging algorithm to handle the
case where there are multiple blocks with a large
number of common tail instructions more efficiently
(compile time optimization).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50916 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
43b30a828792214612836686c51b96178a48f306 08-May-2008 Duncan Sands <baldrick@free.fr> Get exception handling working again on 64 bit
Darwin. This is a hack of course, but it does
at least look at the right thing: gotpcrel means
that this is already an offset, so an explicit
offset is not needed (and wrong). I think this
is good enough for the moment: Anton is working
on something better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50850 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
4cc3953292e50d24961f84e5f3af90feb24e0dd7 08-May-2008 Duncan Sands <baldrick@free.fr> Get exception handling working again on 64 bit
Darwin. This is a hack of course, but it does
at least look at the right thing: gotpcrel means
that this is already an offset, so an explicit
offset is not needed (and wrong). I think this
is good enough for the moment: Anton is working
on something better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50850 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
0b12ecf6ff6b5d3a144178257b6206f0c4788792 08-May-2008 Anton Korobeynikov <asl@math.spbu.ru> Turn StripPointerCast() into a method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50836 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
electionDAG/SelectionDAGISel.cpp
hadowStackCollector.cpp
48fc88fa541d9084daf3ade6e4df2046ad9736e2 08-May-2008 Anton Korobeynikov <asl@math.spbu.ru> Turn StripPointerCast() into a method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50836 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
electionDAG/SelectionDAGISel.cpp
hadowStackCollector.cpp
671fa97a4b8c560150104329b517efbf2609297c 07-May-2008 Duncan Sands <baldrick@free.fr> Output correct exception handling and frame info
on x86-64 linux. This causes no regressions on
32 bit linux and 32 bit ppc. More tests pass
on 64 bit ppc with no regressions. I didn't
turn on eh on 64 bit linux because the intrinsics
needed to compile the eh runtime aren't done
yet. But if you turn it on and link with the
mainline runtime then eh seems to work fine
on x86-64 linux with this patch. Thanks to
Dale for testing. The main point of the patch
is that if you output that some object is
encoded using 4 bytes you had better not output
8 bytes for it: the patch makes everything
consistent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50825 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
96144f95bdfe4d3ed39976d30fb374d8a38c5c28 07-May-2008 Duncan Sands <baldrick@free.fr> Output correct exception handling and frame info
on x86-64 linux. This causes no regressions on
32 bit linux and 32 bit ppc. More tests pass
on 64 bit ppc with no regressions. I didn't
turn on eh on 64 bit linux because the intrinsics
needed to compile the eh runtime aren't done
yet. But if you turn it on and link with the
mainline runtime then eh seems to work fine
on x86-64 linux with this patch. Thanks to
Dale for testing. The main point of the patch
is that if you output that some object is
encoded using 4 bytes you had better not output
8 bytes for it: the patch makes everything
consistent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50825 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
7ebc06bfd8df4cd7c477af1e5fec196c32efcfea 07-May-2008 Evan Cheng <evan.cheng@apple.com> Yet another nasty spiller bug.
%ecx = op
store %cl<kill>, (addr)
(addr) = op %al

It's not safe to unfold the last operand and eliminate store even though %cl is marked kill. It's a sub-register use which means one of its super-register(s) may be used below.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50794 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
674b39687d44677ef800e72676216998eb5e8093 07-May-2008 Evan Cheng <evan.cheng@apple.com> Yet another nasty spiller bug.
%ecx = op
store %cl<kill>, (addr)
(addr) = op %al

It's not safe to unfold the last operand and eliminate store even though %cl is marked kill. It's a sub-register use which means one of its super-register(s) may be used below.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50794 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
42ac929ed968939d22a715769e583aeed8f6c823 07-May-2008 Dan Gohman <gohman@apple.com> Fix a bug in the ComputeMaskedBits logic for multiply.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50793 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4c451857fc1d30f82254a9b06938ff30b6abf2a6 07-May-2008 Dan Gohman <gohman@apple.com> Fix a bug in the ComputeMaskedBits logic for multiply.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50793 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b04adddd50dfa4c3fbdad3b15d601402254c1ff5 07-May-2008 Anton Korobeynikov <asl@math.spbu.ru> Make StripPointerCast a common function (should we mak it method of Value instead?)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50775 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
electionDAG/SelectionDAGISel.cpp
hadowStackCollector.cpp
dd0dfe60781752661c3d39907989121bc7c3d254 07-May-2008 Anton Korobeynikov <asl@math.spbu.ru> Make StripPointerCast a common function (should we mak it method of Value instead?)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50775 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
electionDAG/SelectionDAGISel.cpp
hadowStackCollector.cpp
4a3f6c88820a204f80ca0fa3f1f2fe09ca10b02f 06-May-2008 Dan Gohman <gohman@apple.com> Make several variable declarations static.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50696 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
iveIntervalAnalysis.cpp
asses.cpp
electionDAG/SelectionDAGISel.cpp
2c37da52902a619dc12b5dd46040fd223ee7d2eb 06-May-2008 Dan Gohman <gohman@apple.com> Make several variable declarations static.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50696 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
iveIntervalAnalysis.cpp
asses.cpp
electionDAG/SelectionDAGISel.cpp
84b7df43fb098268f6ce37a3e32bcc2f455ecf96 06-May-2008 Dan Gohman <gohman@apple.com> Remove uses of llvm/System/IncludeFile.h that are no longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50695 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
bc8fb445b0410e05248fb1dc6131e9cc293557fe 06-May-2008 Dan Gohman <gohman@apple.com> Remove uses of llvm/System/IncludeFile.h that are no longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50695 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
54eed371314af403ef8307b386b3b5b46c8aa6fb 06-May-2008 Dan Gohman <gohman@apple.com> Instead of enumerating each opcode that isn't handled that
ComputeMaskedBits handles, just use a 'default:'. This avoids
TargetLowering's list getting out of date with SelectionDAG's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50693 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
9a77bb65128afa9cccbdc68d1db076eb0dc52107 06-May-2008 Dan Gohman <gohman@apple.com> Instead of enumerating each opcode that isn't handled that
ComputeMaskedBits handles, just use a 'default:'. This avoids
TargetLowering's list getting out of date with SelectionDAG's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50693 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
23e1df8b8d1d1fc8b9a20b80a47b0a2fdffe7f84 06-May-2008 Dan Gohman <gohman@apple.com> Correct the value of LowBits in srem and urem handling in
ComputeMaskedBits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5a154a1a7f85eb3c2b756a949b66670bed62e32e 06-May-2008 Dan Gohman <gohman@apple.com> Correct the value of LowBits in srem and urem handling in
ComputeMaskedBits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
703bfe69092e8da79fbef2fc5ca07b805ad9f753 06-May-2008 Dan Gohman <gohman@apple.com> Fix a broken doxygen comment, and reword it for clarity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50687 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
2f51e1f35356d8e88e1edd6b1fa693e69ec1105d 06-May-2008 Dan Gohman <gohman@apple.com> Fix a broken doxygen comment, and reword it for clarity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50687 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
63307c335aa08b0d6a75f81d64d79af7e90eb78b 05-May-2008 Mon P Wang <wangmp@apple.com> Added addition atomic instrinsics and, or, xor, min, and max.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50663 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
078a62d580cd4e62ecb7940323a953d49a0e72d2 05-May-2008 Mon P Wang <wangmp@apple.com> Added addition atomic instrinsics and, or, xor, min, and max.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50663 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
87c3d4173e6aa565fec5473e646f686d62d94956 05-May-2008 Dan Gohman <gohman@apple.com> Fix a bug in the ELF writer that caused it to produce malformed
ELF headers. The ELF writer still isn't generally usable though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50652 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
8926a64fc1eff484fc6916317409b13b0e3d93d0 05-May-2008 Dan Gohman <gohman@apple.com> Fix a bug in the ELF writer that caused it to produce malformed
ELF headers. The ELF writer still isn't generally usable though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50652 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
a779a9899a5e23bd5198973f4709d66cb4bc2e64 05-May-2008 Dan Gohman <gohman@apple.com> Add AsmPrinter support for emitting a directive to declare that
the code being generated does not require an executable stack.

Also, add target-specific code to make use of this on Linux
on x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50634 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
a65530a04a5ad39718ea0ac848a7d329117a1b2f 05-May-2008 Dan Gohman <gohman@apple.com> Add AsmPrinter support for emitting a directive to declare that
the code being generated does not require an executable stack.

Also, add target-specific code to make use of this on Linux
on x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50634 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
1d9cd506774f2d51b7e7315b07fdbcc05efebe4a 02-May-2008 Dan Gohman <gohman@apple.com> Fix a mistake in the computation of leading zeros for udiv.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50591 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1b9fb1f4382238ee81e16c59200b1a643869f260 02-May-2008 Dan Gohman <gohman@apple.com> Fix a mistake in the computation of leading zeros for udiv.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50591 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7ceda160b34f67a0514df9a518da2946e52a04ea 02-May-2008 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50562 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
14a027d0de763a09b14ea86975d7e03b67f060d2 02-May-2008 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50562 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1fa850bdd26fa51b0e593378a9fc1507154f992d 02-May-2008 Dan Gohman <gohman@apple.com> Use push_back(...) instead of resize(1, ...), per review feedback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50561 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
111e04ee9ba119e8b0d66f6b21b10f5ffc59015b 02-May-2008 Dan Gohman <gohman@apple.com> Use push_back(...) instead of resize(1, ...), per review feedback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50561 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cba3b44d258ee89f7dae1ea6e67d97258211ff8b 02-May-2008 Dan Gohman <gohman@apple.com> Fix uninitialized uses of the FPC variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fc28db227985ffd9b26927c0b64accaa6840b971 02-May-2008 Dan Gohman <gohman@apple.com> Fix uninitialized uses of the FPC variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6bf30ab347bc00a8dc7115244298d78f7721ea34 01-May-2008 Chris Lattner <sabre@nondot.org> don't randomly miscompile seto/setuo just because we are in
ffastmath mode. This fixes rdar://5902801, a miscompilation
of gcc.dg/builtins-8.c.

Bill, please pull this into Tak.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50523 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
98deecafca8ae7b25100b0c0a9a0d5b16e08caeb 01-May-2008 Chris Lattner <sabre@nondot.org> don't randomly miscompile seto/setuo just because we are in
ffastmath mode. This fixes rdar://5902801, a miscompilation
of gcc.dg/builtins-8.c.

Bill, please pull this into Tak.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50523 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
30e62c098b5841259f8026df1c5c45c7c1182a38 30-Apr-2008 Arnold Schwaighofer <arnold.schwaighofer@gmail.com> Tail call optimization improvements:

Move platform independent code (lowering of possibly overwritten
arguments, check for tail call optimization eligibility) from
target X86ISelectionLowering.cpp to TargetLowering.h and
SelectionDAGISel.cpp.

Initial PowerPC tail call implementation:

Support ppc32 implemented and tested (passes my tests and
test-suite llvm-test).
Support ppc64 implemented and half tested (passes my tests).
On ppc tail call optimization is performed if
caller and callee are fastcc
call is a tail call (in tail call position, call followed by ret)
no variable argument lists or byval arguments
option -tailcallopt is enabled
Supported:
* non pic tail calls on linux/darwin
* module-local tail calls on linux(PIC/GOT)/darwin(PIC)
* inter-module tail calls on darwin(PIC)
If constraints are not met a normal call will be emitted.

A test checking the argument lowering behaviour on x86-64 was added.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50477 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a0032726c05cbb509988f05746de940adcbdf20d 30-Apr-2008 Arnold Schwaighofer <arnold.schwaighofer@gmail.com> Tail call optimization improvements:

Move platform independent code (lowering of possibly overwritten
arguments, check for tail call optimization eligibility) from
target X86ISelectionLowering.cpp to TargetLowering.h and
SelectionDAGISel.cpp.

Initial PowerPC tail call implementation:

Support ppc32 implemented and tested (passes my tests and
test-suite llvm-test).
Support ppc64 implemented and half tested (passes my tests).
On ppc tail call optimization is performed if
caller and callee are fastcc
call is a tail call (in tail call position, call followed by ret)
no variable argument lists or byval arguments
option -tailcallopt is enabled
Supported:
* non pic tail calls on linux/darwin
* module-local tail calls on linux(PIC/GOT)/darwin(PIC)
* inter-module tail calls on darwin(PIC)
If constraints are not met a normal call will be emitted.

A test checking the argument lowering behaviour on x86-64 was added.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50477 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
21d972ad046f93669657eb7efb89ad2d0fe05ef8 30-Apr-2008 Dale Johannesen <dalej@apple.com> Add comments for previous patch as requested.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50463 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
388f20fc98e81283c086e9e28f2771bbb0397928 30-Apr-2008 Dale Johannesen <dalej@apple.com> Add comments for previous patch as requested.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50463 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
82747a54849d22c3a0b7c3b56399da9b9e020ee0 30-Apr-2008 Scott Michel <scottm@aero.org> Fix custom target lowering for zero/any/sign_extend: make sure that
DAG.UpdateNodeOperands() is called before (not after) the call to
TLI.LowerOperation().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ac54d007432a173a8a37493143c3237cbd1c86b8 30-Apr-2008 Scott Michel <scottm@aero.org> Fix custom target lowering for zero/any/sign_extend: make sure that
DAG.UpdateNodeOperands() is called before (not after) the call to
TLI.LowerOperation().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7b251e0474466d067192339599e38b9be000b6a3 30-Apr-2008 Dale Johannesen <dalej@apple.com> Make eh_frame objects by 8-byte aligned on 64-bit
targets.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50451 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
837d7abadb936c8e0f35fdbd2f0f4447b9f7d26b 30-Apr-2008 Dale Johannesen <dalej@apple.com> Make eh_frame objects by 8-byte aligned on 64-bit
targets.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50451 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
a0201d52049be8dcefffe4304a49690a831bcb34 29-Apr-2008 Roman Levenstein <romix.llvm@googlemail.com> Use std::set instead of std::priority_queue for the RegReductionPriorityQueue.
This removes the existing bottleneck related to the removal of elements from
the middle of the queue.

Also fixes a subtle bug in ScheduleDAGRRList::CapturePred:
It was updating the state of the SUnit before removing it. As a result, the
comparison operators were working incorrectly and this SUnit could not be removed
from the queue properly.

Reviewed by Evan and Dan. Approved by Dan.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50412 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
85078e24b21a2e70e3a697a36bc0732fac3c0187 29-Apr-2008 Roman Levenstein <romix.llvm@googlemail.com> Use std::set instead of std::priority_queue for the RegReductionPriorityQueue.
This removes the existing bottleneck related to the removal of elements from
the middle of the queue.

Also fixes a subtle bug in ScheduleDAGRRList::CapturePred:
It was updating the state of the SUnit before removing it. As a result, the
comparison operators were working incorrectly and this SUnit could not be removed
from the queue properly.

Reviewed by Evan and Dan. Approved by Dan.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50412 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3fb2968f2febbcd8e05270270858b6f2afd4b342 29-Apr-2008 Chris Lattner <sabre@nondot.org> make the vector conversion magic handle multiple results.
We now compile test2/test3 to:

_test2:
## InlineAsm Start
set %xmm0, %xmm1
## InlineAsm End
addps %xmm1, %xmm0
ret
_test3:
## InlineAsm Start
set %xmm0, %xmm1
## InlineAsm End
paddd %xmm1, %xmm0
ret

as expected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50389 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
626164a792c07c1ab6559db74ba73059324cbf8c 29-Apr-2008 Chris Lattner <sabre@nondot.org> make the vector conversion magic handle multiple results.
We now compile test2/test3 to:

_test2:
## InlineAsm Start
set %xmm0, %xmm1
## InlineAsm End
addps %xmm1, %xmm0
ret
_test3:
## InlineAsm Start
set %xmm0, %xmm1
## InlineAsm End
paddd %xmm1, %xmm0
ret

as expected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50389 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
41f6259a4b54d2dc58a4040e942b37f00d306b7b 29-Apr-2008 Chris Lattner <sabre@nondot.org> add support for multiple return values in inline asm. This is a step
towards PR2094. It now compiles the attached .ll file to:

_sad16_sse2:
movslq %ecx, %rax
## InlineAsm Start
%ecx %rdx %rax %rax %r8d %rdx %rsi
## InlineAsm End
## InlineAsm Start
set %eax
## InlineAsm End
ret

which is pretty decent for a 3 output, 4 input asm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50386 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
08bbcb86f1d0ee66fec76739504f362dd9a2976a 29-Apr-2008 Chris Lattner <sabre@nondot.org> add support for multiple return values in inline asm. This is a step
towards PR2094. It now compiles the attached .ll file to:

_sad16_sse2:
movslq %ecx, %rax
## InlineAsm Start
%ecx %rdx %rax %rax %r8d %rdx %rsi
## InlineAsm End
## InlineAsm Start
set %eax
## InlineAsm End
ret

which is pretty decent for a 3 output, 4 input asm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50386 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8509fcf8ebc6435d1b8081de62f93b29d707b341 29-Apr-2008 Evan Cheng <evan.cheng@apple.com> Another extract_subreg coalescing bug.
e.g.
vr1024<2> extract_subreg vr1025, 2
If vr1024 do not have the same register class as vr1025, it's not safe to coalesce this away. For example, vr1024 might be a GPR32 while vr1025 might be a GPR64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50385 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
ed3e66b3ff668b088e69a5fbc6c54a623cabb88b 29-Apr-2008 Evan Cheng <evan.cheng@apple.com> Another extract_subreg coalescing bug.
e.g.
vr1024<2> extract_subreg vr1025, 2
If vr1024 do not have the same register class as vr1025, it's not safe to coalesce this away. For example, vr1024 might be a GPR32 while vr1025 might be a GPR64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50385 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
33bf38ad881fa3d403cc81209d0ae796f94f125e 29-Apr-2008 Evan Cheng <evan.cheng@apple.com> Fix a bug in RegsForValue::getCopyToRegs() that causes cyclical scheduling units. If it's creating multiple CopyToReg nodes that are "flagged" together, it should not create a TokenFactor for it's chain outputs:

c1, f1 = CopyToReg
c2, f2 = CopyToReg
c3 = TokenFactor c1, c2
...
= user c3, ..., f2

Now that the two CopyToReg's and the user are "flagged" together. They effectively forms a single scheduling unit. The TokenFactor is now both an operand and a successor of the Flagged nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50376 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
80cb49ea90ad34a368bba08c09c3ad026e4ce898 29-Apr-2008 Evan Cheng <evan.cheng@apple.com> Fix a bug in RegsForValue::getCopyToRegs() that causes cyclical scheduling units. If it's creating multiple CopyToReg nodes that are "flagged" together, it should not create a TokenFactor for it's chain outputs:

c1, f1 = CopyToReg
c2, f2 = CopyToReg
c3 = TokenFactor c1, c2
...
= user c3, ..., f2

Now that the two CopyToReg's and the user are "flagged" together. They effectively forms a single scheduling unit. The TokenFactor is now both an operand and a successor of the Flagged nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50376 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
187db7b950e57e2f1f10b57e7ee2a7f38e8965c0 28-Apr-2008 Dan Gohman <gohman@apple.com> Evan pointed out that folding sext to zext may not be correct
if the zext is not legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50368 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5b37f9d6ad40098a7b3cf8308092cc64919ac9e4 28-Apr-2008 Dan Gohman <gohman@apple.com> Evan pointed out that folding sext to zext may not be correct
if the zext is not legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50368 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ebc3a3a3b2adb3bf5a1dae0c0e6572be79375efd 28-Apr-2008 Dan Gohman <gohman@apple.com> Delete an unused constructor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50367 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4457edb33078af6468ccb030629416e20d1a6cf7 28-Apr-2008 Dan Gohman <gohman@apple.com> Delete an unused constructor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50367 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
10a6b7ab656ddce1acfa1216311d2564edaecbe3 28-Apr-2008 Dan Gohman <gohman@apple.com> Add a comment to CreateRegForValue that clarifies the handling of
aggregate types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50366 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b901881157917b841f8c3be685dca44fdfeb29ca 28-Apr-2008 Dan Gohman <gohman@apple.com> Add a comment to CreateRegForValue that clarifies the handling of
aggregate types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50366 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0fe00906c8f1d1e455c780b221299a1349cc7094 28-Apr-2008 Dan Gohman <gohman@apple.com> Rewrite the comments for RegsForValue and its members, and
reorder some of the members for clarity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50365 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
65b2f4cc5077b45c120817ffcded4ea26310342e 28-Apr-2008 Dan Gohman <gohman@apple.com> Rewrite the comments for RegsForValue and its members, and
reorder some of the members for clarity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50365 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b20d4f8d499c4c5315de69bd22c652665a7e3ab8 28-Apr-2008 Dan Gohman <gohman@apple.com> Don't call size() on each iteration of the loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3a163d253056f54c7b4430487a8fe34300ab94fa 28-Apr-2008 Dan Gohman <gohman@apple.com> Don't call size() on each iteration of the loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1f13c686df75ddbbe15b208606ece4846d7479a8 28-Apr-2008 Dan Gohman <gohman@apple.com> Fix the SVOffset values for loads and stores produced by
memcpy/memset expansion. It was a bug for the SVOffset value
to be used in the actual address calculations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
65118f43f2da7c789cd2fde6908bdac8774a2304 28-Apr-2008 Dan Gohman <gohman@apple.com> Fix the SVOffset values for loads and stores produced by
memcpy/memset expansion. It was a bug for the SVOffset value
to be used in the actual address calculations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
23e8b715267a64381e2fff8c208da1f24b387b83 28-Apr-2008 Dan Gohman <gohman@apple.com> Teach InstCombine's ComputeMaskedBits what SelectionDAG's
ComputeMaskedBits knows about cttz, ctlz, and ctpop. Teach
SelectionDAG's ComputeMaskedBits what InstCombine's knows
about SRem. And teach them both some things about high bits
in Mul, UDiv, URem, and Sub. This allows instcombine and
dagcombine to eliminate sign-extension operations in
several new cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50358 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bec1605c43a6375d755c88e1269d9176433bfecd 28-Apr-2008 Dan Gohman <gohman@apple.com> Teach InstCombine's ComputeMaskedBits what SelectionDAG's
ComputeMaskedBits knows about cttz, ctlz, and ctpop. Teach
SelectionDAG's ComputeMaskedBits what InstCombine's knows
about SRem. And teach them both some things about high bits
in Mul, UDiv, URem, and Sub. This allows instcombine and
dagcombine to eliminate sign-extension operations in
several new cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50358 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8f0ad582e81e24f2ab35f9e9d2308339c8e8cbeb 28-Apr-2008 Dan Gohman <gohman@apple.com> Teach DAGCombine to convert (sext x) to (zext x) when the
sign-bit of x is known to be zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
415e13afea66fb0fea6a13c9988a96185e064dd8 28-Apr-2008 Dan Gohman <gohman@apple.com> Teach DAGCombine to convert (sext x) to (zext x) when the
sign-bit of x is known to be zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6833b0601bdd53957db049b13dfa2e6a9e56f65f 28-Apr-2008 Chris Lattner <sabre@nondot.org> Another collection of random cleanups. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50341 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
02d73b3d12833492ea166bfec530b38c29ba55c1 28-Apr-2008 Chris Lattner <sabre@nondot.org> Another collection of random cleanups. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50341 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b606dba13ba84721cc297174c2eb1275bc642604 28-Apr-2008 Chris Lattner <sabre@nondot.org> Remove the SmallVector ctor that converts from a SmallVectorImpl. This
conversion open the door for many nasty implicit conversion issues, and
can be easily solved by initializing with (V.begin(), V.end()) when
needed.

This patch includes many small cleanups for sdisel also.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
622811e23626f12f8f9933b12077b8bd79394db1 28-Apr-2008 Chris Lattner <sabre@nondot.org> Remove the SmallVector ctor that converts from a SmallVectorImpl. This
conversion open the door for many nasty implicit conversion issues, and
can be easily solved by initializing with (V.begin(), V.end()) when
needed.

This patch includes many small cleanups for sdisel also.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8eaff0449c70a7baa75c6ec5d1d90ea9ac2dad5a 28-Apr-2008 Chris Lattner <sabre@nondot.org> switch RegsForValue::Regs to be a SmallVector to avoid
heap thrash on tiny (usually single-element) vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50335 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8c036649d7c3422d0ebbbfda6c3f6467cb556595 28-Apr-2008 Chris Lattner <sabre@nondot.org> switch RegsForValue::Regs to be a SmallVector to avoid
heap thrash on tiny (usually single-element) vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50335 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f899fce0c0492a6fa405323c073b3380260e5806 28-Apr-2008 Chris Lattner <sabre@nondot.org> move static function out of anon namespace, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5f2006ebaa1d2042088a50d6c0ec0686be117e99 28-Apr-2008 Chris Lattner <sabre@nondot.org> move static function out of anon namespace, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
acf8b01fd6dd7a796d490795886bdfa67f074631 28-Apr-2008 Chris Lattner <sabre@nondot.org> Another step to getting multiple result inline asm to work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50329 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5f32330dcddd37e71a86a617b56661d396f6ff3a 28-Apr-2008 Chris Lattner <sabre@nondot.org> Another step to getting multiple result inline asm to work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50329 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
24e1a9d3115a5bf4e1c21092ede0f6dfc0a810ad 27-Apr-2008 Chris Lattner <sabre@nondot.org> typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50316 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
f9fde546b68041fc780392289e6846b72e04892b 27-Apr-2008 Chris Lattner <sabre@nondot.org> typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50316 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
5a09690446a36f94f990db7d18d9b9ac8587888a 27-Apr-2008 Chris Lattner <sabre@nondot.org> Implement a signficant optimization for inline asm:
When choosing between constraints with multiple options,
like "ir", test to see if we can use the 'i' constraint and
go with that if possible. This produces more optimal ASM in
all cases (sparing a register and an instruction to load it),
and fixes inline asm like this:

void test () {
asm volatile (" %c0 %1 " : : "imr" (42), "imr"(14));
}

Previously we would dump "42" into a memory location (which
is ok for the 'm' constraint) which would cause a problem
because the 'c' modifier is not valid on memory operands.

Isn't it great how inline asm turns 'missed optimization'
into 'compile failed'??

Incidentally, this was the todo in
PowerPC/2007-04-24-InlineAsm-I-Modifier.ll

Please do NOT pull this into Tak.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50315 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
4486c2ee43064fb60afad606262474cb993dd188 27-Apr-2008 Chris Lattner <sabre@nondot.org> Implement a signficant optimization for inline asm:
When choosing between constraints with multiple options,
like "ir", test to see if we can use the 'i' constraint and
go with that if possible. This produces more optimal ASM in
all cases (sparing a register and an instruction to load it),
and fixes inline asm like this:

void test () {
asm volatile (" %c0 %1 " : : "imr" (42), "imr"(14));
}

Previously we would dump "42" into a memory location (which
is ok for the 'm' constraint) which would cause a problem
because the 'c' modifier is not valid on memory operands.

Isn't it great how inline asm turns 'missed optimization'
into 'compile failed'??

Incidentally, this was the todo in
PowerPC/2007-04-24-InlineAsm-I-Modifier.ll

Please do NOT pull this into Tak.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50315 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
507ffd2423cfd0f5204c69e44c50aa3c759609d8 27-Apr-2008 Chris Lattner <sabre@nondot.org> isa+cast -> dyn_cast


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50314 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
786c4281ce5f801746cb649d5e0e502b5d0bbd97 27-Apr-2008 Chris Lattner <sabre@nondot.org> isa+cast -> dyn_cast


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50314 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4376fea6631d41fff3f2a7c6186faed9eff59619 27-Apr-2008 Chris Lattner <sabre@nondot.org> Move a bunch of inline asm code out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50313 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
4cf8c700dac90d58430ee14db6cf851463569c91 27-Apr-2008 Chris Lattner <sabre@nondot.org> Move a bunch of inline asm code out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50313 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
5e764233f398b6929b67701672a5e78fec20ce2e 27-Apr-2008 Chris Lattner <sabre@nondot.org> A few inline asm cleanups:
- Make targetlowering.h fit in 80 cols.
- Make LowerAsmOperandForConstraint const.
- Make lowerXConstraint -> LowerXConstraint
- Make LowerXConstraint return a const char* instead of taking a string byref.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50312 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
eca405c6ff03fda968effe2458f21a4a23974fe5 27-Apr-2008 Chris Lattner <sabre@nondot.org> A few inline asm cleanups:
- Make targetlowering.h fit in 80 cols.
- Make LowerAsmOperandForConstraint const.
- Make lowerXConstraint -> LowerXConstraint
- Make LowerXConstraint return a const char* instead of taking a string byref.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50312 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
23ce502cb7d9d06a1786d276a10be42e65759eca 25-Apr-2008 Dan Gohman <gohman@apple.com> Remove the code from CodeGenPrepare that moved getresult instructions
to the block that defines their operands. This doesn't work in the
case that the operand is an invoke, because invoke is a terminator
and must be the last instruction in a block.

Replace it with support in SelectionDAGISel for copying struct values
into sequences of virtual registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
30a71f593f2dc9af3ef7fa13720496d5c9d6fc1a 25-Apr-2008 Dan Gohman <gohman@apple.com> Remove the code from CodeGenPrepare that moved getresult instructions
to the block that defines their operands. This doesn't work in the
case that the operand is an invoke, because invoke is a terminator
and must be the last instruction in a block.

Replace it with support in SelectionDAGISel for copying struct values
into sequences of virtual registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6867991d541d08ca95d86841eca5f7c1d5096864 25-Apr-2008 Nate Begeman <natebegeman@mac.com> Pull the code to perform an INSERT_VECTOR_ELT in memory out into its own
function, and then use it to fix a bug in SplitVectorOp that expected inserts
to always have constant insertion indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7c9e4b71d0c8f3fb0fc22b8ce1c114be6a925741 25-Apr-2008 Nate Begeman <natebegeman@mac.com> Pull the code to perform an INSERT_VECTOR_ELT in memory out into its own
function, and then use it to fix a bug in SplitVectorOp that expected inserts
to always have constant insertion indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a971dbdde27fd4ff53dbebdd4aaf87826d081aa2 24-Apr-2008 Evan Cheng <evan.cheng@apple.com> - Check if a register is livein before removing it. It may have already been removed.
- Do not iterate over SmallPtrSet, the order of iteration is not deterministic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50209 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
impleRegisterCoalescing.cpp
194fe7c13dc1024c84921ff702b0913c61dbe85d 24-Apr-2008 Evan Cheng <evan.cheng@apple.com> - Check if a register is livein before removing it. It may have already been removed.
- Do not iterate over SmallPtrSet, the order of iteration is not deterministic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50209 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
impleRegisterCoalescing.cpp
67780f108ccb509dffe3ff63d3826ea6accb1bb1 23-Apr-2008 Dan Gohman <gohman@apple.com> Use isa instead of dyn_cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50181 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6b8524380d079983e9257e664013f9a2dccac6e1 23-Apr-2008 Dan Gohman <gohman@apple.com> Use isa instead of dyn_cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50181 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3dc34f682dfdfbf75c2b883e21a953d41df4f3a0 23-Apr-2008 Dan Gohman <gohman@apple.com> Add support to codegen for getresult instructions with undef operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
10e4bdf5d1cf60d1c7bbfbb780996290fc2b94a7 23-Apr-2008 Dan Gohman <gohman@apple.com> Add support to codegen for getresult instructions with undef operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b013f5094c3bdb36472da996d63d5c0f75b6d4d3 23-Apr-2008 Anton Korobeynikov <asl@math.spbu.ru> Unbreak JIT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50173 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
9cba34cf8554c2b2bdddcc4e3a7a54e5fd6b1153 23-Apr-2008 Anton Korobeynikov <asl@math.spbu.ru> Unbreak JIT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50173 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
769b481e9f57b9fa2acf6c5fe0a94877520fcec3 23-Apr-2008 Anton Korobeynikov <asl@math.spbu.ru> Add facility for pre-RA passes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50165 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
339d24598c243698efed3667feab4db21f2af185 23-Apr-2008 Anton Korobeynikov <asl@math.spbu.ru> Add facility for pre-RA passes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50165 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
aadc780a56820c263dca141b2b9f9e39355f6991 23-Apr-2008 Anton Korobeynikov <asl@math.spbu.ru> Use precomputed value, if any


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50164 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
7e5c3f018baab49b79a77dacc5a8383cd38f80c4 23-Apr-2008 Anton Korobeynikov <asl@math.spbu.ru> Use precomputed value, if any


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50164 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
874384e20f618d6ac932628db64e048757213fcd 23-Apr-2008 Anton Korobeynikov <asl@math.spbu.ru> Cleanup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50160 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
958c93eab46cd35fa38de9556ffa9a1037663e35 23-Apr-2008 Anton Korobeynikov <asl@math.spbu.ru> Cleanup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50160 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
639cdc210b86302bfa03e2a88266ef0d4aba102c 21-Apr-2008 Dan Gohman <gohman@apple.com> Fix an out-of-bounds access in -view-sunit-dags in the case of an
empty ScheduleDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50054 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
66d5eaf43e9e37ebe38f08d2974b325fb912a393 21-Apr-2008 Dan Gohman <gohman@apple.com> Fix an out-of-bounds access in -view-sunit-dags in the case of an
empty ScheduleDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50054 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
9dd2ce46c58dd05f0835df77f308396715890d66 20-Apr-2008 Dale Johannesen <dalej@apple.com> Check we aren't trying to convert PPC long double.
This fixes the testsuite failure on ppcf128-4.ll.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
90c25d16c7db440514e86cec1843736b9bd46904 20-Apr-2008 Dale Johannesen <dalej@apple.com> Check we aren't trying to convert PPC long double.
This fixes the testsuite failure on ppcf128-4.ll.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
02a260aa11a2e1b2c14335274d3c42ca3f3eabc0 20-Apr-2008 Chris Lattner <sabre@nondot.org> Switch to using Simplified ConstantFP::get API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49977 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
5e0610fe159d5f82f0d339a6148a693b53de2f08 20-Apr-2008 Chris Lattner <sabre@nondot.org> Switch to using Simplified ConstantFP::get API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49977 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
37bcda3de96a9c41dc1aa05615ca3df869119026 18-Apr-2008 Duncan Sands <baldrick@free.fr> Implement a bit more softfloat support in
LegalizeTypes. Correct the load logic so
that it actually works, and also teach it
to handle floating point extending loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesFloatToInt.cpp
f45437511403930c7ad473fda878da4fab1c0d9a 18-Apr-2008 Duncan Sands <baldrick@free.fr> Implement a bit more softfloat support in
LegalizeTypes. Correct the load logic so
that it actually works, and also teach it
to handle floating point extending loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesFloatToInt.cpp
4cc04564567686e62ec5aed7ef9efc7b3ef973aa 18-Apr-2008 Duncan Sands <baldrick@free.fr> Add some more FIXME's for indexed loads and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49916 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
8aa1c9dd86b498c7296377c3819f1335b5d256a0 18-Apr-2008 Duncan Sands <baldrick@free.fr> Add some more FIXME's for indexed loads and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49916 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
41edfb8ae119d6cf6579046619dd2820ec876065 18-Apr-2008 Duncan Sands <baldrick@free.fr> Provide an explicit list of operands to MakeLibcall,
rather than having it suck them out of a node. Add
a bunch of new libcalls, and remove dead softfloat
code (dead, because FloatToInt is used not Expand
in this case). Note that indexed stores probably
aren't handled properly, likewise for loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49915 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
37d64ec5fdac3c4d014a48ea5d44b515a9465c06 18-Apr-2008 Duncan Sands <baldrick@free.fr> Provide an explicit list of operands to MakeLibcall,
rather than having it suck them out of a node. Add
a bunch of new libcalls, and remove dead softfloat
code (dead, because FloatToInt is used not Expand
in this case). Note that indexed stores probably
aren't handled properly, likewise for loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49915 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
a8f720d695e00192cc5816e10a7c52ade8446813 18-Apr-2008 Evan Cheng <evan.cheng@apple.com> Correct comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49913 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
254dc4b457c9e6785fbf5540184ae190849ab128 18-Apr-2008 Evan Cheng <evan.cheng@apple.com> Correct comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49913 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
883d260045500864a42dd8728f8c117a59720658 18-Apr-2008 Evan Cheng <evan.cheng@apple.com> Not safe to "kill" a register if its live range extends pass the end of block branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49911 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
6727334bf90ffe698e5b744fb0319d358c7a3fbf 18-Apr-2008 Evan Cheng <evan.cheng@apple.com> Not safe to "kill" a register if its live range extends pass the end of block branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49911 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
35b31bea0dc9e16d4c384a6a78404bdd791b6693 18-Apr-2008 Dan Gohman <gohman@apple.com> Remove the implicit conversion from SDOperandPtr to SDOperand*; this
may fix a build error on Visual Studio.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49876 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1d47f5c106360e5e367255ae2633cd37051ce67a 18-Apr-2008 Dan Gohman <gohman@apple.com> Remove the implicit conversion from SDOperandPtr to SDOperand*; this
may fix a build error on Visual Studio.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49876 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
639f493ebf31632574738735bb367729ca187282 17-Apr-2008 Evan Cheng <evan.cheng@apple.com> Be more careful with insert_subreg and extract_subreg where either source or destination operand has already been coalesced with another register that's defined by a insert_subreg or extract_subreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49843 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
dcf29c300706e7fe7d612a8302fcecff984a5838 17-Apr-2008 Evan Cheng <evan.cheng@apple.com> Be more careful with insert_subreg and extract_subreg where either source or destination operand has already been coalesced with another register that's defined by a insert_subreg or extract_subreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49843 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f2317782697e05787dbae01c013bfdf642ed6299 17-Apr-2008 Bill Wendling <isanbard@gmail.com> Use correct name for method in comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49841 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
edb53bee0e4a7687ac1c82cc0a32d2b88d30a0b2 17-Apr-2008 Bill Wendling <isanbard@gmail.com> Use correct name for method in comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49841 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
499c1bd358917ad64ed3dcc32492dd38e1a47706 17-Apr-2008 Dan Gohman <gohman@apple.com> Correct the SrcValue information in the Expand code for va_copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49839 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6b9a08e56759b0296b7b9ae4db2caa21e42d5379 17-Apr-2008 Dan Gohman <gohman@apple.com> Correct the SrcValue information in the Expand code for va_copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49839 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
621d157676940640f5d496a52b2936e37b81f1b4 17-Apr-2008 Evan Cheng <evan.cheng@apple.com> Fix a sub-register indice propagation bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49832 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
89571f33fa2f9e73908a9348d3ed545c398f5ccf 17-Apr-2008 Evan Cheng <evan.cheng@apple.com> Fix a sub-register indice propagation bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49832 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
51cc3c13eac78da242f0518fc42580e48dd5304f 16-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Correlate stubs with functions in JIT: when emitting a stub, the JIT tells the memory manager which function
the stub will resolve.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49814 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
2b483b5fb10fd3e6223b824726c9403bb47c1e1c 16-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Correlate stubs with functions in JIT: when emitting a stub, the JIT tells the memory manager which function
the stub will resolve.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49814 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
9c1e06e18721206c736512f3448997b41145019c 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> After reading memory that's already freed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49810 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
c4d008126ed54536e5a46850ac6fcec5ed8da642 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> After reading memory that's already freed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49810 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
52e724ad7e679ee590f4bd763d55280586a8f1bc 16-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Infrastructure for getting the machine code size of a function and an instruction. X86, PowerPC and ARM are implemented




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49809 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
cb162a0601c07804318bea53afe3f10f87567ef0 16-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Infrastructure for getting the machine code size of a function and an instruction. X86, PowerPC and ARM are implemented




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49809 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
ff7a3e557e09181cf1042fb79f877aed62fd7501 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2226. Avoid using uninitialized variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49807 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
35e3f15e14e474f0223f85760384aef26d4e308a 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2226. Avoid using uninitialized variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49807 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
76249966eec8d318534b416f33f878c6bd01d1ee 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> Empty basic block should have an empty range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49800 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
11c9164b6fcbadcbf5b76942764480d7225bcd40 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> Empty basic block should have an empty range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49800 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9cac5259fe237120a0c347d6d14e549005148f1b 16-Apr-2008 Roman Levenstein <romix.llvm@googlemail.com> Ongoing work on improving the instruction selection infrastructure:
Rename SDOperandImpl back to SDOperand.
Introduce the SDUse class that represents a use of the SDNode referred by
an SDOperand. Now it is more similar to Use/Value classes.

Patch is approved by Dan Gohman.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49795 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
98b8fcb96689930537f70ffb0023da9dce797a2f 16-Apr-2008 Roman Levenstein <romix.llvm@googlemail.com> Ongoing work on improving the instruction selection infrastructure:
Rename SDOperandImpl back to SDOperand.
Introduce the SDUse class that represents a use of the SDNode referred by
an SDOperand. Now it is more similar to Use/Value classes.

Patch is approved by Dan Gohman.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49795 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
0d4bdde3270a8ed182a685a580031d6d5d743164 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> Rewrite LiveVariable liveness computation. The new implementation is much simplified. It eliminated the nasty recursive routines and removed the partial def / use bookkeeping. There is also potential for performance improvement by replacing the conservative handling of partial physical register definitions. The code is currently disabled until live interval analysis is taught of the name scheme.

This patch also fixed a couple of nasty corner cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49784 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
1c3ee66468a5912864b93a419e6154e4b65fb0c6 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> Rewrite LiveVariable liveness computation. The new implementation is much simplified. It eliminated the nasty recursive routines and removed the partial def / use bookkeeping. There is also potential for performance improvement by replacing the conservative handling of partial physical register definitions. The code is currently disabled until live interval analysis is taught of the name scheme.

This patch also fixed a couple of nasty corner cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49784 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
9b6d7b9fb36b5cf87d291881dfcea399796f7826 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49783 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
794d0f72b54aa348e8b844d786f6ef1611f5a7ed 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49783 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
d94950c47382ba1f1de20fa45aac2a294d05908d 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> Avoid read after free.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49760 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
45be50f1fb45a4a78f7216211275f8e1539b587d 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> Avoid read after free.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49760 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5a2d335c4cdc2bf870f04b8ca20c8032638d1961 16-Apr-2008 Dan Gohman <gohman@apple.com> Fix the new scheduler assertion checks to work when
the scheduler has inserted no-ops. This fixes
the 2006-07-03-schedulers.ll regression on ppc32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
8701816221817cfb8b8b67ca06cc9a39bacbcbde 16-Apr-2008 Dan Gohman <gohman@apple.com> Fix the new scheduler assertion checks to work when
the scheduler has inserted no-ops. This fixes
the 2006-07-03-schedulers.ll regression on ppc32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
6ccbbd89906157187ac04b2b3237c4aee7acd095 15-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Change Divided flag to Split, as suggested by Evan



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49715 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4fda257b66463f9974368255d5a5222057234db7 15-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Change Divided flag to Split, as suggested by Evan



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49715 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
80792f3ddec43aff7f0758c9096f8cb53dcc1e40 15-Apr-2008 Dan Gohman <gohman@apple.com> Treat EntryToken nodes as "passive" so that they aren't added to the
ScheduleDAG; they don't correspond to any actual instructions so they
don't need to be scheduled.

This fixes a bug where the EntryToken was being scheduled multiple
times in some cases, though it ended up not causing any trouble because
EntryToken doesn't expand into anything. With this fixed the schedulers
reliably schedule the expected number of units, so we can check this
with an assertion.

This requires a tweak to test/CodeGen/X86/loop-hoist.ll because it
ends up getting scheduled differently in a trivial way, though it was
enough to fool the prcontext+grep that the test does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
b7ba05e1b60c2f922940f069b495b099653f63d2 15-Apr-2008 Dan Gohman <gohman@apple.com> Treat EntryToken nodes as "passive" so that they aren't added to the
ScheduleDAG; they don't correspond to any actual instructions so they
don't need to be scheduled.

This fixes a bug where the EntryToken was being scheduled multiple
times in some cases, though it ended up not causing any trouble because
EntryToken doesn't expand into anything. With this fixed the schedulers
reliably schedule the expected number of units, so we can check this
with an assertion.

This requires a tweak to test/CodeGen/X86/loop-hoist.ll because it
ends up getting scheduled differently in a trivial way, though it was
enough to fool the prcontext+grep that the test does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
89bf0a6b05c8c353890c88ed1c10dec96a9a7bd8 15-Apr-2008 Dan Gohman <gohman@apple.com> In -view-sunit-dags, display "special" chain dependencies as cyan
instead of blue to distinguish them from regular dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
75d89e23a0ef82f58b1a7470c22fe17c78f69346 15-Apr-2008 Dan Gohman <gohman@apple.com> In -view-sunit-dags, display "special" chain dependencies as cyan
instead of blue to distinguish them from regular dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
b91c89dfb9a7d119eb2184e3fda8af12d71713a6 14-Apr-2008 Dan Gohman <gohman@apple.com> Avoid creating MERGE_VALUES nodes for single values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49676 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
849d7c6f56c212b6e77cbe78f6285d1dc78a023b 14-Apr-2008 Dan Gohman <gohman@apple.com> Avoid creating MERGE_VALUES nodes for single values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49676 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
29e4bdbf27c5f03b12dd2bc41d9ccb0d5f3dfdf4 14-Apr-2008 Dan Gohman <gohman@apple.com> Fix const-correctness issues with the SrcValue handling in the
memory intrinsic expansion code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49666 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
64fd1a959022d190ca01e9a8ab665ea97c03546c 14-Apr-2008 Dan Gohman <gohman@apple.com> Fix const-correctness issues with the SrcValue handling in the
memory intrinsic expansion code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49666 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3541af73b6b8a083cf2d7784438d60e8bcce3883 14-Apr-2008 Dale Johannesen <dalej@apple.com> Reverse sense of unwind-tables option. This means
stack tracebacks on Darwin x86-64 won't work by default;
nevertheless, everybody but me thinks this is a good idea.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49663 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
b369e8de1e2ee83f2cec829a86684ee382da6853 14-Apr-2008 Dale Johannesen <dalej@apple.com> Reverse sense of unwind-tables option. This means
stack tracebacks on Darwin x86-64 won't work by default;
nevertheless, everybody but me thinks this is a good idea.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49663 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
9701c8a18fd3888d20f4cd8fcebc6bc99f005c0a 14-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Fix /test/CodeGen/PowerPC/big-endian-actual-args.ll for linux/ppc32


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49652 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
78dda99fdb44b376c644d836eda4cfae2115fb24 14-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Fix /test/CodeGen/PowerPC/big-endian-actual-args.ll for linux/ppc32


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49652 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ddc016cc8592fe5c9379feb42a1fb4fb63164a91 14-Apr-2008 Duncan Sands <baldrick@free.fr> Initial libcall support for LegalizeTypes. This is
much simpler than in LegalizeDAG because calls are
not yet expanded into call sequences: that happens
after type legalization has finished.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
5e7b04a9fb9bf0a6696c1f3d5d76f8bca23b2480 14-Apr-2008 Duncan Sands <baldrick@free.fr> Initial libcall support for LegalizeTypes. This is
much simpler than in LegalizeDAG because calls are
not yet expanded into call sequences: that happens
after type legalization has finished.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
4a6da60787fcc66c521288fbd139cf8afdca5957 13-Apr-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes can sometimes have deleted nodes
in its maps. Add some sanity checks that catch
this kind of thing. Hopefully these can be
removed one day (once all problems are fixed!)
but for the moment it seems wise to have them in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49612 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
4ac8ecc756bd6829ca06c4289548d3eed31c3fa7 13-Apr-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes can sometimes have deleted nodes
in its maps. Add some sanity checks that catch
this kind of thing. Hopefully these can be
removed one day (once all problems are fixed!)
but for the moment it seems wise to have them in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49612 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
c0cb28fd3abee9a8b40856990e04f1af2f9bd7b8 13-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Add a divided flag for the first piece of an argument divided into mulitple parts. Fixes PR1643



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49611 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
46253ddfa7d06facd4a16cd5bd80771c15a6918f 13-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Add a divided flag for the first piece of an argument divided into mulitple parts. Fixes PR1643



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49611 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
89f6d88db334ba088672ae0753deb7d7b7509bac 13-Apr-2008 Duncan Sands <baldrick@free.fr> Merge LLVMBuilder and FoldingBuilder, calling
the result IRBuilder. Patch by Dominic Hamon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49604 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackCollector.cpp
a989c7e045dcad58bb58b9fb0cb75ee901f7879e 13-Apr-2008 Duncan Sands <baldrick@free.fr> Merge LLVMBuilder and FoldingBuilder, calling
the result IRBuilder. Patch by Dominic Hamon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49604 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackCollector.cpp
460a14e09c2af630fc1e840dcb3e0f725663067b 12-Apr-2008 Duncan Sands <baldrick@free.fr> Factor some libcall code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49583 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f1db7c87bdd7136e5511cc38cafeb33421e3af36 12-Apr-2008 Duncan Sands <baldrick@free.fr> Factor some libcall code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49583 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
707e0184233f27e0e9f9aee0309f2daab8cfe7f8 12-Apr-2008 Dan Gohman <gohman@apple.com> Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not Legal
on any current target and aren't optimized in DAGCombiner. Instead
of using intermediate nodes, expand the operations, choosing between
simple loads/stores, target-specific code, and library calls,
immediately.

Previously, the code to emit optimized code for these operations
was only used at initial SelectionDAG construction time; now it is
used at all times. This fixes some cases where rep;movs was being
used for small copies where simple loads/stores would be better.

This also cleans up code that checks for alignments less than 4;
let the targets make that decision instead of doing it in
target-independent code. This allows x86 to use rep;movs in
low-alignment cases.

Also, this fixes a bug that resulted in the use of rep;stos for
memsets of 0 with non-constant memory size when the alignment was
at least 4. It's better to use the library in this case, which
can be significantly faster when the size is large.

This also preserves more SourceValue information when memory
intrinsics are lowered into simple loads/stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49572 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
e8b391ea3cf33a68b0c5eeafc448c53b412dd61f 12-Apr-2008 Dan Gohman <gohman@apple.com> Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not Legal
on any current target and aren't optimized in DAGCombiner. Instead
of using intermediate nodes, expand the operations, choosing between
simple loads/stores, target-specific code, and library calls,
immediately.

Previously, the code to emit optimized code for these operations
was only used at initial SelectionDAG construction time; now it is
used at all times. This fixes some cases where rep;movs was being
used for small copies where simple loads/stores would be better.

This also cleans up code that checks for alignments less than 4;
let the targets make that decision instead of doing it in
target-independent code. This allows x86 to use rep;movs in
low-alignment cases.

Also, this fixes a bug that resulted in the use of rep;stos for
memsets of 0 with non-constant memory size when the alignment was
at least 4. It's better to use the library in this case, which
can be significantly faster when the size is large.

This also preserves more SourceValue information when memory
intrinsics are lowered into simple loads/stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49572 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
f2b24ca2c71e0287dce732e4d984b8fcb77d072e 11-Apr-2008 Evan Cheng <evan.cheng@apple.com> Do not add empty live intervals to handled_. They should never be undone for backtracking.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49544 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
1fbf9c23e1b8ed61498bb1538ede7c767d809217 11-Apr-2008 Evan Cheng <evan.cheng@apple.com> Do not add empty live intervals to handled_. They should never be undone for backtracking.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49544 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
f870fbc554ac862ad6d45cf97148739802a3ed12 11-Apr-2008 Evan Cheng <evan.cheng@apple.com> If a PHI node has a single implicit_def source, replace it with an implicit_def instead of a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49543 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
59d4300a7d29bfd41729354184ad8df8383dfcba 11-Apr-2008 Evan Cheng <evan.cheng@apple.com> If a PHI node has a single implicit_def source, replace it with an implicit_def instead of a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49543 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
4cce6b4c7882ef0cc993d931b90bf33985c96110 11-Apr-2008 Evan Cheng <evan.cheng@apple.com> Use of implicit_def is not part of live interval. Create empty intervals for the uses when the live interval is being spilled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49542 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
7b88cbc7b5f682871b062601fbfd5c0305b9a6af 11-Apr-2008 Evan Cheng <evan.cheng@apple.com> Use of implicit_def is not part of live interval. Create empty intervals for the uses when the live interval is being spilled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49542 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
78256a199edba827b5356fcd041f60f92c9f205f 11-Apr-2008 Gabor Greif <ggreif@gmail.com> detabify

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49524 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5bd3d9b7997c69b4131ea0288f83ff3e8e87a061 11-Apr-2008 Gabor Greif <ggreif@gmail.com> detabify

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49524 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d2012d0c4bf0df01b5cbb35bceaf80c232d0d7b7 11-Apr-2008 Evan Cheng <evan.cheng@apple.com> Remove implicit_def instructions that become dead as result of coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49513 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0f4178d2428de85a98c574d3cdd29f095d9a6072 11-Apr-2008 Evan Cheng <evan.cheng@apple.com> Remove implicit_def instructions that become dead as result of coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49513 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5d3600f5766e93cb459ef6108fba00c052aa6388 11-Apr-2008 Evan Cheng <evan.cheng@apple.com> Allow registers defined by implicit_def to be clobbered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49512 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
f50b23d71072f1c763165412cf48590afda09ad4 11-Apr-2008 Evan Cheng <evan.cheng@apple.com> Allow registers defined by implicit_def to be clobbered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49512 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
172b70c62a315de654a4d1683dbb5544e67afa90 10-Apr-2008 Evan Cheng <evan.cheng@apple.com> A copy instruction may use a register multiple times on some targets. Change them all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49491 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
4d89f4665cfba575b2721acd4b93fa549231e369 10-Apr-2008 Evan Cheng <evan.cheng@apple.com> A copy instruction may use a register multiple times on some targets. Change them all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49491 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f0785153e51a60ede0a85bf98c1c1e6ada9054f6 10-Apr-2008 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49469 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.h
4670e526ba94f58488d7163a1784004cb35ee79d 10-Apr-2008 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49469 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.h
80b09fe8bc1d2755ef9a6b03b8862a657db42f06 10-Apr-2008 Evan Cheng <evan.cheng@apple.com> Teach branch folding pass about implicit_def instructions. Unfortunately we can't just eliminate them since register scavenger expects every register use to be defined. However, we can delete them when there are no intra-block uses. Carefully removing some implicit def's which enable more blocks to be optimized away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49461 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
682e4aa034649aa38ea7a4996e16c97dd7ad0030 10-Apr-2008 Evan Cheng <evan.cheng@apple.com> Teach branch folding pass about implicit_def instructions. Unfortunately we can't just eliminate them since register scavenger expects every register use to be defined. However, we can delete them when there are no intra-block uses. Carefully removing some implicit def's which enable more blocks to be optimized away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49461 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
7e073baedb8232b9519dbe15ea141ff98ccfe6ae 09-Apr-2008 Evan Cheng <evan.cheng@apple.com> - More aggressively coalescing away copies whose source is defined by an implicit_def.
- Added insert_subreg coalescing support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49448 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
909ab8b41a1f6072d24af951b70511d8a586d8ac 09-Apr-2008 Evan Cheng <evan.cheng@apple.com> - More aggressively coalescing away copies whose source is defined by an implicit_def.
- Added insert_subreg coalescing support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49448 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
f20d943bc60551e8e674c0ad53ebc008ed66982e 09-Apr-2008 Evan Cheng <evan.cheng@apple.com> Missed a hasInterval check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49415 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
48383898b9643f2a40239e8262f2cfa71795d46f 09-Apr-2008 Evan Cheng <evan.cheng@apple.com> Missed a hasInterval check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49415 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
4e1b79459fcf72216cdc42a59953e172c60e15ca 08-Apr-2008 Dale Johannesen <dalej@apple.com> Implement new llc flag -disable-required-unwind-tables.
Corresponds to -fno-unwind-tables (usually default in gcc).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49361 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
a9b3e482b2edd1cfee555b48ad85260af9d3971c 08-Apr-2008 Dale Johannesen <dalej@apple.com> Implement new llc flag -disable-required-unwind-tables.
Corresponds to -fno-unwind-tables (usually default in gcc).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49361 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
36b5c1338a03453ba1c110b120269ca972fb65a3 07-Apr-2008 Dan Gohman <gohman@apple.com> Rename MemOperand to MachineMemOperand. This was suggested by
review feedback from Chris quite a while ago. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49348 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
1fad9e6ca2c608b4cd09275e3c302ebc18ebc33a 07-Apr-2008 Dan Gohman <gohman@apple.com> Rename MemOperand to MachineMemOperand. This was suggested by
review feedback from Chris quite a while ago. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49348 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
dc1adac582fa120861f18ae7221bfe1421fea59f 07-Apr-2008 Roman Levenstein <romix.llvm@googlemail.com> Re-commit of the r48822, where the infinite looping problem discovered
by Dan Gohman is fixed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
05650fd0ba74ad3356d1bc5d1f07ff194b16b82e 07-Apr-2008 Roman Levenstein <romix.llvm@googlemail.com> Re-commit of the r48822, where the infinite looping problem discovered
by Dan Gohman is fixed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
409a3d0837a10b6eef50eab953c2fa95399f7883 06-Apr-2008 Chris Lattner <sabre@nondot.org> Silence warning when no assertions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49284 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
845e05c8223fcb8e918df5794a50704e9699d7c0 06-Apr-2008 Chris Lattner <sabre@nondot.org> Silence warning when no assertions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49284 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
4fea2e982d79132715711dfcfdc46abf15239217 06-Apr-2008 Torok Edwin <edwintorok@gmail.com> Prefer to expand mask for xor to -1, so we have a chance to turn it into a not.
If it cannot be expanded, it will keep the old behaviour and try to shrink the constant.
Part of enhancement for PR2191.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49280 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
405b243971627c037b7f48a009dfcf5c159ef1a5 06-Apr-2008 Edwin Török <edwintorok@gmail.com> Prefer to expand mask for xor to -1, so we have a chance to turn it into a not.
If it cannot be expanded, it will keep the old behaviour and try to shrink the constant.
Part of enhancement for PR2191.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49280 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
051a950000e21935165db56695e35bade668193b 06-Apr-2008 Gabor Greif <ggreif@gmail.com> API changes for class Use size reduction, wave 1.
Specifically, introduction of XXX::Create methods
for Users that have a potentially variable number of
Uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49277 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
hadowStackCollector.cpp
d6da1d0d17e2605363504f044664696f4d85b30f 06-Apr-2008 Gabor Greif <ggreif@gmail.com> API changes for class Use size reduction, wave 1.
Specifically, introduction of XXX::Create methods
for Users that have a potentially variable number of
Uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49277 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
hadowStackCollector.cpp
1dc7869025d91906e8305e921ddb82dac780d70e 05-Apr-2008 Evan Cheng <evan.cheng@apple.com> 1. IMPLICIT_DEF can *re-define* any register.
2. Coalescer can now create an interesting situation where a register def can
reaches itself without being killed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49246 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
667e5e85469fa34d5b743218987160a5815aef89 05-Apr-2008 Evan Cheng <evan.cheng@apple.com> 1. IMPLICIT_DEF can *re-define* any register.
2. Coalescer can now create an interesting situation where a register def can
reaches itself without being killed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49246 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
a4091d34f3c05717eb5bb66a1257a0c1005e6dfa 05-Apr-2008 Dale Johannesen <dalej@apple.com> Make sure both PendingLoads and PendingExports are flushed
before an invoke. Failure to do this causes references in
the landing pad to variables that were not set. Fixes
g++.dg/eh/delayslot1.C
g++.dg/eh/fp-regs.C
g++.old-deja/g++.brendan/eh1.C



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49243 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1f68ca86fbb3cb1fbf05b8d64a7c3d1a7c9ab44e 05-Apr-2008 Dale Johannesen <dalej@apple.com> Make sure both PendingLoads and PendingExports are flushed
before an invoke. Failure to do this causes references in
the landing pad to variables that were not set. Fixes
g++.dg/eh/delayslot1.C
g++.dg/eh/fp-regs.C
g++.old-deja/g++.brendan/eh1.C



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49243 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fc5423d561bb7624bf328e3ed554efce6e296cbc 04-Apr-2008 Evan Cheng <evan.cheng@apple.com> Undo PHI elimination copy placement patch. This causes coalescing (performace) issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49198 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
3bca6ca424cd682c4ab174e82cd831b58c46859e 04-Apr-2008 Evan Cheng <evan.cheng@apple.com> Undo PHI elimination copy placement patch. This causes coalescing (performace) issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49198 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
e04f7365452e9c08f89d26187adcc08bf72233e5 04-Apr-2008 Evan Cheng <evan.cheng@apple.com> This is done.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49197 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
c7fe333d42d6290fbf9116e8ed31a4fde776571b 04-Apr-2008 Evan Cheng <evan.cheng@apple.com> This is done.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49197 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
51dd8c9224e58c12a846327bd8cfab7b639a9905 03-Apr-2008 Andrew Lenharth <andrewl@lenharth.org> if some functions don't have debug info, we were outputing the same label at the start of each of those functions. This makes assemblers unhappy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49176 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
42f9140ba4c213f29d988b2734bb4261dc326246 03-Apr-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> if some functions don't have debug info, we were outputing the same label at the start of each of those functions. This makes assemblers unhappy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49176 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
db9b1c33294d11c73a212f29080d7da68f4f2403 03-Apr-2008 Evan Cheng <evan.cheng@apple.com> - Turn copies of implicit_def into implicit_def instructions.
- Be smarter about coalescing copies from implicit_def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49168 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
014c9ffceb8ec48f4b92828a0839d2a6e3edf6d8 03-Apr-2008 Evan Cheng <evan.cheng@apple.com> - Turn copies of implicit_def into implicit_def instructions.
- Be smarter about coalescing copies from implicit_def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49168 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
f30a49d9e02bdf9ba9703f8f1f52a3c6186e0065 03-Apr-2008 Evan Cheng <evan.cheng@apple.com> Special handling of zero-sized live intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49167 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
a31869970a34a76e43efff81fa863a6b250e9999 03-Apr-2008 Evan Cheng <evan.cheng@apple.com> Special handling of zero-sized live intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49167 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
419852ca8a01aecde4c0e20af6b7bd6450e70f87 03-Apr-2008 Evan Cheng <evan.cheng@apple.com> - Treat a live range defined by an implicit_def as a zero-sized one.
- Eliminate an implicit_def when it's being spilled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49166 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
70f68e9f8d3bf8589f6d1441d025be1c82261807 03-Apr-2008 Evan Cheng <evan.cheng@apple.com> - Treat a live range defined by an implicit_def as a zero-sized one.
- Eliminate an implicit_def when it's being spilled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49166 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
576a27043d95d0b9b8a010bccfd38ed9c0afa739 03-Apr-2008 Evan Cheng <evan.cheng@apple.com> - PHI elimination also eliminates implicit_def that fits into a PHI node rather than copying it.
- Be (slightly) smarter about where to place the copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49165 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
7b66cd16f069f83ecf879a72066f217e62be6151 03-Apr-2008 Evan Cheng <evan.cheng@apple.com> - PHI elimination also eliminates implicit_def that fits into a PHI node rather than copying it.
- Be (slightly) smarter about where to place the copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49165 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
8a50f1fcf0147d4ba959dc48066ddf281d5bc7e6 03-Apr-2008 Evan Cheng <evan.cheng@apple.com> Start of a series of patches related to implicit_def.
There is no point in creating a long live range defined by an implicit_def. Scheduler now duplicates implicit_def instruction for each of its uses. Therefore, if an implicit_def node has multiple uses, it will become a number of very short live ranges, rather than a long one. This will make coalescer's job easier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
19da42df554776cd1ea82c3946f788751307b378 03-Apr-2008 Evan Cheng <evan.cheng@apple.com> Start of a series of patches related to implicit_def.
There is no point in creating a long live range defined by an implicit_def. Scheduler now duplicates implicit_def instruction for each of its uses. Therefore, if an implicit_def node has multiple uses, it will become a number of very short live ranges, rather than a long one. This will make coalescer's job easier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
6397c64441ddce3822ab0e712f224a11bd75811c 03-Apr-2008 Evan Cheng <evan.cheng@apple.com> Backing out 48222 temporarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
91624382f6e3d48485d23b4b1e67f85e9287c8f0 03-Apr-2008 Evan Cheng <evan.cheng@apple.com> Backing out 48222 temporarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
dedf502fba8e9a009212233810ce1bcbe10619d0 02-Apr-2008 Dale Johannesen <dalej@apple.com> Make EH work with unnamed functions. Reenable running
StripSymbols when EH is on.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49110 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
e73bcbb57b0bebe06a2e97c538b61ce2a432f07c 02-Apr-2008 Dale Johannesen <dalej@apple.com> Make EH work with unnamed functions. Reenable running
StripSymbols when EH is on.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49110 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ea1d9cdc4e4f4e4570acddb7c4a63f703b110dad 02-Apr-2008 Evan Cheng <evan.cheng@apple.com> Now that I am told MachineRegisterInfo also tracks physical register uses / defs, I can do away with the horribleness I introduced a while back. It's impossible to detect if there is any use of a physical register below an instruction (and before any def of the register) with some cheap book keeping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49105 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
251fa15cb518dca9a3707f4bfb8dc4f3c0370f25 02-Apr-2008 Evan Cheng <evan.cheng@apple.com> Now that I am told MachineRegisterInfo also tracks physical register uses / defs, I can do away with the horribleness I introduced a while back. It's impossible to detect if there is any use of a physical register below an instruction (and before any def of the register) with some cheap book keeping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49105 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
1088317675dd34a1823f427e472fb9e43c616cb1 02-Apr-2008 Evan Cheng <evan.cheng@apple.com> Remove #include<map> from LiveVariables.h. Not referenced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49099 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
egAllocLocal.cpp
0d34ac96dedd210999f3f9730d982149c2267f85 02-Apr-2008 Evan Cheng <evan.cheng@apple.com> Remove #include<map> from LiveVariables.h. Not referenced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49099 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
egAllocLocal.cpp
e00406281d94ebb9c69b7803311936f07994da43 02-Apr-2008 Dale Johannesen <dalej@apple.com> Cosmetic changes per EH patch review feedback.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49096 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
62f0a6d2fd2a4898b01ffeb8572dd5ebaaa1cfd3 02-Apr-2008 Dale Johannesen <dalej@apple.com> Cosmetic changes per EH patch review feedback.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49096 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
52b1733df4bb3cafa7a81384da7e81a1fa66cea5 02-Apr-2008 Owen Anderson <resistor@mac.com> In some situations, we need to check for local interferences between the PHI
node and its inputs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49070 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
07aa2ecae340471411fce0625e8a6b12c8b5df8a 02-Apr-2008 Owen Anderson <resistor@mac.com> In some situations, we need to check for local interferences between the PHI
node and its inputs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49070 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
59df878391b5a10d184636fed608f6a9cb29761f 02-Apr-2008 Owen Anderson <resistor@mac.com> Correctly mark a valno that was previous defined by a PHI node as having an
unknown defining inst after PHI elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49069 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
2d24f3cbecf3ef365c026eeb774f4b1a2a2f6bbc 02-Apr-2008 Owen Anderson <resistor@mac.com> Correctly mark a valno that was previous defined by a PHI node as having an
unknown defining inst after PHI elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49069 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
1532f3ddd77c362dd5f613af06b4de636e3c5b0e 02-Apr-2008 Dale Johannesen <dalej@apple.com> Recommitting EH patch; this should answer most of the
review feedback.
-enable-eh is still accepted but doesn't do anything.
EH intrinsics use Dwarf EH if the target supports that,
and are handled by LowerInvoke otherwise.
The separation of the EH table and frame move data is,
I think, logically figured out, but either one still
causes full EH info to be generated (not sure how to
split the metadata correctly).
MachineModuleInfo::needsFrameInfo is no longer used and
is removed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49064 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
LVMTargetMachine.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
8553576e0c959305b88e548148b0a472c94ffca8 02-Apr-2008 Dale Johannesen <dalej@apple.com> Recommitting EH patch; this should answer most of the
review feedback.
-enable-eh is still accepted but doesn't do anything.
EH intrinsics use Dwarf EH if the target supports that,
and are handled by LowerInvoke otherwise.
The separation of the EH table and frame move data is,
I think, logically figured out, but either one still
causes full EH info to be generated (not sure how to
split the metadata correctly).
MachineModuleInfo::needsFrameInfo is no longer used and
is removed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49064 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
LVMTargetMachine.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
3c75ba858b4e2070993cc1241ba74ead17f647d6 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> Re-materialization is for uses only.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49053 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
71f75b446345d0b940d727cb09bd1e0beb3b3bd6 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> Re-materialization is for uses only.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49053 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b6d5b1439047609c050576f3dc52b722e76bd30b 01-Apr-2008 Dale Johannesen <dalej@apple.com> Revert 49006 for the moment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49046 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
LVMTargetMachine.cpp
electionDAG/SelectionDAGISel.cpp
748a85ca991f61e8e097c6f42d721009b2f61936 01-Apr-2008 Dale Johannesen <dalej@apple.com> Revert 49006 for the moment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49046 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
LVMTargetMachine.cpp
electionDAG/SelectionDAGISel.cpp
78216bc9f89ee819f325f79eebdc9d6365cd80ed 01-Apr-2008 Owen Anderson <resistor@mac.com> Don't dereference MBB->end().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49043 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
ff63c6848deeff6ddb414d654532a14b2b38b673 01-Apr-2008 Owen Anderson <resistor@mac.com> Don't dereference MBB->end().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49043 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
9845eb5b033db5ba5213d0b8dba958c1e168ccd3 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> More soft fp fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49016 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f99a775e11793fe01dbcf5c5b06a75f06bc21bd6 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> More soft fp fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49016 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
db45d1c649aa2e7c71accd8ad460aa764886cab3 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> Pasto.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49014 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cadb43c532ea8019824b2f98fe20e60107563f0c 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> Pasto.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49014 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6ad2f930da0ebadb0e000397cea8384c650877bb 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49013 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4a2f6df680cfd81dc50fe8af722905fbd60ccb05 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49013 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
110cf48752dcf86c6d95698c08805f1dd534ac83 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> Unbreak ARM / Thumb soft FP support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49012 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a87400339fcb3e087996e7ad534816d640c8b716 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> Unbreak ARM / Thumb soft FP support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49012 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1544e4713be68edcf042de5aed7265dff7169d9d 01-Apr-2008 Dale Johannesen <dalej@apple.com> Emit exception handling info for functions which are
not marked nounwind, or for all functions when -enable-eh
is set, provided the target supports Dwarf EH.

llvm-gcc generates nounwind in the right places; other FEs
will need to do so also. Given such a FE, -enable-eh should
no longer be needed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49006 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
LVMTargetMachine.cpp
electionDAG/SelectionDAGISel.cpp
80caa49bb50211658df49e9340fc562e7c3db625 01-Apr-2008 Dale Johannesen <dalej@apple.com> Emit exception handling info for functions which are
not marked nounwind, or for all functions when -enable-eh
is set, provided the target supports Dwarf EH.

llvm-gcc generates nounwind in the right places; other FEs
will need to do so also. Given such a FE, -enable-eh should
no longer be needed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49006 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
LVMTargetMachine.cpp
electionDAG/SelectionDAGISel.cpp
427f4c106ac14dcf323dc1bbaf1b8040da03c3c7 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> It's not safe to fold a load from GV stub or constantpool into a two-address use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49002 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4c7ab52dd1c8c290c89bc13f4351628a15ea9e7f 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> It's not safe to fold a load from GV stub or constantpool into a two-address use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49002 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ca1267c02b025cc719190b05f9e1a5d174a9caf7 31-Mar-2008 Evan Cheng <evan.cheng@apple.com> Move reMaterialize() from TargetRegisterInfo to TargetInstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48995 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
irtRegMap.cpp
7d73efce9cfa7af4e1747dbd8c4bf2b948816777 31-Mar-2008 Evan Cheng <evan.cheng@apple.com> Move reMaterialize() from TargetRegisterInfo to TargetInstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48995 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
irtRegMap.cpp
b061c4bc44caf62a16adad6047cda60785c2d0a4 31-Mar-2008 Dan Gohman <gohman@apple.com> Fix a DAGCombiner optimization to respect volatile qualification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
729b5ff1c51532b0301074a9fe3b80304c114b01 31-Mar-2008 Dan Gohman <gohman@apple.com> Fix a DAGCombiner optimization to respect volatile qualification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
24d2f8a212f08bf21360122cc00acf2657af91f9 31-Mar-2008 Evan Cheng <evan.cheng@apple.com> The support for remat of instructions with a register operand is hackish, to say the least. Since the register operand guaranteed to be PIC base and that it is already live at all uses, we are making sure it will not be spilled after its uses are rematerialized for both performance and correctness reasons.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48976 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8adc74ecad20030969b85ec45e393f69e17c8a66 31-Mar-2008 Evan Cheng <evan.cheng@apple.com> The support for remat of instructions with a register operand is hackish, to say the least. Since the register operand guaranteed to be PIC base and that it is already live at all uses, we are making sure it will not be spilled after its uses are rematerialized for both performance and correctness reasons.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48976 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
bc91bd34f1d2e4fdfef691fbe9015eabdeec8071 31-Mar-2008 Owen Anderson <resistor@mac.com> Fix a major bug in the DFS calculation. Thanks for Christopher Lamb for pointing this out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48973 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
8c3448af500b005ef2dff3f8ca858fe0f53f4f1a 31-Mar-2008 Owen Anderson <resistor@mac.com> Fix a major bug in the DFS calculation. Thanks for Christopher Lamb for pointing this out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48973 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
d27c991cebe48fdf82b5d9eec6c2a1a244f82622 30-Mar-2008 Chris Lattner <sabre@nondot.org> Fix "Control reaches the end of non-void function" warnings,
patch by David Chisnall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2b06cd3076bbc4547d58109722c79b33366d594d 30-Mar-2008 Chris Lattner <sabre@nondot.org> Fix "Control reaches the end of non-void function" warnings,
patch by David Chisnall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fd5da6c991ad0bb5c0b6ce797d56c49ad3f73803 29-Mar-2008 Evan Cheng <evan.cheng@apple.com> Cosmetic changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48947 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f066822d7fdc0a0d5942e4c815f4110991d11b8a 29-Mar-2008 Evan Cheng <evan.cheng@apple.com> Cosmetic changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48947 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
c7c00361ce1457f4a033ae6246aa54d0d5bfb1d5 29-Mar-2008 Owen Anderson <resistor@mac.com> Remove some unneeded code for LiveInterval joining, and fix a bug in the Phi elimination algorithm where we were accidentally reasoning about
the source rather than the destination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48936 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
df0caea2813771e1aeac4b77f437f6ba47ee2e08 29-Mar-2008 Owen Anderson <resistor@mac.com> Remove some unneeded code for LiveInterval joining, and fix a bug in the Phi elimination algorithm where we were accidentally reasoning about
the source rather than the destination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48936 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
2a88a5c92f898623d5cceb6cd1019427a1749999 28-Mar-2008 Chris Lattner <sabre@nondot.org> ifdef out a dead function. Should this be removed?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48916 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
2e120bfdb3320317c8ddf00e959fbf2489a52ac5 28-Mar-2008 Chris Lattner <sabre@nondot.org> ifdef out a dead function. Should this be removed?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48916 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
e10efce22502d1a1855d25baf1458660f4ba6f33 28-Mar-2008 Duncan Sands <baldrick@free.fr> Rename getAnyLoad to getLoad is suggested by Evan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48914 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesFloatToInt.cpp
electionDAG/SelectionDAG.cpp
b258971288d6212ea14387c2c464e1e1c8b94813 28-Mar-2008 Duncan Sands <baldrick@free.fr> Rename getAnyLoad to getLoad is suggested by Evan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48914 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesFloatToInt.cpp
electionDAG/SelectionDAG.cpp
02bee85a70c32d51542e1da1d0569903f943dd96 28-Mar-2008 Evan Cheng <evan.cheng@apple.com> New entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48908 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
ced85adc8e1f686e69244edd1c2c097fa248393f 28-Mar-2008 Evan Cheng <evan.cheng@apple.com> New entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48908 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
14ea39cf3c62fad781b8a00cda9e4a15e61520dc 27-Mar-2008 Duncan Sands <baldrick@free.fr> Implement LegalizeTypes support for softfloat LOAD.
In order to handle indexed nodes I had to introduce
a new constructor, and since I was there I factorized
the code in the various load constructors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48894 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesFloatToInt.cpp
electionDAG/SelectionDAG.cpp
9a2f4dce36bc801ca8dbe3b2b5ccd1a90d201c6e 27-Mar-2008 Duncan Sands <baldrick@free.fr> Implement LegalizeTypes support for softfloat LOAD.
In order to handle indexed nodes I had to introduce
a new constructor, and since I was there I factorized
the code in the various load constructors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48894 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesFloatToInt.cpp
electionDAG/SelectionDAG.cpp
86e1ebf9bbde7408a1d7859ea207981457e11cc2 27-Mar-2008 Dan Gohman <gohman@apple.com> Avoid creating chain dependencies from CopyToReg nodes to load and store
nodes. This doesn't currently have much impact the generated code, but it
does produce simpler-looking SelectionDAGs, and consequently
simpler-looking ScheduleDAGs, because there are fewer spurious
dependencies.

In particular, CopyValueToVirtualRegister now uses the entry node as the
input chain dependency for new CopyToReg nodes instead of calling getRoot
and depending on the most recent memory reference.

Also, rename UnorderedChains to PendingExports and pull it up from being
a local variable in SelectionDAGISel::BuildSelectionDAG to being a
member variable of SelectionDAGISel, so that it doesn't have to be
passed around to all the places that need it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48893 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9fe5bd631213c33d670cb9648f42f994bfb011a8 27-Mar-2008 Dan Gohman <gohman@apple.com> Avoid creating chain dependencies from CopyToReg nodes to load and store
nodes. This doesn't currently have much impact the generated code, but it
does produce simpler-looking SelectionDAGs, and consequently
simpler-looking ScheduleDAGs, because there are fewer spurious
dependencies.

In particular, CopyValueToVirtualRegister now uses the entry node as the
input chain dependency for new CopyToReg nodes instead of calling getRoot
and depending on the most recent memory reference.

Also, rename UnorderedChains to PendingExports and pull it up from being
a local variable in SelectionDAGISel::BuildSelectionDAG to being a
member variable of SelectionDAGISel, so that it doesn't have to be
passed around to all the places that need it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48893 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d7d3ea00c0a26e2545d4ba01825d8358075264e7 27-Mar-2008 Roman Levenstein <romix.llvm@googlemail.com> Fix spelling. Thanks, Duncan! :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48873 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
74cd1228f65ee9ddcbf5f51f768bb83bc849e470 27-Mar-2008 Roman Levenstein <romix.llvm@googlemail.com> Fix spelling. Thanks, Duncan! :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48873 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
95d4184e7218d7ec21b5b8d693dd3b14146eefdc 27-Mar-2008 Roman Levenstein <romix.llvm@googlemail.com> Speed-up the SumOfUnscheduledPredsOfSuccs by introducing a new function
called LimitedSumOfUnscheduledPredsOfSuccs. It terminates the computation
after a given treshold is reached. This new function is always faster, but
brings real wins only on bigger test-cases.

The old function SumOfUnscheduledPredsOfSuccs is left in-place for now and therefore a warning about an unused static function is produced.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
887332e4c70670894ba6cf853c1f3b411b223985 27-Mar-2008 Roman Levenstein <romix.llvm@googlemail.com> Speed-up the SumOfUnscheduledPredsOfSuccs by introducing a new function
called LimitedSumOfUnscheduledPredsOfSuccs. It terminates the computation
after a given treshold is reached. This new function is always faster, but
brings real wins only on bigger test-cases.

The old function SumOfUnscheduledPredsOfSuccs is left in-place for now and therefore a warning about an unused static function is produced.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
7a963fa8ee2ad90ef456e36c116c046bf2ba8199 27-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fix a memory bug: increment an iterator of a deleted machine instr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48853 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
478568db8d03be318f362e666e3a808b1ca873a8 27-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fix a memory bug: increment an iterator of a deleted machine instr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48853 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
d9ffd4cb92c95806b05df2d9f9e2be5c27cfe7fd 27-Mar-2008 Dale Johannesen <dalej@apple.com> Fix a bug in Darwin EH: FDE->CIE pointer must
be relocatable. Describe why .set is needed better.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48848 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
0ebb243bdd92764a4c0b000c269b601fd7649a9c 27-Mar-2008 Dale Johannesen <dalej@apple.com> Fix a bug in Darwin EH: FDE->CIE pointer must
be relocatable. Describe why .set is needed better.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48848 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
0c2843285269aa56a0781853cb25b6f03aa0bd99 26-Mar-2008 Evan Cheng <evan.cheng@apple.com> One more coalescer fix wrt deadness propagation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48837 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9d6bb9bb87b4da46be567e6e544fbc68802660cb 26-Mar-2008 Evan Cheng <evan.cheng@apple.com> One more coalescer fix wrt deadness propagation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48837 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
ed70cbb3f367bc0f77d34d22163abbe4879526bc 26-Mar-2008 Evan Cheng <evan.cheng@apple.com> Avoid commuting a def MI in order to coalesce a copy instruction away if any use of the same val# is a copy instruction that has already been coalesced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48833 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
irtRegMap.cpp
9714850cee82f19572701dd7cfd8b202aba27b4c 26-Mar-2008 Evan Cheng <evan.cheng@apple.com> Avoid commuting a def MI in order to coalesce a copy instruction away if any use of the same val# is a copy instruction that has already been coalesced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48833 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
irtRegMap.cpp
e326332acd5fefb9854118603b4d07d4e44b64c5 26-Mar-2008 Roman Levenstein <romix.llvm@googlemail.com> Use a linked data structure for the uses lists of an SDNode, just like
LLVM Value/Use does and MachineRegisterInfo/MachineOperand does.
This allows constant time for all uses list maintenance operations.

The idea was suggested by Chris. Reviewed by Evan and Dan.
Patch is tested and approved by Dan.

On normal use-cases compilation speed is not affected. On very big basic
blocks there are compilation speedups in the range of 15-20% or even better.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48822 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
0664ef9d7e3b538fc448fe42e8557aa52d8d6d51 26-Mar-2008 Roman Levenstein <romix.llvm@googlemail.com> Use a linked data structure for the uses lists of an SDNode, just like
LLVM Value/Use does and MachineRegisterInfo/MachineOperand does.
This allows constant time for all uses list maintenance operations.

The idea was suggested by Chris. Reviewed by Evan and Dan.
Patch is tested and approved by Dan.

On normal use-cases compilation speed is not affected. On very big basic
blocks there are compilation speedups in the range of 15-20% or even better.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48822 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
8dba9afd086f72db920db81a3d73c7297390cda7 26-Mar-2008 Roman Levenstein <romix.llvm@googlemail.com> Fixed some spelling errors. Thanks, Duncan!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48819 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
186d9b73181e9f74bd6b835cb4aa7d919d5c0953 26-Mar-2008 Roman Levenstein <romix.llvm@googlemail.com> Fixed some spelling errors. Thanks, Duncan!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48819 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
e513ba49589bcf8fdf7dad658e20db21d6ef4758 26-Mar-2008 Roman Levenstein <romix.llvm@googlemail.com> Some improvements related to the computation of isReachable.
This fixes Bugzilla #1835 (http://llvm.org/bugs/show_bug.cgi?id=1835).
This patched is reviewed by Tanya and Dan. Dan tested and approved it.

The reason for the bad performance of the old algorithm is that it is very naive and scans every
time all nodes of the DAG in the worst case.

This patch introduces a new algorithm based on the paper "Online algorithms
for maintaining the topological order of a directed acyclic graph" by
David J.Pearce and Paul H.J.Kelly. This is the MNR algorithm. It has a
linear time worst-case and performs much better in most situations.

The paper can be found here:
http://fano.ics.uci.edu/cites/Document/Online-algorithms-for-maintaining-the-topological-order-of-a-directed-acyclic-graph.html

The main idea of the new algorithm is to compute the topological ordering of the SNodes in the
DAG and to maintain it even after DAG modifications. The topological ordering allows for very fast
node reachability checks.

Tests on very big input files with tens of thousands of instructions in a BB indicate huge
speed-ups (up to 10x compilation time improvement) compared to the old version.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48817 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d7997a09b665eaa2aa637a59ae2d5948e86f6145 26-Mar-2008 Roman Levenstein <romix.llvm@googlemail.com> Some improvements related to the computation of isReachable.
This fixes Bugzilla #1835 (http://llvm.org/bugs/show_bug.cgi?id=1835).
This patched is reviewed by Tanya and Dan. Dan tested and approved it.

The reason for the bad performance of the old algorithm is that it is very naive and scans every
time all nodes of the DAG in the worst case.

This patch introduces a new algorithm based on the paper "Online algorithms
for maintaining the topological order of a directed acyclic graph" by
David J.Pearce and Paul H.J.Kelly. This is the MNR algorithm. It has a
linear time worst-case and performs much better in most situations.

The paper can be found here:
http://fano.ics.uci.edu/cites/Document/Online-algorithms-for-maintaining-the-topological-order-of-a-directed-acyclic-graph.html

The main idea of the new algorithm is to compute the topological ordering of the SNodes in the
DAG and to maintain it even after DAG modifications. The topological ordering allows for very fast
node reachability checks.

Tests on very big input files with tens of thousands of instructions in a BB indicate huge
speed-ups (up to 10x compilation time improvement) compared to the old version.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48817 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d382f8a32de02e04db5f88e881fe11db4040be40 26-Mar-2008 Owen Anderson <resistor@mac.com> Dead PHI instructions need to be handled specially.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48811 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
015ae44c10cae1cab90fd14fa27a73aa8f782964 26-Mar-2008 Owen Anderson <resistor@mac.com> Dead PHI instructions need to be handled specially.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48811 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
e4ded8937a8fcc164b2315c9b85440230a2b84cb 25-Mar-2008 Owen Anderson <resistor@mac.com> Remove some debugging code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48803 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
b70215e35c59625448e790279a7e3ca96971784c 25-Mar-2008 Owen Anderson <resistor@mac.com> Remove some debugging code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48803 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
403dad66604a88d896bd43a39a289c164b7e581d 25-Mar-2008 Owen Anderson <resistor@mac.com> StrongPHIElimination doesn't support swapping live intervals like the coalescer does.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48802 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
8344fa85a07e2df80c5bd7b9370d3baa5b7c4ea4 25-Mar-2008 Owen Anderson <resistor@mac.com> StrongPHIElimination doesn't support swapping live intervals like the coalescer does.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48802 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
cfbb2f074da2842e42956d3b4c21e91b37f36f06 25-Mar-2008 Dan Gohman <gohman@apple.com> A quick nm audit turned up several fixed tables and objects that were
marked read-write. Use const so that they can be allocated in a
read-only segment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48800 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
seudoSourceValue.cpp
electionDAG/ScheduleDAG.cpp
12300e1e31559e34d96e533506f74f7cb77020a2 25-Mar-2008 Dan Gohman <gohman@apple.com> A quick nm audit turned up several fixed tables and objects that were
marked read-write. Use const so that they can be allocated in a
read-only segment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48800 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
seudoSourceValue.cpp
electionDAG/ScheduleDAG.cpp
62c7b8c3713f7178991fac299abcb04e3818ca65 25-Mar-2008 Dan Gohman <gohman@apple.com> Avoid outputing spaces at the ends of lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48797 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
35a5415d68ca68cf51788b42d92be5ccd3181df3 25-Mar-2008 Dan Gohman <gohman@apple.com> Avoid outputing spaces at the ends of lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48797 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
73ee9c3fb1f15cbfb2f91a4f645834c94a76a949 25-Mar-2008 Devang Patel <dpatel@apple.com> Do not align loops if optimizing for size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48794 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
70570249ade1085682dee8daa3aca9ff187e2481 25-Mar-2008 Devang Patel <dpatel@apple.com> Do not align loops if optimizing for size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48794 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
26471c48b3d49bdbcfcc05cb9a575b5fa123fbbf 25-Mar-2008 Evan Cheng <evan.cheng@apple.com> Handle a special case xor undef, undef -> 0. Technically this should be transformed to undef. But this is such a common idiom (misuse) we are going to handle it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48792 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
5d00cb423a9033583f5bdb46d5bfee2dd23cf02e 25-Mar-2008 Evan Cheng <evan.cheng@apple.com> Handle a special case xor undef, undef -> 0. Technically this should be transformed to undef. But this is such a common idiom (misuse) we are going to handle it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48792 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
cffbd2562a5e3ba435dd2b622710ec272c634da5 25-Mar-2008 Dan Gohman <gohman@apple.com> Fix typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d0088429325fea57087191b91b1be2119a608e58 25-Mar-2008 Dan Gohman <gohman@apple.com> Fix typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
a2fb634defce316ec972aa6f3ca3a941b4656f5e 25-Mar-2008 Evan Cheng <evan.cheng@apple.com> lastRegisterUse() should ignore identity copies. Those will be erased.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48759 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0013e453bf3652f7341a3ba1149ba173891c1c79 25-Mar-2008 Evan Cheng <evan.cheng@apple.com> lastRegisterUse() should ignore identity copies. Those will be erased.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48759 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
ea10046ebc7aa103e8434ef63c4350d676dc20f3 25-Mar-2008 Evan Cheng <evan.cheng@apple.com> Remove an unneeded test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48755 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e40b51cd8322c5b9f51ffbc1589280db05f7d97b 25-Mar-2008 Evan Cheng <evan.cheng@apple.com> Remove an unneeded test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48755 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6f83fc8afb7f31185a90f14a1b7dbf51492b0e92 25-Mar-2008 Evan Cheng <evan.cheng@apple.com> If the coalescer commuted a def MI to allow coalescing, it can changed a previously coalesced copy into an non-identity copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48752 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
8e5f24264a26020ecb2aaa7f4b7cbdb2d7c7d8fb 25-Mar-2008 Evan Cheng <evan.cheng@apple.com> If the coalescer commuted a def MI to allow coalescing, it can changed a previously coalesced copy into an non-identity copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48752 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
af8c563e11a9efd848bd5402819e0649883a777d 25-Mar-2008 Evan Cheng <evan.cheng@apple.com> Add an assertion to catch register of illegal class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48751 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
af091bdebb11e275b620a7638533fbd1ed388b10 25-Mar-2008 Evan Cheng <evan.cheng@apple.com> Add an assertion to catch register of illegal class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48751 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
9a31444ee6395b8c9b9eeb15581751f365665618 24-Mar-2008 Owen Anderson <resistor@mac.com> Remove #include<iostream>, which I was using for debugging.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48739 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0add94be6c5c602747805bc0cbaf8222d1e48f7b 24-Mar-2008 Owen Anderson <resistor@mac.com> Remove #include<iostream>, which I was using for debugging.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48739 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
4c931fc6e2a901f86ef20d5844bcad3cfd99c781 24-Mar-2008 Dan Gohman <gohman@apple.com> APIntify SelectionDAG's EXTRACT_ELEMENT code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48726 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
452b4ce4d8ec5ac79706f7811fc8f4405aaa650c 24-Mar-2008 Dan Gohman <gohman@apple.com> APIntify SelectionDAG's EXTRACT_ELEMENT code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48726 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e46611e6bc41bb6e7256e03b42b4796033167b91 24-Mar-2008 Owen Anderson <resistor@mac.com> Be sure to remove intervals after we've joined them. Also, remove some duplicated code.

With this pass, StrongPHIElim can compile very simple testcases correctly. There's still a ways
to go before it's ready for prime time, though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48719 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
394f6bcb45d25f2685dc2b54b0b211c0b35e2737 24-Mar-2008 Owen Anderson <resistor@mac.com> Be sure to remove intervals after we've joined them. Also, remove some duplicated code.

With this pass, StrongPHIElim can compile very simple testcases correctly. There's still a ways
to go before it's ready for prime time, though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48719 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
c73ede0a9beaee2e11d004f816a8207d9bd79072 22-Mar-2008 Anton Korobeynikov <asl@math.spbu.ru> Another comments fixing


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48683 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
851493043e6cf5b16727dd2e1ed291152555ea34 22-Mar-2008 Anton Korobeynikov <asl@math.spbu.ru> Another comments fixing


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48683 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
08b1173971a51eb89d7d6ee0992c39170c86994a 22-Mar-2008 Evan Cheng <evan.cheng@apple.com> Teach DAG combiner to commute commutable binary nodes in order to achieve sdisel CSE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48673 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
d111358ce048c11a4e114418731ee892da23abdc 22-Mar-2008 Evan Cheng <evan.cheng@apple.com> Teach DAG combiner to commute commutable binary nodes in order to achieve sdisel CSE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48673 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
c9235d2e855c56e9aa157969f8132a05f9ba89d8 22-Mar-2008 Dan Gohman <gohman@apple.com> Don't include <map> in Pass.h, which doesn't need it. This requires
adding <map> to many files that actually do need it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48667 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.h
achOWriter.h
egAllocSimple.cpp
249ddbfb29dfc2335f98984878c52b2c77703417 22-Mar-2008 Dan Gohman <gohman@apple.com> Don't include <map> in Pass.h, which doesn't need it. This requires
adding <map> to many files that actually do need it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48667 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.h
achOWriter.h
egAllocSimple.cpp
4145bd509d0be0ea2ebea693a7ad15948480d982 21-Mar-2008 Dan Gohman <gohman@apple.com> Fix -view-sunit-dags to support cross-rc-copy nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48664 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
d0627015cec0b75f7044b7aef28f6e802e0f4648 21-Mar-2008 Dan Gohman <gohman@apple.com> Fix -view-sunit-dags to support cross-rc-copy nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48664 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
70366b96a5d70b232c3d42e76b83e6b54190bdb7 21-Mar-2008 Evan Cheng <evan.cheng@apple.com> A couple of kill marker maintainence bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48653 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
irtRegMap.cpp
08cab3dfbb542126195b2593e5d6a99bc687ef26 21-Mar-2008 Evan Cheng <evan.cheng@apple.com> A couple of kill marker maintainence bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48653 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
irtRegMap.cpp
276dcbdc8db6614cfd5004dc7dc35e437ddf9c58 21-Mar-2008 Duncan Sands <baldrick@free.fr> Introduce a new node for holding call argument
flags. This is needed by the new legalize types
infrastructure which wants to expand the 64 bit
constants previously used to hold the flags on
32 bit machines. There are two functional changes:
(1) in LowerArguments, if a parameter has the zext
attribute set then that is marked in the flags;
before it was being ignored; (2) PPC had some bogus
code for handling two word arguments when using the
ELF 32 ABI, which was hard to convert because of
the bogusness. As suggested by the original author
(Nicolas Geoffray), I've disabled it for the moment.
Tested with "make check" and the Ada ACATS testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48640 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
c93fae3679c1b0ce8da92aaf825630fcc8580a00 21-Mar-2008 Duncan Sands <baldrick@free.fr> Introduce a new node for holding call argument
flags. This is needed by the new legalize types
infrastructure which wants to expand the 64 bit
constants previously used to hold the flags on
32 bit machines. There are two functional changes:
(1) in LowerArguments, if a parameter has the zext
attribute set then that is marked in the flags;
before it was being ignored; (2) PPC had some bogus
code for handling two word arguments when using the
ELF 32 ABI, which was hard to convert because of
the bogusness. As suggested by the original author
(Nicolas Geoffray), I've disabled it for the moment.
Tested with "make check" and the Ada ACATS testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48640 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
b9b042800445178e2dff1c83ead3d08d3f36dc29 20-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Check even more carefully before applying this DAGCombine transform.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48580 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
21e8a955ef3481976b562d7f10db967f6def3d2d 20-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Check even more carefully before applying this DAGCombine transform.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48580 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
260e07ec8ceb98337a9eeb5377d97dfcc0058a25 20-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fix this xform: (sra (shl X, m), result_size) -> (sign_extend (trunc (shl X, result_size - n - m)))


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48578 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ca0e80fc6b927e48363387a8f721883141f8b2b3 20-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fix this xform: (sra (shl X, m), result_size) -> (sign_extend (trunc (shl X, result_size - n - m)))


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48578 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
71a2cb25ebc818383dd0f80475bc166f834e8d99 20-Mar-2008 Chris Lattner <sabre@nondot.org> detabify llvm, patch by Mike Stump!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48577 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
rologEpilogInserter.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
6734c3a8ea14d2bbdf7704794f3df2e0a28aacb2 20-Mar-2008 Chris Lattner <sabre@nondot.org> detabify llvm, patch by Mike Stump!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48577 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
rologEpilogInserter.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
15cbde3cf6542ec9c120f59d5d8f3586f5f332c6 19-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Fix X86's isTruncateFree to not claim that truncate to i1 is free. This fixes Bill's testcase that failed for r48491.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48542 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fc5c164b753c9ca42901514c645c70e5b61c5c11 19-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Fix X86's isTruncateFree to not claim that truncate to i1 is free. This fixes Bill's testcase that failed for r48491.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48542 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
82a6d23700d5bb42fcbbc3ae17a7c85e97888ad1 19-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fixed a coalescer bug caused by a typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48526 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5064c0d5424fae66e67b2b4d96ee7e697042c29b 19-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fixed a coalescer bug caused by a typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48526 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
94202018c51d662c793a77a5e8239f3a35e11e60 19-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fix live variables issues:
1. If part of a register is re-defined, an implicit kill and an implicit def are added to denote read / mod / write. However, this should only be necessary if the register is actually read later. This is a performance issue.
2. If a sub-register is being defined, and it doesn't have a previous use, do not add a implicit kill to the last use of a super-register:
= EAX, AX<imp-use,kill>
...
AX =
In this case, EAX is live but AX is killed, this is wrong and will cause the coalescer to do bad things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48521 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
97a51300996b99fe55d568c339748538e65f4d98 19-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fix live variables issues:
1. If part of a register is re-defined, an implicit kill and an implicit def are added to denote read / mod / write. However, this should only be necessary if the register is actually read later. This is a performance issue.
2. If a sub-register is being defined, and it doesn't have a previous use, do not add a implicit kill to the last use of a super-register:
= EAX, AX<imp-use,kill>
...
AX =
In this case, EAX is live but AX is killed, this is wrong and will cause the coalescer to do bad things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48521 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
2974e49019b05ee4bec175a8d9cc736a512e3254 18-Mar-2008 Bill Wendling <isanbard@gmail.com> Temporarily revert r48491. It's breaking test/CodeGen/X86/xorl.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48510 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c74ab2edfd76cd9b0e903082ad1c73d19ffb61bc 18-Mar-2008 Bill Wendling <isanbard@gmail.com> Temporarily revert r48491. It's breaking test/CodeGen/X86/xorl.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48510 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cf49819877addffa29cbb33dc6aab963868e74ee 18-Mar-2008 Dale Johannesen <dalej@apple.com> Make conversions of i8/i16 to ppcf128 work.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48493 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6a779c89400c76ed380648e254436b56859206ed 18-Mar-2008 Dale Johannesen <dalej@apple.com> Make conversions of i8/i16 to ppcf128 work.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48493 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
981576c8182d9099030153772ac2c40ef79290fb 18-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Target independent DAG transform to use truncate for field extraction + sign extend on targets where this is profitable. Passes nightly on x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48491 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c1ca3cc7cbbf824cc877d65d211e4a0199447821 18-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Target independent DAG transform to use truncate for field extraction + sign extend on targets where this is profitable. Passes nightly on x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48491 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3c88d742d4e89e9b2ed7bd10822d18748b97d488 18-Mar-2008 Evan Cheng <evan.cheng@apple.com> Rewrite code that propagate isDead information after a dead copy is coalesced. This remove some ugly spaghetti code and fixed a number of subtle bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48490 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
04a848204f6a9b1ac3b840eeeef4ab7cce9ca4d5 18-Mar-2008 Evan Cheng <evan.cheng@apple.com> Rewrite code that propagate isDead information after a dead copy is coalesced. This remove some ugly spaghetti code and fixed a number of subtle bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48490 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
755ebab37db73798bb0732f5c6e2ffeeea090559 17-Mar-2008 Owen Anderson <resistor@mac.com> A first attempt at updating live intervals, with code lifted from
the coalescer. This doesn't really work, but gets us farther than
before.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48446 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
8247b96636a9faabef091945a2116dc215dcd857 17-Mar-2008 Owen Anderson <resistor@mac.com> A first attempt at updating live intervals, with code lifted from
the coalescer. This doesn't really work, but gets us farther than
before.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48446 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
c9298235251b014e86a7368d92b589d093acb64a 16-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Make insert_subreg a two-address instruction, vastly simplifying LowerSubregs pass. Add a new TII, subreg_to_reg, which is like insert_subreg except that it takes an immediate implicit value to insert into rather than a register.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48412 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
electionDAG/ScheduleDAG.cpp
76d72daac239517dd47b3ab462af7642fd10fefd 16-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Make insert_subreg a two-address instruction, vastly simplifying LowerSubregs pass. Add a new TII, subreg_to_reg, which is like insert_subreg except that it takes an immediate implicit value to insert into rather than a register.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48412 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
electionDAG/ScheduleDAG.cpp
20ccded7dec5b90e58f649f4fb95b166a642b8cb 15-Mar-2008 Evan Cheng <evan.cheng@apple.com> Remove isImplicitDef TargetInstrDesc flag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48381 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
fdc1706d009363c2e0008684b1813721f2d6e82a 15-Mar-2008 Evan Cheng <evan.cheng@apple.com> Remove isImplicitDef TargetInstrDesc flag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48381 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
da47e6e0d003c873da960361549e57ee4617c301 15-Mar-2008 Evan Cheng <evan.cheng@apple.com> Replace all target specific implicit def instructions with a target independent one: TargetInstrInfo::IMPLICIT_DEF.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48380 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/ScheduleDAG.cpp
3c0eda5a21a0e79a345fc9da0489fdbb5ef6b07e 15-Mar-2008 Evan Cheng <evan.cheng@apple.com> Replace all target specific implicit def instructions with a target independent one: TargetInstrInfo::IMPLICIT_DEF.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48380 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/ScheduleDAG.cpp
23a1d0c1613002073e4340deb34449a61826c93c 14-Mar-2008 Duncan Sands <baldrick@free.fr> Do not generate special entries in the dwarf eh
table for nounwind calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
85127f6fa8c6916862f4e81550a404dd6cc708a2 14-Mar-2008 Duncan Sands <baldrick@free.fr> Do not generate special entries in the dwarf eh
table for nounwind calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c17ba8a28d2f83dd320745c0c9994464845ac990 14-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2138. Apparently any modification to a std::multimap (including remove entries for a different key) can invalidate multimap iterators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48371 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
de1935953967adc69ef19c96c087660974207f21 14-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2138. Apparently any modification to a std::multimap (including remove entries for a different key) can invalidate multimap iterators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48371 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
d1ba3338d1b0084122c32a8085e41a8dd5e91edc 14-Mar-2008 Duncan Sands <baldrick@free.fr> Simplify using getIntPtrConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesSplit.cpp
1f59dc09e6670841f26d6db940843573ad6d7946 14-Mar-2008 Duncan Sands <baldrick@free.fr> Simplify using getIntPtrConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesSplit.cpp
5922f561c65968ef1865cc8434d191041e450602 14-Mar-2008 Nate Begeman <natebegeman@mac.com> Tabs -> spaces
Use getIntPtrConstant in a couple places to shorten stuff up
Handle splitting vector shuffles with undefs in the mask


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48351 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8bb3cb3b98d017204540a51407fdb82ed555d16c 14-Mar-2008 Nate Begeman <natebegeman@mac.com> Tabs -> spaces
Use getIntPtrConstant in a couple places to shorten stuff up
Handle splitting vector shuffles with undefs in the mask


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48351 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
db2d773fe6e53995c49c11ba34271fc559e286a1 14-Mar-2008 Evan Cheng <evan.cheng@apple.com> Livein copy scheduling fixes: do not coalesce physical register copies, correctly determine the safe location to insert the copies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
a96f9644e3cde848afe811fba9f4efdbdea26950 14-Mar-2008 Evan Cheng <evan.cheng@apple.com> Livein copy scheduling fixes: do not coalesce physical register copies, correctly determine the safe location to insert the copies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
002e5d0a170dadd5c307e0b00d8c7970835837e6 13-Mar-2008 Dan Gohman <gohman@apple.com> More APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48344 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
9d24dc7472df0ac5c3c516987979058673ef02f6 13-Mar-2008 Dan Gohman <gohman@apple.com> More APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48344 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
c438f35df99989ac1d1e80236d72f22ea5ec6a8c 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Undo tweak. It had no obvious benefit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48341 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
390333360f9271ab8f346a6ba7494a1291842e9e 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Undo tweak. It had no obvious benefit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48341 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
a2248682ae7d18444188d54f01ea3bb9e434db6c 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48337 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
0da7d78f8a3dff5d9bfd08468c3538ea400a3257 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48337 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
0099ae2468c6c7c1e73f4df539d6e3e1ccdfafaa 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Don't try to sink 3-address instruction if convertToThreeAddress created more than one instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48336 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
fdde77ba11234b3770dcaf9704874d0a581c2ac2 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Don't try to sink 3-address instruction if convertToThreeAddress created more than one instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48336 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
f3ff6992a3750293c056255b4b8a6f429f6e168e 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Remove an unused command line option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48334 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
1a1af002a8d584b2ad9d1af45f0a79d85b889986 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Remove an unused command line option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48334 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
875357d213ab1830efa1e3e9de0fcde95df7eefc 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> TwoAddressInstructionPass enhancement. After it converts a two address instruction into a 3-address one, sink it past the instruction that kills the read-mod-write register if its definition is used past the kill. This reduces the number of live register by one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48333 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
0c85fe6cbeeb5256f98d859198e04fa846b8b2c9 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> TwoAddressInstructionPass enhancement. After it converts a two address instruction into a 3-address one, sink it past the instruction that kills the read-mod-write register if its definition is used past the kill. This reduces the number of live register by one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48333 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
6634e26aa11b0e2eabde8b3b463bb943364f8d9d 13-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Get rid of a pseudo instruction and replace it with subreg based operation on real instructions, ridding the asm printers of the hack used to do this previously. In the process, update LowerSubregs to be careful about eliminating copies that have side affects.

Note: the coalescer will have to be careful about this too, when it starts coalescing insert_subreg nodes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48329 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
b371e03ea7aa690d7ceb3a795e710751e918d350 13-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Get rid of a pseudo instruction and replace it with subreg based operation on real instructions, ridding the asm printers of the hack used to do this previously. In the process, update LowerSubregs to be careful about eliminating copies that have side affects.

Note: the coalescer will have to be careful about this too, when it starts coalescing insert_subreg nodes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48329 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
1c9b8cf28c868ce2def95ba73be8ff437dba0c33 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Remove unused options.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48319 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
e6b934fb6968f76d57149896b887aac6c500dacd 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Remove unused options.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48319 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b27087f5aa574f875598f4a309b7dd687c64a455 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor some code out of MachineSink into a MachineInstr query.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48311 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineSink.cpp
be85662cf2ca0df74ad595ac2a2deae7e4799f6b 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor some code out of MachineSink into a MachineInstr query.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48311 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineSink.cpp
9e23336d0c99fc5cae04037ead6d8f2b677e8764 12-Mar-2008 Evan Cheng <evan.cheng@apple.com> Experimental scheduler change to schedule / coalesce the copies added for function livein's. Take 2008-03-10-RegAllocInfLoop.ll, the schedule looks like this after these copies are inserted:

entry: 0x12049d0, LLVM BB @0x1201fd0, ID#0:
Live Ins: %EAX %EDX %ECX
%reg1031<def> = MOVPC32r 0
%reg1032<def> = ADD32ri %reg1031, <es:_GLOBAL_OFFSET_TABLE_>, %EFLAGS<imp-def>
%reg1028<def> = MOV32rr %EAX
%reg1029<def> = MOV32rr %EDX
%reg1030<def> = MOV32rr %ECX
%reg1027<def> = MOV8rm %reg0, 1, %reg0, 0, Mem:LD(1,1) [0x1201910 + 0]
%reg1025<def> = MOV32rr %reg1029
%reg1026<def> = MOV32rr %reg1030
%reg1024<def> = MOV32rr %reg1028

The copies unnecessarily increase register pressure and it will end up requiring a physical register to be spilled.

With -schedule-livein-copies:
entry: 0x12049d0, LLVM BB @0x1201fa0, ID#0:
Live Ins: %EAX %EDX %ECX
%reg1031<def> = MOVPC32r 0
%reg1032<def> = ADD32ri %reg1031, <es:_GLOBAL_OFFSET_TABLE_>, %EFLAGS<imp-def>
%reg1024<def> = MOV32rr %EAX
%reg1025<def> = MOV32rr %EDX
%reg1026<def> = MOV32rr %ECX
%reg1027<def> = MOV8rm %reg0, 1, %reg0, 0, Mem:LD(1,1) [0x12018e0 + 0]

Much better!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48307 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
8725a1177fdd441520736f8f4af0f9a65ba07818 12-Mar-2008 Evan Cheng <evan.cheng@apple.com> Experimental scheduler change to schedule / coalesce the copies added for function livein's. Take 2008-03-10-RegAllocInfLoop.ll, the schedule looks like this after these copies are inserted:

entry: 0x12049d0, LLVM BB @0x1201fd0, ID#0:
Live Ins: %EAX %EDX %ECX
%reg1031<def> = MOVPC32r 0
%reg1032<def> = ADD32ri %reg1031, <es:_GLOBAL_OFFSET_TABLE_>, %EFLAGS<imp-def>
%reg1028<def> = MOV32rr %EAX
%reg1029<def> = MOV32rr %EDX
%reg1030<def> = MOV32rr %ECX
%reg1027<def> = MOV8rm %reg0, 1, %reg0, 0, Mem:LD(1,1) [0x1201910 + 0]
%reg1025<def> = MOV32rr %reg1029
%reg1026<def> = MOV32rr %reg1030
%reg1024<def> = MOV32rr %reg1028

The copies unnecessarily increase register pressure and it will end up requiring a physical register to be spilled.

With -schedule-livein-copies:
entry: 0x12049d0, LLVM BB @0x1201fa0, ID#0:
Live Ins: %EAX %EDX %ECX
%reg1031<def> = MOVPC32r 0
%reg1032<def> = ADD32ri %reg1031, <es:_GLOBAL_OFFSET_TABLE_>, %EFLAGS<imp-def>
%reg1024<def> = MOV32rr %EAX
%reg1025<def> = MOV32rr %EDX
%reg1026<def> = MOV32rr %ECX
%reg1027<def> = MOV8rm %reg0, 1, %reg0, 0, Mem:LD(1,1) [0x12018e0 + 0]

Much better!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48307 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
d8742eeb2f7cabc45a1c3736a2780bf87ba684ba 12-Mar-2008 Duncan Sands <baldrick@free.fr> Initial soft-float support for LegalizeTypes. I rewrote
the fcopysign expansion from LegalizeDAG to get rid of
what seems to be a bug: the use of sign extension means
that when copying the sign bit from an f32 to an f64,
the upper 32 bits of the f64 (now an i64) are set, not
just the top bit... I also generalized it to work for
any sized floating point types, and removed the bogosity:
SDOperand Mask1 = (SrcVT == MVT::f64)
? DAG.getConstantFP(BitsToDouble(1ULL << 63), SrcVT)
: DAG.getConstantFP(BitsToFloat(1U << 31), SrcVT);
Mask1 = DAG.getNode(ISD::BIT_CONVERT, SrcNVT, Mask1);
(here SrcNVT is an integer with the same size as SrcVT).
As far as I can see this takes a 1 << 63, converts to
a double, converts that to a floating point constant
then converts that to an integer constant, ending up
with... 1 << 63 as an integer constant! So I just
generate this integer constant directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesFloatToInt.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesSplit.cpp
40d4e512f1a420a79f8d8fca7abc6dc16add6059 12-Mar-2008 Duncan Sands <baldrick@free.fr> Initial soft-float support for LegalizeTypes. I rewrote
the fcopysign expansion from LegalizeDAG to get rid of
what seems to be a bug: the use of sign extension means
that when copying the sign bit from an f32 to an f64,
the upper 32 bits of the f64 (now an i64) are set, not
just the top bit... I also generalized it to work for
any sized floating point types, and removed the bogosity:
SDOperand Mask1 = (SrcVT == MVT::f64)
? DAG.getConstantFP(BitsToDouble(1ULL << 63), SrcVT)
: DAG.getConstantFP(BitsToFloat(1U << 31), SrcVT);
Mask1 = DAG.getNode(ISD::BIT_CONVERT, SrcNVT, Mask1);
(here SrcNVT is an integer with the same size as SrcVT).
As far as I can see this takes a 1 << 63, converts to
a double, converts that to a floating point constant
then converts that to an integer constant, ending up
with... 1 << 63 as an integer constant! So I just
generate this integer constant directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesFloatToInt.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesSplit.cpp
b576931ca23ccd71bc702f3cdee1b365314bbf4f 12-Mar-2008 Dan Gohman <gohman@apple.com> Change VirtRegMap's dump to dump to cerr, not DOUT, so that it
can be called from within a debuger without having -debug specified
on the command-line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48298 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
ecb9ad5742b5dba1c834e0c79eff2214454e3193 12-Mar-2008 Dan Gohman <gohman@apple.com> Change VirtRegMap's dump to dump to cerr, not DOUT, so that it
can be called from within a debuger without having -debug specified
on the command-line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48298 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
39e33acf0aba655c96d3e37703b506cbf470c483 12-Mar-2008 Dan Gohman <gohman@apple.com> Fix typos in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48297 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.h
7d45f4d34423fed46e8e846bee602a3d8735d3a6 12-Mar-2008 Dan Gohman <gohman@apple.com> Fix typos in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48297 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.h
87a8615015ad85f1a95f79da221c7da9428d2208 12-Mar-2008 Duncan Sands <baldrick@free.fr> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48295 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesScalarize.cpp
877c7a6838d51a6acd5e7bbf2c379fdcabd423a0 12-Mar-2008 Duncan Sands <baldrick@free.fr> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48295 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesScalarize.cpp
25eb043759c23b61769108f78382eb9701c41db2 12-Mar-2008 Duncan Sands <baldrick@free.fr> Don't try to extract an i32 from an f64. This
getCopyToParts problem was noticed by the new
LegalizeTypes infrastructure. In order to avoid
this kind of thing in the future I've added a
check that EXTRACT_ELEMENT is only used with
integers. Once LegalizeTypes is up and running
most likely BUILD_PAIR and EXTRACT_ELEMENT can
be removed, in favour of using apints instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48294 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
c4d85175a252066fde78c3c79a22fc9618351976 12-Mar-2008 Duncan Sands <baldrick@free.fr> Don't try to extract an i32 from an f64. This
getCopyToParts problem was noticed by the new
LegalizeTypes infrastructure. In order to avoid
this kind of thing in the future I've added a
check that EXTRACT_ELEMENT is only used with
integers. Once LegalizeTypes is up and running
most likely BUILD_PAIR and EXTRACT_ELEMENT can
be removed, in favour of using apints instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48294 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
c8e3b147eea6155eb047340205730b5332259bb6 12-Mar-2008 Evan Cheng <evan.cheng@apple.com> Clean up my own mess.
X86 lowering normalize vector 0 to v4i32. However DAGCombine can fold (sub x, x) -> 0 after legalization. It can create a zero vector of a type that's not expected (e.g. v8i16). We don't want to disable the optimization since leaving a (sub x, x) is really bad. Add isel patterns for other types of vector 0 to ensure correctness. It's highly unlikely to happen other than in bugpoint reduced test cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a15896ec75ccbfbd12600d9cd16dc42c4c39a8ac 12-Mar-2008 Evan Cheng <evan.cheng@apple.com> Clean up my own mess.
X86 lowering normalize vector 0 to v4i32. However DAGCombine can fold (sub x, x) -> 0 after legalization. It can create a zero vector of a type that's not expected (e.g. v8i16). We don't want to disable the optimization since leaving a (sub x, x) is really bad. Add isel patterns for other types of vector 0 to ensure correctness. It's highly unlikely to happen other than in bugpoint reduced test cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
dfd07eab24394659ad445d6f7998fa31c1908d73 12-Mar-2008 Owen Anderson <resistor@mac.com> We also need to collect the VN IDs for the PHI instructions for later updating.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48278 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
f7093fd0d3bd4f372c06b1c4f5b7852c13a105ae 12-Mar-2008 Owen Anderson <resistor@mac.com> We also need to collect the VN IDs for the PHI instructions for later updating.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48278 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0031671b414f3abb9f2b97a073207957749c80bc 12-Mar-2008 Owen Anderson <resistor@mac.com> When we're determining what registers to coallesce, track the VNInfo IDs for the definitions that
feed the PHI instructions. We'll need these IDs in order to update LiveIntervals properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48277 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
44cccb0aca26985bbb6247accbe994d56cbea9a8 12-Mar-2008 Owen Anderson <resistor@mac.com> When we're determining what registers to coallesce, track the VNInfo IDs for the definitions that
feed the PHI instructions. We'll need these IDs in order to update LiveIntervals properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48277 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0cec956d814123140759cd25fec8f07e65b43849 12-Mar-2008 Evan Cheng <evan.cheng@apple.com> Total brain cramp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48274 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
74b7f7bbd7426f5b292f30348fff9b744a81e75f 12-Mar-2008 Evan Cheng <evan.cheng@apple.com> Total brain cramp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48274 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
17d5f5496c96236764fdf3e278cecca334c6d25e 12-Mar-2008 Evan Cheng <evan.cheng@apple.com> Set NextMII after issuing a physical register spill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48263 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
e52af91e43455bd4cd3e397ee80b02bd2fd1bff9 12-Mar-2008 Evan Cheng <evan.cheng@apple.com> Set NextMII after issuing a physical register spill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48263 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
4191b96f41b83d32ee7aa761c0d466622dac9c01 12-Mar-2008 Evan Cheng <evan.cheng@apple.com> Minor debug output bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48261 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
7c76af2de9a06943da4cce9e356ca829da11c017 12-Mar-2008 Evan Cheng <evan.cheng@apple.com> Minor debug output bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48261 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
4d86e2a6b8edc814165a3e63f55bfaea0b8f224d 11-Mar-2008 Anton Korobeynikov <asl@math.spbu.ru> Correctly propagate thread-local flag from aliasee to alias. This fixes PR2137


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48257 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
dd9dc5d5ecbb3e3982f34022311a5513b3ffbba6 11-Mar-2008 Anton Korobeynikov <asl@math.spbu.ru> Correctly propagate thread-local flag from aliasee to alias. This fixes PR2137


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48257 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bfae83139dcb4fffd50b939e1b1224b0126f04d4 11-Mar-2008 Dan Gohman <gohman@apple.com> Use PassManagerBase instead of FunctionPassManager for functions
that merely add passes. This allows them to be used with either
FunctionPassManager or PassManager, or even with a custom new
kind of pass manager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48256 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
achOWriter.cpp
e34aa7774f75505a532c5b1de6af79704ad72f81 11-Mar-2008 Dan Gohman <gohman@apple.com> Use PassManagerBase instead of FunctionPassManager for functions
that merely add passes. This allows them to be used with either
FunctionPassManager or PassManager, or even with a custom new
kind of pass manager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48256 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
achOWriter.cpp
22c9e65643e0c6b43be37a19e59491ef0081092c 11-Mar-2008 Anton Korobeynikov <asl@math.spbu.ru> Honour aliases visibility during asm emission


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48249 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
a6f01837a80670935b26080daf0d19bea2fc98cd 11-Mar-2008 Anton Korobeynikov <asl@math.spbu.ru> Honour aliases visibility during asm emission


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48249 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
c1f53c742620dd4f2460685477303002bba8a8d8 11-Mar-2008 Evan Cheng <evan.cheng@apple.com> Transfer physical register spill info when load / store folding happens.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48246 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
1eeb2efcf4b484b9da8d7b4ffa965786bb834896 11-Mar-2008 Evan Cheng <evan.cheng@apple.com> Transfer physical register spill info when load / store folding happens.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48246 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
9736028d84de3a72dd8db5f49cfaa07280154a0e 11-Mar-2008 Dan Gohman <gohman@apple.com> Use the correct value for InSignBit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48245 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
343b4d98232b0f59fa45ab9645226cb0d4baf424 11-Mar-2008 Dan Gohman <gohman@apple.com> Use the correct value for InSignBit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48245 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
ef5d194aaa7d09937759447bceca0ff80bee1261 11-Mar-2008 Dan Gohman <gohman@apple.com> Initial codegen support for functions and calls with multiple return values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48244 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3fdea2e28b849b59e22bef28019faba58b9e4775 11-Mar-2008 Dan Gohman <gohman@apple.com> Initial codegen support for functions and calls with multiple return values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48244 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1fab4a6bbb6eb5d44d35c8aade2493143b44d288 11-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Recommitting parts of r48130. These do not appear to cause the observed failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48223 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
electionDAG/ScheduleDAG.cpp
d0c8eaaf4275ec4f39b0798393a9dc5182100f4b 11-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Recommitting parts of r48130. These do not appear to cause the observed failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48223 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
electionDAG/ScheduleDAG.cpp
ea2378138fed05c907f698812a06356a5c8fd2ec 11-Mar-2008 Evan Cheng <evan.cheng@apple.com> Use TargetRegisterInfo::getPhysicalRegisterRegClass. Remove duplicated code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48221 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
eef4cf189cac1bf9ea25b9898ba209f980a39586 11-Mar-2008 Evan Cheng <evan.cheng@apple.com> Use TargetRegisterInfo::getPhysicalRegisterRegClass. Remove duplicated code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48221 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
676dd7c80b6f91178452535ac45ca58feb23cc42 11-Mar-2008 Evan Cheng <evan.cheng@apple.com> When the register allocator runs out of registers, spill a physical register around the def's and use's of the interval being allocated to make it possible for the interval to target a register and spill it right away and restore a register for uses. This likely generates terrible code but is before than aborting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48218 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
irtRegMap.cpp
irtRegMap.h
14cc83fc39c895bb5a8b6055fa4d7b1e454c685d 11-Mar-2008 Evan Cheng <evan.cheng@apple.com> When the register allocator runs out of registers, spill a physical register around the def's and use's of the interval being allocated to make it possible for the interval to target a register and spill it right away and restore a register for uses. This likely generates terrible code but is before than aborting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48218 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
irtRegMap.cpp
irtRegMap.h
ac7613a3263caa80d735f3fbf2b9f7b81deabc08 11-Mar-2008 Duncan Sands <baldrick@free.fr> Some LegalizeTypes code factorization and minor
enhancements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48215 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesSplit.cpp
664d27f26fa667a4eb83b2e482f673346b193cf1 11-Mar-2008 Duncan Sands <baldrick@free.fr> Some LegalizeTypes code factorization and minor
enhancements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48215 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesSplit.cpp
5d03f21744f30988b962f023bd397bb5c6a20178 11-Mar-2008 Chris Lattner <sabre@nondot.org> compile: double test() {}

into:

_test:
fldz
ret

instead of:

_test:
subl $12, %esp
#IMPLICIT_DEF %xmm0
movsd %xmm0, (%esp)
fldl (%esp)
addl $12, %esp
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48213 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e6465dde721ff9ad5d5407dc4616fe8cab9b8eef 11-Mar-2008 Chris Lattner <sabre@nondot.org> compile: double test() {}

into:

_test:
fldz
ret

instead of:

_test:
subl $12, %esp
#IMPLICIT_DEF %xmm0
movsd %xmm0, (%esp)
fldl (%esp)
addl $12, %esp
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48213 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c5733ac5d31b4cac5af0bc769411386d931237ba 11-Mar-2008 Chris Lattner <sabre@nondot.org> variadic instructions don't have operand info for variadic arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48208 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
92d5128d2864330cd5dce9658f59c5aac983ddcb 11-Mar-2008 Chris Lattner <sabre@nondot.org> variadic instructions don't have operand info for variadic arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48208 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
034f60ed24c53c1e37f7695965f782faec2dff2b 11-Mar-2008 Dan Gohman <gohman@apple.com> Generalize ExpandIntToFP to handle the case where the operand is legal
and it's the result that requires expansion. This code is a little confusing
because the TargetLoweringInfo tables for [US]INT_TO_FP use the operand type
(the integer type) rather than the result type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48206 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8b232ff522973d2cf38a44c9ded1fe849f92c7f8 11-Mar-2008 Dan Gohman <gohman@apple.com> Generalize ExpandIntToFP to handle the case where the operand is legal
and it's the result that requires expansion. This code is a little confusing
because the TargetLoweringInfo tables for [US]INT_TO_FP use the operand type
(the integer type) rather than the result type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48206 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b7795801001a1537fc6debb37f6d8658bcf6b517 11-Mar-2008 Chris Lattner <sabre@nondot.org> If a register operand comes from the variadic part of a node, don't
verify the register constraint matches what the instruction expects.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48205 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
c3d37ab086626e06154b2466a28dcc3bb27189b2 11-Mar-2008 Chris Lattner <sabre@nondot.org> If a register operand comes from the variadic part of a node, don't
verify the register constraint matches what the instruction expects.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48205 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
524f9617428d6f28f345b6b5177d7873b930085c 11-Mar-2008 Evan Cheng <evan.cheng@apple.com> Temporarily revert 48175.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48204 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
145d0a29b8b1dc404823eff76892565ad3f9dd56 11-Mar-2008 Evan Cheng <evan.cheng@apple.com> Temporarily revert 48175.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48204 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
6cf9b8adf43b0a460fb4ba8ddbff2787f5aa9d5e 11-Mar-2008 Dan Gohman <gohman@apple.com> More APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48201 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
395097646538ea94d3573408b183d9ae9b8a9f20 11-Mar-2008 Dan Gohman <gohman@apple.com> More APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48201 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
45f36ea448cabcbd18b1cb0e29af8c70366baf55 11-Mar-2008 Dan Gohman <gohman@apple.com> Correctly clone FlaggedNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48196 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
b100d80af680c01590c05f0f2cf2d31868e9c9a1 11-Mar-2008 Dan Gohman <gohman@apple.com> Correctly clone FlaggedNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48196 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
f25275cb3c930b579707e33c22c1e1c5682b89d3 11-Mar-2008 Dan Gohman <gohman@apple.com> APInt-ify this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48194 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesExpand.cpp
1f6796f8476548629cb443920bc602614ca65ddd 11-Mar-2008 Dan Gohman <gohman@apple.com> APInt-ify this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48194 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesExpand.cpp
a2e9485e34f1348526ed104dbdc194673e291077 11-Mar-2008 Dan Gohman <gohman@apple.com> Implement more support for fp-to-i128 and i128-to-fp conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48189 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
ec51f643a9a098c6d32ac7ab7c775bdf0d332b89 11-Mar-2008 Dan Gohman <gohman@apple.com> Implement more support for fp-to-i128 and i128-to-fp conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48189 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
a3413804f41f6155d6d4ab8a8ff1abf7c424c3a5 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> If the register allocator ran out of registers, just abort for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48175 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
9f4b42ca3cbe7dbdf5a04a61b40b062f6f57fb09 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> If the register allocator ran out of registers, just abort for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48175 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
76c605b18ee74e2c521a02431ab9e1ce6912d827 10-Mar-2008 Dan Gohman <gohman@apple.com> Fix mul expansion to check the correct number of bits for
zero extension when checking if an unsigned multiply is
safe.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2594d94fcc0f5c4ffc32059dec5209efa97d55a6 10-Mar-2008 Dan Gohman <gohman@apple.com> Fix mul expansion to check the correct number of bits for
zero extension when checking if an unsigned multiply is
safe.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
62fcc41d958bf9b8cee43271789136cb7100705f 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> Somewhat better solution.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48170 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cf31b8d763edf30c4d8cb9080de2c81a3764ef09 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> Somewhat better solution.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48170 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d2cde68855125b6815b1575f29cd96927614b0cd 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> Default ISD::PREFETCH to expand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
8d51ab3e4bb3f45ab8818519c5d27154cecf8b72 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> Default ISD::PREFETCH to expand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
4499e495eabe8de7d595416a03c56af4688df507 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> Revert 48125, 48126, and 48130 for now to unbreak some x86-64 tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48167 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
electionDAG/ScheduleDAG.cpp
bd97af057e8e7d03ae8300e570483ffbb3c40e5a 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> Revert 48125, 48126, and 48130 for now to unbreak some x86-64 tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48167 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
electionDAG/ScheduleDAG.cpp
5b8f82e35b51bf007de07a7ca9347d804084ddf8 10-Mar-2008 Scott Michel <scottm@aero.org> Give TargetLowering::getSetCCResultType() a parameter so that ISD::SETCC's
return ValueType can depend its operands' ValueType.

This is a cosmetic change, no functionality impacted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48145 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
502151f4cd47b5b42462b95736a0c2ab1d57072a 10-Mar-2008 Scott Michel <scottm@aero.org> Give TargetLowering::getSetCCResultType() a parameter so that ISD::SETCC's
return ValueType can depend its operands' ValueType.

This is a cosmetic change, no functionality impacted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48145 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
074223a124e945ee67cacedb99e777265a0c6cb6 10-Mar-2008 Bill Wendling <isanbard@gmail.com> Minor cleanup. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48142 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
6a49807ca9861f93d97b941adea0841f7cf0f911 10-Mar-2008 Bill Wendling <isanbard@gmail.com> Minor cleanup. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48142 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
4ff3f1cc573594058a98ffa8f198a81739c523b1 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> - Fix a subtle bug in RemoveCopyByCommutingDef. ALR is the live range where the source is defined; BLR is the live range which is defined by the copy.
If ALR and BLR overlaps and end of BLR extends beyond end of ALR, e.g.
A = or A, B
...
B = A
...
C = A<kill>
...
= B

then do not add kills of A to the newly created B interval.
- Also fix some kill info update bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48141 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
23910c709081629310454ea14906d536a009b9da 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> - Fix a subtle bug in RemoveCopyByCommutingDef. ALR is the live range where the source is defined; BLR is the live range which is defined by the copy.
If ALR and BLR overlaps and end of BLR extends beyond end of ALR, e.g.
A = or A, B
...
B = A
...
C = A<kill>
...
= B

then do not add kills of A to the newly created B interval.
- Also fix some kill info update bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48141 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
ff247d2ed41dac50d99c5ff534b12f33bb57310a 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> Doh

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48140 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ba0f30fd59e32c2bfb1ce949fa95ebb05f4d65cc 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> Doh

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48140 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
eb37ecc88256a9bce6536f9172fc18ac548ac8df 10-Mar-2008 Owen Anderson <resistor@mac.com> Move StrongPHIElimination after live interval analysis. This will make things happier down the road.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48138 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
b1e19f5da55d7ac1842423dd99dd0357911801c4 10-Mar-2008 Owen Anderson <resistor@mac.com> Move StrongPHIElimination after live interval analysis. This will make things happier down the road.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48138 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
f79e60649a5edea03bdccf8521d77c15cbb33af4 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> Avoid creating BUILD_VECTOR of all zero elements of "non-normalized" type (e.g. v8i16 on x86) after legalizer. Instruction selection does not expect to see them. In all likelihood this can only be an issue in a bugpoint reduced test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48136 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8628067377765b56339e988ca44e206b7ceb48cc 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> Avoid creating BUILD_VECTOR of all zero elements of "non-normalized" type (e.g. v8i16 on x86) after legalizer. Instruction selection does not expect to see them. In all likelihood this can only be an issue in a bugpoint reduced test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48136 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3feb0170a8d65984ce5c01a85e7dfd4005f8bb35 10-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Allow insert_subreg into implicit, target-specific values.
Change insert/extract subreg instructions to be able to be used in TableGen patterns.
Use the above features to reimplement an x86-64 pseudo instruction as a pattern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48130 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
electionDAG/ScheduleDAG.cpp
5615ce4ec4c1b68fd48f4a19bc19a4f77c97c20a 10-Mar-2008 Christopher Lamb <christopher.lamb@gmail.com> Allow insert_subreg into implicit, target-specific values.
Change insert/extract subreg instructions to be able to be used in TableGen patterns.
Use the above features to reimplement an x86-64 pseudo instruction as a pattern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48130 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
electionDAG/ScheduleDAG.cpp
b8cafe3427a168414400e5dfcbea78996792d2c3 10-Mar-2008 Dale Johannesen <dalej@apple.com> Increase ISD::ParamFlags to 64 bits. Increase the ByValSize
field to 32 bits, thus enabling correct handling of ByVal
structs bigger than 0x1ffff. Abstract interface a bit.
Fixes gcc.c-torture/execute/pr23135.c and
gcc.c-torture/execute/pr28982b.c in gcc testsuite (were ICE'ing
on ppc32, quietly producing wrong code on x86-32.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/SelectionDAGISel.cpp
322e3b73f704add3cd636a47381bacf1c6b2aa00 10-Mar-2008 Dale Johannesen <dalej@apple.com> Increase ISD::ParamFlags to 64 bits. Increase the ByValSize
field to 32 bits, thus enabling correct handling of ByVal
structs bigger than 0x1ffff. Abstract interface a bit.
Fixes gcc.c-torture/execute/pr23135.c and
gcc.c-torture/execute/pr28982b.c in gcc testsuite (were ICE'ing
on ppc32, quietly producing wrong code on x86-32.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/SelectionDAGISel.cpp
4c55c633d9fd795e0e39642daa07e592c7a285aa 09-Mar-2008 Chris Lattner <sabre@nondot.org> remove an extraneous (and ugly) default argument, thanks Duncan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48117 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
96d0b96930844d116fcde59f0d97dd0d41f8fb97 09-Mar-2008 Chris Lattner <sabre@nondot.org> remove an extraneous (and ugly) default argument, thanks Duncan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48117 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4468c1fd1c3dcc2cca7b881eb9f37f018405d2d9 09-Mar-2008 Chris Lattner <sabre@nondot.org> fp_round's produced by getCopyFromParts should always be exact, because
they are produced by calls (which are known exact) and by cross block copies
which are known to be produced by extends.

This improves:

define double @test2() {
%tmp85 = call double asm sideeffect "fld0", "={st(0)}"()
ret double %tmp85
}

from:

_test2:
subl $20, %esp
# InlineAsm Start
fld0
# InlineAsm End
fstpl 8(%esp)
movsd 8(%esp), %xmm0
movsd %xmm0, (%esp)
fldl (%esp)
addl $20, %esp
#FP_REG_KILL
ret

to:

_test2:
# InlineAsm Start
fld0
# InlineAsm End
#FP_REG_KILL
ret

by avoiding a f64 <-> f80 trip



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48108 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a7355b6a9de4d8a358a9ba6872ddfe909be27692 09-Mar-2008 Chris Lattner <sabre@nondot.org> fp_round's produced by getCopyFromParts should always be exact, because
they are produced by calls (which are known exact) and by cross block copies
which are known to be produced by extends.

This improves:

define double @test2() {
%tmp85 = call double asm sideeffect "fld0", "={st(0)}"()
ret double %tmp85
}

from:

_test2:
subl $20, %esp
# InlineAsm Start
fld0
# InlineAsm End
fstpl 8(%esp)
movsd 8(%esp), %xmm0
movsd %xmm0, (%esp)
fldl (%esp)
addl $20, %esp
#FP_REG_KILL
ret

to:

_test2:
# InlineAsm Start
fld0
# InlineAsm End
#FP_REG_KILL
ret

by avoiding a f64 <-> f80 trip



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48108 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f30e1cf9b7f96395768e710b4707ecd5587e1185 09-Mar-2008 Chris Lattner <sabre@nondot.org> teach X86InstrInfo::copyRegToReg how to copy into ST(0) from
an RFP register class.

Teach ScheduleDAG how to handle CopyToReg with different src/dst
reg classes.

This allows us to compile trivial inline asms that expect stuff
on the top of x87-fp stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48107 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
0d12872f84c388a13107a4b96fe7f3ab9200f5f0 09-Mar-2008 Chris Lattner <sabre@nondot.org> teach X86InstrInfo::copyRegToReg how to copy into ST(0) from
an RFP register class.

Teach ScheduleDAG how to handle CopyToReg with different src/dst
reg classes.

This allows us to compile trivial inline asms that expect stuff
on the top of x87-fp stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48107 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
02b6d25a2702d8857b82d333f290550e3c6ec4dc 09-Mar-2008 Chris Lattner <sabre@nondot.org> Add ScheduleDAG support for copytoreg where the src/dst register are
in different register classes, e.g. copy of ST(0) to RFP*. This gets
some really trivial inline asm working that plops things on the top of
stack (PR879)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48105 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
e6fdb067f070ac3b648fb93a6a81c430d139fdbf 09-Mar-2008 Chris Lattner <sabre@nondot.org> Add ScheduleDAG support for copytoreg where the src/dst register are
in different register classes, e.g. copy of ST(0) to RFP*. This gets
some really trivial inline asm working that plops things on the top of
stack (PR879)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48105 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
d9c4c450bf3836cf71047364253d582a6cdaf5ad 09-Mar-2008 Chris Lattner <sabre@nondot.org> fix 80 col violation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48100 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
4e15fcc62ddd8f9f2c3f61499427e41eb815ddc0 09-Mar-2008 Chris Lattner <sabre@nondot.org> fix 80 col violation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48100 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
d43d85ccc9cb8d4cd00e5cf38827f50b415255ff 09-Mar-2008 Chris Lattner <sabre@nondot.org> extend fp values with FP_EXTEND not FP_ROUND.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48097 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f8eb9e8d1dd327ffe9ece689f2959e235f161aa8 09-Mar-2008 Chris Lattner <sabre@nondot.org> extend fp values with FP_EXTEND not FP_ROUND.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48097 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f9d95c8835bc4f9072c33e1f9ebaa581a4d3268d 09-Mar-2008 Chris Lattner <sabre@nondot.org> Fix two problems in SelectionDAGLegalize::ExpandBUILD_VECTOR's handling
of BUILD_VECTORS that only have two unique elements:

1. The previous code was nondeterminstic, because it walked a map in
SDOperand order, which isn't determinstic.
2. The previous code didn't handle the case when one element was undef
very well. Now we ensure that the generated shuffle mask has the
undef vector on the RHS (instead of potentially being on the LHS)
and that any elements that refer to it are themselves undef. This
allows us to compile CodeGen/X86/vec_set-9.ll into:

_test3:
movd %rdi, %xmm0
punpcklqdq %xmm0, %xmm0
ret

instead of:

_test3:
movd %rdi, %xmm1
#IMPLICIT_DEF %xmm0
punpcklqdq %xmm1, %xmm0
ret

... saving a register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48060 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d8cee73bf7f87593fc6a64fb729757b8e3192adc 09-Mar-2008 Chris Lattner <sabre@nondot.org> Fix two problems in SelectionDAGLegalize::ExpandBUILD_VECTOR's handling
of BUILD_VECTORS that only have two unique elements:

1. The previous code was nondeterminstic, because it walked a map in
SDOperand order, which isn't determinstic.
2. The previous code didn't handle the case when one element was undef
very well. Now we ensure that the generated shuffle mask has the
undef vector on the RHS (instead of potentially being on the LHS)
and that any elements that refer to it are themselves undef. This
allows us to compile CodeGen/X86/vec_set-9.ll into:

_test3:
movd %rdi, %xmm0
punpcklqdq %xmm0, %xmm0
ret

instead of:

_test3:
movd %rdi, %xmm1
#IMPLICIT_DEF %xmm0
punpcklqdq %xmm1, %xmm0
ret

... saving a register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48060 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f3ba434781daa1c2b16f77a91e5209c21ce12428 09-Mar-2008 Chris Lattner <sabre@nondot.org> Teach SD some vector identities, allowing us to compile vec_set-9 into:

_test3:
movd %rdi, %xmm1
#IMPLICIT_DEF %xmm0
punpcklqdq %xmm1, %xmm0
ret

instead of:

_test3:
#IMPLICIT_DEF %rax
movd %rax, %xmm0
movd %rdi, %xmm1
punpcklqdq %xmm1, %xmm0
ret

This is still not ideal. There is no reason to two xmm regs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48058 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9f0705c05e504a58860a90d04bcd3984fb605556 09-Mar-2008 Chris Lattner <sabre@nondot.org> Teach SD some vector identities, allowing us to compile vec_set-9 into:

_test3:
movd %rdi, %xmm1
#IMPLICIT_DEF %xmm0
punpcklqdq %xmm1, %xmm0
ret

instead of:

_test3:
#IMPLICIT_DEF %rax
movd %rax, %xmm0
movd %rdi, %xmm1
punpcklqdq %xmm1, %xmm0
ret

This is still not ideal. There is no reason to two xmm regs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48058 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
27b7db549e4c5bff4579d209304de5628513edeb 08-Mar-2008 Evan Cheng <evan.cheng@apple.com> Implement x86 support for @llvm.prefetch. It corresponds to prefetcht{0|1|2} and prefetchnta instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48042 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
d1d68074a0e6eebbfdde72a29e14f1cd3e831c67 08-Mar-2008 Evan Cheng <evan.cheng@apple.com> Implement x86 support for @llvm.prefetch. It corresponds to prefetcht{0|1|2} and prefetchnta instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48042 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
d93ae242d3bb0a306c05a03dad9bf3ec8eba8ceb 08-Mar-2008 Bill Wendling <isanbard@gmail.com> Something that kills a super-register also
kills the sub-register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48038 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
8580f03c8acaab3ce437fa367439726b446cf654 08-Mar-2008 Bill Wendling <isanbard@gmail.com> Something that kills a super-register also
kills the sub-register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48038 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
d68f47c6fd744e051f7f2d97b6366d40bf27c438 07-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fixed a register scavenger bug. If a def is re-defining part of a super register, there must be an implicit def of the super-register on the MI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48024 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
3b8021173b5bc1194eec787971f2909960c7a631 07-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fixed a register scavenger bug. If a def is re-defining part of a super register, there must be an implicit def of the super-register on the MI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48024 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
ed1fcd8987a7d39ca69bfa3cbf14b270738f029c 07-Mar-2008 Bill Wendling <isanbard@gmail.com> When setting the "unused" info, take into account something like this:

%r3<def> = OR %x3<kill>, %x3

We don't want to mark the %r3 as unused even though it's a sub-register of %x3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48003 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
7bd225597ac7aca2fde7b9d99173b6b9600603d8 07-Mar-2008 Bill Wendling <isanbard@gmail.com> When setting the "unused" info, take into account something like this:

%r3<def> = OR %x3<kill>, %x3

We don't want to mark the %r3 as unused even though it's a sub-register of %x3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48003 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
eb49c4e008522df75f1b3f17ec0e2644eb4b1259 06-Mar-2008 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47998 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
eadaf4495d25535c9fed7d696a5891eb6ad302ce 06-Mar-2008 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47998 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2cf36e07722d1e82250fc2d87d16b4b1be88a04e 06-Mar-2008 Gabor Greif <ggreif@gmail.com> some more spelling changes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47996 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
026615962c3eb1fc9dfa0093be6082411a60e94f 06-Mar-2008 Gabor Greif <ggreif@gmail.com> some more spelling changes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47996 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
433f6f62ca858c20d5d3f561e63818c2fda06ebe 06-Mar-2008 Evan Cheng <evan.cheng@apple.com> Constant fold SIGN_EXTEND_INREG with ashr not lshr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7faa1d74f8d347615a0ff54eb05f8f0ac35af448 06-Mar-2008 Evan Cheng <evan.cheng@apple.com> Constant fold SIGN_EXTEND_INREG with ashr not lshr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ecb2a8b9bc727308a0ccfbd92c87b7533c68aab8 05-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fix a coalescer bug wrt how dead copy interval is shortened.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47966 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
e4dc3b26de711866d996d9c88052d70413492dc4 05-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fix a coalescer bug wrt how dead copy interval is shortened.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47966 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
0ea0356dff38dfd0420b8c0a2fdf2fae7898c024 05-Mar-2008 Dale Johannesen <dalej@apple.com> Clarify that CALLSEQ_START..END may not be nested,
and add some protection against creating such.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ac246275b5c9541579515501e87c8b0763d9f6a1 05-Mar-2008 Dale Johannesen <dalej@apple.com> Clarify that CALLSEQ_START..END may not be nested,
and add some protection against creating such.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ec4a5672f86a42730d8fcf98243322520eaffb33 05-Mar-2008 Chris Lattner <sabre@nondot.org> Generalize FP constant shrinking optimization to apply to any vt
except ppc long double. This allows us to shrink constant pool
entries for x86 long double constants, which in turn allows us to
use flds/fldl instead of fldt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47938 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d037d4843c6cf1c39fa1f076f0d623de6e051b05 05-Mar-2008 Chris Lattner <sabre@nondot.org> Generalize FP constant shrinking optimization to apply to any vt
except ppc long double. This allows us to shrink constant pool
entries for x86 long double constants, which in turn allows us to
use flds/fldl instead of fldt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47938 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
aa2acbbbf06348f20274f4eeb77f9761c654a589 05-Mar-2008 Chris Lattner <sabre@nondot.org> Improve comment, pass in the original VT so that we can shrink a long double constant
all the way to float, not stopping at double.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47937 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e718cc5ccad55fcd0b9692f5286dc3bedbb22fcc 05-Mar-2008 Chris Lattner <sabre@nondot.org> Improve comment, pass in the original VT so that we can shrink a long double constant
all the way to float, not stopping at double.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47937 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
34bc178e4da0105f3a50a00cc06ca1193c529bcb 05-Mar-2008 Dan Gohman <gohman@apple.com> Codegen support for i128 UINT_TO_FP. This just fixes a
bug in r47928 (Int64Ty is the correct type for the constant
pool entry here) and removes the asserts, now that the code
is capable of handling i128.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47932 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
a193dba5ce64cabea28aa0aca64d60010045b124 05-Mar-2008 Dan Gohman <gohman@apple.com> Codegen support for i128 UINT_TO_FP. This just fixes a
bug in r47928 (Int64Ty is the correct type for the constant
pool entry here) and removes the asserts, now that the code
is capable of handling i128.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47932 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
6fd599fa6916bd9438dbea7994cf2437bdf4ab8c 05-Mar-2008 Evan Cheng <evan.cheng@apple.com> Add a target lowering hook to control whether it's worthwhile to compress fp constant.
For x86, if sse2 is available, it's not a good idea since cvtss2sd is slower than a movsd load and it prevents load folding. On x87, it's important to shrink fp constant since fldt is very expensive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47931 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
35190fd544eaee770b191618bd86af1ef7401758 05-Mar-2008 Evan Cheng <evan.cheng@apple.com> Add a target lowering hook to control whether it's worthwhile to compress fp constant.
For x86, if sse2 is available, it's not a good idea since cvtss2sd is slower than a movsd load and it prevents load folding. On x87, it's important to shrink fp constant since fldt is very expensive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47931 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d19189e9905e14a4001a8ca6fc4effb6a3f88e45 05-Mar-2008 Andrew Lenharth <andrewl@lenharth.org> 64bit CAS on 32bit x86.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47929 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8158082b53401707d47ecdb844129ebc146962a5 05-Mar-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> 64bit CAS on 32bit x86.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47929 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d91446de7a89a22c8ea1cbfd40fe2528467a4ccb 05-Mar-2008 Dan Gohman <gohman@apple.com> Codegen support for i128 SINT_TO_FP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47928 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/TargetLowering.cpp
c98645c3c1eba211e43a494f0dbd90a0ab9f2c90 05-Mar-2008 Dan Gohman <gohman@apple.com> Codegen support for i128 SINT_TO_FP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47928 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/TargetLowering.cpp
6130f66eaae89f8878590796977678afa8448926 05-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor code. Remove duplicated functions that basically do the same thing as
findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47927 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
HIElimination.cpp
egAllocLocal.cpp
egisterScavenging.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
trongPHIElimination.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
c7daf1f37a8c97e5ffc44f52e818cf127fae178e 05-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor code. Remove duplicated functions that basically do the same thing as
findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47927 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
HIElimination.cpp
egAllocLocal.cpp
egisterScavenging.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
trongPHIElimination.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
d86449e77435508db465fbb20c80581a1c269f85 04-Mar-2008 Roman Levenstein <romix.llvm@googlemail.com> Some improvements related to the computation of heights, depths of SUnits.

The basic idea is that all these algorithms are computing the longest paths from the root node or to the exit node. Therefore the existing implementation that uses and iterative and potentially
exponential algorithm was changed to a well-known graph algorithm based on dynamic programming. It has a linear run-time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
1db9b82cde7ec2f31498139c832041017886b36c 04-Mar-2008 Roman Levenstein <romix.llvm@googlemail.com> Some improvements related to the computation of heights, depths of SUnits.

The basic idea is that all these algorithms are computing the longest paths from the root node or to the exit node. Therefore the existing implementation that uses and iterative and potentially
exponential algorithm was changed to a well-known graph algorithm based on dynamic programming. It has a linear run-time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
ef12057737229452c17983faa20857dba441ef05 04-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor ExpandConstantFP so it can optimize load from constpool of types larger than f64 into extload from smaller types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47883 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
354be06edd36dc6d9496555a24811ced0c487695 04-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor ExpandConstantFP so it can optimize load from constpool of types larger than f64 into extload from smaller types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47883 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
76782f49d88bbf2853ba663a1469d8324ddcbfcc 04-Mar-2008 Bill Wendling <isanbard@gmail.com> Did I say 'e = getNumOperands()'? I meant --e, of course.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47875 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
634763372ec2479a34442dc8947bef34149c46d5 04-Mar-2008 Bill Wendling <isanbard@gmail.com> Did I say 'e = getNumOperands()'? I meant --e, of course.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47875 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
917be6814e0a4e529d290be5d806a054bbbc4a27 04-Mar-2008 Evan Cheng <evan.cheng@apple.com> Rename isOperand() to isOperandOf() (and other similar methods). It always confuses me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
d93876883cdbc14819ea260c0aa839ad707c149a 04-Mar-2008 Evan Cheng <evan.cheng@apple.com> Rename isOperand() to isOperandOf() (and other similar methods). It always confuses me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
405abffd5eb1ad1841491e51943b598c935f309b 04-Mar-2008 Bill Wendling <isanbard@gmail.com> Miscellaneous clean-ups based on Evan's feedback:

- Cleaned up how the prologue-epilogue inserter loops over the instructions.
- Instead of restarting the processing of an instruction if we remove an
implicit kill, just update the end iterator and make sure that the iterator
isn't incremented.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47870 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
rologEpilogInserter.cpp
696e129dd8fd79d621f9be58652bac9f1aa1a058 04-Mar-2008 Bill Wendling <isanbard@gmail.com> Miscellaneous clean-ups based on Evan's feedback:

- Cleaned up how the prologue-epilogue inserter loops over the instructions.
- Instead of restarting the processing of an instruction if we remove an
implicit kill, just update the end iterator and make sure that the iterator
isn't incremented.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47870 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
rologEpilogInserter.cpp
220a823f8d044b7e9484999c9ec73e3cbe6d251c 04-Mar-2008 Dan Gohman <gohman@apple.com> Misc. APInt-ification in the DAGCombiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47869 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d047c3e716d3b54f67222de86173979575bddc0c 04-Mar-2008 Dan Gohman <gohman@apple.com> Misc. APInt-ification in the DAGCombiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47869 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bb271ff9fe1b92e8c0fdb54334f92803b344ee6a 04-Mar-2008 Dan Gohman <gohman@apple.com> More APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47868 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
463db8ccdd26cf466e1cd122691ebaa623c0609a 04-Mar-2008 Dan Gohman <gohman@apple.com> More APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47868 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3370dd70aebf6b3c92d84c20245078c00290dffa 03-Mar-2008 Dan Gohman <gohman@apple.com> Yet more APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47867 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
04ec2f0e14e0597be5bcf862a12906f4462dbd39 03-Mar-2008 Dan Gohman <gohman@apple.com> Yet more APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47867 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6c6cd1ccb5de1ebab7089c8ce339889f33fa2577 03-Mar-2008 Dan Gohman <gohman@apple.com> More APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d00055a5f156158ba4367c259ae4afb6a155fa1b 03-Mar-2008 Dan Gohman <gohman@apple.com> More APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
050f550aeb3938d8e202156473fac5eabf0fa703 03-Mar-2008 Dan Gohman <gohman@apple.com> More APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47864 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
97f1f8e4d8ef60749cda3d14ac76613dc3b124f5 03-Mar-2008 Dan Gohman <gohman@apple.com> More APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47864 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4a23d72ec21d1bdfda69fd16c9fc10cec39f1fed 03-Mar-2008 Bill Wendling <isanbard@gmail.com> Go through the machine instruction's operands to make sure that we're not
marking both a super- and sub-register as "killed". This removes implicit uses
that are marked as "killed".



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47862 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
d0b7dfc7ba2dc76f2c70fe9fd6f93b9e4b34311f 03-Mar-2008 Bill Wendling <isanbard@gmail.com> Go through the machine instruction's operands to make sure that we're not
marking both a super- and sub-register as "killed". This removes implicit uses
that are marked as "killed".



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47862 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a0a570cec647b860a724f4f70a191bc83cdcc947 03-Mar-2008 Bill Wendling <isanbard@gmail.com> Make the register scavenger update the bookkeeping values for sub/super
registers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47861 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
d566c1ae9842d82e90da6b1e8e190bd368bfb3e0 03-Mar-2008 Bill Wendling <isanbard@gmail.com> Make the register scavenger update the bookkeeping values for sub/super
registers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47861 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
988a5782d3ce3cddc65d57d6aac7312d33ed59ab 03-Mar-2008 Bill Wendling <isanbard@gmail.com> Multiple instructions can be inserted when eliminating frame indexes. We need
the register scavenger to process all of those new instructions instead of just
the last one inserted.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47860 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
e53cc5ab5de6356f74463c2bd092e32ac2c45dd6 03-Mar-2008 Bill Wendling <isanbard@gmail.com> Multiple instructions can be inserted when eliminating frame indexes. We need
the register scavenger to process all of those new instructions instead of just
the last one inserted.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47860 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
26ed8697d4733f4ad588ef117ec4387560770ad0 01-Mar-2008 Andrew Lenharth <andrewl@lenharth.org> all but CAS working on x86

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47798 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7dfe23f07fa1482f30c658938ea87936c76bbc93 01-Mar-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> all but CAS working on x86

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47798 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3c8b59c546b5d56b2cae74da55e26eb994ed36bf 01-Mar-2008 Dale Johannesen <dalej@apple.com> Add MVT::is128BitVector and is64BitVector. Shrink
unaligned load/store code using them. Per review
of unaligned load/store vector patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47782 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f8c1e85b7f2cd1d72d83dfcf2bd47665de7cb3d5 01-Mar-2008 Dale Johannesen <dalej@apple.com> Add MVT::is128BitVector and is64BitVector. Shrink
unaligned load/store code using them. Per review
of unaligned load/store vector patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47782 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
84d4a2b4ad0874a46642bb568b45720d55e46b64 01-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor / clean up code; remove td list scheduler special tie breaker (no real benefit).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
dbde7f9d7779b2b5e8e5311f34090e89564bbfd9 01-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor / clean up code; remove td list scheduler special tie breaker (no real benefit).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
05548eb174dd694b651de334b73197a62e5071f1 29-Feb-2008 Evan Cheng <evan.cheng@apple.com> Don't fill eh frames even though these are text sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47765 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
7e7d194e5ee11b6a68f23b973cc765c49492c1e4 29-Feb-2008 Evan Cheng <evan.cheng@apple.com> Don't fill eh frames even though these are text sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47765 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
97e3c01eb4ee6afff602ad11a2f2788ed7c83580 29-Feb-2008 Bill Wendling <isanbard@gmail.com> If we reload a virtual register that's already been assigned, we want to mark
that instruction as its "last use". This fixes PR1925.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47758 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
f49e8397a4b49b95e80e6e777256601f5de8513d 29-Feb-2008 Bill Wendling <isanbard@gmail.com> If we reload a virtual register that's already been assigned, we want to mark
that instruction as its "last use". This fixes PR1925.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47758 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
4f658e9e4b2c7c25779c304a90f460615d35e555 29-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2112: don't run loop aligner if target doesn't have a TargetLowering object.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47755 91177308-0d34-0410-b5e6-96231b3b80d8
oopAligner.cpp
329344e006d93fe339b87dd927a987dbce84f34f 29-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix PR2112: don't run loop aligner if target doesn't have a TargetLowering object.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47755 91177308-0d34-0410-b5e6-96231b3b80d8
oopAligner.cpp
bec2c0c7e1827385bcc7efa390795e4b7b4aea77 29-Feb-2008 Evan Cheng <evan.cheng@apple.com> No need for coalescer to update kills. Only copies are coalesced and those instructions will be deleted. Doh.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47749 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
a3e0d87ba907bd35cd9b6f28573433377e95d145 29-Feb-2008 Evan Cheng <evan.cheng@apple.com> No need for coalescer to update kills. Only copies are coalesced and those instructions will be deleted. Doh.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47749 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
8f14da172d6705eccd4da2547321f0aac50c1a96 29-Feb-2008 Evan Cheng <evan.cheng@apple.com> Remove redundant #include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47748 91177308-0d34-0410-b5e6-96231b3b80d8
oopAligner.cpp
9be0de20d094c3aec4f1e6e8c65f1cf4c4f0c1b6 29-Feb-2008 Evan Cheng <evan.cheng@apple.com> Remove redundant #include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47748 91177308-0d34-0410-b5e6-96231b3b80d8
oopAligner.cpp
6c231501f80e1ff05e3cada3d051b1c826d1f478 29-Feb-2008 Dan Gohman <gohman@apple.com> More APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47746 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
161652c4f46b9229efd09b99833bdd719f441e57 29-Feb-2008 Dan Gohman <gohman@apple.com> More APInt-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47746 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c7773bf90ee4398ccdeb847db6330cf4507b832b 29-Feb-2008 Dan Gohman <gohman@apple.com> Use the new convertFromAPInt instead of convertFromZeroExtendedInteger,
which allows more of the surrounding arithmetic to be done with APInt
instead of uint64_t.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47745 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
88ae8c59b426349f31f355df183a3e5106651e88 29-Feb-2008 Dan Gohman <gohman@apple.com> Use the new convertFromAPInt instead of convertFromZeroExtendedInteger,
which allows more of the surrounding arithmetic to be done with APInt
instead of uint64_t.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47745 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c6f9a06238daebd41620ccc795f289c607393f00 29-Feb-2008 Dan Gohman <gohman@apple.com> Use the new APInt-enabled form of getConstant instead of converting
an APInt into a uint64_t to call getConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5d797ecc7df83576facdddaf82be4b3cf537a27d 29-Feb-2008 Dan Gohman <gohman@apple.com> Use the new APInt-enabled form of getConstant instead of converting
an APInt into a uint64_t to call getConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d703ed6aed98c8156829399efbafb13a3cca0b69 29-Feb-2008 Evan Cheng <evan.cheng@apple.com> Added option -align-loops=<true/false> to disable loop aligner pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47736 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
oopAligner.cpp
7e29ba04d0e41ee632ee6e46ab9d10e54d379d62 29-Feb-2008 Evan Cheng <evan.cheng@apple.com> Added option -align-loops=<true/false> to disable loop aligner pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47736 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
oopAligner.cpp
28d08fdb9f6572cafd5aae95c7caffa3cd136d8e 28-Feb-2008 Dale Johannesen <dalej@apple.com> Interface of getByValTypeAlignment differed between
generic & x86 versions; change generic to follow x86
and improve comments. Add PPC version (not right
for non-Darwin.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47734 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
88945f8d5d28848e86c85019f5e2ded869eebe3c 28-Feb-2008 Dale Johannesen <dalej@apple.com> Interface of getByValTypeAlignment differed between
generic & x86 versions; change generic to follow x86
and improve comments. Add PPC version (not right
for non-Darwin.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47734 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
cd9f1747ab72f9863924fbdf43493d9fa6256719 28-Feb-2008 Dale Johannesen <dalej@apple.com> Fix an assertion message.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47722 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b1d1ab90321e2e4ce57a5b6c49c420630beafc38 28-Feb-2008 Dale Johannesen <dalej@apple.com> Fix an assertion message.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47722 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
643afa55e72835e5e17c9f33876b883469d56814 28-Feb-2008 Evan Cheng <evan.cheng@apple.com> Keep track how many commutes are performed by the scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47710 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
7f6ade38ab2d9fb479f9e7dfa186d80a3bc106aa 28-Feb-2008 Evan Cheng <evan.cheng@apple.com> Keep track how many commutes are performed by the scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47710 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
e07415d4006b923ed1d2057ffa5a493353e28f9e 28-Feb-2008 Chris Lattner <sabre@nondot.org> implement expand for ISD::DECLARE by just deleting it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47708 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
203cd0593702c58ca57e2fadfbf4a03f8740ea51 28-Feb-2008 Chris Lattner <sabre@nondot.org> implement expand for ISD::DECLARE by just deleting it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47708 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fb8075d03f5c87bd57dcc9c5f2304f6b13c55aad 28-Feb-2008 Evan Cheng <evan.cheng@apple.com> Add a quick and dirty "loop aligner pass". x86 uses it to align its loops to 16-byte boundaries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47703 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
fConversion.cpp
oopAligner.cpp
achineBasicBlock.cpp
electionDAG/TargetLowering.cpp
45c1edb4f781571f11fefb07a46a2c0f08523650 28-Feb-2008 Evan Cheng <evan.cheng@apple.com> Add a quick and dirty "loop aligner pass". x86 uses it to align its loops to 16-byte boundaries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47703 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
fConversion.cpp
oopAligner.cpp
achineBasicBlock.cpp
electionDAG/TargetLowering.cpp
8155d64c2ffab8b17e0fd8e3b7a66fcef6a8ec9d 27-Feb-2008 Dale Johannesen <dalej@apple.com> Handle load/store of misaligned vectors that are the
same size as an int type by doing a bitconvert of
load/store of the int type (same algorithm as floating point).
This makes them work for ppc Altivec. There was some
code that purported to handle loads of (some) vectors
by splitting them into two smaller vectors, but getExtLoad
rejects subvector loads, so this could never have worked;
the patch removes it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
dc0ee195adc8a097560ec42e275d43d2cb8ca863 27-Feb-2008 Dale Johannesen <dalej@apple.com> Handle load/store of misaligned vectors that are the
same size as an int type by doing a bitconvert of
load/store of the int type (same algorithm as floating point).
This makes them work for ppc Altivec. There was some
code that purported to handle loads of (some) vectors
by splitting them into two smaller vectors, but getExtLoad
rejects subvector loads, so this could never have worked;
the patch removes it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
21b3f31f8f7d77b9c3a35012139df92ba40e7c92 27-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix a bug in dead spill slot elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47687 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
10b8c6bd927b899fcaa9b6c9a020019679dd5390 27-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix a bug in dead spill slot elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47687 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
18714aeaed2a74bfc85dc5abe24a9193882406c5 27-Feb-2008 Dan Gohman <gohman@apple.com> Remove the `else', at Evan's insistence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47686 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7e7aa2cbbb88303157290790eedf2318e02cfe20 27-Feb-2008 Dan Gohman <gohman@apple.com> Remove the `else', at Evan's insistence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47686 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
052e976f856fc66fce47d75be893480776906539 27-Feb-2008 Duncan Sands <baldrick@free.fr> Add a FIXME about the VECTOR_SHUFFLE evil hack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47676 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesSplit.cpp
9b6bc8a987ea10f5b2786fd756e9798ce79dd970 27-Feb-2008 Duncan Sands <baldrick@free.fr> Add a FIXME about the VECTOR_SHUFFLE evil hack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47676 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesSplit.cpp
077f9b20d0e8659d00a09046a63e28edf0665ffe 27-Feb-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for EXTRACT_VECTOR_ELT. The
approach taken is different to that in LegalizeDAG
when it is a question of expanding or promoting the
result type: for example, if extracting an i64 from
a <2 x i64>, when i64 needs expanding, it bitcasts
the vector to <4 x i32>, extracts the appropriate
two i32's, and uses those for the Lo and Hi parts.
Likewise, when extracting an i16 from a <4 x i16>,
and i16 needs promoting, it bitcasts the vector to
<2 x i32>, extracts the appropriate i32, twiddles
the bits if necessary, and uses that as the promoted
value. This puts more pressure on bitcast legalization,
and I've added the appropriate cases. They needed to
be added anyway since users can generate such bitcasts
too if they want to. Also, when considering various
cases (Legal, Promote, Expand, Scalarize, Split) it is
a pain that expand can correspond to Expand, Scalarize
or Split, so I've changed the LegalizeTypes enum so it
lists those different cases - now Expand only means
splitting a scalar in two.
The code produced is the same as by LegalizeDAG for
all relevant testcases, except for
2007-10-31-extractelement-i64.ll, where the code seems
to have improved (see below; can an expert please tell
me if it is better or not).
Before < vs after >.

< subl $92, %esp
< movaps %xmm0, 64(%esp)
< movaps %xmm0, (%esp)
< movl 4(%esp), %eax
< movl %eax, 28(%esp)
< movl (%esp), %eax
< movl %eax, 24(%esp)
< movq 24(%esp), %mm0
< movq %mm0, 56(%esp)
---
> subl $44, %esp
> movaps %xmm0, 16(%esp)
> pshufd $1, %xmm0, %xmm1
> movd %xmm1, 4(%esp)
> movd %xmm0, (%esp)
> movq (%esp), %mm0
> movq %mm0, 8(%esp)

< subl $92, %esp
< movaps %xmm0, 64(%esp)
< movaps %xmm0, (%esp)
< movl 12(%esp), %eax
< movl %eax, 28(%esp)
< movl 8(%esp), %eax
< movl %eax, 24(%esp)
< movq 24(%esp), %mm0
< movq %mm0, 56(%esp)
---
> subl $44, %esp
> movaps %xmm0, 16(%esp)
> pshufd $3, %xmm0, %xmm1
> movd %xmm1, 4(%esp)
> movhlps %xmm0, %xmm0
> movd %xmm0, (%esp)
> movq (%esp), %mm0
> movq %mm0, 8(%esp)

< subl $92, %esp
< movaps %xmm0, 64(%esp)
---
> subl $44, %esp

< movl 16(%esp), %eax
< movl %eax, 48(%esp)
< movl 20(%esp), %eax
< movl %eax, 52(%esp)
< movaps %xmm0, (%esp)
< movl 4(%esp), %eax
< movl %eax, 60(%esp)
< movl (%esp), %eax
< movl %eax, 56(%esp)
---
> pshufd $1, %xmm0, %xmm1
> movd %xmm1, 4(%esp)
> movd %xmm0, (%esp)
> movd %xmm1, 12(%esp)
> movd %xmm0, 8(%esp)

< subl $92, %esp
< movaps %xmm0, 64(%esp)
---
> subl $44, %esp

< movl 24(%esp), %eax
< movl %eax, 48(%esp)
< movl 28(%esp), %eax
< movl %eax, 52(%esp)
< movaps %xmm0, (%esp)
< movl 12(%esp), %eax
< movl %eax, 60(%esp)
< movl 8(%esp), %eax
< movl %eax, 56(%esp)
---
> pshufd $3, %xmm0, %xmm1
> movd %xmm1, 4(%esp)
> movhlps %xmm0, %xmm0
> movd %xmm0, (%esp)
> movd %xmm1, 12(%esp)
> movd %xmm0, 8(%esp)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
01b3246f1ea2b41da19465decc29d78e6e98f1ff 27-Feb-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for EXTRACT_VECTOR_ELT. The
approach taken is different to that in LegalizeDAG
when it is a question of expanding or promoting the
result type: for example, if extracting an i64 from
a <2 x i64>, when i64 needs expanding, it bitcasts
the vector to <4 x i32>, extracts the appropriate
two i32's, and uses those for the Lo and Hi parts.
Likewise, when extracting an i16 from a <4 x i16>,
and i16 needs promoting, it bitcasts the vector to
<2 x i32>, extracts the appropriate i32, twiddles
the bits if necessary, and uses that as the promoted
value. This puts more pressure on bitcast legalization,
and I've added the appropriate cases. They needed to
be added anyway since users can generate such bitcasts
too if they want to. Also, when considering various
cases (Legal, Promote, Expand, Scalarize, Split) it is
a pain that expand can correspond to Expand, Scalarize
or Split, so I've changed the LegalizeTypes enum so it
lists those different cases - now Expand only means
splitting a scalar in two.
The code produced is the same as by LegalizeDAG for
all relevant testcases, except for
2007-10-31-extractelement-i64.ll, where the code seems
to have improved (see below; can an expert please tell
me if it is better or not).
Before < vs after >.

< subl $92, %esp
< movaps %xmm0, 64(%esp)
< movaps %xmm0, (%esp)
< movl 4(%esp), %eax
< movl %eax, 28(%esp)
< movl (%esp), %eax
< movl %eax, 24(%esp)
< movq 24(%esp), %mm0
< movq %mm0, 56(%esp)
---
> subl $44, %esp
> movaps %xmm0, 16(%esp)
> pshufd $1, %xmm0, %xmm1
> movd %xmm1, 4(%esp)
> movd %xmm0, (%esp)
> movq (%esp), %mm0
> movq %mm0, 8(%esp)

< subl $92, %esp
< movaps %xmm0, 64(%esp)
< movaps %xmm0, (%esp)
< movl 12(%esp), %eax
< movl %eax, 28(%esp)
< movl 8(%esp), %eax
< movl %eax, 24(%esp)
< movq 24(%esp), %mm0
< movq %mm0, 56(%esp)
---
> subl $44, %esp
> movaps %xmm0, 16(%esp)
> pshufd $3, %xmm0, %xmm1
> movd %xmm1, 4(%esp)
> movhlps %xmm0, %xmm0
> movd %xmm0, (%esp)
> movq (%esp), %mm0
> movq %mm0, 8(%esp)

< subl $92, %esp
< movaps %xmm0, 64(%esp)
---
> subl $44, %esp

< movl 16(%esp), %eax
< movl %eax, 48(%esp)
< movl 20(%esp), %eax
< movl %eax, 52(%esp)
< movaps %xmm0, (%esp)
< movl 4(%esp), %eax
< movl %eax, 60(%esp)
< movl (%esp), %eax
< movl %eax, 56(%esp)
---
> pshufd $1, %xmm0, %xmm1
> movd %xmm1, 4(%esp)
> movd %xmm0, (%esp)
> movd %xmm1, 12(%esp)
> movd %xmm0, 8(%esp)

< subl $92, %esp
< movaps %xmm0, 64(%esp)
---
> subl $44, %esp

< movl 24(%esp), %eax
< movl %eax, 48(%esp)
< movl 28(%esp), %eax
< movl %eax, 52(%esp)
< movaps %xmm0, (%esp)
< movl 12(%esp), %eax
< movl %eax, 60(%esp)
< movl 8(%esp), %eax
< movl %eax, 56(%esp)
---
> pshufd $3, %xmm0, %xmm1
> movd %xmm1, 4(%esp)
> movhlps %xmm0, %xmm0
> movd %xmm0, (%esp)
> movd %xmm1, 12(%esp)
> movd %xmm0, 8(%esp)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
8745b52853c9b1d1370005d7cb42587ebe2a7193 27-Feb-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for legalizing the mask
operand of a VECTOR_SHUFFLE. The mask is a
vector of constant integers. The code in
LegalizeDAG doesn't bother to legalize the
mask, since it's basically just storage for
a bunch of constants, however LegalizeTypes
is more picky. The problem is that there may
not exist any legal vector-of-integers type
with a legal element type, so it is impossible
to create a legal mask! Unless of course you
cheat by creating a BUILD_VECTOR where the
operands have a different type to the element
type of the vector being built... This is
pretty ugly but works - all relevant tests in
the testsuite pass, and produce the same
assembler with and without LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47670 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesSplit.cpp
3574980dcd2148403eeee50bc09e12d6afac9c69 27-Feb-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for legalizing the mask
operand of a VECTOR_SHUFFLE. The mask is a
vector of constant integers. The code in
LegalizeDAG doesn't bother to legalize the
mask, since it's basically just storage for
a bunch of constants, however LegalizeTypes
is more picky. The problem is that there may
not exist any legal vector-of-integers type
with a legal element type, so it is impossible
to create a legal mask! Unless of course you
cheat by creating a BUILD_VECTOR where the
operands have a different type to the element
type of the vector being built... This is
pretty ugly but works - all relevant tests in
the testsuite pass, and produce the same
assembler with and without LegalizeTypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47670 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesSplit.cpp
4f069e6db1772a7e6cd8bfc360d819b56557badc 27-Feb-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for INSERT_VECTOR_ELT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47669 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
25ff37c21b2ddca6e93da7f511f64b03da4eb2cb 27-Feb-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for INSERT_VECTOR_ELT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47669 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
be680dcea6858c438c6615326ae1c098ff448ae1 27-Feb-2008 Evan Cheng <evan.cheng@apple.com> Don't track max alignment during stack object allocations since they can be deleted later. Let PEI compute it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47668 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
b8447aae4812dac6c6c6c8cb976c6501b59f6dc1 27-Feb-2008 Evan Cheng <evan.cheng@apple.com> Don't track max alignment during stack object allocations since they can be deleted later. Let PEI compute it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47668 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
e90a615f37aaee2ad9259c0ef21586d5e4142147 27-Feb-2008 Duncan Sands <baldrick@free.fr> Support for legalizing MEMBARRIER.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesPromote.cpp
3ee041a58ff07dee5fe2eac3924dea27da84fe28 27-Feb-2008 Duncan Sands <baldrick@free.fr> Support for legalizing MEMBARRIER.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47667 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesPromote.cpp
6ef781f3ce0d0311004adba9d1e7dbd7950918dd 27-Feb-2008 Bill Wendling <isanbard@gmail.com> Final de-tabification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47663 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
irtRegMap.cpp
6c02cd29b5ca35947c8414e7a20667066db64409 27-Feb-2008 Bill Wendling <isanbard@gmail.com> Final de-tabification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47663 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
irtRegMap.cpp
d36531249a9a9500e516148e7e72d4c0a7a4d0ee 27-Feb-2008 Evan Cheng <evan.cheng@apple.com> Spiller now remove unused spill slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47657 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineFunction.cpp
rologEpilogInserter.cpp
irtRegMap.cpp
irtRegMap.h
da872539ba284fe9ded04f4231f88c90fc77ea5c 27-Feb-2008 Evan Cheng <evan.cheng@apple.com> Spiller now remove unused spill slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47657 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineFunction.cpp
rologEpilogInserter.cpp
irtRegMap.cpp
irtRegMap.h
1953ecb0a6fc8520b34b52fd04f7476a7eb4613f 27-Feb-2008 Dan Gohman <gohman@apple.com> Teach Legalize how to expand an EXTRACT_ELEMENT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47656 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
550c846758f3d72920a35e4f8484c604c7f98b3c 27-Feb-2008 Dan Gohman <gohman@apple.com> Teach Legalize how to expand an EXTRACT_ELEMENT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47656 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b3564aa8367fc38efdab0a812868f6f93b9d883e 27-Feb-2008 Dan Gohman <gohman@apple.com> Convert the last remaining users of the non-APInt form of
ComputeMaskedBits to use the APInt form, and remove the
non-APInt form.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47654 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
63f4e461c48befdc3a6fcd0e0abf5252efeb3a6a 27-Feb-2008 Dan Gohman <gohman@apple.com> Convert the last remaining users of the non-APInt form of
ComputeMaskedBits to use the APInt form, and remove the
non-APInt form.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47654 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7b8d4a9eef4eb02e561227b50c9d119cea4e8860 27-Feb-2008 Dan Gohman <gohman@apple.com> Convert SimplifyDemandedMask and ShrinkDemandedConstant to use APInt.
Change several cases in SimplifyDemandedMask that don't ever do any
simplifying to reuse the logic in ComputeMaskedBits instead of
duplicating it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47648 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
1160779f02d5369e4d9012ee1078798e866c6772 27-Feb-2008 Dan Gohman <gohman@apple.com> Convert SimplifyDemandedMask and ShrinkDemandedConstant to use APInt.
Change several cases in SimplifyDemandedMask that don't ever do any
simplifying to reuse the logic in ComputeMaskedBits instead of
duplicating it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47648 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
fe42462164b7dfcb31922b358fbaf8d9db7eb8d2 26-Feb-2008 Chris Lattner <sabre@nondot.org> Use a smallvector for inactiveCounts and initialize it lazily
instead of init'ing it maximally to zeros on entry. getFreePhysReg
is pretty hot and only a few elements are typically used. This speeds
up linscan by 5% on 176.gcc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47631 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
9f6dc2c9c71233db4d01af5a1c15b3d8730d114a 26-Feb-2008 Chris Lattner <sabre@nondot.org> Use a smallvector for inactiveCounts and initialize it lazily
instead of init'ing it maximally to zeros on entry. getFreePhysReg
is pretty hot and only a few elements are typically used. This speeds
up linscan by 5% on 176.gcc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47631 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
e6d088acc90e422451e098555d383d4d65b6ce6b 26-Feb-2008 Bill Wendling <isanbard@gmail.com> Rename PrintableName to Name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47629 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
achineLICM.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
9b0baebd71c4f66b7b3f4a9d2ffdde9dc9ded8a7 26-Feb-2008 Bill Wendling <isanbard@gmail.com> Rename PrintableName to Name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47629 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
achineLICM.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
74ab84c31ef64538a1b56e1f282e49303412ad17 26-Feb-2008 Bill Wendling <isanbard@gmail.com> Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool
would have been a Godsend here!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47625 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineLICM.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
8eeb97927530a1e53c3529a9b93f94239056d1b4 26-Feb-2008 Bill Wendling <isanbard@gmail.com> Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool
would have been a Godsend here!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47625 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineLICM.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
4d535cadf159d30619464f61f1386ffc9a340597 26-Feb-2008 Evan Cheng <evan.cheng@apple.com> Enable -coalescer-commute-instrs by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47623 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
7823251bfc67e9a156eae9dc51de4aed0339557b 26-Feb-2008 Evan Cheng <evan.cheng@apple.com> Enable -coalescer-commute-instrs by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47623 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d4cf992230a6cc4d76022c5d47dbd23115bdec44 26-Feb-2008 Dan Gohman <gohman@apple.com> Avoid aborting on invalid shift counts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47612 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4b8d000a42364bf84df5172e9710f196c731ebe4 26-Feb-2008 Dan Gohman <gohman@apple.com> Avoid aborting on invalid shift counts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47612 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
aeecb6c73ae05100eec57e9521beb87635f1f26e 26-Feb-2008 Chris Lattner <sabre@nondot.org> Fix PR2096, a regression introduced with my patch last night. This
also fixes cfrac, flops, and 175.vpr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
46360036d82cc38520778bed3da820050e35d812 26-Feb-2008 Chris Lattner <sabre@nondot.org> Fix PR2096, a regression introduced with my patch last night. This
also fixes cfrac, flops, and 175.vpr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
212a11c417e272cc8fd12e66cfe5110c47559e17 26-Feb-2008 Duncan Sands <baldrick@free.fr> Fix a nasty bug in LegalizeTypes (spotted in
CodeGen/PowerPC/illegal-element-type.ll): suppose
a node X is processed, and processing maps it to
a node Y. Then X continues to exist in the DAG,
but with no users. While processing some other
node, a new node may be created that happens to
be equal to X, and thus X will be reused rather
than a truly new node. This can cause X to
"magically reappear", and since it is in the
Processed state in will not be reprocessed, so
at the end of type legalization the illegal node
X can still be present. The solution is to replace
X with Y whenever X gets resurrected like this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47601 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
1464b445bf0d3ff9aaf5c2a3255578579b195234 26-Feb-2008 Duncan Sands <baldrick@free.fr> Fix a nasty bug in LegalizeTypes (spotted in
CodeGen/PowerPC/illegal-element-type.ll): suppose
a node X is processed, and processing maps it to
a node Y. Then X continues to exist in the DAG,
but with no users. While processing some other
node, a new node may be created that happens to
be equal to X, and thus X will be reused rather
than a truly new node. This can cause X to
"magically reappear", and since it is in the
Processed state in will not be reprocessed, so
at the end of type legalization the illegal node
X can still be present. The solution is to replace
X with Y whenever X gets resurrected like this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47601 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
f059deb8dd420b611c8b1a6d70720baf3ea19d51 26-Feb-2008 Bill Wendling <isanbard@gmail.com> De-tabify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47598 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
059e62c8b6a5833a8d7d91c0591184c5d020e310 26-Feb-2008 Bill Wendling <isanbard@gmail.com> De-tabify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47598 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
c886c460e4fc305a1b79d1e7782584c7aa7aa91f 26-Feb-2008 Evan Cheng <evan.cheng@apple.com> This is possible:
vr1 = extract_subreg vr2, 3
...
vr3 = extract_subreg vr1, 2
The end result is vr3 is equal to vr2 with subidx 2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47592 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f2e67b7afa4f1023875d6ca2d0b9835ed9a38e60 26-Feb-2008 Evan Cheng <evan.cheng@apple.com> This is possible:
vr1 = extract_subreg vr2, 3
...
vr3 = extract_subreg vr1, 2
The end result is vr3 is equal to vr2 with subidx 2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47592 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
0254e7033a1d879357e582dcdc1943e656192768 26-Feb-2008 Chris Lattner <sabre@nondot.org> Fix isNegatibleForFree to not return true for ConstantFP nodes
after legalize. Just because a constant is legal (e.g. 0.0 in SSE)
doesn't mean that its negated value is legal (-0.0). We could make
this stronger by checking to see if the negated constant is actually
legal post negation, but it doesn't seem like a big deal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47591 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e0992b832c3cf73bccf557910a69c652a1e55c5f 26-Feb-2008 Chris Lattner <sabre@nondot.org> Fix isNegatibleForFree to not return true for ConstantFP nodes
after legalize. Just because a constant is legal (e.g. 0.0 in SSE)
doesn't mean that its negated value is legal (-0.0). We could make
this stronger by checking to see if the negated constant is actually
legal post negation, but it doesn't seem like a big deal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47591 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5c80760fdf71659c5bdf45cd85d173df454dfb41 26-Feb-2008 Evan Cheng <evan.cheng@apple.com> Refactor inline asm constraint matching code out of SDIsel into TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47587 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
bcd6644c2f0d424a393716c558faa207ace9709b 26-Feb-2008 Evan Cheng <evan.cheng@apple.com> Refactor inline asm constraint matching code out of SDIsel into TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47587 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
f6283fd27be06021fbe262341be56331bc67786c 25-Feb-2008 Dan Gohman <gohman@apple.com> Make some static variables const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47566 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
84d0096ffb5d477628d081c17c2fba2086274765 25-Feb-2008 Dan Gohman <gohman@apple.com> Make some static variables const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47566 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2e68b6f52d0979575b2f02ed29717d907ba0684c 25-Feb-2008 Dan Gohman <gohman@apple.com> Convert MaskedValueIsZero and all its users to use APInt. Also add
a SignBitIsZero function to simplify a common use case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47561 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
07961cd7921c5cc75e77890a1435e41f6423f42f 25-Feb-2008 Dan Gohman <gohman@apple.com> Convert MaskedValueIsZero and all its users to use APInt. Also add
a SignBitIsZero function to simplify a common use case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47561 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
e83a27516cf5b6cc92ead99c17bbd77bca7ae06b 25-Feb-2008 Evan Cheng <evan.cheng@apple.com> All remat'ed loads cannot be folded into two-address code. Not just argument loads. This change doesn't really have any impact on codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47557 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
990c07146e1579eb6eeb501d431e0a5f8646de3d 25-Feb-2008 Evan Cheng <evan.cheng@apple.com> All remat'ed loads cannot be folded into two-address code. Not just argument loads. This change doesn't really have any impact on codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47557 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1a9c9df1db4ab3bf39f0395a7086576b4491d50b 25-Feb-2008 Duncan Sands <baldrick@free.fr> In debug builds check that the key property holds: all
result and operand types are legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
a80ff7ca83b73b0d25af379df41f262462dc1683 25-Feb-2008 Duncan Sands <baldrick@free.fr> In debug builds check that the key property holds: all
result and operand types are legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
79a0c1e46c4f7d8a2a06f4ef3e2c54d883c7fe25 25-Feb-2008 Evan Cheng <evan.cheng@apple.com> Correctly determine whether a argument load can be folded into its uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47545 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
70e40deb364a03de234fe587934fb671fa16ce6b 25-Feb-2008 Evan Cheng <evan.cheng@apple.com> Correctly determine whether a argument load can be folded into its uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47545 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
14fd63cae875b8e41c70f4408b2185abf82d1d60 24-Feb-2008 Duncan Sands <baldrick@free.fr> Add support to LegalizeTypes for building legal vectors
out of illegal elements (BUILD_VECTOR). Uses and beefs
up BUILD_PAIR, though it didn't really have to. Like
most of LegalizeTypes, does not support soft-float.
This cures all "make check" vector building failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47537 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
b59c7b2902878afea0d53fa05285b338fa5878ed 24-Feb-2008 Duncan Sands <baldrick@free.fr> Add support to LegalizeTypes for building legal vectors
out of illegal elements (BUILD_VECTOR). Uses and beefs
up BUILD_PAIR, though it didn't really have to. Like
most of LegalizeTypes, does not support soft-float.
This cures all "make check" vector building failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47537 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
181eb737b28628adc4376b973610a02039385026 24-Feb-2008 Bill Wendling <isanbard@gmail.com> Some platforms use the same name for 32-bit and 64-bit registers (like
%r3 on PPC) in their ASM files. However, it's hard for humans to read
during debugging. Adding a new field to the register data that lets you
specify a different name to be printed than the one that goes into the
ASM file -- %x3 instead of %r3, for instance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47534 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
733f0fd605dccb7e93842ec66494c30b35ea5cd3 24-Feb-2008 Bill Wendling <isanbard@gmail.com> Some platforms use the same name for 32-bit and 64-bit registers (like
%r3 on PPC) in their ASM files. However, it's hard for humans to read
during debugging. Adding a new field to the register data that lets you
specify a different name to be printed than the one that goes into the
ASM file -- %x3 instead of %r3, for instance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47534 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
249ded3fa8884f91fded869fb6e251b8aebb0376 23-Feb-2008 Evan Cheng <evan.cheng@apple.com> Rematerialization logic was overly conservative when it comes to loads from fixed stack slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47529 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d02019304361f2aa8d5966338011fb30cffffe14 23-Feb-2008 Evan Cheng <evan.cheng@apple.com> Rematerialization logic was overly conservative when it comes to loads from fixed stack slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47529 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
298bbe82cb390235f7b8ab4bd550feff909e0c3d 23-Feb-2008 Evan Cheng <evan.cheng@apple.com> If remating a machine instr with virtual register operand, make sure the vr is avaliable at all uses regardless of whether it would be folded.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47526 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
dc6c8b56f6841b7d1c41d2d67d47742ac444537c 23-Feb-2008 Evan Cheng <evan.cheng@apple.com> If remating a machine instr with virtual register operand, make sure the vr is avaliable at all uses regardless of whether it would be folded.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47526 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
dd3465eed17cdf226bdb465e604dfa851d36029d 23-Feb-2008 Evan Cheng <evan.cheng@apple.com> Recognize loads of arguments as re-materializable first. Therefore if isReallyTriviallyReMaterializable() returns true it doesn't confuse it as a "normal" re-materializable instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47520 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c2855324fb3a9a48f9c0f8311feb5e1de971aa1f 23-Feb-2008 Evan Cheng <evan.cheng@apple.com> Recognize loads of arguments as re-materializable first. Therefore if isReallyTriviallyReMaterializable() returns true it doesn't confuse it as a "normal" re-materializable instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47520 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
313d4b809326f3e04814f94e5b8ae05649d8e0f6 23-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix spill weight updating bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47507 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c7666af8ae90f76b7e6de93a492500af3de6b5ed 23-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix spill weight updating bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47507 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
672e55060147defd6397be4f07cb880b2f8ab151 22-Feb-2008 Evan Cheng <evan.cheng@apple.com> Same isPhysRegAvailable bug as local register allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47500 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
07741321958290d72124005585f7fad8b20de8b9 22-Feb-2008 Evan Cheng <evan.cheng@apple.com> Same isPhysRegAvailable bug as local register allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47500 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
bcfa1ca9768a0ff0e4c2935832287d7bb9921cec 22-Feb-2008 Evan Cheng <evan.cheng@apple.com> Really really bad local register allocator bug. On X86, it was never using ESI, EDI, and EBP because of a bug in RALocal::isPhysRegAvailable(). For example, when
it checks if ESI is available, it then looks at registers aliases to ESI. SIL is marked -2 (not allocatable) but isPhysRegAvailable() incorrectly assumes it is in use and returns false for ESI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47499 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
f90128d75721be00ebb000a879277e39558851f1 22-Feb-2008 Evan Cheng <evan.cheng@apple.com> Really really bad local register allocator bug. On X86, it was never using ESI, EDI, and EBP because of a bug in RALocal::isPhysRegAvailable(). For example, when
it checks if ESI is available, it then looks at registers aliases to ESI. SIL is marked -2 (not allocatable) but isPhysRegAvailable() incorrectly assumes it is in use and returns false for ESI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47499 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
9af7090392efa7bf1b7eae274b9231518af8303b 22-Feb-2008 Evan Cheng <evan.cheng@apple.com> Add debugging printfs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47496 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
d409cdf2793adc1c84f4018a491df1b758f88e57 22-Feb-2008 Evan Cheng <evan.cheng@apple.com> Add debugging printfs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47496 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
b2fd65f936292f4dcd5ef5ee62175552779c1c82 22-Feb-2008 Evan Cheng <evan.cheng@apple.com> Make sure reload of implicit uses are issued before remat's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47492 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
64e5b32dfec97ddea967e5bdb9beef6650f9428c 22-Feb-2008 Evan Cheng <evan.cheng@apple.com> Make sure reload of implicit uses are issued before remat's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47492 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
08e78b18b8ef2c939ee95469662c98e23846d860 22-Feb-2008 Dale Johannesen <dalej@apple.com> Pass alignment on ByVal parameters, from FE, all
the way through. It is now used for codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9b398787935ab9e5d9f74c4c2b751ebf61211ea8 22-Feb-2008 Dale Johannesen <dalej@apple.com> Pass alignment on ByVal parameters, from FE, all
the way through. It is now used for codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d70dbb5d627a0408eccf88033143efa62ee0e6c0 22-Feb-2008 Evan Cheng <evan.cheng@apple.com> Enable re-materialization of instructions which have virtual register operands if
the definition of the operand also reaches its uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47475 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
a37ecfeea3b595916a7380dbf1184b9ad9b1d5f4 22-Feb-2008 Evan Cheng <evan.cheng@apple.com> Enable re-materialization of instructions which have virtual register operands if
the definition of the operand also reaches its uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47475 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
becda48f88db41f879e5433d063982eeaa614438 22-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47468 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
1d19abe0af2e96d4cb7853fd5964128ac905b0a2 22-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47468 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9e255b7df5a0a629920706e086e78ef89bf2f183 22-Feb-2008 Dan Gohman <gohman@apple.com> Fix a regression in 403.gcc and 186.crafty introduced in 47383. To test
that a value is >= 32, check that all of the high bits are zero, not
just one or more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47467 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
eb3f11721f17186a725c5a541ef9a069d104610e 22-Feb-2008 Dan Gohman <djg@cray.com> Fix a regression in 403.gcc and 186.crafty introduced in 47383. To test
that a value is >= 32, check that all of the high bits are zero, not
just one or more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47467 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
69e6a8d5a8c486bcdd2c19238171b01d470ba45f 21-Feb-2008 Chris Lattner <sabre@nondot.org> Make the clobber analysis a bit more smart: we only are careful about
early clobbers if the clobber list contains a *register* not some thing
like {memory}, {dirflag} etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47457 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
17ac43108dab399ad5f8e03448228d10850dc286 21-Feb-2008 Chris Lattner <sabre@nondot.org> Make the clobber analysis a bit more smart: we only are careful about
early clobbers if the clobber list contains a *register* not some thing
like {memory}, {dirflag} etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47457 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0fe71e9bb19ff1781813184e41a8aaaae4dd2908 21-Feb-2008 Chris Lattner <sabre@nondot.org> Treat clobber operands like early clobbers: if we have
any, we force sdisel to do all regalloc for an asm. This
leads to gross but correct codegen.

This fixes the rest of PR2078.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
75a19169fd7a788ccdb6a2db91c0a393fc7b243a 21-Feb-2008 Chris Lattner <sabre@nondot.org> Treat clobber operands like early clobbers: if we have
any, we force sdisel to do all regalloc for an asm. This
leads to gross but correct codegen.

This fixes the rest of PR2078.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1d5e8196c02ade7d2253165e99436ce415de9fda 21-Feb-2008 Bill Wendling <isanbard@gmail.com> Clear PhysRegPartUse for the sub register as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47453 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
f01bd9e712501f9e9b5803ab0c11e96851a82775 21-Feb-2008 Bill Wendling <isanbard@gmail.com> Clear PhysRegPartUse for the sub register as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47453 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
20b76ab3c75fa34cd997444d2d456c2e22d4bfdd 21-Feb-2008 Bill Wendling <isanbard@gmail.com> Adjust the MaxAlignment for the special register scavenging spill slot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47452 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
ffe75c2d07ed465345a5fba30f433a4f8d375dd9 21-Feb-2008 Bill Wendling <isanbard@gmail.com> Adjust the MaxAlignment for the special register scavenging spill slot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47452 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
304983b93e14a3f7b84c8e41f5dfc56750dba1b0 21-Feb-2008 Evan Cheng <evan.cheng@apple.com> Help testing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47448 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
ec41c7cb9747d47b1c037e353a7916fa117a4321 21-Feb-2008 Evan Cheng <evan.cheng@apple.com> Help testing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47448 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c1c7bd610a1647d8e7eaeb4cc38ca1a85ae5e271 21-Feb-2008 Andrew Lenharth <andrewl@lenharth.org> Better names as per Evan's request

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47435 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2205e3b404764988bdf78b76e965447159c29e8a 21-Feb-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> Better names as per Evan's request

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47435 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ab0b949e0e9de452f3b052b11634ab761e008b23 21-Feb-2008 Andrew Lenharth <andrewl@lenharth.org> Atomic op support. If any gcc test uses __sync builtins, it might start failing on archs that haven't implemented them yet

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47430 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
e44f390d1a02e4ab6beffd7e3a4178e0557cbc8a 21-Feb-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> Atomic op support. If any gcc test uses __sync builtins, it might start failing on archs that haven't implemented them yet

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47430 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
f9853bc0d439d89c97979265593287c2ce81acb2 21-Feb-2008 Chris Lattner <sabre@nondot.org> Add support for matching mem operands. This fixes PR1133, patch by
Eli Friedman. This implements CodeGen/Generic/2008-02-20-MatchingMem.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
58d032b16d90a5343811caf6ada67ac22343c91a 21-Feb-2008 Chris Lattner <sabre@nondot.org> Add support for matching mem operands. This fixes PR1133, patch by
Eli Friedman. This implements CodeGen/Generic/2008-02-20-MatchingMem.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7cbeb2431c7264d0848d1343f43914f970828ac7 21-Feb-2008 Chris Lattner <sabre@nondot.org> Fix a (harmless) but where vregs were added to the used reg lists for
inline asms.

Fix PR2078 by marking aliases of registers used when a register is
marked used. This prevents EAX from being allocated when AX is listed
in the clobber set for the asm.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47426 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
bd0818be2be161868702925c005843212596be59 21-Feb-2008 Chris Lattner <sabre@nondot.org> Fix a (harmless) but where vregs were added to the used reg lists for
inline asms.

Fix PR2078 by marking aliases of registers used when a register is
marked used. This prevents EAX from being allocated when AX is listed
in the clobber set for the asm.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47426 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
063284c001666c0a3906acbe0a26dc7cae5f081c 21-Feb-2008 Evan Cheng <evan.cheng@apple.com> Clean up some spilling code using MachineRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47416 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
44fccf2dfc1c0eefcd80cc0308877c11af757c4b 21-Feb-2008 Evan Cheng <evan.cheng@apple.com> Clean up some spilling code using MachineRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47416 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c927cc8731724a91733781c816b89d234c265d8c 20-Feb-2008 Bill Wendling <isanbard@gmail.com> Remove one of the fixmes that I put in there. From Evan:

No need to go up more levels. A def of a register also sets its sub-registers
(so if PhysRegInfo[SuperReg] is NULL, it means SuperReg's super registers are
not previously defined).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47399 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
384458df873130d71100701cd1db47c10fccfd71 20-Feb-2008 Bill Wendling <isanbard@gmail.com> Remove one of the fixmes that I put in there. From Evan:

No need to go up more levels. A def of a register also sets its sub-registers
(so if PhysRegInfo[SuperReg] is NULL, it means SuperReg's super registers are
not previously defined).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47399 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
55574c2ceab1b7c4dd1cc47d2fb328bc3728d29c 20-Feb-2008 Bill Wendling <isanbard@gmail.com> Improve some comments explaining the "handle kills" stuff better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47395 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
bd88ee06427b87e0455997b74ba6b0dac7778e29 20-Feb-2008 Bill Wendling <isanbard@gmail.com> Improve some comments explaining the "handle kills" stuff better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47395 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
fe8276cec27332f590186a78b7d0091ba4a9dbac 20-Feb-2008 Bill Wendling <isanbard@gmail.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47389 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
65150ff018ea28431bc3628f3323d7dc405a547d 20-Feb-2008 Bill Wendling <isanbard@gmail.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47389 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
c40a84a87727608bbc5c68b3bf5c6d96fb22aa00 20-Feb-2008 Devang Patel <dpatel@apple.com> assert is more effective reminder then FIXME tag for unimplemented features.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47388 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a3ad242196b41529db8e203611f69c34aae083b6 20-Feb-2008 Devang Patel <dpatel@apple.com> assert is more effective reminder then FIXME tag for unimplemented features.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47388 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f83b1f63ddf27aaba791393940f37709ebbda33b 20-Feb-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for scalarizing a vector store
and splitting extract_subvector. This fixes nine
"make check" testcases, for example
2008-02-04-ExtractSubvector.ll and (partially)
CodeGen/Generic/vector.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
electionDAG/SelectionDAG.cpp
bd13a81015ff9a56076fe48db0a3d77f9bdd765f 20-Feb-2008 Duncan Sands <baldrick@free.fr> LegalizeTypes support for scalarizing a vector store
and splitting extract_subvector. This fixes nine
"make check" testcases, for example
2008-02-04-ExtractSubvector.ll and (partially)
CodeGen/Generic/vector.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
electionDAG/SelectionDAG.cpp
91dc17ba4991e971c7e89e07642b10817aa28055 20-Feb-2008 Dan Gohman <gohman@apple.com> Convert Legalize to use the APInt form of ComputeMaskedBits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
ece0a8855c33d52debe1f0d2e63768e7491920fc 20-Feb-2008 Dan Gohman <djg@cray.com> Convert Legalize to use the APInt form of ComputeMaskedBits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
b5660dc8223bd5eb3d21d9855692617fcdec5663 20-Feb-2008 Dan Gohman <gohman@apple.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47382 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a789bffed03de68a28fc8699e30b9da0d607541c 20-Feb-2008 Dan Gohman <djg@cray.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47382 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
948d8eadec92cc5f31f196de41dd6dfe8579a0c6 20-Feb-2008 Dan Gohman <gohman@apple.com> Convert DAGCombiner to use the APInt form of ComputeMaskedBits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47381 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bea075fa33f12f318cedaac3439a011263c9b7e6 20-Feb-2008 Dan Gohman <djg@cray.com> Convert DAGCombiner to use the APInt form of ComputeMaskedBits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47381 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ca93a43e8409c6dc5ccf2c9762fb513f9d318372 20-Feb-2008 Dan Gohman <gohman@apple.com> Use APInt::intersects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9150729ef08471591bce55e77adeefc4362dbe24 20-Feb-2008 Dan Gohman <djg@cray.com> Use APInt::intersects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4aefd6b7d4dadf8109221a89742725c116d8f8e0 20-Feb-2008 Anton Korobeynikov <asl@math.spbu.ru> Fix newly-introduced 4.3 warnings


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47375 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
egAllocLocal.cpp
6a4a93397215f7c1b10885726431fde515edde77 20-Feb-2008 Anton Korobeynikov <asl@math.spbu.ru> Fix newly-introduced 4.3 warnings


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47375 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
egAllocLocal.cpp
4c71dfe356716e6bc1993ef5efdced08b68fe612 20-Feb-2008 Anton Korobeynikov <asl@math.spbu.ru> Update gcc 4.3 warnings fix patch with recent head changes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47368 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
fConversion.cpp
iveInterval.cpp
egAllocBigBlock.cpp
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
irtRegMap.cpp
53422f6643586cded61578fdd22bc3a94b5f9c91 20-Feb-2008 Anton Korobeynikov <asl@math.spbu.ru> Update gcc 4.3 warnings fix patch with recent head changes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47368 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
fConversion.cpp
iveInterval.cpp
egAllocBigBlock.cpp
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
irtRegMap.cpp
ae9f3a3b7c915f725aef5a7250e88eaeddda03c6 20-Feb-2008 Anton Korobeynikov <asl@math.spbu.ru> Unbreak build with gcc 4.3: provide missed includes and silence most annoying warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47367 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
357a27dc855c3247c2a73120fbcb98e708564400 20-Feb-2008 Anton Korobeynikov <asl@math.spbu.ru> Unbreak build with gcc 4.3: provide missed includes and silence most annoying warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47367 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
6d794746b7ae1ed531f08c04dd29d79c13b35075 20-Feb-2008 Bill Wendling <isanbard@gmail.com> Added some comments and reformatted others. No functionality change.

Added two "FIXMEs" for code that looks dubious to me (but I could be
wrong).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47366 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
85b03769dd6b0e85b3624a49dd78894b621e7b43 20-Feb-2008 Bill Wendling <isanbard@gmail.com> Added some comments and reformatted others. No functionality change.

Added two "FIXMEs" for code that looks dubious to me (but I could be
wrong).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47366 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
420cdebbcb95f3881ab3518fd3bb670837669e43 20-Feb-2008 Bill Wendling <isanbard@gmail.com> More constification of things. More comments added. No functionality
changes. (Sorry for any formatting changes that creeped in.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47362 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
0fa65bd06d6ee25913d80f31d3c2a32b2dc4becf 20-Feb-2008 Bill Wendling <isanbard@gmail.com> More constification of things. More comments added. No functionality
changes. (Sorry for any formatting changes that creeped in.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47362 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
19fc1d3742ccba2d8dde5d69c5593e1a0b83fefa 20-Feb-2008 Chris Lattner <sabre@nondot.org> Fix an incredibly subtle bug exposed by Ted's change to APInt profiling.
AddNodeIDNode does profiling for a ConstantSDNode, but so does
SelectionDAG::getConstant. This profiling should be moved to a common
static function in ConstantSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f5e3e189858abfe3c24ef72b62bb6d94940a3e30 20-Feb-2008 Chris Lattner <sabre@nondot.org> Fix an incredibly subtle bug exposed by Ted's change to APInt profiling.
AddNodeIDNode does profiling for a ConstantSDNode, but so does
SelectionDAG::getConstant. This profiling should be moved to a common
static function in ConstantSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
90a3868fe5702caaa56082cde2edb6521de73e01 20-Feb-2008 Bill Wendling <isanbard@gmail.com> No functionality change:

- Constified some MachineOperand values.
- Added/Modified some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47358 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
b88bca9bb65c364b5c42b69272c0a32a51ef6562 20-Feb-2008 Bill Wendling <isanbard@gmail.com> No functionality change:

- Constified some MachineOperand values.
- Added/Modified some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47358 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
40a04216daaaee119665e023019c005306ec48ac 19-Feb-2008 Devang Patel <dpatel@apple.com> Add GetResultInst. First step for multiple return value support.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d081ef080a26343b4314b9a1e08d4b3136cd5dd8 19-Feb-2008 Devang Patel <dpatel@apple.com> Add GetResultInst. First step for multiple return value support.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
31886dbe370118dbb291b01d58699243a82bc4e1 19-Feb-2008 Evan Cheng <evan.cheng@apple.com> PR1909: Tail merging pass ran wild. It makes no sense to merge blocks in order to save a single instruction since a branch will be inserted for each BB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47301 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
55d13357af43c3f9575c37823852a3017615c354 19-Feb-2008 Evan Cheng <evan.cheng@apple.com> PR1909: Tail merging pass ran wild. It makes no sense to merge blocks in order to save a single instruction since a branch will be inserted for each BB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47301 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
efec751a1b786724862ceff52748df94873a807e 19-Feb-2008 Evan Cheng <evan.cheng@apple.com> - When DAG combiner is folding a bit convert into a BUILD_VECTOR, it should check if it's essentially a SCALAR_TO_VECTOR. Avoid turning (v8i16) <10, u, u, u> to <10, 0, u, u, u, u, u, u>. Instead, simply convert it to a SCALAR_TO_VECTOR of the proper type.
- X86 now normalize SCALAR_TO_VECTOR to (BIT_CONVERT (v4i32 SCALAR_TO_VECTOR)). Get rid of X86ISD::S2VEC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47290 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
d1045a634ff2156c6666ad36c747a265c1d902ee 19-Feb-2008 Evan Cheng <evan.cheng@apple.com> - When DAG combiner is folding a bit convert into a BUILD_VECTOR, it should check if it's essentially a SCALAR_TO_VECTOR. Avoid turning (v8i16) <10, u, u, u> to <10, 0, u, u, u, u, u, u>. Instead, simply convert it to a SCALAR_TO_VECTOR of the proper type.
- X86 now normalize SCALAR_TO_VECTOR to (BIT_CONVERT (v4i32 SCALAR_TO_VECTOR)). Get rid of X86ISD::S2VEC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47290 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
a9407f593778c3eff02dbb1fa11129865a59c6d3 18-Feb-2008 Evan Cheng <evan.cheng@apple.com> - Remove the previous check which broke coalescer-commute3.ll
- For now, conservatively ignore copy MI whose source is a physical register. Commuting its def MI can cause a physical register live interval to be live through a loop (since we know it's live coming into the def MI).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47281 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d3ba6c0a66783650c17483eb56b32ab6a9c9d8a1 18-Feb-2008 Evan Cheng <evan.cheng@apple.com> - Remove the previous check which broke coalescer-commute3.ll
- For now, conservatively ignore copy MI whose source is a physical register. Commuting its def MI can cause a physical register live interval to be live through a loop (since we know it's live coming into the def MI).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47281 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
8dd25288f9c79596e531b32c1b0bdfadcee7ffb9 18-Feb-2008 Roman Levenstein <romix.llvm@googlemail.com> New helper function getMBBFromIndex() that given an index in any instruction of an MBB returns a pointer the MBB. Reviewed by Evan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47267 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7b197ee2b5ab508b1d3e800ba04f0aabd1757608 18-Feb-2008 Roman Levenstein <romix.llvm@googlemail.com> New helper function getMBBFromIndex() that given an index in any instruction of an MBB returns a pointer the MBB. Reviewed by Evan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47267 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
96cfff0906915a060e543db8e0e4a74c674ef7c0 18-Feb-2008 Evan Cheng <evan.cheng@apple.com> For now, avoid commuting def MI for copy MI's whose source is not killed. That simply trade a live interval for another and because only the non-two-address operands can be folded into loads, may end up pessimising code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47262 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
37743896699e67b66e1a457678aa024e680e9125 18-Feb-2008 Evan Cheng <evan.cheng@apple.com> For now, avoid commuting def MI for copy MI's whose source is not killed. That simply trade a live interval for another and because only the non-two-address operands can be folded into loads, may end up pessimising code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47262 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d497d9fab6e90499c703f3e672ec001dbfa074f9 16-Feb-2008 Andrew Lenharth <andrewl@lenharth.org> I cannot find a libgcc function for this builtin. Therefor expanding it to a noop (which is how it use to be treated). If someone who knows the x86 backend better than me could tell me how to get a lock prefix on an instruction, that would be nice to complete x86 support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47213 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0531ec5fcd743940a1e3074e94d764cfdbc8c135 16-Feb-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> I cannot find a libgcc function for this builtin. Therefor expanding it to a noop (which is how it use to be treated). If someone who knows the x86 backend better than me could tell me how to get a lock prefix on an instruction, that would be nice to complete x86 support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47213 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
051bb7b07504be9f848f7cce802e62ed24980bc5 16-Feb-2008 Duncan Sands <baldrick@free.fr> Teach LegalizeTypes how to expand the operands of
br_cc. This fixes 5 "make check" failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47212 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
4932e5861eea26356643819e6f27e66895c3ca1e 16-Feb-2008 Duncan Sands <baldrick@free.fr> Teach LegalizeTypes how to expand the operands of
br_cc. This fixes 5 "make check" failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47212 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
559f4224d634579aa2ca7ec6a59e67db14038c9d 16-Feb-2008 Evan Cheng <evan.cheng@apple.com> Refactor some code; check if commuteInstruction is able to commute the instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47208 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
b820508449c9b43cef82f837efc9be4f4df8c67c 16-Feb-2008 Evan Cheng <evan.cheng@apple.com> Refactor some code; check if commuteInstruction is able to commute the instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47208 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
22c5c1b2dfcb1da6a7ebfebea903401fc77d56e6 16-Feb-2008 Andrew Lenharth <andrewl@lenharth.org> llvm.memory.barrier, and impl for x86 and alpha

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
785610d18b401d3138edf13037d21d7ec89e748a 16-Feb-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> llvm.memory.barrier, and impl for x86 and alpha

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
527c250a9080a5b6cf0053a6215037c3769ff4a0 16-Feb-2008 Bill Wendling <isanbard@gmail.com> Fix typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47200 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
d1d3a208bd85e6518e9024e68c6024d2254a0d94 16-Feb-2008 Bill Wendling <isanbard@gmail.com> Fix typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47200 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
42a77880a83b76112a1f42ce16b46dbde01cd0a8 16-Feb-2008 Dan Gohman <gohman@apple.com> Rename CountMemOperands to ComputeMemOperandsEnd to reflect what
it actually does. Simplify CountOperands a little by reusing
ComputeMemOperandsEnd. And reword some comments for both.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47198 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
ce2564683245b224c3c763cce2a17de8a5299f70 16-Feb-2008 Dan Gohman <djg@cray.com> Rename CountMemOperands to ComputeMemOperandsEnd to reflect what
it actually does. Simplify CountOperands a little by reusing
ComputeMemOperandsEnd. And reword some comments for both.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47198 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
94ebde1d45dcd7e209663c49a1cf1a4589191df1 16-Feb-2008 Dan Gohman <gohman@apple.com> Revert 47177, which was incorrect.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47196 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
71fd07b3d2774cfd751514f453b3fa4836e6cd83 16-Feb-2008 Dan Gohman <djg@cray.com> Revert 47177, which was incorrect.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47196 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
0123b7dcfa9be97588926407163deb8d603487ce 16-Feb-2008 Scott Michel <scottm@aero.org> Make tblgen a little smarter about constants smaller than i32. Currently,
tblgen will complain if a sign-extended constant does not fit into a
data type smaller than i32, e.g., i16. This causes a problem when certain
hex constants are used, such as 0xff for byte masks or immediate xor
values.

tblgen will try the sign-extended value first and, if the sign extended
value would overflow, it tries to see if the unsigned value will fit.
Consequently, a software developer can now safely incant:

(XORHIr16 R16C:$rA, 0xffff)

which is somewhat clearer and more informative than incanting:

(XORHIr16 R16C:$rA, (i16 -1))

even if the two are bitwise equivalent.

Tblgen also outputs the 64-bit unsigned constant in the generated ISel code
when getTargetConstant() is invoked.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47188 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ac7091cb9cc8672cb11befc1a333f79752be0fc6 16-Feb-2008 Scott Michel <scottm@aero.org> Make tblgen a little smarter about constants smaller than i32. Currently,
tblgen will complain if a sign-extended constant does not fit into a
data type smaller than i32, e.g., i16. This causes a problem when certain
hex constants are used, such as 0xff for byte masks or immediate xor
values.

tblgen will try the sign-extended value first and, if the sign extended
value would overflow, it tries to see if the unsigned value will fit.
Consequently, a software developer can now safely incant:

(XORHIr16 R16C:$rA, 0xffff)

which is somewhat clearer and more informative than incanting:

(XORHIr16 R16C:$rA, (i16 -1))

even if the two are bitwise equivalent.

Tblgen also outputs the 64-bit unsigned constant in the generated ISel code
when getTargetConstant() is invoked.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47188 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bd3e5aac746d9d3ecbf6aea97ee573b2f0d4ab87 15-Feb-2008 Evan Cheng <evan.cheng@apple.com> The copy instruction being coalesced will be removed, it is not a kill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47179 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
25f1d0afe62a68f2b0c6b30349d506b8f4c4954a 15-Feb-2008 Evan Cheng <evan.cheng@apple.com> The copy instruction being coalesced will be removed, it is not a kill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47179 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
53c607f562a74d9374bd390a4be151a952ba5d29 15-Feb-2008 Dan Gohman <gohman@apple.com> Skip over the defs and start at the uses when looking for operands
with the TIED_TO attribute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47177 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3583a99f40a551d72661c278fb5a05951cf54709 15-Feb-2008 Dan Gohman <djg@cray.com> Skip over the defs and start at the uses when looking for operands
with the TIED_TO attribute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47177 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3b66555c53eb8921b2dd50335e0b278ddf80d220 15-Feb-2008 Dan Gohman <gohman@apple.com> Use the TargetInstrDescr to determine the number of operands
that should be checked for the TIED_TO attribute instead of
using CountOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47176 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
2847ed57495d317b97ecc3128a1ce15beefe9ae1 15-Feb-2008 Dan Gohman <djg@cray.com> Use the TargetInstrDescr to determine the number of operands
that should be checked for the TIED_TO attribute instead of
using CountOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47176 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
ca3a56f2fbde4132e405ead4edadc3570b209386 15-Feb-2008 Duncan Sands <baldrick@free.fr> Teach LegalizeTypes how to promote the flags
in a ret node. These are created as i32 constants
but on some platforms i32 is not legal. This
fixes 26 "make check" failures, for example
Alpha/2005-07-12-TwoMallocCalls.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47172 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesPromote.cpp
820d4266218d0899b2c3adfaf87aa560bab8d5cc 15-Feb-2008 Duncan Sands <baldrick@free.fr> Teach LegalizeTypes how to promote the flags
in a ret node. These are created as i32 constants
but on some platforms i32 is not legal. This
fixes 26 "make check" failures, for example
Alpha/2005-07-12-TwoMallocCalls.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47172 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesPromote.cpp
c8d044e4f779fdcfc5e7d592927740fd8f672a70 15-Feb-2008 Evan Cheng <evan.cheng@apple.com> - Removing the infamous r2rMap_ and rep() method. Now the coalescer will update
register defs and uses after each successful coalescing.
- Also removed a number of hacks and fixed some subtle kill information bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47167 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
7d2b9088fc7720b6928b09a032206c293fc6d6bb 15-Feb-2008 Evan Cheng <evan.cheng@apple.com> - Removing the infamous r2rMap_ and rep() method. Now the coalescer will update
register defs and uses after each successful coalescing.
- Also removed a number of hacks and fixed some subtle kill information bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47167 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
f20db159541bf27f5d2fdf8d4ba1c8b270b936df 15-Feb-2008 Evan Cheng <evan.cheng@apple.com> Added CommuteChangesDestination(). This returns true if commuting the specified
machine instr will change its definition register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47166 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
5d27025e335080dfeb168e2aa2ae95f680b19779 15-Feb-2008 Evan Cheng <evan.cheng@apple.com> Added CommuteChangesDestination(). This returns true if commuting the specified
machine instr will change its definition register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47166 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
63e3cd4e0f3731d6801ac24199652e4d7b4b3729 15-Feb-2008 Evan Cheng <evan.cheng@apple.com> Remove unnecessary #include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47164 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
77aa587e6adfbcf82cb984574238a5705898d788 15-Feb-2008 Evan Cheng <evan.cheng@apple.com> Remove unnecessary #include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47164 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
21be3849aef47e6d8c26f31b11def57d59167863 15-Feb-2008 Dan Gohman <gohman@apple.com> Use StoreSDNode::getValue instead of calling getOperand directly
with a hard-coded operand number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47163 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e9f633d8dc2da30c536db9df61b0adf4414d3c0d 15-Feb-2008 Dan Gohman <djg@cray.com> Use StoreSDNode::getValue instead of calling getOperand directly
with a hard-coded operand number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47163 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
423be627e6a108b72770426e16cb988b6167c3cb 14-Feb-2008 Chris Lattner <sabre@nondot.org> Fix a miscompilation from Dan's recent apintification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47128 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
69946fdd7428f0a1ccc7defc7c06533817bbf80e 14-Feb-2008 Chris Lattner <sabre@nondot.org> Fix a miscompilation from Dan's recent apintification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47128 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
00fee65fd21f9615d1a604b8b7d42cd16a3f6b47 14-Feb-2008 Duncan Sands <baldrick@free.fr> In TargetLowering::LowerCallTo, don't assert that
the return value is zero-extended if it isn't
sign-extended. It may also be any-extended.
Also, if a floating point value was returned
in a larger floating point type, pass 1 as the
second operand to FP_ROUND, which tells it
that all the precision is in the original type.
I think this is right but I could be wrong.
Finally, when doing libcalls, set isZExt on
a parameter if it is "unsigned". Currently
isSExt is set when signed, and nothing is
set otherwise. This should be right for all
calls to standard library routines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
ead972ea45c0c4dad4e2e5c8da1ad24abda2ef47 14-Feb-2008 Duncan Sands <baldrick@free.fr> In TargetLowering::LowerCallTo, don't assert that
the return value is zero-extended if it isn't
sign-extended. It may also be any-extended.
Also, if a floating point value was returned
in a larger floating point type, pass 1 as the
second operand to FP_ROUND, which tells it
that all the precision is in the original type.
I think this is right but I could be wrong.
Finally, when doing libcalls, set isZExt on
a parameter if it is "unsigned". Currently
isSExt is set when signed, and nothing is
set otherwise. This should be right for all
calls to standard library routines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
e179584f9b740cf3a36bde70f8cab40de59b8081 14-Feb-2008 Nate Begeman <natebegeman@mac.com> Change how FP immediates are handled.
1) ConstantFP is now expand by default
2) ConstantFP is not turned into TargetConstantFP during Legalize
if it is legal.

This allows ConstantFP to be handled like Constant, allowing for
targets that can encode FP immediates as MachineOperands.

As a bonus, fix up Itanium FP constants, which now correctly match,
and match more constants! Hooray.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47121 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/TargetLowering.cpp
e2ba64fc3785eb8bcc9a7fc2091c56ef056cbc07 14-Feb-2008 Nate Begeman <natebegeman@mac.com> Change how FP immediates are handled.
1) ConstantFP is now expand by default
2) ConstantFP is not turned into TargetConstantFP during Legalize
if it is legal.

This allows ConstantFP to be handled like Constant, allowing for
targets that can encode FP immediates as MachineOperands.

As a bonus, fix up Itanium FP constants, which now correctly match,
and match more constants! Hooray.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47121 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/TargetLowering.cpp
e8b7ccf0c9a06831266d690d0b10ead71e0a4ac5 14-Feb-2008 Nate Begeman <natebegeman@mac.com> Support a new type of MachineOperand, MO_FPImmediate, used for holding
FP Immediates, crazily enough


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47117 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
6a38ec3796ec8f79cfec55defdc5913ce15ff70a 14-Feb-2008 Nate Begeman <natebegeman@mac.com> Support a new type of MachineOperand, MO_FPImmediate, used for holding
FP Immediates, crazily enough


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47117 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
d9fe41c0c8f6eab686c6064e2ce0c8e211b0c995 14-Feb-2008 Dan Gohman <gohman@apple.com> Allow the APInt form of ComputeMaskedBits to operate on i128 types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47101 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
56eaab3fda3198025c570ca7905ec1efbf177f49 14-Feb-2008 Dan Gohman <djg@cray.com> Allow the APInt form of ComputeMaskedBits to operate on i128 types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47101 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
72d2fd57b67b8afc6ddf6314c483a9d2ec71569a 13-Feb-2008 Dan Gohman <gohman@apple.com> Avoid setting bits that aren't demanded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47098 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4d81a743dea86765b5261dd3aa252c7339e3af4c 13-Feb-2008 Dan Gohman <djg@cray.com> Avoid setting bits that aren't demanded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47098 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
977a76fbb6ea1b87dfd7fbbe2ae2afb63e982ff3 13-Feb-2008 Dan Gohman <gohman@apple.com> Simplify some logic in ComputeMaskedBits. And change ComputeMaskedBits
to pass the mask APInt by value, not by reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47096 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
d0dfc77ceb77510b470773f2b3725de475fc6bae 13-Feb-2008 Dan Gohman <djg@cray.com> Simplify some logic in ComputeMaskedBits. And change ComputeMaskedBits
to pass the mask APInt by value, not by reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47096 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
afe6c2b001a924cd74bd0aacfed5984d9af004b0 13-Feb-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Enable exception handling int JIT



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47079 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
achOWriter.cpp
0e757e1536589f0cb4bda572c5903b65cdf18d23 13-Feb-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Enable exception handling int JIT



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47079 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
LVMTargetMachine.cpp
achOWriter.cpp
d462ba853981d45bf9c777564e79dc9e1c850ca6 13-Feb-2008 Duncan Sands <baldrick@free.fr> Teach LegalizeTypes how to expand and promote CTLZ,
CTTZ and CTPOP. The expansion code differs from
that in LegalizeDAG in that it chooses to take the
CTLZ/CTTZ count from the Hi/Lo part depending on
whether the Hi/Lo value is zero, not on whether
CTLZ/CTTZ of Hi/Lo returned 32 (or whatever the
width of the type is) for it. I made this change
because the optimizers may well know that Hi/Lo
is zero and exploit it. The promotion code for
CTTZ also differs from that in LegalizeDAG: it
uses an "or" to get the right result when the
original value is zero, rather than using a compare
and select. This also means the value doesn't
need to be zero extended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47075 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
146d5af37804de3c482dde4e88e453622cb4039e 13-Feb-2008 Duncan Sands <baldrick@free.fr> Teach LegalizeTypes how to expand and promote CTLZ,
CTTZ and CTPOP. The expansion code differs from
that in LegalizeDAG in that it chooses to take the
CTLZ/CTTZ count from the Hi/Lo part depending on
whether the Hi/Lo value is zero, not on whether
CTLZ/CTTZ of Hi/Lo returned 32 (or whatever the
width of the type is) for it. I made this change
because the optimizers may well know that Hi/Lo
is zero and exploit it. The promotion code for
CTTZ also differs from that in LegalizeDAG: it
uses an "or" to get the right result when the
original value is zero, rather than using a compare
and select. This also means the value doesn't
need to be zero extended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47075 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
cdbcfccece8ed9857bebbeef79f162e1a7a6906a 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> Some code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47060 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
b0e633ae05cf73a02ba1535b2442af0fc6669c72 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> Some code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47060 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9cec00e7f1dec7c3142d81c1256d198afa3718d3 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> Simplify.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47058 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
49fad7227f690cdb5ef564fd8249b33c7d19cd67 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> Simplify.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47058 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
e984e504b5f3090ab270cbdab02638ac3a2afb21 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix a potential serious problem where kills belonging to the val# defined by a two-address instruction is also on the val# that defines the input.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47057 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c6a71af963f12c172c54e9847cda9b2ca83f9116 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix a potential serious problem where kills belonging to the val# defined by a two-address instruction is also on the val# that defines the input.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47057 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e35a6d1dfb395925afe37bf0dc00fa2e006be190 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> * Cannot safely commute an instruction there are other defs which can reach its uses.
* Ignore copy instructions which have already been coalesced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47056 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
f06d6abeb34c28bd57bbc4ae09aa9b4adf921f71 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> * Cannot safely commute an instruction there are other defs which can reach its uses.
* Ignore copy instructions which have already been coalesced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47056 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
86ca3cacc5a56e862c8258ac9c9ee1e37598ebd8 13-Feb-2008 Chris Lattner <sabre@nondot.org> In SDISel, for targets that support FORMAL_ARGUMENTS nodes, lower this
node as soon as we create it in SDISel. Previously we would lower it in
legalize. The problem with this is that it only exposes the argument
loads implied by FORMAL_ARGUMENTs after legalize, so that only dag combine 2
can hack on them. This causes us to miss some optimizations because
datatype expansion also happens here.

Exposing the loads early allows us to do optimizations on them. For example
we now compile arg-cast.ll to:

_foo:
movl $2147483647, %eax
andl 8(%esp), %eax
ret

where we previously produced:

_foo:
subl $12, %esp
movsd 16(%esp), %xmm0
movsd %xmm0, (%esp)
movl $2147483647, %eax
andl 4(%esp), %eax
addl $12, %esp
ret

It might also make sense to do this for ISD::CALL nodes, which have implicit
stores on many targets.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47054 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5cb5add9157b17a0be2be4bf0bb5165492ff3e43 13-Feb-2008 Chris Lattner <sabre@nondot.org> In SDISel, for targets that support FORMAL_ARGUMENTS nodes, lower this
node as soon as we create it in SDISel. Previously we would lower it in
legalize. The problem with this is that it only exposes the argument
loads implied by FORMAL_ARGUMENTs after legalize, so that only dag combine 2
can hack on them. This causes us to miss some optimizations because
datatype expansion also happens here.

Exposing the loads early allows us to do optimizations on them. For example
we now compile arg-cast.ll to:

_foo:
movl $2147483647, %eax
andl 8(%esp), %eax
ret

where we previously produced:

_foo:
subl $12, %esp
movsd 16(%esp), %xmm0
movsd %xmm0, (%esp)
movl $2147483647, %eax
andl 4(%esp), %eax
addl $12, %esp
ret

It might also make sense to do this for ISD::CALL nodes, which have implicit
stores on many targets.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47054 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fec42eb6daff7e8b644bd24cbf12f83d6b14bd8b 13-Feb-2008 Chris Lattner <sabre@nondot.org> teach dag combiner how to eliminate MERGE_VALUES nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47052 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f32fa7f878660878815fb3fb2f36c92ce262d886 13-Feb-2008 Chris Lattner <sabre@nondot.org> teach dag combiner how to eliminate MERGE_VALUES nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47052 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0325d90348f33e8aa719cd70e4663e7b108297fd 13-Feb-2008 Nate Begeman <natebegeman@mac.com> Support legalizing insert_vector_elt on targets where the element
type is not legal.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47048 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6fb7ebd546a28b2f8b941cf79d769304e5875b6a 13-Feb-2008 Nate Begeman <natebegeman@mac.com> Support legalizing insert_vector_elt on targets where the element
type is not legal.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47048 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
70071434ae6080c09ffdc8e069da92619381b930 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> Initial support for copy elimination by commuting its definition MI.
PR1877.
A3 = op A2 B0<kill>
...
B1 = A3 <- this copy
...
= op A3 <- more uses

==>

B2 = op B0 A2<kill>
...
B1 = B2 <- now an identify copy
...
= op B2 <- more uses

This speeds up FreeBench/neural by 29%, Olden/bh by 12%, oopack_v1p8 by 53%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47046 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
14fad81f260b9e49c65aa61b7bbdd36942810b94 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> Initial support for copy elimination by commuting its definition MI.
PR1877.
A3 = op A2 B0<kill>
...
B1 = A3 <- this copy
...
= op A3 <- more uses

==>

B2 = op B0 A2<kill>
...
B1 = B2 <- now an identify copy
...
= op B2 <- more uses

This speeds up FreeBench/neural by 29%, Olden/bh by 12%, oopack_v1p8 by 53%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47046 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
d2b8d7bc51b0e41d09b32aeaa550358ccb379009 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> - Added removeValNo() to remove all live ranges of a particular value#.
- removeRange() can now update value# information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47044 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
49208cfe1821ff1821e2a30a1f3ecfe74d9d10e8 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> - Added removeValNo() to remove all live ranges of a particular value#.
- removeRange() can now update value# information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47044 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
a4d16a1f0dcdd1ab2862737105f900e2c577532d 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> commuteInstr() can now commute non-ssa machine instrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47043 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
b554e533a5a1574c93aaf3cd28b808feff9f4008 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> commuteInstr() can now commute non-ssa machine instrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47043 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
1eb5cf9c7d0b0b04402eddc007b0de414488baf4 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> Added debugging routine dumpUses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47042 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
92702b9b3a739cc844fc42b305f72b06e69eb27d 13-Feb-2008 Evan Cheng <evan.cheng@apple.com> Added debugging routine dumpUses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47042 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
fd29e0eb060ea8b4d490860329234d2ae5f5952e 13-Feb-2008 Dan Gohman <gohman@apple.com> Convert SelectionDAG::ComputeMaskedBits to use APInt instead of uint64_t.
Add an overload that supports the uint64_t interface for use by clients
that haven't been updated yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47039 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
229fa05f26826290b9d128e7f6ffbc4889478c25 13-Feb-2008 Dan Gohman <djg@cray.com> Convert SelectionDAG::ComputeMaskedBits to use APInt instead of uint64_t.
Add an overload that supports the uint64_t interface for use by clients
that haven't been updated yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47039 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
014e04a5daeb312b1f0ebc1dd906ffc97c4abc5f 12-Feb-2008 Duncan Sands <baldrick@free.fr> Generalize getCopyFromParts and getCopyToParts to
handle arbitrary precision integers and any number
of parts. For example, on a 32 bit machine an i50
corresponds to two i32 parts. getCopyToParts will
extend the i50 to an i64 then write half of the i64
to each part; getCopyFromParts will combine the two
i32 parts into an i64 then truncate the result to
i50.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47024 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
94f9e9a55b6161aa782059b6c49c07264875eb74 12-Feb-2008 Duncan Sands <baldrick@free.fr> Generalize getCopyFromParts and getCopyToParts to
handle arbitrary precision integers and any number
of parts. For example, on a 32 bit machine an i50
corresponds to two i32 parts. getCopyToParts will
extend the i50 to an i64 then write half of the i64
to each part; getCopyFromParts will combine the two
i32 parts into an i64 then truncate the result to
i50.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47024 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b988baccc229ef3e175905c999245d5544a0d384 11-Feb-2008 Duncan Sands <baldrick@free.fr> Generalize the handling of call and return arguments,
in preparation for apint support. These changes are
intended to have no functional effect.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e111ce83930bdd22c1281db2175a36419879e370 11-Feb-2008 Duncan Sands <baldrick@free.fr> Generalize the handling of call and return arguments,
in preparation for apint support. These changes are
intended to have no functional effect.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cc20cd59e6c8c9bc6a633f5eea6d66c27c474053 11-Feb-2008 Dan Gohman <gohman@apple.com> From Chris' review: use isa instead of explicitly using classof.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
206208c3f3b99f6c99ffedfe71bf7358139e57b1 11-Feb-2008 Dan Gohman <djg@cray.com> From Chris' review: use isa instead of explicitly using classof.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46964 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
027ee7e3ca21e3cf16051caac91e9befa327f193 11-Feb-2008 Dan Gohman <gohman@apple.com> From Chris' review: minor corrections in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
0256f1e63154c50e8cd6e35d4475d2c327f78ac5 11-Feb-2008 Dan Gohman <djg@cray.com> From Chris' review: minor corrections in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
bbbbb9c3dd4160990f856854d16a3beaead1f354 11-Feb-2008 Dan Gohman <gohman@apple.com> From Chris' review: use cast instead of dyn_cast with an assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46962 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
20e37966ab0c573f45750cc512c573fa2a998fe9 11-Feb-2008 Dan Gohman <djg@cray.com> From Chris' review: use cast instead of dyn_cast with an assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46962 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
debeeba6ec7928f3b577f8fca0a5837f6f053852 11-Feb-2008 Dan Gohman <gohman@apple.com> From Chris' review: fix 80 column violations


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46961 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
ce07338877acbcdd9e10d78f0efcdf03e6bb76a0 11-Feb-2008 Dan Gohman <djg@cray.com> From Chris' review: fix 80 column violations


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46961 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
1f801fa5ada9cb40fb97ae755c282e91af54a1bc 11-Feb-2008 Ted Kremenek <kremenek@apple.com> Added "Profile" method to APFloat for use with FoldingSet.

Added member template "Add" to FoldingSetNodeID that allows "adding" arbitrary
objects to a profile via dispatch to FoldingSetTrait<T>::Profile().

Removed FoldingSetNodeID::AddAPFloat and FoldingSetNodeID::APInt, as their
functionality is now replaced using the above mentioned member template.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
dc71c8051d354cad8673e651209e431584310d5b 11-Feb-2008 Ted Kremenek <kremenek@apple.com> Added "Profile" method to APFloat for use with FoldingSet.

Added member template "Add" to FoldingSetNodeID that allows "adding" arbitrary
objects to a profile via dispatch to FoldingSetTrait<T>::Profile().

Removed FoldingSetNodeID::AddAPFloat and FoldingSetNodeID::APInt, as their
functionality is now replaced using the above mentioned member template.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0753fc1850a1ca4d17acca854d830d67737fd623 11-Feb-2008 Duncan Sands <baldrick@free.fr> Add a isBigEndian method to complement isLittleEndian.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46954 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
9ff8fbf70903ad5bc02996bb15834f24231290a2 11-Feb-2008 Duncan Sands <baldrick@free.fr> Add a isBigEndian method to complement isLittleEndian.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46954 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
431bfcbe3746d1a427b4c7791140f88882a8e8d8 11-Feb-2008 Evan Cheng <evan.cheng@apple.com> Determine whether a spill kills the register it's spilling before insertion rather than trying to undo the kill marker afterwards.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46953 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
b427252853b1b0ddd3eb0d1ca32ed6163b38827d 11-Feb-2008 Evan Cheng <evan.cheng@apple.com> Determine whether a spill kills the register it's spilling before insertion rather than trying to undo the kill marker afterwards.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46953 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
6f0d024a534af18d9e60b3ea757376cd8a3a980e 10-Feb-2008 Dan Gohman <gohman@apple.com> Rename MRegisterInfo to TargetRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46930 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
warfWriter.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
achineLICM.cpp
achineRegisterInfo.cpp
achineSink.cpp
HIElimination.cpp
hysRegTracker.h
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterCoalescer.cpp
egisterScavenging.cpp
electionDAG/CallingConvLower.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
woAddressInstructionPass.cpp
irtRegMap.cpp
irtRegMap.h
1e57df3b4fd69b2a316d8931dee1b9e033ae3a9a 10-Feb-2008 Dan Gohman <djg@cray.com> Rename MRegisterInfo to TargetRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46930 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
warfWriter.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
achineLICM.cpp
achineRegisterInfo.cpp
achineSink.cpp
HIElimination.cpp
hysRegTracker.h
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterCoalescer.cpp
egisterScavenging.cpp
electionDAG/CallingConvLower.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
woAddressInstructionPass.cpp
irtRegMap.cpp
irtRegMap.h
d885dbdf9eb7a51ebb9a15a85921f27d8219997c 10-Feb-2008 Duncan Sands <baldrick@free.fr> Add truncate and AssertZext result expansion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/SelectionDAG.cpp
539510b437768ff1e18b67e8eb968f26efe2e054 10-Feb-2008 Duncan Sands <baldrick@free.fr> Add truncate and AssertZext result expansion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/SelectionDAG.cpp
91b9ad182411153608d5bb4232209f3b5fd6bd6b 10-Feb-2008 Bill Wendling <isanbard@gmail.com> Return "(c1 + c2)" instead of yet another ADD node (which made this a
no-op).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e58f7b81562784e4194905e0f233092360d7782a 10-Feb-2008 Bill Wendling <isanbard@gmail.com> Return "(c1 + c2)" instead of yet another ADD node (which made this a
no-op).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
be036a94c315eee5cc5388322c3c9505e8d3991e 10-Feb-2008 Chris Lattner <sabre@nondot.org> add anote


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46918 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
2976f9e6d97630074aea8ad2beb434f443bfe5d1 10-Feb-2008 Chris Lattner <sabre@nondot.org> add anote


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46918 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
63a18c491aa96367c493babebcd97d3263e07768 09-Feb-2008 Evan Cheng <evan.cheng@apple.com> Remove unused hidden option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46903 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
2f39752377ef4e3b1d5dbce7af3b610bb1eddf17 09-Feb-2008 Evan Cheng <evan.cheng@apple.com> Remove unused hidden option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46903 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
6394b099e836f56a937cdcc7332c9487b504ca68 08-Feb-2008 Dan Gohman <gohman@apple.com> Change ConstantSDNode to store an APInt instead of a uint64_t, and
begin adding some methods to use it this way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46899 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
dc458cfef568772046cf0c1a508f0621c3a6a4fe 08-Feb-2008 Dan Gohman <djg@cray.com> Change ConstantSDNode to store an APInt instead of a uint64_t, and
begin adding some methods to use it this way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46899 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f2f8c2ae07b7d9bdbf1b89781c573c7af2bd5e1b 08-Feb-2008 Evan Cheng <evan.cheng@apple.com> Forgot these files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46896 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocBigBlock.cpp
irtRegMap.cpp
3a15a4eb97ebdd4bac23f40d2f625ce5800d547c 08-Feb-2008 Evan Cheng <evan.cheng@apple.com> Forgot these files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46896 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocBigBlock.cpp
irtRegMap.cpp
bbd8322daaefa70ba1a282956df5f977e783524b 08-Feb-2008 Evan Cheng <evan.cheng@apple.com> Also print alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46895 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
38dc79b36823c3b026618382614b5be87b4a356e 08-Feb-2008 Evan Cheng <evan.cheng@apple.com> Also print alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46895 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
547ca537b638c8fd5c8f4729e4c74898f8371e4e 08-Feb-2008 Dan Gohman <gohman@apple.com> Avoid needlessly casting away const qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46876 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8cdf7897416cf307bcae281ef8a0f80873d31356 08-Feb-2008 Dan Gohman <djg@cray.com> Avoid needlessly casting away const qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46876 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
27240c7d5095857baaf66cc9496a68a2100e565f 07-Feb-2008 Evan Cheng <evan.cheng@apple.com> Remove remnant of load folding in local register allocator. Patch by Holger Schurig.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46861 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
71f91ed5eadc8830b753450bae04cbc53afa4cd9 07-Feb-2008 Evan Cheng <evan.cheng@apple.com> Remove remnant of load folding in local register allocator. Patch by Holger Schurig.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46861 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
3069b8743769527ce7af6cfb6591a2f0fc2faee4 07-Feb-2008 Dan Gohman <gohman@apple.com> Follow Chris' suggestion; change the PseudoSourceValue accessors
to return pointers instead of references, since this is always what
is needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46857 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
fb020b625ece8bf264cbce7e40f73611c7b552e3 07-Feb-2008 Dan Gohman <djg@cray.com> Follow Chris' suggestion; change the PseudoSourceValue accessors
to return pointers instead of references, since this is always what
is needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46857 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
2bfe6ff605f07e8f50874b1326227efc8bb8ed3d 07-Feb-2008 Dan Gohman <gohman@apple.com> Don't abort if a MemOperand is missing a SourceValue; just print it
as <unknown>. And make some minor adjustments to the MemOperand
dump format.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46853 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f738b656206a75c6f553b8e16c3a8db0e07b4cac 07-Feb-2008 Dan Gohman <djg@cray.com> Don't abort if a MemOperand is missing a SourceValue; just print it
as <unknown>. And make some minor adjustments to the MemOperand
dump format.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46853 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
33d4f7792f92eb7652ec3410c88b02ddb5aa7861 07-Feb-2008 Nick Lewycky <nicholas@mxc.ca> Don't make up new directives. (".set_foobar")


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46848 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
f3df239e202468ec51407cd063c9e99e3486c206 07-Feb-2008 Nick Lewycky <nicholas@mxc.ca> Don't make up new directives. (".set_foobar")


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46848 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
69de1932b350d7cdfc0ed1f4198d6f78c7822a02 06-Feb-2008 Dan Gohman <gohman@apple.com> Re-apply the memory operand changes, with a fix for the static
initializer problem, a minor tweak to the way the
DAGISelEmitter finds load/store nodes, and a renaming of the
new PseudoSourceValue objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46827 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
seudoSourceValue.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
12a9c08252c8e0fcdf5dedcdbf182251012a6fab 06-Feb-2008 Dan Gohman <djg@cray.com> Re-apply the memory operand changes, with a fix for the static
initializer problem, a minor tweak to the way the
DAGISelEmitter finds load/store nodes, and a renaming of the
new PseudoSourceValue objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46827 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
seudoSourceValue.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
2fc628d662ccf5d5287559d044fd63517a7936ac 06-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix a number of local register allocator issues: PR1609.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46821 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
a1d9dfb078bc3a268d498e017f3236b4f643db2c 06-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix a number of local register allocator issues: PR1609.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46821 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
22ff3eeebeb4d17749ab9d5cd4d5807f3066bb94 06-Feb-2008 Evan Cheng <evan.cheng@apple.com> RegAllocaLocal still *requires* LiveVariables since it runs PHIElimination, followed by TwoAddress which requires LiveVariables. We cannot run LiveVariables on non-SSA code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46813 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
04d9d0bee6ae9e64fc0410bd0c76a4de2988dfc4 06-Feb-2008 Evan Cheng <evan.cheng@apple.com> RegAllocaLocal still *requires* LiveVariables since it runs PHIElimination, followed by TwoAddress which requires LiveVariables. We cannot run LiveVariables on non-SSA code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46813 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
a58891ff1e6b5cc61cbb3cfe46be7f2eeddbfe98 05-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix PR1975: dag isel emitter produces patterns that isel wrong flag result.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46776 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
07f307d74154af2be9ae7d1c5a90912aef42f0c6 05-Feb-2008 Evan Cheng <evan.cheng@apple.com> Fix PR1975: dag isel emitter produces patterns that isel wrong flag result.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46776 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bb4151bd1f292df8f505671e502d01f0b10afa0f 05-Feb-2008 Evan Cheng <evan.cheng@apple.com> If a vr is already marked alive in a bb, then it has PHI uses that are visited earlier, then it is not killed in the def block (i.e. not dead).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46763 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
86f26d2861aa414c18244b164aeefa2bb5ec5a58 05-Feb-2008 Evan Cheng <evan.cheng@apple.com> If a vr is already marked alive in a bb, then it has PHI uses that are visited earlier, then it is not killed in the def block (i.e. not dead).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46763 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
fc718542a3e73558af9c0272b0eea67a189e5397 05-Feb-2008 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46725 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ee6db0f4e93fc47b6b482c2235c06fbbbdd4bb74 05-Feb-2008 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46725 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4e3f5a4e9c13f216856515e6f000881f2c850736 05-Feb-2008 Evan Cheng <evan.cheng@apple.com> Dwarf requires variable entries to be in the source order. Right now, since we are recording variable information at isel time this means parameters would appear in the reverse order. The short term fix is to issue recordVariable() at asm printing time instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46724 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
c439a85b1af63b2854c47e9322e553fe6180f4bc 05-Feb-2008 Evan Cheng <evan.cheng@apple.com> Dwarf requires variable entries to be in the source order. Right now, since we are recording variable information at isel time this means parameters would appear in the reverse order. The short term fix is to issue recordVariable() at asm printing time instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46724 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
6cb7e6d36bf7d5b3687ae19217fef6dd24448285 04-Feb-2008 Duncan Sands <baldrick@free.fr> I don't see how NodeUpdated can be called with a
ReadyToProcess node - add an assertion to check
this. Add an assertion to NodeDeleted that checks
that processed/ready nodes are indeed not deleted.
It is because they are never deleted that none of
the maps can have a deleted node as the source of
a mapping. It does however seem to be possible in
theory to have a deleted value as the target of a
mapping, however this has not yet been spotted in
the wild. Still mulling on what to do about this.
[The theoretical situation is this: a node A is
expanded/promoted/whatever to a newly created node
B. Thus A->B is added to a map. When the subtree
rooted at B is legalized it is conceivable that B
is deleted due to RAUW on a node somewhere above
it].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46705 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
608f7ae5f7a2268b391c372a35d4fe70920dc49b 04-Feb-2008 Duncan Sands <baldrick@free.fr> I don't see how NodeUpdated can be called with a
ReadyToProcess node - add an assertion to check
this. Add an assertion to NodeDeleted that checks
that processed/ready nodes are indeed not deleted.
It is because they are never deleted that none of
the maps can have a deleted node as the source of
a mapping. It does however seem to be possible in
theory to have a deleted value as the target of a
mapping, however this has not yet been spotted in
the wild. Still mulling on what to do about this.
[The theoretical situation is this: a node A is
expanded/promoted/whatever to a newly created node
B. Thus A->B is added to a map. When the subtree
rooted at B is legalized it is conceivable that B
is deleted due to RAUW on a node somewhere above
it].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46705 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
9d3e5d476c4478d2837760a9bf43fedb8a5a7e51 03-Feb-2008 Chris Lattner <sabre@nondot.org> Fix typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46682 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
5a878cf91b5474e95491c4e5b9e36eeff334e61e 03-Feb-2008 Chris Lattner <sabre@nondot.org> Fix typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46682 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
fcd8e9e3a21efb32172a6395e8697889962067e1 03-Feb-2008 Chris Lattner <sabre@nondot.org> handle the case where a node can become ready to process
multiple times due to a RAUW.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46680 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
2d41a227a7422ac991a8412ddd0c7c1c5374f24e 03-Feb-2008 Chris Lattner <sabre@nondot.org> handle the case where a node can become ready to process
multiple times due to a RAUW.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46680 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
42bd25f8ec6f506fa40d3304de47ba8a2e306f96 03-Feb-2008 Chris Lattner <sabre@nondot.org> Use the new infrastructure for listening to node updates to
keep the LegalizeTypes node flags up to date when doing a RAUW.
This fixes a nasty bug that Duncan ran into and makes the
previous (nonbuggy case) more efficent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46679 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
0fdf4edd2d64ee5d6bdb5d66beed0da325e5e117 03-Feb-2008 Chris Lattner <sabre@nondot.org> Use the new infrastructure for listening to node updates to
keep the LegalizeTypes node flags up to date when doing a RAUW.
This fixes a nasty bug that Duncan ran into and makes the
previous (nonbuggy case) more efficent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46679 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
d8cd3be37062747f1abbcdb6de4547574ceea603 03-Feb-2008 Chris Lattner <sabre@nondot.org> the world doesn't need my debugging code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46678 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9c980aa7364674c55978c4ee8f92cfeff71a57a7 03-Feb-2008 Chris Lattner <sabre@nondot.org> the world doesn't need my debugging code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46678 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f8dc0617baceeba8ccd67c8881eb88eb1be2902c 03-Feb-2008 Chris Lattner <sabre@nondot.org> Change the 'global modification' APIs in SelectionDAG to take a new
DAGUpdateListener object pointer instead of just returning a vector
of deleted nodes. This makes the interfaces more efficient (no more
allocating a vector [at least a malloc], filling it in, then walking
it) and more clean. This also allows the client to be notified of
nodes that are *changed* but not deleted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
7bcb18f7002752829aca7ac639c1a76dba8f347f 03-Feb-2008 Chris Lattner <sabre@nondot.org> Change the 'global modification' APIs in SelectionDAG to take a new
DAGUpdateListener object pointer instead of just returning a vector
of deleted nodes. This makes the interfaces more efficient (no more
allocating a vector [at least a malloc], filling it in, then walking
it) and more clean. This also allows the client to be notified of
nodes that are *changed* but not deleted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
11d049c87f49cf273863248d44cda005690515a6 03-Feb-2008 Chris Lattner <sabre@nondot.org> Generalize the SDOperand->SDOperand form of
SelectionDAG::ReplaceAllUsesWith to handle replacement of
an SDOperand with *any* sdoperand, not just one for a node with
a single result. Note that this has a horrible FIXME'd hack in it
to work around PR1975. This should be removed when PR1975 is fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46674 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
dca329fe24288b7d7f7303df17f949f5878cb16f 03-Feb-2008 Chris Lattner <sabre@nondot.org> Generalize the SDOperand->SDOperand form of
SelectionDAG::ReplaceAllUsesWith to handle replacement of
an SDOperand with *any* sdoperand, not just one for a node with
a single result. Note that this has a horrible FIXME'd hack in it
to work around PR1975. This should be removed when PR1975 is fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46674 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a658baba78e9cb0a9efbc5e4921c63f7b92a920c 03-Feb-2008 Chris Lattner <sabre@nondot.org> add a -view-legalize-types-dags option, for viewing the dags going into legalize types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
c90decaaa677dea71fbde50211c2c3ee89cffceb 03-Feb-2008 Chris Lattner <sabre@nondot.org> add a -view-legalize-types-dags option, for viewing the dags going into legalize types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
4eecdeb3faf5df864790175da5d58301b751ec11 02-Feb-2008 Evan Cheng <evan.cheng@apple.com> Get rid of the annoying blank lines before labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46667 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
8b9886912f2d572f2a64ff112131184c41dabae4 02-Feb-2008 Evan Cheng <evan.cheng@apple.com> Get rid of the annoying blank lines before labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46667 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
a844bdeab31ef04221e7ef59a8467893584cc14d 02-Feb-2008 Evan Cheng <evan.cheng@apple.com> SDIsel processes llvm.dbg.declare by recording the variable debug information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46659 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achineModuleInfo.cpp
rologEpilogInserter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
2e28d627d086d38a7e62fc2e3b6f4b9ef24ecf07 02-Feb-2008 Evan Cheng <evan.cheng@apple.com> SDIsel processes llvm.dbg.declare by recording the variable debug information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46659 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achineModuleInfo.cpp
rologEpilogInserter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
1b08bbca5592351a940bcd164bdec724ee954326 01-Feb-2008 Evan Cheng <evan.cheng@apple.com> Remove the nasty LABEL hack with a much less evil one. Now llvm.dbg.func.start implies a stoppoint is set. SelectionDAGISel records a new source line but does not create a ISD::LABEL node for this special stoppoint. Asm printer will magically print this label. This ensures nothing is emitted before.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46635 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
rologEpilogInserter.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
a53c40a59981b6bae7e734fa9e42bc345c0457df 01-Feb-2008 Evan Cheng <evan.cheng@apple.com> Remove the nasty LABEL hack with a much less evil one. Now llvm.dbg.func.start implies a stoppoint is set. SelectionDAGISel records a new source line but does not create a ISD::LABEL node for this special stoppoint. Asm printer will magically print this label. This ensures nothing is emitted before.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46635 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
rologEpilogInserter.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
a647c92ec2b3c91e1e6de25cc5c7860912c7626b 01-Feb-2008 Evan Cheng <evan.cheng@apple.com> Rename RecordLabel to RecordSourceLine because that's what it is doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46628 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/LegalizeDAG.cpp
69eda82e77410e2ab9599e9861af2c97a44e863d 01-Feb-2008 Evan Cheng <evan.cheng@apple.com> Rename RecordLabel to RecordSourceLine because that's what it is doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46628 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/LegalizeDAG.cpp
334dc1f58d617dcff969a2e107febaae42bbc883 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> Revert 46556 and 46585. Dan please fix the PseudoSourceValue problem and re-commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46623 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
seudoSourceValue.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
36ddaf294db6fbbbac5e79ca0e2d166ea36fe187 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> Revert 46556 and 46585. Dan please fix the PseudoSourceValue problem and re-commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46623 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
seudoSourceValue.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
7bdc5f734f6aa16cc300f66d2a804d75b916d12b 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> Add a comment for a nasty short term hack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
345235ccc9e9b11acd4fc4448a9d6e8c83dabf91 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> Add a comment for a nasty short term hack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
bb81d97feb396a8bb21d074db1c57e9f66525f40 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> Add an extra operand to LABEL nodes which distinguishes between debug, EH, or misc labels. This fixes the EH breakage. However I am not convinced this is *the* solution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46609 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
achineInstr.cpp
achineModuleInfo.cpp
rologEpilogInserter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
13d1c2965485bc5df76e0bb609fcc77d257caca7 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> Add an extra operand to LABEL nodes which distinguishes between debug, EH, or misc labels. This fixes the EH breakage. However I am not convinced this is *the* solution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46609 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
achineInstr.cpp
achineModuleInfo.cpp
rologEpilogInserter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
175e81598ad3fc02f9f5a2ac3ef578a9fed31b6e 31-Jan-2008 Christopher Lamb <christopher.lamb@gmail.com> Add more thorough error checking for NULL register classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
e08d9ec236815bc0da1828c0231e92698a98d27c 31-Jan-2008 Christopher Lamb <christopher.lamb@gmail.com> Add more thorough error checking for NULL register classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
72bebb9205c1628601b052d25555aabe6e15e6f4 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> MRegisterInfo::getLocation() is a really bad idea. Its function is to calculate the offset from frame pointer to a stack slot and then storing the delta in a MachineLocation object. The name is bad (it implies a getter), and MRegisterInfo doesn't need to know about MachineLocation.
Replace getLocation() with getFrameIndexOffset() which returns the delta from frame pointer to stack slot. Dwarf writer can then use the information for whatever it wants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46597 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
38948833a3a533ec62968518e09191194d7730ec 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> MRegisterInfo::getLocation() is a really bad idea. Its function is to calculate the offset from frame pointer to a stack slot and then storing the delta in a MachineLocation object. The name is bad (it implies a getter), and MRegisterInfo doesn't need to know about MachineLocation.
Replace getLocation() with getFrameIndexOffset() which returns the delta from frame pointer to stack slot. Dwarf writer can then use the information for whatever it wants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46597 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
1a0248690aaa9f7baaf1247e5f65a1c0c9e3783c 31-Jan-2008 Dan Gohman <gohman@apple.com> Rename ISD::FLT_ROUNDS to ISD::FLT_ROUNDS_ to avoid conflicting
with the real FLT_ROUNDS (defined in <float.h>).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46587 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
819574c596dddbd97a3945cbbcf019106c405455 31-Jan-2008 Dan Gohman <djg@cray.com> Rename ISD::FLT_ROUNDS to ISD::FLT_ROUNDS_ to avoid conflicting
with the real FLT_ROUNDS (defined in <float.h>).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46587 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
00dff8dda29b5a249cd99405ce26e84cef13ba53 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> Also avoid adding callee save code before debug labels.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46586 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
39cdca163091fb66487eb8de23419461d9d55912 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> Also avoid adding callee save code before debug labels.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46586 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c6c391daddbafa722d9ca87d18f204e9a6e617a3 31-Jan-2008 Dan Gohman <gohman@apple.com> Create a new class, MemOperand, for describing memory references
in the backend. Introduce a new SDNode type, MemOperandSDNode, for
holding a MemOperand in the SelectionDAG IR, and add a MemOperand
list to MachineInstr, and code to manage them. Remove the offset
field from SrcValueSDNode; uses of SrcValueSDNode that were using
it are all all using MemOperandSDNode now.

Also, begin updating some getLoad and getStore calls to use the
PseudoSourceValue objects.

Most of this was written by Florian Brander, some
reorganization and updating to TOT by me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46585 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
f14b4476a7dfade92c1f57f5702175f283960f30 31-Jan-2008 Dan Gohman <djg@cray.com> Create a new class, MemOperand, for describing memory references
in the backend. Introduce a new SDNode type, MemOperandSDNode, for
holding a MemOperand in the SelectionDAG IR, and add a MemOperand
list to MachineInstr, and code to manage them. Remove the offset
field from SrcValueSDNode; uses of SrcValueSDNode that were using
it are all all using MemOperandSDNode now.

Also, begin updating some getLoad and getStore calls to use the
PseudoSourceValue objects.

Most of this was written by Florian Brander, some
reorganization and updating to TOT by me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46585 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
294e6524916aecd874dddeede4cc074d31f5f59f 30-Jan-2008 Evan Cheng <evan.cheng@apple.com> Fixed a bug in MergeValueInAsValue() pointed out by David Greene. Replace val# with previous liverange's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46579 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
c7fe7be846eb95505d8827c2fe00d38c3b5f5ba0 30-Jan-2008 Evan Cheng <evan.cheng@apple.com> Fixed a bug in MergeValueInAsValue() pointed out by David Greene. Replace val# with previous liverange's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46579 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
965d1b4bba6107b451edee403c6666acb86f39e3 30-Jan-2008 Evan Cheng <evan.cheng@apple.com> Treat the label for the first @llvm.dbg.stoppoint the same way as the dbg_func_start label. Make sure nothing else is inserted before them.
Note this solution might be somewhat fragile since ISD::LABEL may be used for other
purposes. If that ends up to be an issue, we may need to introduce a different node
for debug labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
a726585ca660c8766a9bd860476eb2ef8c019142 30-Jan-2008 Evan Cheng <evan.cheng@apple.com> Treat the label for the first @llvm.dbg.stoppoint the same way as the dbg_func_start label. Make sure nothing else is inserted before them.
Note this solution might be somewhat fragile since ISD::LABEL may be used for other
purposes. If that ends up to be an issue, we may need to introduce a different node
for debug labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
43b8f3b7d375187f843181ad3331ea9f06b473f5 30-Jan-2008 Dale Johannesen <dalej@apple.com> Adjust loop per review feedback.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46569 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
c59be5582149d604456c15a757cebe46d481cbbd 30-Jan-2008 Dale Johannesen <dalej@apple.com> Adjust loop per review feedback.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46569 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
6b2cf285bd43fdc98ca68df477570ef6938d4fb2 30-Jan-2008 Evan Cheng <evan.cheng@apple.com> A semi-gross fix for a debug info issue. When inserting the "function start" label (i.e. first label in the entry block) take care to insert it at the beginning of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46568 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
2d37392200dddf071bdc54cc3f0217284f550126 30-Jan-2008 Evan Cheng <evan.cheng@apple.com> A semi-gross fix for a debug info issue. When inserting the "function start" label (i.e. first label in the entry block) take care to insert it at the beginning of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46568 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
7757fff6aebdca376a46412c8dfb3fab7d8ad411 30-Jan-2008 Dale Johannesen <dalej@apple.com> Accept getelementptr starting at GV with all 0 indices as a
legitimate way of representing global variable GV in debug info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46565 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
3bb9df92ebe73f06efa266779f92cb2b799f6991 30-Jan-2008 Dale Johannesen <dalej@apple.com> Accept getelementptr starting at GV with all 0 indices as a
legitimate way of representing global variable GV in debug info.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46565 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
ff9b373e8f5006c629af81e2619778b4c4f5249e 30-Jan-2008 Evan Cheng <evan.cheng@apple.com> Even though InsertAtEndOfBasicBlock is an ugly hack it still deserves a proper name. Rename it to EmitInstrWithCustomInserter since it does not necessarily insert
instruction at the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46562 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
e637db117eb826a539e230590ee6a5db585f1ffb 30-Jan-2008 Evan Cheng <evan.cheng@apple.com> Even though InsertAtEndOfBasicBlock is an ugly hack it still deserves a proper name. Rename it to EmitInstrWithCustomInserter since it does not necessarily insert
instruction at the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46562 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
f38dc192dd378903048efbadb95b75cf41abfb63 30-Jan-2008 Dan Gohman <gohman@apple.com> Add a new PseudoSourceValue class, which will be used to help track
memory reference information in the backend. Most of this was written by
Florian Brander, cleanup and updating to TOT by me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46556 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
93ea972b2a51af9be1431000ead30dd156b3a7ba 30-Jan-2008 Dan Gohman <djg@cray.com> Add a new PseudoSourceValue class, which will be used to help track
memory reference information in the backend. Most of this was written by
Florian Brander, cleanup and updating to TOT by me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46556 91177308-0d34-0410-b5e6-96231b3b80d8
seudoSourceValue.cpp
b625f2f8960de32bc973092aaee8ac62863006fe 30-Jan-2008 Dan Gohman <gohman@apple.com> Factor the addressing mode and the load/store VT out of LoadSDNode
and StoreSDNode into their common base class LSBaseSDNode. Member
functions getLoadedVT and getStoredVT are replaced with the common
getMemoryVT to simplify code that will handle both loads and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46538 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
9a4c92c2b43e51ac531e0dbc319855635a14f905 30-Jan-2008 Dan Gohman <djg@cray.com> Factor the addressing mode and the load/store VT out of LoadSDNode
and StoreSDNode into their common base class LSBaseSDNode. Member
functions getLoadedVT and getStoredVT are replaced with the common
getMemoryVT to simplify code that will handle both loads and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46538 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
648f880dc907faf5c05f3d79a424597b65758360 29-Jan-2008 Duncan Sands <baldrick@free.fr> When expanding an operand, it's not the result value
type that matters but the operand type. This fixes
2008-01-08-IllegalCMP.ll which crashed with the new
legalize infrastructure because SETCC with result
type i8 and operand type i64 was being custom expanded
by the X86 backend. With this fix, the gcc build gets
as far as the first libcall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46525 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesExpand.cpp
03408917ba127906ebf3f305b8115cde9a649dc5 29-Jan-2008 Duncan Sands <baldrick@free.fr> When expanding an operand, it's not the result value
type that matters but the operand type. This fixes
2008-01-08-IllegalCMP.ll which crashed with the new
legalize infrastructure because SETCC with result
type i8 and operand type i64 was being custom expanded
by the X86 backend. With this fix, the gcc build gets
as far as the first libcall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46525 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesExpand.cpp
303595942502f17c087fa28874c2b89117148c45 29-Jan-2008 Dan Gohman <gohman@apple.com> Use empty() instead of comparing size() with zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46514 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
achineModuleInfo.cpp
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
301f405ef34539e7f287513bd7df0cbcf4f71d07 29-Jan-2008 Dan Gohman <djg@cray.com> Use empty() instead of comparing size() with zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46514 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fConversion.cpp
achineModuleInfo.cpp
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
9f65c39f806186e1bbe1c9e4b670d198c69a81c1 29-Jan-2008 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46513 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
e490176fcdd23a72fffaafe08c96c00dab7610a3 29-Jan-2008 Dan Gohman <djg@cray.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46513 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
6ee9661390849bd9564cda38bfbe563ec255c419 29-Jan-2008 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46508 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3cd20f8d8b51c78018c20f2c6788065de13f48d7 29-Jan-2008 Dan Gohman <djg@cray.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46508 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d102593b425da27fa96359300ff0e3d547d0ac8d 29-Jan-2008 Duncan Sands <baldrick@free.fr> Use getPreferredAlignmentLog or getPreferredAlignment
to get the alignment of global variables, rather than
using hand-made versions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46495 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
935686e9d1142b8c8f26a7fb2c8736b692eeaf4f 29-Jan-2008 Duncan Sands <baldrick@free.fr> Use getPreferredAlignmentLog or getPreferredAlignment
to get the alignment of global variables, rather than
using hand-made versions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46495 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
8822eabe3623d5e2197096d44ff294fc8c381680 29-Jan-2008 Owen Anderson <resistor@mac.com> RegAllocBigBlock doesn't need LiveVariables either.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46488 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
97dc0b1840ba2019f2a5f8c6fffc2560c2f26942 29-Jan-2008 Owen Anderson <resistor@mac.com> RegAllocBigBlock doesn't need LiveVariables either.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46488 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
55030dc460ff43f382abcc977b3e45bab7d87826 29-Jan-2008 Nate Begeman <natebegeman@mac.com> Properly expand extract-element for non-power-of-2 codegen


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46486 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2b10fde55c58895edce4ae48a8242a6405840ed7 29-Jan-2008 Nate Begeman <natebegeman@mac.com> Properly expand extract-element for non-power-of-2 codegen


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46486 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ba2a0b960ea4c73d0f81557f63ae2ea126e08905 29-Jan-2008 Dale Johannesen <dalej@apple.com> Handle 'X' constraint in asm's better.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46485 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
e99fc909ce61423c2e27314675708a323e897d57 29-Jan-2008 Dale Johannesen <dalej@apple.com> Handle 'X' constraint in asm's better.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46485 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
f32aac3090849fed64906f7bae499b726a51f877 28-Jan-2008 Chris Lattner <sabre@nondot.org> Fix PowerPC/./2007-10-18-PtrArithmetic.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46424 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
336672fc0cfa6162f7e03f8cf1bf0f0c285563a1 28-Jan-2008 Chris Lattner <sabre@nondot.org> Fix PowerPC/./2007-10-18-PtrArithmetic.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46424 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ee339f4b2ab3e7789f02a714bbd8b1fb9f956467 28-Jan-2008 Chris Lattner <sabre@nondot.org> fix a crash on CodeGen/X86/vector-rem.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46422 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ce602f570656732a08598f43d6e7e41c01c56823 28-Jan-2008 Chris Lattner <sabre@nondot.org> fix a crash on CodeGen/X86/vector-rem.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46422 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c66a4f912feaf186a93b113b31e29cb660be0fcc 27-Jan-2008 Owen Anderson <resistor@mac.com> Reg alloc doesn't really need LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46420 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
007b9f83f151ac7ac08ef0309febb8d5348c30cf 27-Jan-2008 Owen Anderson <resistor@mac.com> Reg alloc doesn't really need LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46420 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
3bd39d4ca89804e97c93b039f6c2933f514c165c 27-Jan-2008 Chris Lattner <sabre@nondot.org> Implement some dag combines that allow doing fneg/fabs/fcopysign in integer
registers if used by a bitconvert or using a bitconvert. This allows us to
avoid constant pool loads and use cheaper integer instructions when the
values come from or end up in integer regs anyway. For example, we now
compile CodeGen/X86/fp-in-intregs.ll to:

_test1:
movl $2147483648, %eax
xorl 4(%esp), %eax
ret
_test2:
movl $1065353216, %eax
orl 4(%esp), %eax
andl $3212836864, %eax
ret

Instead of:
_test1:
movss 4(%esp), %xmm0
xorps LCPI2_0, %xmm0
movd %xmm0, %eax
ret
_test2:
movss 4(%esp), %xmm0
andps LCPI3_0, %xmm0
movss LCPI3_1, %xmm1
andps LCPI3_2, %xmm1
orps %xmm0, %xmm1
movd %xmm1, %eax
ret

bitconverts can happen due to various calling conventions that require
fp values to passed in integer regs in some cases, e.g. when returning
a complex.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46414 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ef26cbc5c359373f39f7bb55df4fc10a89772539 27-Jan-2008 Chris Lattner <sabre@nondot.org> Implement some dag combines that allow doing fneg/fabs/fcopysign in integer
registers if used by a bitconvert or using a bitconvert. This allows us to
avoid constant pool loads and use cheaper integer instructions when the
values come from or end up in integer regs anyway. For example, we now
compile CodeGen/X86/fp-in-intregs.ll to:

_test1:
movl $2147483648, %eax
xorl 4(%esp), %eax
ret
_test2:
movl $1065353216, %eax
orl 4(%esp), %eax
andl $3212836864, %eax
ret

Instead of:
_test1:
movss 4(%esp), %xmm0
xorps LCPI2_0, %xmm0
movd %xmm0, %eax
ret
_test2:
movss 4(%esp), %xmm0
andps LCPI3_0, %xmm0
movss LCPI3_1, %xmm1
andps LCPI3_2, %xmm1
orps %xmm0, %xmm1
movd %xmm1, %eax
ret

bitconverts can happen due to various calling conventions that require
fp values to passed in integer regs in some cases, e.g. when returning
a complex.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46414 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
553c116a1b94e9c5c7489e6a31908dbb8a76131c 27-Jan-2008 Chris Lattner <sabre@nondot.org> For long double constants, print an approximation of their value to the .s file to make it easier to read.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46407 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
00d6306a51b2869b40b203d8e060654cf3500918 27-Jan-2008 Chris Lattner <sabre@nondot.org> For long double constants, print an approximation of their value to the .s file to make it easier to read.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46407 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
1329cb8d8992c34365fcc2ac0447356708157dfb 26-Jan-2008 Chris Lattner <sabre@nondot.org> Infer alignment of loads and increase their alignment when we can tell they are
from the stack. This allows us to compile stack-align.ll to:

_test:
movsd LCPI1_0, %xmm0
movapd %xmm0, %xmm1
*** andpd 4(%esp), %xmm1
andpd _G, %xmm0
addsd %xmm1, %xmm0
movl 20(%esp), %eax
movsd %xmm0, (%eax)
ret

instead of:

_test:
movsd LCPI1_0, %xmm0
** movsd 4(%esp), %xmm1
** andpd %xmm0, %xmm1
andpd _G, %xmm0
addsd %xmm1, %xmm0
movl 20(%esp), %eax
movsd %xmm0, (%eax)
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46401 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1e3362f68ef7d05aa31fc8865291cd834add1cc6 26-Jan-2008 Chris Lattner <sabre@nondot.org> Infer alignment of loads and increase their alignment when we can tell they are
from the stack. This allows us to compile stack-align.ll to:

_test:
movsd LCPI1_0, %xmm0
movapd %xmm0, %xmm1
*** andpd 4(%esp), %xmm1
andpd _G, %xmm0
addsd %xmm1, %xmm0
movl 20(%esp), %eax
movsd %xmm0, (%eax)
ret

instead of:

_test:
movsd LCPI1_0, %xmm0
** movsd 4(%esp), %xmm1
** andpd %xmm0, %xmm1
andpd _G, %xmm0
addsd %xmm1, %xmm0
movl 20(%esp), %eax
movsd %xmm0, (%eax)
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46401 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5eee427594c87a037a108047b3cd39c14f724752 26-Jan-2008 Chris Lattner <sabre@nondot.org> Fix some bugs in SimplifyNodeWithTwoResults where it would call deletenode to
delete a node even if it was not dead in some cases. Instead, just add it to
the worklist. Also, make sure to use the CombineTo methods, as it was doing
things that were unsafe: the top level combine loop could touch dangling memory.

This fixes CodeGen/Generic/2008-01-25-dag-combine-mul.ll



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4a7c84596446d1027621302b1e5b616943a1d034 26-Jan-2008 Chris Lattner <sabre@nondot.org> Fix some bugs in SimplifyNodeWithTwoResults where it would call deletenode to
delete a node even if it was not dead in some cases. Instead, just add it to
the worklist. Also, make sure to use the CombineTo methods, as it was doing
things that were unsafe: the top level combine loop could touch dangling memory.

This fixes CodeGen/Generic/2008-01-25-dag-combine-mul.ll



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9967c15183e023b7cf59b094d69530ffeca1aa0f 26-Jan-2008 Chris Lattner <sabre@nondot.org> don't bother making x&-1 only to simplify it in dag combine. This commonly occurs expanding i64 ops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8aa8a5ed27e9146cb3e601a9cdf0ed481893116d 26-Jan-2008 Chris Lattner <sabre@nondot.org> don't bother making x&-1 only to simplify it in dag combine. This commonly occurs expanding i64 ops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
50d8e491a2c044efb9f7b5c0c223d29ea2dbf6cd 26-Jan-2008 Chris Lattner <sabre@nondot.org> reduce indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46377 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
20e5390238ef213139bf402ba5bb484c8d4ed9b4 26-Jan-2008 Chris Lattner <sabre@nondot.org> reduce indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46377 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5bab78527a946632cd9614daa0b9a82ee7b5e1cc 25-Jan-2008 Chris Lattner <sabre@nondot.org> fix long lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2f69f133a833ce9df1c3a5c30be84269962bbbf6 25-Jan-2008 Chris Lattner <sabre@nondot.org> fix long lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46355 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
00161a63dda71714df312661ceed0a318ed8b266 25-Jan-2008 Chris Lattner <sabre@nondot.org> Add skeletal code to increase the alignment of loads and stores when
we can infer it. This will eventually help stuff, though it doesn't
do much right now because all fixed FI's have an alignment of 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4e137af8b58c1a5b517baa524c81bdaf413f13eb 25-Jan-2008 Chris Lattner <sabre@nondot.org> Add skeletal code to increase the alignment of loads and stores when
we can infer it. This will eventually help stuff, though it doesn't
do much right now because all fixed FI's have an alignment of 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1612faae3cf7ecfaddba64f7064f0ce4b32dd471 25-Jan-2008 Chris Lattner <sabre@nondot.org> move MachineFrameInfo::CreateFixedObject out of line, give MachineFrameInfo
a reference to TargetFrameInfo. Rearrange order of fields in StackObject to
save a word.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46348 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
610b9ebe9a10702638f2089d43872130ffab1220 25-Jan-2008 Chris Lattner <sabre@nondot.org> move MachineFrameInfo::CreateFixedObject out of line, give MachineFrameInfo
a reference to TargetFrameInfo. Rearrange order of fields in StackObject to
save a word.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46348 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
94ffc7eb4679df854266602eabcac906b22df8aa 25-Jan-2008 Chris Lattner <sabre@nondot.org> include alignment and volatility information in -view-*-dags output


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46347 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
35165f10a78c17485bcf73f87f96c2b61c972509 25-Jan-2008 Chris Lattner <sabre@nondot.org> include alignment and volatility information in -view-*-dags output


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46347 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
40743b83bf96fe39ac94f4d782e0bc73b4d28919 24-Jan-2008 Chris Lattner <sabre@nondot.org> Don't dump the function!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46320 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackCollector.cpp
9d57440777229dd3d2023675d976c2cf0d6936b8 24-Jan-2008 Chris Lattner <sabre@nondot.org> Don't dump the function!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46320 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackCollector.cpp
23e202dee012011a25b3b309d3c05d1915767773 24-Jan-2008 Chris Lattner <sabre@nondot.org> clarify a comment, thanks Duncan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46313 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d2d109ae06abb1386c01a7c0a94d378cc5ca7bc7 24-Jan-2008 Chris Lattner <sabre@nondot.org> clarify a comment, thanks Duncan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46313 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
125991a1f62db419fc4a504986a998d85fbef699 24-Jan-2008 Chris Lattner <sabre@nondot.org> Fix this buggy transformation. Two observations:
1. we already know the value is dead, so don't bother replacing
it with undef.
2. The very case the comment describes actually makes the load
live which asserts in deletenode. If we do the replacement
and the node becomes live, just treat it as new. This fixes
a failure on X86/2008-01-16-InvalidDAGCombineXform.ll with
some local changes in my tree.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46306 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bb67c1910f1edb89dd4ab86f740c7cfb2fa9fb48 24-Jan-2008 Chris Lattner <sabre@nondot.org> Fix this buggy transformation. Two observations:
1. we already know the value is dead, so don't bother replacing
it with undef.
2. The very case the comment describes actually makes the load
live which asserts in deletenode. If we do the replacement
and the node becomes live, just treat it as new. This fixes
a failure on X86/2008-01-16-InvalidDAGCombineXform.ll with
some local changes in my tree.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46306 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
20e3d86766a38492b3f6203bf4cf70dd9d187b7b 24-Jan-2008 Chris Lattner <sabre@nondot.org> The dag combiner is missing revisiting nodes that it really should, and thus leaving
dead stuff around. This gets fed into the isel pass and causes certain foldings from
happening because nodes have extraneous uses floating around. For example, if we turned
foo(bar(x)) -> baz(x), we sometimes left bar(x) around.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2b00822a0f1081c9c41102f6a24aee0397861ce6 24-Jan-2008 Chris Lattner <sabre@nondot.org> The dag combiner is missing revisiting nodes that it really should, and thus leaving
dead stuff around. This gets fed into the isel pass and causes certain foldings from
happening because nodes have extraneous uses floating around. For example, if we turned
foo(bar(x)) -> baz(x), we sometimes left bar(x) around.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0aa5e6f3fbde81c0bf0310ab0582420f0eeb7155 24-Jan-2008 Chris Lattner <sabre@nondot.org> fold fp_round(fp_round(x)) -> fp_round(x).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46304 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7afb85556301e5ece26f4e8edd42fc6abeb831ba 24-Jan-2008 Chris Lattner <sabre@nondot.org> fold fp_round(fp_round(x)) -> fp_round(x).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46304 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b487e7215c4f70f3d98f8fbc0a11eb119afc1f37 24-Jan-2008 Owen Anderson <resistor@mac.com> Move some functionality for adding flags to MachineInstr's into methods on MachineInstr rather than LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46295 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
580607928bc87fa22ad5a71a16e0025722b339ea 24-Jan-2008 Owen Anderson <resistor@mac.com> Move some functionality for adding flags to MachineInstr's into methods on MachineInstr rather than LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46295 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
3ae054385cfe9f2fcef2d77f26839615b1d3e48b 24-Jan-2008 Evan Cheng <evan.cheng@apple.com> Forgot these.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46292 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
9b5992a45d2aaba843f4e4ba7a09a487dab1b95e 24-Jan-2008 Evan Cheng <evan.cheng@apple.com> Forgot these.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46292 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
f9c98e650d2795b8edfae8e1560c221029df218b 23-Jan-2008 Duncan Sands <baldrick@free.fr> The last pieces needed for loading arbitrary
precision integers. This won't actually work
(and most of the code is dead) unless the new
legalization machinery is turned on. While
there, I rationalized the handling of i1, and
removed some bogus (and unused) sextload patterns.
For i1, this could result in microscopically
better code for some architectures (not X86).
It might also result in worse code if annotating
with AssertZExt nodes turns out to be more harmful
than helpful.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46280 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
082524cde46d15558f6270208e32cea0fe774586 23-Jan-2008 Duncan Sands <baldrick@free.fr> The last pieces needed for loading arbitrary
precision integers. This won't actually work
(and most of the code is dead) unless the new
legalization machinery is turned on. While
there, I rationalized the handling of i1, and
removed some bogus (and unused) sextload patterns.
For i1, this could result in microscopically
better code for some architectures (not X86).
It might also result in worse code if annotating
with AssertZExt nodes turns out to be more harmful
than helpful.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46280 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
97ca75e4bbab7f680564c96e6a326cd1ea267ce2 23-Jan-2008 Owen Anderson <resistor@mac.com> Fix an iterator invalidation issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46263 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
dc7d9c28eb838aeae17615ab411134bbb32b051b 23-Jan-2008 Owen Anderson <resistor@mac.com> Fix an iterator invalidation issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46263 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
8e1f7ac87d75ffc02d2fd363a5a9c6d4c7089daf 22-Jan-2008 Chris Lattner <sabre@nondot.org> Simplify SelectionDAG::getNode so that a big switch stmt is not #ifndef
NDEBUG. This is in response to a really nasty bug I introduced that
Dale tracked down, hopefully this won't happen in the future.
Many thanks Dale.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
cc126e3919b3a5dd975d2198c5271724ca56fa45 22-Jan-2008 Chris Lattner <sabre@nondot.org> Simplify SelectionDAG::getNode so that a big switch stmt is not #ifndef
NDEBUG. This is in response to a really nasty bug I introduced that
Dale tracked down, hopefully this won't happen in the future.
Many thanks Dale.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7e857201f387d004571e6058e2ea709163500f38 22-Jan-2008 Duncan Sands <baldrick@free.fr> The final piece needed for storing arbitrary precision
integers. Handle truncstore of a legal type to an unusual
number of bits. Most of this code is not reachable unless
the new legalize infrastructure is turned on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
406766651528477d6969ac1309f6d3fee7290a66 22-Jan-2008 Duncan Sands <baldrick@free.fr> The final piece needed for storing arbitrary precision
integers. Handle truncstore of a legal type to an unusual
number of bits. Most of this code is not reachable unless
the new legalize infrastructure is turned on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a6b1926531b78f5fa45503aebea30cdb616114b7 21-Jan-2008 Owen Anderson <resistor@mac.com> Clarify a deviation from the original algorithm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46218 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
80f4a4974621c1c522dc6bdc1f7e193119df9617 21-Jan-2008 Owen Anderson <resistor@mac.com> Clarify a deviation from the original algorithm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46218 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
3b489522dff11af226f8aaef9660c10257d16d60 21-Jan-2008 Owen Anderson <resistor@mac.com> Improve a few comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46217 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
f84df2668096a72e8d74eadced54c7439a0a60c7 21-Jan-2008 Owen Anderson <resistor@mac.com> Improve a few comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46217 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
da9bb3578ed4f57b7e1f5393dfae85ccdf76b4af 21-Jan-2008 Dale Johannesen <dalej@apple.com> Move DAG-changing code out of #ifndef NDEBUG.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d05b3a1ddbe025ad429a99bc38900635265504a9 21-Jan-2008 Dale Johannesen <dalej@apple.com> Move DAG-changing code out of #ifndef NDEBUG.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
713ed3f7c0cb788f74af0697fce3c4eafda4178e 20-Jan-2008 Dale Johannesen <dalej@apple.com> Do not generate a FP_ROUND of f64 to f64.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a0d3608864af5d055696d047cb82f29dca64f670 20-Jan-2008 Dale Johannesen <dalej@apple.com> Do not generate a FP_ROUND of f64 to f64.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c9133f97720a36218ddfa6bfbf36ba6e22c011f7 18-Jan-2008 Chris Lattner <sabre@nondot.org> remove extraneous &'s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
0d551f3e09117788205c92667ba3b17aa108db3f 18-Jan-2008 Chris Lattner <sabre@nondot.org> remove extraneous &'s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
ddf89566a93081cb230bb9406a72ab2d3eada4a7 17-Jan-2008 Chris Lattner <sabre@nondot.org> This commit changes:

1. Legalize now always promotes truncstore of i1 to i8.
2. Remove patterns and gunk related to truncstore i1 from targets.
3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
X86 currently doesn't support truncstore of any of its integer types.
6. Add legalize support for truncstores with invalid value input types.
7. Add a dag combine transform to turn store(truncate) into truncstore when
safe.

The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:

_foo:
fldt 20(%esp)
fldt 4(%esp)
faddp %st(1)
movl 36(%esp), %eax
fstps (%eax)
ret

instead of:

_foo:
subl $4, %esp
fldt 24(%esp)
fldt 8(%esp)
faddp %st(1)
fstps (%esp)
movl 40(%esp), %eax
movss (%esp), %xmm0
movss %xmm0, (%eax)
addl $4, %esp
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46140 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
3bc0850bd4beeec5b464fce8513d3c749ee413eb 17-Jan-2008 Chris Lattner <sabre@nondot.org> This commit changes:

1. Legalize now always promotes truncstore of i1 to i8.
2. Remove patterns and gunk related to truncstore i1 from targets.
3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
X86 currently doesn't support truncstore of any of its integer types.
6. Add legalize support for truncstores with invalid value input types.
7. Add a dag combine transform to turn store(truncate) into truncstore when
safe.

The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:

_foo:
fldt 20(%esp)
fldt 4(%esp)
faddp %st(1)
movl 36(%esp), %eax
fstps (%eax)
ret

instead of:

_foo:
subl $4, %esp
fldt 24(%esp)
fldt 8(%esp)
faddp %st(1)
fstps (%esp)
movl 40(%esp), %eax
movss (%esp), %xmm0
movss %xmm0, (%eax)
addl $4, %esp
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46140 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
4626b250a2a83fbd055dde70629cf0b89356e1d3 17-Jan-2008 Chris Lattner <sabre@nondot.org> code cleanups, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46126 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
667f9c162d69a757cd32cd522276afb9eba25740 17-Jan-2008 Chris Lattner <sabre@nondot.org> code cleanups, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46126 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0bd4893a0726889b942405262e53d06cf3fe3be8 17-Jan-2008 Chris Lattner <sabre@nondot.org> * Introduce a new SelectionDAG::getIntPtrConstant method
and switch various codegen pieces and the X86 backend over
to using it.

* Add some comments to SelectionDAGNodes.h

* Introduce a second argument to FP_ROUND, which indicates
whether the FP_ROUND changes the value of its input. If
not it is safe to xform things like fp_extend(fp_round(x)) -> x.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46125 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesSplit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
5872a361d5332fddcdb89c6df684243c19a75f88 17-Jan-2008 Chris Lattner <sabre@nondot.org> * Introduce a new SelectionDAG::getIntPtrConstant method
and switch various codegen pieces and the X86 backend over
to using it.

* Add some comments to SelectionDAGNodes.h

* Introduce a second argument to FP_ROUND, which indicates
whether the FP_ROUND changes the value of its input. If
not it is safe to xform things like fp_extend(fp_round(x)) -> x.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46125 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesSplit.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
839b759c38182af8d151db10923c2a6cc7dd5b3d 17-Jan-2008 Evan Cheng <evan.cheng@apple.com> When a live virtual register is being clobbered by an implicit def, it is spilled
and the spill is its kill. However, if the local allocator has determined the
register has not been modified (possible when its value was reloaded), it would
not issue a restore. In that case, mark the last use of the virtual register as
kill.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46111 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
a94efbded8e0a63a6fbffc5b3119a3373141cb7b 17-Jan-2008 Evan Cheng <evan.cheng@apple.com> When a live virtual register is being clobbered by an implicit def, it is spilled
and the spill is its kill. However, if the local allocator has determined the
register has not been modified (possible when its value was reloaded), it would
not issue a restore. In that case, mark the last use of the virtual register as
kill.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46111 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
644340a9bdc663762a58784e0b86c87aeeb41116 17-Jan-2008 Evan Cheng <evan.cheng@apple.com> Replace std::vector<bool> with BitVector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46104 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
9e66d8c6f8e2ff23fa0bfc04ea61c4a323784ced 17-Jan-2008 Evan Cheng <evan.cheng@apple.com> Replace std::vector<bool> with BitVector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46104 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
02c42856431562376ac8280b57ad744ba83f1e38 17-Jan-2008 Evan Cheng <evan.cheng@apple.com> Fixes a nasty dag combiner bug that causes a bunch of tests to fail at -O0.

It's not safe to use the two value CombineTo variant to combine away a dead load.
e.g.
v1, chain2 = load chain1, loc
v2, chain3 = load chain2, loc
v3 = add v2, c
Now we replace use of v1 with undef, use of chain2 with chain1.
ReplaceAllUsesWith() will iterate through uses of the first load and update operands:
v1, chain2 = load chain1, loc
v2, chain3 = load chain1, loc
v3 = add v2, c
Now the second load is the same as the first load, SelectionDAG cse will ensure
the use of second load is replaced with the first load.
v1, chain2 = load chain1, loc
v3 = add v1, c
Then v1 is replaced with undef and bad things happen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46099 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e8b886aa842369e1e1d5ab25c16e05690adbaa33 17-Jan-2008 Evan Cheng <evan.cheng@apple.com> Fixes a nasty dag combiner bug that causes a bunch of tests to fail at -O0.

It's not safe to use the two value CombineTo variant to combine away a dead load.
e.g.
v1, chain2 = load chain1, loc
v2, chain3 = load chain2, loc
v3 = add v2, c
Now we replace use of v1 with undef, use of chain2 with chain1.
ReplaceAllUsesWith() will iterate through uses of the first load and update operands:
v1, chain2 = load chain1, loc
v2, chain3 = load chain1, loc
v3 = add v2, c
Now the second load is the same as the first load, SelectionDAG cse will ensure
the use of second load is replaced with the first load.
v1, chain2 = load chain1, loc
v3 = add v1, c
Then v1 is replaced with undef and bad things happen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46099 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
48ae02fe62cafd44c740e67cfae6e7277e61a973 16-Jan-2008 Dale Johannesen <dalej@apple.com> Do not mark EH tables no-dead-strip unless the
associated function is so marked.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46088 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
3dadeb388cf6f93c40db2f0930a78045366d5bcb 16-Jan-2008 Dale Johannesen <dalej@apple.com> Do not mark EH tables no-dead-strip unless the
associated function is so marked.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46088 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
7e2e033e232a3e414040d6b01c8c07a1095a0983 16-Jan-2008 Chris Lattner <sabre@nondot.org> Fix a ppc long double regression I introduced yesterday due to a
simplification. This fixes automotive-basicmath on PPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d3f561794425f7cfc7198ffaf988d6a6c1228494 16-Jan-2008 Chris Lattner <sabre@nondot.org> Fix a ppc long double regression I introduced yesterday due to a
simplification. This fixes automotive-basicmath on PPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a66bb39e9779ce17b7d16e311f4b73fddb2ede2f 16-Jan-2008 Chris Lattner <sabre@nondot.org> merge a few pieces of code that do the store/load to stack
pattern to use EmitStackConvert now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46066 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
59370bdbbcd43e7df61c89a4c2e5c27f15144c71 16-Jan-2008 Chris Lattner <sabre@nondot.org> merge a few pieces of code that do the store/load to stack
pattern to use EmitStackConvert now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46066 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1401d15c99b284ead81b8476a6db95328c5f28fd 16-Jan-2008 Chris Lattner <sabre@nondot.org> rename ExpandBIT_CONVERT to EmitStackConvert, generalizing
it to allow it to emit different load and store kinds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46065 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b7d0aaa66da2a687078b5c566f882a42c97d4e9c 16-Jan-2008 Chris Lattner <sabre@nondot.org> rename ExpandBIT_CONVERT to EmitStackConvert, generalizing
it to allow it to emit different load and store kinds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46065 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
23594d4537fb88a963c6d6993af5027eac9bfbac 16-Jan-2008 Chris Lattner <sabre@nondot.org> simplify a bunch of code by using SelectionDAG::CreateStackTemporary
instead of inlining its body.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46062 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0aeb1d0ef531737591967237caca2e5fc9208c78 16-Jan-2008 Chris Lattner <sabre@nondot.org> simplify a bunch of code by using SelectionDAG::CreateStackTemporary
instead of inlining its body.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46062 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f2670a89a7c5e29e7f71ab63e06e75dbf482c55b 16-Jan-2008 Chris Lattner <sabre@nondot.org> Change legalizeop of FP_ROUND and FP_EXTEND to not fall through
into the ANY_EXTEND/ZERO_EXTEND/SIGN_EXTEND code to simplify it.

Unmerge the code for FP_ROUND and FP_EXTEND from each other to
make each one simpler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46061 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
56ecde3901481957a5503a991bffde7232cd3443 16-Jan-2008 Chris Lattner <sabre@nondot.org> Change legalizeop of FP_ROUND and FP_EXTEND to not fall through
into the ANY_EXTEND/ZERO_EXTEND/SIGN_EXTEND code to simplify it.

Unmerge the code for FP_ROUND and FP_EXTEND from each other to
make each one simpler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46061 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
572dee71af1313e6742e1dfd5274fff326b9ef1c 16-Jan-2008 Chris Lattner <sabre@nondot.org> Factor the ReachesChainWithoutSideEffects out of dag combiner into
a public SDOperand::reachesChainWithoutSideEffects method. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
10d94f95f8be674d9511d0de1e0fcc2066607fee 16-Jan-2008 Chris Lattner <sabre@nondot.org> Factor the ReachesChainWithoutSideEffects out of dag combiner into
a public SDOperand::reachesChainWithoutSideEffects method. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
4af349445222fa2a66b6248217ecd18eb6930646 16-Jan-2008 Dale Johannesen <dalej@apple.com> Fix and enable EH for x86-64 Darwin. Adds
ShortenEHDataFor64Bits as a not-very-accurate
abstraction to cover all the changes in DwarfWriter.
Some cosmetic changes to Darwin assembly code for
gcc testsuite compatibility.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46029 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
4670be43f85fac28770957590cf41ac7c2b9e33c 16-Jan-2008 Dale Johannesen <dalej@apple.com> Fix and enable EH for x86-64 Darwin. Adds
ShortenEHDataFor64Bits as a not-very-accurate
abstraction to cover all the changes in DwarfWriter.
Some cosmetic changes to Darwin assembly code for
gcc testsuite compatibility.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46029 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
40a627ddf87fe8e5fe057fba405cc0893cf14e70 15-Jan-2008 Owen Anderson <resistor@mac.com> Move some calls to getVRegDef higher in the callgraph, so they don't get executed as frequently in performance sensitive code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46027 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
77d8049a817bb95191730053a6913668de549c8e 15-Jan-2008 Owen Anderson <resistor@mac.com> Move some calls to getVRegDef higher in the callgraph, so they don't get executed as frequently in performance sensitive code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46027 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
034f12ea0864a9cca0a74715d6fb06a8bf1dc775 15-Jan-2008 Chris Lattner <sabre@nondot.org> The type of the 'abort' node should be pointer type (because
it's a function pointer) not MVT::Other. This fixes builtin_trap
lowering on ppc, alpha, ia64


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46018 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
88e0393bbca8a345eea56554b5585bcd80353919 15-Jan-2008 Chris Lattner <sabre@nondot.org> The type of the 'abort' node should be pointer type (because
it's a function pointer) not MVT::Other. This fixes builtin_trap
lowering on ppc, alpha, ia64


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46018 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7047dd4d227b5fb2e5ae0cb2e7d5de1d0098ad60 15-Jan-2008 Owen Anderson <resistor@mac.com> Remove DefInst from LiveVariables::VarInfo. Use the facilities on MachineRegisterInfo instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46016 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
woAddressInstructionPass.cpp
92a609a8e853af6edc4d5660a8451950bb2e0afb 15-Jan-2008 Owen Anderson <resistor@mac.com> Remove DefInst from LiveVariables::VarInfo. Use the facilities on MachineRegisterInfo instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46016 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
woAddressInstructionPass.cpp
41bab0beac2600701af99f63e23a6b65f71468ac 15-Jan-2008 Chris Lattner <sabre@nondot.org> Add support for targets that have a legal ISD::TRAP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46014 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
e99bbb7f959c42420bef8fce973247d4f104cd47 15-Jan-2008 Chris Lattner <sabre@nondot.org> Add support for targets that have a legal ISD::TRAP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46014 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
4c46fc6bbf206a59b1b46d8b1af43896a4675c65 15-Jan-2008 Evan Cheng <evan.cheng@apple.com> Oops. Forgot to commit this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46002 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
fe2be6395e6ef27ba7c20fbb99cc9b5b248846c3 15-Jan-2008 Evan Cheng <evan.cheng@apple.com> Oops. Forgot to commit this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46002 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
66fac79b899904ddd82e5ee354a6d370d80230f6 15-Jan-2008 Anton Korobeynikov <asl@math.spbu.ru> For PR1839: add initial support for __builtin_trap. llvm-gcc part is missed
as well as PPC codegen


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
39d40baea8a6d421568d50aa9655840683bb4651 15-Jan-2008 Anton Korobeynikov <asl@math.spbu.ru> For PR1839: add initial support for __builtin_trap. llvm-gcc part is missed
as well as PPC codegen


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
c67e6e8e8203be62da647832842edd7d90c4c585 15-Jan-2008 Evan Cheng <evan.cheng@apple.com> ByVal stack slot alignment should be at least as large as pointer ABI alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
25098bf8816f02edde4b0c47f70dabcc61bcc067 15-Jan-2008 Evan Cheng <evan.cheng@apple.com> ByVal stack slot alignment should be at least as large as pointer ABI alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
459525df1e003597077197b5f802bd5d9cd7d94c 14-Jan-2008 Chris Lattner <sabre@nondot.org> don't create the post-ra scheduler unless it is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45972 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ostRASchedulerList.cpp
e06d8eb5509a1b4b6e0295d1583a0e4c9f1f6f23 14-Jan-2008 Chris Lattner <sabre@nondot.org> don't create the post-ra scheduler unless it is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45972 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ostRASchedulerList.cpp
a6c3f80d970ea7a5c8597bca495495832a56a54b 14-Jan-2008 Chris Lattner <sabre@nondot.org> remove dead #include


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45971 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
789dddbac0e9ac855ebf7ced8e37ea55c61d8080 14-Jan-2008 Chris Lattner <sabre@nondot.org> remove dead #include


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45971 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
a41d7198035bdeaa3ba0a5840086d34ebcddac26 13-Jan-2008 Duncan Sands <baldrick@free.fr> Remove the assumption that byval has been applied to
a pointer to a struct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45939 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8b98c4db07a7e27cd2f380e2e05b54446f4a5aa4 13-Jan-2008 Duncan Sands <baldrick@free.fr> Remove the assumption that byval has been applied to
a pointer to a struct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45939 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
aad193a7e9f8eb4b558e16c2b54c31dee54f5f1e 12-Jan-2008 Chris Lattner <sabre@nondot.org> implement support for sinking a load out the bottom of a block that
has no stores between the load and the end of block. This works
great and sinks hundreds of stores, but we can't turn it on because
machineinstrs don't have volatility information and we don't want to
sink volatile stores :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45894 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
c3732fab3bb8f0af66cf03dac7dffaf443202607 12-Jan-2008 Chris Lattner <sabre@nondot.org> implement support for sinking a load out the bottom of a block that
has no stores between the load and the end of block. This works
great and sinks hundreds of stores, but we can't turn it on because
machineinstrs don't have volatility information and we don't want to
sink volatile stores :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45894 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
a22edc82cab86be4cb8876da1e6e78f82bb47a3e 11-Jan-2008 Chris Lattner <sabre@nondot.org> Simplify the side effect stuff a bit more and make licm/sinking
both work right according to the new flags.

This removes the TII::isReallySideEffectFree predicate, and adds
TII::isInvariantLoad.

It removes NeverHasSideEffects+MayHaveSideEffects and adds
UnmodeledSideEffects as machine instr flags. Now the clients
can decide everything they need.

I think isRematerializable can be implemented in terms of the
flags we have now, though I will let others tackle that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45843 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
achineSink.cpp
ea3a181a56ccc992e3ae5ec99ee1fd8fcd89f0cf 11-Jan-2008 Chris Lattner <sabre@nondot.org> Simplify the side effect stuff a bit more and make licm/sinking
both work right according to the new flags.

This removes the TII::isReallySideEffectFree predicate, and adds
TII::isInvariantLoad.

It removes NeverHasSideEffects+MayHaveSideEffects and adds
UnmodeledSideEffects as machine instr flags. Now the clients
can decide everything they need.

I think isRematerializable can be implemented in terms of the
flags we have now, though I will let others tackle that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45843 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
achineSink.cpp
244588820867ab4e42f72c266196b848919bfebb 10-Jan-2008 Chris Lattner <sabre@nondot.org> Clamp down on sinking of lots of instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45841 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
f270d32a67970a7b1b2fc1058fe79e3acd0fd71d 10-Jan-2008 Chris Lattner <sabre@nondot.org> Clamp down on sinking of lots of instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45841 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
007f9847c44ddbe7fd04cba362b4ec0f0f40964b 10-Jan-2008 Duncan Sands <baldrick@free.fr> Output sinl for a long double FSIN node, not sin.
Likewise fix up a bunch of other libcalls. While
there I remove NEG_F32 and NEG_F64 since they are
not used anywhere. This fixes 9 Ada ACATS failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45833 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
37a3f478f1c3080d8dcb0b4ae561c716e9969eef 10-Jan-2008 Duncan Sands <baldrick@free.fr> Output sinl for a long double FSIN node, not sin.
Likewise fix up a bunch of other libcalls. While
there I remove NEG_F32 and NEG_F64 since they are
not used anywhere. This fixes 9 Ada ACATS failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45833 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
8480293f41c11c22762164449e41cd3adb0dd7d8 10-Jan-2008 Evan Cheng <evan.cheng@apple.com> Only remat loads from immutable stack slots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45831 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
efe93677b27f625f29a92afaacc33a0d6cf2b1e5 10-Jan-2008 Evan Cheng <evan.cheng@apple.com> Only remat loads from immutable stack slots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45831 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a07cec9e24a286157541d2337cd66b24cd116586 10-Jan-2008 Evan Cheng <evan.cheng@apple.com> Simplify some code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45830 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
06701fc8dde2dade519a998975f91cb9abc55dd6 10-Jan-2008 Evan Cheng <evan.cheng@apple.com> Simplify some code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45830 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c95f075c43488234e44b1213dfd762ae0a7509ea 10-Jan-2008 Owen Anderson <resistor@mac.com> Don't use LiveVariables::VarInfo::DefInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45815 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
bceab63ca89db551017aeac300bf4f900788510d 10-Jan-2008 Owen Anderson <resistor@mac.com> Don't use LiveVariables::VarInfo::DefInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45815 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
038129dd58acbb2cd6e80bee05649903897df967 10-Jan-2008 Dale Johannesen <dalej@apple.com> Emit unused EH frames for weak definitions on Darwin,
because assembler/linker can't cope with weak absolutes.
PR 1880.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45811 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
f09b5999df8d9cbbd69dad7fb5cd61271c0a8000 10-Jan-2008 Dale Johannesen <dalej@apple.com> Emit unused EH frames for weak definitions on Darwin,
because assembler/linker can't cope with weak absolutes.
PR 1880.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45811 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
ddd060ffcfd56ef91eb28ce76a2b0576dfe51129 10-Jan-2008 Owen Anderson <resistor@mac.com> Get rid of all uses of LiveVariables::VarInfo::DefInst in favor of the equivalent API from
MachineRegisterInfo. Once all clients are switched over, the former will be going away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45805 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
ab9a00c3bfe31c58a5f96897a8f5764b9dd41008 10-Jan-2008 Owen Anderson <resistor@mac.com> Get rid of all uses of LiveVariables::VarInfo::DefInst in favor of the equivalent API from
MachineRegisterInfo. Once all clients are switched over, the former will be going away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45805 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
dc4d6558e41f1b1034a4f77385d2d4fea89f88db 10-Jan-2008 Owen Anderson <resistor@mac.com> Add more comments explaining the basics of how the decision of when to rename and when to insert
copies is made.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45799 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
d5beaec9dd4bc8d6985b901c6a1cc0942c1bac67 10-Jan-2008 Owen Anderson <resistor@mac.com> Add more comments explaining the basics of how the decision of when to rename and when to insert
copies is made.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45799 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
b199cbec2e84c46fc0883b3abca84a6adde08fea 10-Jan-2008 Owen Anderson <resistor@mac.com> Get rid of the isKillInst predicate. LiveVariables already provides this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45797 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
f2a8e0e297c74ec8d57075e90eaead3d00083b8b 10-Jan-2008 Owen Anderson <resistor@mac.com> Get rid of the isKillInst predicate. LiveVariables already provides this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45797 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
9c2efa8a8f961a3750cec21530a2681d25b3bd49 10-Jan-2008 Owen Anderson <resistor@mac.com> Copies need to be inserted before the first terminator, not at the end of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45791 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
c7c99c881ef92a08fd7d2dd45bd39e5b90b588c8 10-Jan-2008 Owen Anderson <resistor@mac.com> Copies need to be inserted before the first terminator, not at the end of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45791 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
19107563af7568713193c60be24503446556bff2 10-Jan-2008 Evan Cheng <evan.cheng@apple.com> Special copy SUnit's do not have SDNode's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45787 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
2661f5aafb9f867355f873de16204552a506d5b6 10-Jan-2008 Evan Cheng <evan.cheng@apple.com> Special copy SUnit's do not have SDNode's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45787 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
ec1213fbbba161401e22bd41005a3b1a39008807 09-Jan-2008 Owen Anderson <resistor@mac.com> Clean up StrongPHIElimination a bit, and add some more comments to the internal structures. There's
still more work to do on this front.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45783 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
876fadf20e111525d33e71867e6239cf57b3288c 09-Jan-2008 Owen Anderson <resistor@mac.com> Clean up StrongPHIElimination a bit, and add some more comments to the internal structures. There's
still more work to do on this front.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45783 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
864e3a3762b2155b21c09273128dd2565df00d71 09-Jan-2008 Owen Anderson <resistor@mac.com> StrongPHIElim: Now with even fewer trivial bugs!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45775 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
e1b8cc2ab70f6976a69ae37611cba9130e0ec479 09-Jan-2008 Owen Anderson <resistor@mac.com> StrongPHIElim: Now with even fewer trivial bugs!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45775 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
719fef648d8ed584fdd2b3e7c967cf0fe8c7925b 09-Jan-2008 Owen Anderson <resistor@mac.com> Fix an infinite recursion bug in InsertCopies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45774 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0e58fdcd0491ed1922f30ea50fb52c62207ee9a4 09-Jan-2008 Owen Anderson <resistor@mac.com> Fix an infinite recursion bug in InsertCopies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45774 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
cb7d949a19f8d00a019796dfc9342fe294df27c0 09-Jan-2008 Owen Anderson <resistor@mac.com> Fix some simple bugs. StrongPHIElimination now does not crash on 164.gzip.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45773 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
361063a0d6ecb7be8febcd86d6698205677e9634 09-Jan-2008 Owen Anderson <resistor@mac.com> Fix some simple bugs. StrongPHIElimination now does not crash on 164.gzip.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45773 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
07649d9265c9a378fe753f80601ae5f4de3312dc 09-Jan-2008 Chris Lattner <sabre@nondot.org> Make load->store deletion a bit smarter. This allows us to compile this:

void test(long long *P) { *P ^= 1; }

into just:

_test:
movl 4(%esp), %eax
xorl $1, (%eax)
ret

instead of code like this:

_test:
movl 4(%esp), %ecx
xorl $1, (%ecx)
movl 4(%ecx), %edx
movl %edx, 4(%ecx)
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45762 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2e0237787dc14f4d8938dc58cf4723ce9e151003 09-Jan-2008 Chris Lattner <sabre@nondot.org> Make load->store deletion a bit smarter. This allows us to compile this:

void test(long long *P) { *P ^= 1; }

into just:

_test:
movl 4(%esp), %eax
xorl $1, (%eax)
ret

instead of code like this:

_test:
movl 4(%esp), %ecx
xorl $1, (%ecx)
movl 4(%ecx), %edx
movl %edx, 4(%ecx)
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45762 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0c5714bb9944ed085fb5854ac4c6abf941c532ed 08-Jan-2008 Owen Anderson <resistor@mac.com> Rename registers that do not need copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45759 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
2e45bf7b3f946bee9eb481ccf0862959fa7bf1a7 08-Jan-2008 Owen Anderson <resistor@mac.com> Rename registers that do not need copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45759 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0d893b4038d11c619ef9679de8e0c62f60c73377 08-Jan-2008 Owen Anderson <resistor@mac.com> Actually insert copies now!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45738 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
226d8822c22b5d0e28ea3927171eb24c0f7aaeff 08-Jan-2008 Owen Anderson <resistor@mac.com> Actually insert copies now!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45738 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0b4825c38b2e2bd2805292f708610b4ad9c7bf92 07-Jan-2008 Owen Anderson <resistor@mac.com> Oops, missed one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45719 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
aeef909946d0be788cb3949e1548102bdb99910f 07-Jan-2008 Owen Anderson <resistor@mac.com> Oops, missed one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45719 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
9e549202a001cb416c98a75f3c6d6bd68ae4139f 07-Jan-2008 Owen Anderson <resistor@mac.com> Make some predicates static.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45718 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
884c19500a9f8a185466108702a05830bdf59e8f 07-Jan-2008 Owen Anderson <resistor@mac.com> Make some predicates static.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45718 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
c45d98d9664b2c7ed334d987a7c574f68edf98b7 07-Jan-2008 Gordon Henriksen <gordonhenriksen@mac.com> Pruning includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45700 91177308-0d34-0410-b5e6-96231b3b80d8
camlCollector.cpp
hadowStackCollector.cpp
840ba9396a2ed21aa00d497c379a1670e144963a 07-Jan-2008 Gordon Henriksen <gordonhenriksen@mac.com> Pruning includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45700 91177308-0d34-0410-b5e6-96231b3b80d8
camlCollector.cpp
hadowStackCollector.cpp
f14cf85e334ff03bbdd23e473f14ffa4fb025e94 07-Jan-2008 Chris Lattner <sabre@nondot.org> remove #includage


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45697 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineInstr.cpp
achineModuleInfo.cpp
8eaa5a97f96678525911d3922561f6776966c138 07-Jan-2008 Chris Lattner <sabre@nondot.org> remove #includage


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45697 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineInstr.cpp
achineModuleInfo.cpp
749c6f6b5ed301c84aac562e414486549d7b98eb 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename TargetInstrDescriptor -> TargetInstrDesc.
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45695 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ollector.cpp
warfWriter.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineLICM.cpp
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterScavenging.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
5b930374090970d785c0f77c2afc6d0a24c01f39 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename TargetInstrDescriptor -> TargetInstrDesc.
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45695 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ollector.cpp
warfWriter.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineLICM.cpp
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterScavenging.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
3db805ea80eeec9084a1b86273d93804d233d938 07-Jan-2008 Chris Lattner <sabre@nondot.org> simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45693 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d16b431d3a20c1913f433a847afe36e0ea392d84 07-Jan-2008 Chris Lattner <sabre@nondot.org> simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45693 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
0ff23966feb90618bec4d085095ffbc28426e691 07-Jan-2008 Chris Lattner <sabre@nondot.org> Rename all the M_* flags to be namespace qualified enums, and switch
all clients over to using predicates instead of these flags directly.
These are now private values which are only to be used to statically
initialize the tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
woAddressInstructionPass.cpp
d8529abca155e9add3d038481c9c7db119220a2b 07-Jan-2008 Chris Lattner <sabre@nondot.org> Rename all the M_* flags to be namespace qualified enums, and switch
all clients over to using predicates instead of these flags directly.
These are now private values which are only to be used to statically
initialize the tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
woAddressInstructionPass.cpp
e32d765f99f7ee0b8f50e419a2e1beb41003c99f 07-Jan-2008 Chris Lattner <sabre@nondot.org> add more and significantly better comments to the rest of the machineinstr
flags that can be set. Add predicates for the ones lacking it, and switch
some clients over to using the predicates instead of Flags directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45690 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
woAddressInstructionPass.cpp
d6bfd8a3783ab30372c557510b6217a40945a79c 07-Jan-2008 Chris Lattner <sabre@nondot.org> add more and significantly better comments to the rest of the machineinstr
flags that can be set. Add predicates for the ones lacking it, and switch
some clients over to using the predicates instead of Flags directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45690 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
woAddressInstructionPass.cpp
f86e1df8770faa76bb277d7c3c27a407869c6f0c 07-Jan-2008 Chris Lattner <sabre@nondot.org> simplify some code using new predicates



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45689 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
iveIntervalAnalysis.cpp
4335bff976322ecb58b44421c995f0bbfeeb576f 07-Jan-2008 Chris Lattner <sabre@nondot.org> simplify some code using new predicates



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45689 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
iveIntervalAnalysis.cpp
8f707e15fbd09ca948b86419bcb0c92470827ac9 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename hasVariableOperands() -> isVariadic(). Add some comments.
Evan, please review the comments I added to getNumDefs to make sure
that they are accurate, thx.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45687 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
2fb37c02f194e3dc9a9804dc7860701c072ea052 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename hasVariableOperands() -> isVariadic(). Add some comments.
Evan, please review the comments I added to getNumDefs to make sure
that they are accurate, thx.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45687 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
349c4952009525b27383e2120a6b3c998f39bd09 07-Jan-2008 Chris Lattner <sabre@nondot.org> Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45680 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
achineInstr.cpp
rologEpilogInserter.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
0c2a4f39ad5cdb32a2c4e20f787798d8af645393 07-Jan-2008 Chris Lattner <sabre@nondot.org> Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45680 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
achineInstr.cpp
rologEpilogInserter.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
ba6da5d5b72618c836ebc3a7613583a16bc8ceac 07-Jan-2008 Chris Lattner <sabre@nondot.org> remove some uses of MachineOpCode, move getSchedClass
into TargetInstrDescriptor from TargetInstrInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45678 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
3d54fcd67cddee78cd124515cf521da8ab74abcf 07-Jan-2008 Chris Lattner <sabre@nondot.org> remove some uses of MachineOpCode, move getSchedClass
into TargetInstrDescriptor from TargetInstrInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45678 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
8ca5c67c6e95fdcf5ddb2f06586873c843dd0cde 07-Jan-2008 Chris Lattner <sabre@nondot.org> Add predicates methods to TargetOperandInfo, and switch all clients
over to using them, instead of diddling Flags directly. Change the
various flags from const variables to enums.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45677 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
argetInstrInfoImpl.cpp
eeedb48603a82c7000532a395daa5212427d8c8d 07-Jan-2008 Chris Lattner <sabre@nondot.org> Add predicates methods to TargetOperandInfo, and switch all clients
over to using them, instead of diddling Flags directly. Change the
various flags from const variables to enums.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45677 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
argetInstrInfoImpl.cpp
572742e876478d3ec7ff0750c0473d7621804b15 07-Jan-2008 Gordon Henriksen <gordonhenriksen@mac.com> Setting GlobalDirective in TargetAsmInfo by default rather than
providing a misleading facility. It's used once in the MIPS backend
and hardcoded as "\t.globl\t" everywhere else.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45676 91177308-0d34-0410-b5e6-96231b3b80d8
camlCollector.cpp
e77ca040263516395fda6e17257ac790253f6c1c 07-Jan-2008 Gordon Henriksen <gordonhenriksen@mac.com> Setting GlobalDirective in TargetAsmInfo by default rather than
providing a misleading facility. It's used once in the MIPS backend
and hardcoded as "\t.globl\t" everywhere else.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45676 91177308-0d34-0410-b5e6-96231b3b80d8
camlCollector.cpp
69244300b8a0112efb44b6273ecea4ca6264b8cf 07-Jan-2008 Chris Lattner <sabre@nondot.org> Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects
that it is cheap and efficient to get.

Move a variety of predicates from TargetInstrInfo into
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around. Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.

Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45674 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ollector.cpp
warfWriter.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineLICM.cpp
rologEpilogInserter.cpp
egAllocSimple.cpp
egisterScavenging.cpp
electionDAG/ScheduleDAG.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
6232760ee0d566bcf09b2f20bae65c1d6e73946c 07-Jan-2008 Chris Lattner <sabre@nondot.org> Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects
that it is cheap and efficient to get.

Move a variety of predicates from TargetInstrInfo into
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around. Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.

Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45674 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ollector.cpp
warfWriter.cpp
fConversion.cpp
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineInstr.cpp
achineLICM.cpp
rologEpilogInserter.cpp
egAllocSimple.cpp
egisterScavenging.cpp
electionDAG/ScheduleDAG.cpp
argetInstrInfoImpl.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
6425f8be7263e625c2d7484eb2fb8f6643824f49 07-Jan-2008 Owen Anderson <resistor@mac.com> Update CodeGen for MRegisterInfo --> TargetInstrInfo changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45673 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
electionDAG/ScheduleDAGRRList.cpp
irtRegMap.cpp
bf15ae2d5bc058fac01b0480433907481e47d7a9 07-Jan-2008 Owen Anderson <resistor@mac.com> Update CodeGen for MRegisterInfo --> TargetInstrInfo changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45673 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
electionDAG/ScheduleDAGRRList.cpp
irtRegMap.cpp
93f96d00bf10299246ea726956ce84dcb4b9a59e 07-Jan-2008 Gordon Henriksen <gordonhenriksen@mac.com> Ammending r45669 with a missing file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45671 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
36464772ded6499fa5876398bb55ba31c020e4f2 07-Jan-2008 Gordon Henriksen <gordonhenriksen@mac.com> Ammending r45669 with a missing file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45671 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
8fa89291774a29ee30adb9d0fd01655c84eaac13 07-Jan-2008 Gordon Henriksen <gordonhenriksen@mac.com> With this patch, the LowerGC transformation becomes the
ShadowStackCollector, which additionally has reduced overhead with
no sacrifice in portability.

Considering a function @fun with 8 loop-local roots,
ShadowStackCollector introduces the following overhead
(x86):

; shadowstack prologue
movl L_llvm_gc_root_chain$non_lazy_ptr, %eax
movl (%eax), %ecx
movl $___gc_fun, 20(%esp)
movl $0, 24(%esp)
movl $0, 28(%esp)
movl $0, 32(%esp)
movl $0, 36(%esp)
movl $0, 40(%esp)
movl $0, 44(%esp)
movl $0, 48(%esp)
movl $0, 52(%esp)
movl %ecx, 16(%esp)
leal 16(%esp), %ecx
movl %ecx, (%eax)

; shadowstack loop overhead
(none)

; shadowstack epilogue
movl 48(%esp), %edx
movl %edx, (%ecx)

; shadowstack metadata
.align 3
___gc_fun: # __gc_fun
.long 8
.space 4

In comparison to LowerGC:

; lowergc prologue
movl L_llvm_gc_root_chain$non_lazy_ptr, %eax
movl (%eax), %ecx
movl %ecx, 48(%esp)
movl $8, 52(%esp)
movl $0, 60(%esp)
movl $0, 56(%esp)
movl $0, 68(%esp)
movl $0, 64(%esp)
movl $0, 76(%esp)
movl $0, 72(%esp)
movl $0, 84(%esp)
movl $0, 80(%esp)
movl $0, 92(%esp)
movl $0, 88(%esp)
movl $0, 100(%esp)
movl $0, 96(%esp)
movl $0, 108(%esp)
movl $0, 104(%esp)
movl $0, 116(%esp)
movl $0, 112(%esp)

; lowergc loop overhead
leal 44(%esp), %eax
movl %eax, 56(%esp)
leal 40(%esp), %eax
movl %eax, 64(%esp)
leal 36(%esp), %eax
movl %eax, 72(%esp)
leal 32(%esp), %eax
movl %eax, 80(%esp)
leal 28(%esp), %eax
movl %eax, 88(%esp)
leal 24(%esp), %eax
movl %eax, 96(%esp)
leal 20(%esp), %eax
movl %eax, 104(%esp)
leal 16(%esp), %eax
movl %eax, 112(%esp)

; lowergc epilogue
movl 48(%esp), %edx
movl %edx, (%ecx)

; lowergc metadata
(none)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45670 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackCollector.cpp
cc71a50ac7ba72f6405150297763be9c202c1d2b 07-Jan-2008 Gordon Henriksen <gordonhenriksen@mac.com> With this patch, the LowerGC transformation becomes the
ShadowStackCollector, which additionally has reduced overhead with
no sacrifice in portability.

Considering a function @fun with 8 loop-local roots,
ShadowStackCollector introduces the following overhead
(x86):

; shadowstack prologue
movl L_llvm_gc_root_chain$non_lazy_ptr, %eax
movl (%eax), %ecx
movl $___gc_fun, 20(%esp)
movl $0, 24(%esp)
movl $0, 28(%esp)
movl $0, 32(%esp)
movl $0, 36(%esp)
movl $0, 40(%esp)
movl $0, 44(%esp)
movl $0, 48(%esp)
movl $0, 52(%esp)
movl %ecx, 16(%esp)
leal 16(%esp), %ecx
movl %ecx, (%eax)

; shadowstack loop overhead
(none)

; shadowstack epilogue
movl 48(%esp), %edx
movl %edx, (%ecx)

; shadowstack metadata
.align 3
___gc_fun: # __gc_fun
.long 8
.space 4

In comparison to LowerGC:

; lowergc prologue
movl L_llvm_gc_root_chain$non_lazy_ptr, %eax
movl (%eax), %ecx
movl %ecx, 48(%esp)
movl $8, 52(%esp)
movl $0, 60(%esp)
movl $0, 56(%esp)
movl $0, 68(%esp)
movl $0, 64(%esp)
movl $0, 76(%esp)
movl $0, 72(%esp)
movl $0, 84(%esp)
movl $0, 80(%esp)
movl $0, 92(%esp)
movl $0, 88(%esp)
movl $0, 100(%esp)
movl $0, 96(%esp)
movl $0, 108(%esp)
movl $0, 104(%esp)
movl $0, 116(%esp)
movl $0, 112(%esp)

; lowergc loop overhead
leal 44(%esp), %eax
movl %eax, 56(%esp)
leal 40(%esp), %eax
movl %eax, 64(%esp)
leal 36(%esp), %eax
movl %eax, 72(%esp)
leal 32(%esp), %eax
movl %eax, 80(%esp)
leal 28(%esp), %eax
movl %eax, 88(%esp)
leal 24(%esp), %eax
movl %eax, 96(%esp)
leal 20(%esp), %eax
movl %eax, 104(%esp)
leal 16(%esp), %eax
movl %eax, 112(%esp)

; lowergc epilogue
movl 48(%esp), %edx
movl %edx, (%ecx)

; lowergc metadata
(none)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45670 91177308-0d34-0410-b5e6-96231b3b80d8
hadowStackCollector.cpp
ce2247755e56f99a2377b64a1a9d393726582b85 07-Jan-2008 Gordon Henriksen <gordonhenriksen@mac.com> Enabling the target-independent garbage collection infrastructure by hooking it
up to the various compiler pipelines.

This doesn't actually add support for any GC algorithms, which means it
temporarily breaks a few tests. To be fixed shortly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45669 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
EADME.txt
electionDAG/SelectionDAGISel.cpp
df87fdce8ab5371dd29aca057cbca22924840166 07-Jan-2008 Gordon Henriksen <gordonhenriksen@mac.com> Enabling the target-independent garbage collection infrastructure by hooking it
up to the various compiler pipelines.

This doesn't actually add support for any GC algorithms, which means it
temporarily breaks a few tests. To be fixed shortly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45669 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
EADME.txt
electionDAG/SelectionDAGISel.cpp
834f1ce0312e3d00d836f9560cb63182c2c4570f 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45667 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
iveIntervalAnalysis.cpp
1a1932c83d6b6fcbf089eee3f97b65a23de22a92 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45667 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
iveIntervalAnalysis.cpp
2e48a70b35635165703838fc8d3796b664207aa1 06-Jan-2008 Chris Lattner <sabre@nondot.org> rename isStore -> mayStore to more accurately reflect what it captures.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45656 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
6887b14d9f14d2c918e9ce18e433de9a7845a747 06-Jan-2008 Chris Lattner <sabre@nondot.org> rename isStore -> mayStore to more accurately reflect what it captures.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45656 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
920595a960fbebbf614dd159d54fc2e7ea279c22 06-Jan-2008 Duncan Sands <baldrick@free.fr> Remove an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45655 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
d9084fabf82468d23000a8e097f16e253758bd93 06-Jan-2008 Duncan Sands <baldrick@free.fr> Remove an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45655 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
19033bf7f8306131169e532c97e3ee4b745db221 06-Jan-2008 Chris Lattner <sabre@nondot.org> make this build with newer gcc's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45637 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
e2f2c4cf6fdfbaf99c53bb8de4c3d53466e4ba52 06-Jan-2008 Chris Lattner <sabre@nondot.org> make this build with newer gcc's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45637 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
2281a991414f681c482157265461b29a923ef620 05-Jan-2008 Nate Begeman <natebegeman@mac.com> If custom lowering of insert element fails, the result Val will be 0.
Don't overwrite a variable used by the fallthrough code path in this
case.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
11f2e1dd26a13838a9f9e3b0b288969acacdb763 05-Jan-2008 Nate Begeman <natebegeman@mac.com> If custom lowering of insert element fails, the result Val will be 0.
Don't overwrite a variable used by the fallthrough code path in this
case.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
54b62f3af50ef93df05e9f7634b6e4406ab56cc5 05-Jan-2008 Chris Lattner <sabre@nondot.org> Fix build issue on certain compilers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45629 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
cd8a384d01180db29d126f166ab386b8040426f9 05-Jan-2008 Chris Lattner <sabre@nondot.org> Fix build issue on certain compilers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45629 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
e430e1c07278d28f58fd94bac508469b8c1d1933 05-Jan-2008 Chris Lattner <sabre@nondot.org> The current impl is really trivial, add some comments about how it can be made better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45625 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
05bc7f5f90e46146b7ea0513fb4bb6620eae1684 05-Jan-2008 Chris Lattner <sabre@nondot.org> The current impl is really trivial, add some comments about how it can be made better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45625 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
3c42f1211874665e8ea6eea55a45024b557afa61 05-Jan-2008 Chris Lattner <sabre@nondot.org> allow sinking to be enabled for the jit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45624 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
a132dd405dd272fe5a34d171d0f991e085b8210f 05-Jan-2008 Chris Lattner <sabre@nondot.org> allow sinking to be enabled for the jit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45624 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ba84ed7e9234b7a84009b3cb8475d1be7b1529d9 05-Jan-2008 Chris Lattner <sabre@nondot.org> don't sink anything with side effects, this makes lots of stuff work, but sinks almost nothing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45617 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
f2706d8ef3459a99d2516d3e98185435b37fe679 05-Jan-2008 Chris Lattner <sabre@nondot.org> don't sink anything with side effects, this makes lots of stuff work, but sinks almost nothing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45617 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
9bb459b55411c45175e599f6f421b7a57060ee57 05-Jan-2008 Chris Lattner <sabre@nondot.org> fix a common crash.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45614 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
7ebe08504ba075c4a83df7ecec86d5e032b20781 05-Jan-2008 Chris Lattner <sabre@nondot.org> fix a common crash.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45614 91177308-0d34-0410-b5e6-96231b3b80d8
achineSink.cpp
a393cd3306b865e8e5d82dc4e6cfabcdf5d8dc44 05-Jan-2008 Owen Anderson <resistor@mac.com> I should not be allowed to commit when sleepy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45608 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
91eb6e6762367514cb1b3e9bb8da626417592398 05-Jan-2008 Owen Anderson <resistor@mac.com> I should not be allowed to commit when sleepy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45608 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
67d65bb69d5cad957cbb6d672dc0b4a19c211a42 04-Jan-2008 Bill Wendling <isanbard@gmail.com> Don't recalculate the loop info and loop dominators analyses if they're
preserved.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45596 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineDominators.cpp
achineLoopInfo.cpp
HIElimination.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
6226436fd365f491a87914451dcd2b04137994e9 04-Jan-2008 Bill Wendling <isanbard@gmail.com> Don't recalculate the loop info and loop dominators analyses if they're
preserved.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45596 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineDominators.cpp
achineLoopInfo.cpp
HIElimination.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
2674d71df02f562cf8c3bc011be92d6dcb9cd9aa 04-Jan-2008 Bill Wendling <isanbard@gmail.com> 80-column violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45574 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
9e4fedc9505c50322edb9262516dde7feb2d4a95 04-Jan-2008 Bill Wendling <isanbard@gmail.com> 80-column violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45574 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d5da7048c297deb6137ad10cac217c5d9d702065 04-Jan-2008 Bill Wendling <isanbard@gmail.com> Add that this preserves some analyses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45573 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
82721d4a406b18ab5b1005afa9943034285003e2 04-Jan-2008 Bill Wendling <isanbard@gmail.com> Add that this preserves some analyses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45573 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
cc8f603f531c906782e4966107ae29667eb6632c 04-Jan-2008 Bill Wendling <isanbard@gmail.com> Move option to enable machine LICM into LLVMTargetMachine.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45572 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineLICM.cpp
4aab7ae1bb860f54be28dd3819017337b28faeba 04-Jan-2008 Bill Wendling <isanbard@gmail.com> Move option to enable machine LICM into LLVMTargetMachine.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45572 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineLICM.cpp
b082c6f5d9ee0b70e0ce67a8e26dd0955a034599 04-Jan-2008 Bill Wendling <isanbard@gmail.com> Call the parent's getAnalysisUsage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45571 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
b43ca19cacd0bee7aa506ac6db7bde56abc67c9f 04-Jan-2008 Bill Wendling <isanbard@gmail.com> Call the parent's getAnalysisUsage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45571 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
c4ce73f666e7ab9a270982a575101df8aa6160d3 04-Jan-2008 Chris Lattner <sabre@nondot.org> Add a really quick hack at a machine code sinking pass, enabled with --enable-sinking.
It is missing validity checks, so it is known broken. However, it is powerful enough
to compile this contrived code:

void test1(int C, double A, double B, double *P) {
double Tmp = A*A+B*B;
*P = C ? Tmp : A;
}

into:

_test1:
movsd 8(%esp), %xmm0
cmpl $0, 4(%esp)
je LBB1_2 # entry
LBB1_1: # entry
movsd 16(%esp), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
LBB1_2: # entry
movl 24(%esp), %eax
movsd %xmm0, (%eax)
ret

instead of:

_test1:
movsd 16(%esp), %xmm0
mulsd %xmm0, %xmm0
movsd 8(%esp), %xmm1
movapd %xmm1, %xmm2
mulsd %xmm2, %xmm2
addsd %xmm0, %xmm2
cmpl $0, 4(%esp)
je LBB1_2 # entry
LBB1_1: # entry
movapd %xmm2, %xmm1
LBB1_2: # entry
movl 24(%esp), %eax
movsd %xmm1, (%eax)
ret

woo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45570 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineSink.cpp
3988226d5d4559c6518793c6aeb25b12c89dac47 04-Jan-2008 Chris Lattner <sabre@nondot.org> Add a really quick hack at a machine code sinking pass, enabled with --enable-sinking.
It is missing validity checks, so it is known broken. However, it is powerful enough
to compile this contrived code:

void test1(int C, double A, double B, double *P) {
double Tmp = A*A+B*B;
*P = C ? Tmp : A;
}

into:

_test1:
movsd 8(%esp), %xmm0
cmpl $0, 4(%esp)
je LBB1_2 # entry
LBB1_1: # entry
movsd 16(%esp), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
LBB1_2: # entry
movl 24(%esp), %eax
movsd %xmm0, (%eax)
ret

instead of:

_test1:
movsd 16(%esp), %xmm0
mulsd %xmm0, %xmm0
movsd 8(%esp), %xmm1
movapd %xmm1, %xmm2
mulsd %xmm2, %xmm2
addsd %xmm0, %xmm2
cmpl $0, 4(%esp)
je LBB1_2 # entry
LBB1_1: # entry
movapd %xmm2, %xmm1
LBB1_2: # entry
movl 24(%esp), %eax
movsd %xmm1, (%eax)
ret

woo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45570 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineSink.cpp
ac69582664714c2656a28ed6cb70627bb85ee673 04-Jan-2008 Chris Lattner <sabre@nondot.org> remove dead #includes and reorder the rest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45569 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
a8723bd19db307dd8470e7717dd29f0eeb3c850b 04-Jan-2008 Chris Lattner <sabre@nondot.org> remove dead #includes and reorder the rest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45569 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
dde059a9de65941e7b9013ddab92d3da403dd7be 02-Jan-2008 Bill Wendling <isanbard@gmail.com> Use the correct MachineRegisterInfo object.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45499 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
defbe518204889790965b20c13503cc10f485fdd 02-Jan-2008 Bill Wendling <isanbard@gmail.com> Use the correct MachineRegisterInfo object.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45499 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
a4b662272d2aa1a39025523fd9d1fdce9dfcbdb2 02-Jan-2008 Bill Wendling <isanbard@gmail.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45496 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
ab50dbdb44876a77c4ead30066f2f2a9d337e339 02-Jan-2008 Bill Wendling <isanbard@gmail.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45496 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
9258cd3994e54aaec66f69a321032e071391dc90 02-Jan-2008 Bill Wendling <isanbard@gmail.com> Use the new architecture to get the containing machine basic block for a machine
instruction. Also, use "splice" to move the new instruction instead of
remove/insert (where it was leaking memory anyway).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45492 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
129a9ac9b9762834e44f8856f872c2584ed0926a 02-Jan-2008 Bill Wendling <isanbard@gmail.com> Use the new architecture to get the containing machine basic block for a machine
instruction. Also, use "splice" to move the new instruction instead of
remove/insert (where it was leaking memory anyway).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45492 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
f6372aa1cc568df19da7c5023e83c75aa9404a07 01-Jan-2008 Owen Anderson <resistor@mac.com> Move some more instruction creation methods from RegisterInfo into InstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45484 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterScavenging.cpp
irtRegMap.cpp
8187543db9afdc5d465b604ce0bddea7695c78ab 01-Jan-2008 Owen Anderson <resistor@mac.com> Move some more instruction creation methods from RegisterInfo into InstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45484 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterScavenging.cpp
irtRegMap.cpp
80fe5311b5e9e5c4642ff46ba2377173c17797f6 01-Jan-2008 Chris Lattner <sabre@nondot.org> Make MachineRegisterInfo::getVRegDef more efficient by aiming the keep the def of the vreg at the start of the list, so the list doesn't need to be traversed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45483 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
6fc812d7bf18984c28b1db94030fe699c715596e 01-Jan-2008 Chris Lattner <sabre@nondot.org> Make MachineRegisterInfo::getVRegDef more efficient by aiming the keep the def of the vreg at the start of the list, so the list doesn't need to be traversed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45483 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e138b3dd1ff02d826233482831318708a166ed93 01-Jan-2008 Chris Lattner <sabre@nondot.org> switch the register iterator to act more like hte LLVM value iterator: dereferencing
it now returns the machineinstr of the use. To get the operand, use I.getOperand().

Add a new MachineRegisterInfo::replaceRegWith, which is basically like
Value::replaceAllUsesWith.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45482 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineRegisterInfo.cpp
8509363904b547c6864cbf29df16e6e05ebef549 01-Jan-2008 Chris Lattner <sabre@nondot.org> switch the register iterator to act more like hte LLVM value iterator: dereferencing
it now returns the machineinstr of the use. To get the operand, use I.getOperand().

Add a new MachineRegisterInfo::replaceRegWith, which is basically like
Value::replaceAllUsesWith.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45482 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineRegisterInfo.cpp
a91a7d594ff1e1503731ca92f72e627bdfd18f3f 01-Jan-2008 Chris Lattner <sabre@nondot.org> Add a trivial but handy function to efficiently return the machine
instruction that defines the specified vreg. Crazy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45480 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
df97d70c7e87d27c501a0080c477d07574fe5d92 01-Jan-2008 Chris Lattner <sabre@nondot.org> Add a trivial but handy function to efficiently return the machine
instruction that defines the specified vreg. Crazy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45480 91177308-0d34-0410-b5e6-96231b3b80d8
achineRegisterInfo.cpp
62ed6b9ade63bf01717ce5274fa11e93e873d245 01-Jan-2008 Chris Lattner <sabre@nondot.org> Implement automatically updated def/use lists for all MachineInstr register
operands. The lists are currently kept in MachineRegisterInfo, but it does
not yet provide an iterator interface to them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45477 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineInstr.cpp
achineRegisterInfo.cpp
e45742fb9fc7fc664dd4f2ceea271c5342779428 01-Jan-2008 Chris Lattner <sabre@nondot.org> Implement automatically updated def/use lists for all MachineInstr register
operands. The lists are currently kept in MachineRegisterInfo, but it does
not yet provide an iterator interface to them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45477 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineInstr.cpp
achineRegisterInfo.cpp
641055225092833197efe8e5bce01d50bcf1daae 01-Jan-2008 Chris Lattner <sabre@nondot.org> Fix a problem where lib/Target/TargetInstrInfo.h would include and use
a header file from libcodegen. This violates a layering order: codegen
depends on target, not the other way around. The fix to this is to
split TII into two classes, TII and TargetInstrInfoImpl, which defines
stuff that depends on libcodegen. It is defined in libcodegen, where
the base is not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45475 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
d2fd6db5816e58ea3287bef90250e044025e7bca 01-Jan-2008 Chris Lattner <sabre@nondot.org> Fix a problem where lib/Target/TargetInstrInfo.h would include and use
a header file from libcodegen. This violates a layering order: codegen
depends on target, not the other way around. The fix to this is to
split TII into two classes, TII and TargetInstrInfoImpl, which defines
stuff that depends on libcodegen. It is defined in libcodegen, where
the base is not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45475 91177308-0d34-0410-b5e6-96231b3b80d8
argetInstrInfoImpl.cpp
b027fa001f16660a231a54ecea6a79f5c7855d7c 31-Dec-2007 Duncan Sands <baldrick@free.fr> Fix PR1833 - eh.exception and eh.selector return two
values, which means doing extra legalization work.
It would be easier to get this kind of thing right if
there was some documentation...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45472 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c7f7d5e7c86e86b9fa99735f4bac646e74764810 31-Dec-2007 Duncan Sands <baldrick@free.fr> Fix PR1833 - eh.exception and eh.selector return two
values, which means doing extra legalization work.
It would be easier to get this kind of thing right if
there was some documentation...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45472 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d10fd9791c20fd8368fa0ce94b626b769c6c8ba0 31-Dec-2007 Owen Anderson <resistor@mac.com> Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of the
Machine-level API cleanup instigated by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45470 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
HIElimination.cpp
electionDAG/ScheduleDAG.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
8f2c893c01f61e358637d28c3b594a9310872d38 31-Dec-2007 Owen Anderson <resistor@mac.com> Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of the
Machine-level API cleanup instigated by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45470 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
HIElimination.cpp
electionDAG/ScheduleDAG.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
f20c1a497fe3922ac718429d65a5fe396890575e 31-Dec-2007 Chris Lattner <sabre@nondot.org> properly encapsulate the parent field of MBB and MI with get/set accessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45469 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
7ce487fdbbcfd58af1d55b119eaacba17bd6aea2 31-Dec-2007 Chris Lattner <sabre@nondot.org> properly encapsulate the parent field of MBB and MI with get/set accessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45469 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
534bcfb270d25d2a29759d19981443fee7260e94 31-Dec-2007 Chris Lattner <sabre@nondot.org> update a couple of references to SSARegMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45468 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
impleRegisterCoalescing.cpp
b70e15149601396707d0727ece3a5b836bea6ffb 31-Dec-2007 Chris Lattner <sabre@nondot.org> update a couple of references to SSARegMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45468 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
impleRegisterCoalescing.cpp
84bc5427d6883f73cfeae3da640acd011d35c006 31-Dec-2007 Chris Lattner <sabre@nondot.org> Rename SSARegMap -> MachineRegisterInfo in keeping with the idea
that "machine" classes are used to represent the current state of
the code being compiled. Given this expanded name, we can start
moving other stuff into it. For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.

Update all the clients to match.

This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45467 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ollector.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achineFunction.cpp
achineInstr.cpp
achineRegisterInfo.cpp
HIElimination.cpp
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
1b98919de35bee879f414e9b97b38eeb9df287bc 31-Dec-2007 Chris Lattner <sabre@nondot.org> Rename SSARegMap -> MachineRegisterInfo in keeping with the idea
that "machine" classes are used to represent the current state of
the code being compiled. Given this expanded name, we can start
moving other stuff into it. For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.

Update all the clients to match.

This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45467 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ollector.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achineFunction.cpp
achineInstr.cpp
achineRegisterInfo.cpp
HIElimination.cpp
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
impleRegisterCoalescing.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
8aa797aa51cd4ea1ec6f46f4891a6897944b75b2 31-Dec-2007 Chris Lattner <sabre@nondot.org> Add new shorter predicates for testing machine operands for various types:
e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on
switching everything over, so new clients should just start using the
shorter names.

Remove old long accessors, switching everything over to use the short
accessor: getMachineBasicBlock() -> getMBB(),
getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45464 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineInstr.cpp
HIElimination.cpp
trongPHIElimination.cpp
6017d48252df62d121344138c5ba9241f7bd73b8 31-Dec-2007 Chris Lattner <sabre@nondot.org> Add new shorter predicates for testing machine operands for various types:
e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on
switching everything over, so new clients should just start using the
shorter names.

Remove old long accessors, switching everything over to use the short
accessor: getMachineBasicBlock() -> getMBB(),
getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45464 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineInstr.cpp
HIElimination.cpp
trongPHIElimination.cpp
f73823000e2d5d6e1cf65bdf5a107297e18d35fb 30-Dec-2007 Chris Lattner <sabre@nondot.org> More cleanups for MachineOperand:
- Eliminate the static "print" method for operands, moving it
into MachineOperand::print.
- Change various set* methods for register flags to take a bool
for the value to set it to. Remove unset* methods.
- Group methods more logically by operand flavor in MachineOperand.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45461 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
7f2d3b8e464f669fa5a3cce3445ec5441eb7b02c 30-Dec-2007 Chris Lattner <sabre@nondot.org> More cleanups for MachineOperand:
- Eliminate the static "print" method for operands, moving it
into MachineOperand::print.
- Change various set* methods for register flags to take a bool
for the value to set it to. Remove unset* methods.
- Group methods more logically by operand flavor in MachineOperand.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45461 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
e3087890ac7f2fcf4697f8e09091e9a384311b9c 30-Dec-2007 Chris Lattner <sabre@nondot.org> MachineOperand:
- Add getParent() accessors.
- Move SubReg out of the AuxInfo union, to make way for future changes.
- Remove the getImmedValue/setImmedValue methods.
- in some MachineOperand::Create* methods, stop initializing fields that are dead.

MachineInstr:
- Delete one copy of the MachineInstr printing code, now there is only one dump
format and one copy of the code.
- Make MachineOperand use the parent field to get info about preg register names if
no target info is otherwise available.
- Move def/use/kill/dead flag printing to the machineoperand printer, so they are
always printed for an operand.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45460 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9607bb8439f237eb08432bda92e501c821a7c11b 30-Dec-2007 Chris Lattner <sabre@nondot.org> MachineOperand:
- Add getParent() accessors.
- Move SubReg out of the AuxInfo union, to make way for future changes.
- Remove the getImmedValue/setImmedValue methods.
- in some MachineOperand::Create* methods, stop initializing fields that are dead.

MachineInstr:
- Delete one copy of the MachineInstr printing code, now there is only one dump
format and one copy of the code.
- Make MachineOperand use the parent field to get info about preg register names if
no target info is otherwise available.
- Move def/use/kill/dead flag printing to the machineoperand printer, so they are
always printed for an operand.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45460 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1c3e1e2ed07597111f0b1b1bb93b8080c96c526b 30-Dec-2007 Chris Lattner <sabre@nondot.org> fix typo duncan noticed!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45459 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
0bcfea01008bc931f5877020d4f3db72638c7c39 30-Dec-2007 Chris Lattner <sabre@nondot.org> fix typo duncan noticed!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45459 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e26dcfe6affca105469db974d990c961e5ed3437 30-Dec-2007 Chris Lattner <sabre@nondot.org> simpilfy some register printing code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45458 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
216ac7c3ee2a583362886cb4166ec2b5722871ff 30-Dec-2007 Chris Lattner <sabre@nondot.org> simpilfy some register printing code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45458 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
7da5313d3f20ff4bf491a828726c8b11d88bfa7c 30-Dec-2007 Chris Lattner <sabre@nondot.org> eliminate a copy of the machineoperand printing stuff. Keep the copy that
knows how to print offsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45457 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
5e43bfd38ddaf16adf876f6d5f17bb47bb11873c 30-Dec-2007 Chris Lattner <sabre@nondot.org> eliminate a copy of the machineoperand printing stuff. Keep the copy that
knows how to print offsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45457 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
fde5f801be6bb75fad4e7a39b5bc62c04857ac0c 30-Dec-2007 Chris Lattner <sabre@nondot.org> Simplify and clean up some machine operand/instr printing/dumping stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45456 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
8d5e9a8017f24f6afb8eefbeec99f5359db2c022 30-Dec-2007 Chris Lattner <sabre@nondot.org> Simplify and clean up some machine operand/instr printing/dumping stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45456 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
0974d9a5247a1f70ab739191ce5d768488a0f8aa 30-Dec-2007 Chris Lattner <sabre@nondot.org> two register machineoperands are not identical unless their subregs match.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45455 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
6afc4e30cef40488c360911876226d620304946a 30-Dec-2007 Chris Lattner <sabre@nondot.org> two register machineoperands are not identical unless their subregs match.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45455 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9e3304900ff69c4920fea7369c9c36916c4a6a6a 30-Dec-2007 Chris Lattner <sabre@nondot.org> MachineOperand::getImmedValue -> MachineOperand::getImm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45454 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
achineInstr.cpp
rologEpilogInserter.cpp
da4cff1dd7e8baa66d9191afd0705694e6cf1f84 30-Dec-2007 Chris Lattner <sabre@nondot.org> MachineOperand::getImmedValue -> MachineOperand::getImm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45454 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
achineInstr.cpp
rologEpilogInserter.cpp
e12d6abfdfc5141b2001f0c369a0e1525315b9c0 30-Dec-2007 Chris Lattner <sabre@nondot.org> make machine operands fatter: give each one an up-pointer to the
machineinstr that owns it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45449 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e722c3f005ae1e96250ddd3577f9eb56a8ad14cb 30-Dec-2007 Chris Lattner <sabre@nondot.org> make machine operands fatter: give each one an up-pointer to the
machineinstr that owns it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45449 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9ce2e9d5a07cb3e0176cb32838231243829d67c5 30-Dec-2007 Chris Lattner <sabre@nondot.org> use simplified operand addition methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e44906f4b91f33feadb5b776ee3579ef4cdccc0d 30-Dec-2007 Chris Lattner <sabre@nondot.org> use simplified operand addition methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fec65d55626d302de8049eea8f3a1338a261dd11 30-Dec-2007 Chris Lattner <sabre@nondot.org> use simplified operand addition methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45435 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
8dfd3127a57701e1570362697771b637530ff212 30-Dec-2007 Chris Lattner <sabre@nondot.org> use simplified operand addition methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45435 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
8019f41c0b7fda031d494e3900eada7d4e494772 30-Dec-2007 Chris Lattner <sabre@nondot.org> Start using the simplified methods for adding operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45432 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
63ab1f2d37f620bb9dde5c7b2a02571604e1055c 30-Dec-2007 Chris Lattner <sabre@nondot.org> Start using the simplified methods for adding operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45432 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
a4161ee99478e7f8f9e33481e1c0dc79f0b4bd7d 30-Dec-2007 Chris Lattner <sabre@nondot.org> simplify some code by factoring operand construction better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45428 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
720b6cfa659ce691d2ef906ba1ac34e35272aa75 30-Dec-2007 Chris Lattner <sabre@nondot.org> simplify some code by factoring operand construction better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45428 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
4ee451de366474b9c228b4e5fa573795a715216d 29-Dec-2007 Chris Lattner <sabre@nondot.org> Remove attribution from file headers, per discussion on llvmdev.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
ollector.cpp
ollectorMetadata.cpp
ollectors.cpp
warfWriter.cpp
LFWriter.cpp
LFWriter.h
fConversion.cpp
ntrinsicLowering.cpp
LVMTargetMachine.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achOWriter.cpp
achOWriter.h
achineBasicBlock.cpp
achineDominators.cpp
achineFunction.cpp
achineInstr.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achinePassRegistry.cpp
HIElimination.cpp
asses.cpp
hysRegTracker.h
ostRASchedulerList.cpp
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterCoalescer.cpp
egisterScavenging.cpp
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
irtRegMap.h
081ce940e7351e90fff829320b7dc6738a6b3815 29-Dec-2007 Chris Lattner <sabre@nondot.org> Remove attribution from file headers, per discussion on llvmdev.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
ollector.cpp
ollectorMetadata.cpp
ollectors.cpp
warfWriter.cpp
LFWriter.cpp
LFWriter.h
fConversion.cpp
ntrinsicLowering.cpp
LVMTargetMachine.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achOWriter.cpp
achOWriter.h
achineBasicBlock.cpp
achineDominators.cpp
achineFunction.cpp
achineInstr.cpp
achineLICM.cpp
achineLoopInfo.cpp
achineModuleInfo.cpp
achinePassRegistry.cpp
HIElimination.cpp
asses.cpp
hysRegTracker.h
ostRASchedulerList.cpp
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterCoalescer.cpp
egisterScavenging.cpp
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesPromote.cpp
electionDAG/LegalizeTypesScalarize.cpp
electionDAG/LegalizeTypesSplit.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
trongPHIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
irtRegMap.h
fc643c5e88c596f217750dd91fcc66488dfed73d 29-Dec-2007 Chris Lattner <sabre@nondot.org> remove attribution from lib Makefiles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45415 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
electionDAG/Makefile
80455b86f2c6c56b56f690db3c1fdd3a401f9df3 29-Dec-2007 Chris Lattner <sabre@nondot.org> remove attribution from lib Makefiles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45415 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
electionDAG/Makefile
63079f0757785c5c461bafdd3101ee40aeb717fe 29-Dec-2007 Chris Lattner <sabre@nondot.org> Fold comparisons against a constant nan, and optimize ORD/UNORD
comparisons with a constant. This allows us to compile isnan to:

_foo:
fcmpu cr7, f1, f1
mfcr r2
rlwinm r3, r2, 0, 31, 31
blr

instead of:

LCPI1_0: ; float
.space 4
_foo:
lis r2, ha16(LCPI1_0)
lfs f0, lo16(LCPI1_0)(r2)
fcmpu cr7, f1, f0
mfcr r2
rlwinm r3, r2, 0, 31, 31
blr



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45405 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
4218443a430ae477b64b8edf2a6fd0d88cfe9344 29-Dec-2007 Chris Lattner <sabre@nondot.org> Fold comparisons against a constant nan, and optimize ORD/UNORD
comparisons with a constant. This allows us to compile isnan to:

_foo:
fcmpu cr7, f1, f1
mfcr r2
rlwinm r3, r2, 0, 31, 31
blr

instead of:

LCPI1_0: ; float
.space 4
_foo:
lis r2, ha16(LCPI1_0)
lfs f0, lo16(LCPI1_0)(r2)
fcmpu cr7, f1, f0
mfcr r2
rlwinm r3, r2, 0, 31, 31
blr



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45405 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b253a8b382824586066a299e1279838f41117e3b 29-Dec-2007 Chris Lattner <sabre@nondot.org> make sure not to zap volatile stores, thanks a lot to Dale for noticing this!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45402 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3d98c49d173bdccb5fc23a73691701af6ef033cc 29-Dec-2007 Chris Lattner <sabre@nondot.org> make sure not to zap volatile stores, thanks a lot to Dale for noticing this!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45402 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5938bef2d259ca7648481ec3fb4cefbdff22458d 29-Dec-2007 Chris Lattner <sabre@nondot.org> don't fold fp_round(fp_extend(load)) -> fp_round(extload)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45400 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6f981fc6b7e7eb555763b21d0f161874475b1869 29-Dec-2007 Chris Lattner <sabre@nondot.org> don't fold fp_round(fp_extend(load)) -> fp_round(extload)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45400 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3c87285af63bc6d9b93f8eefe46ce9fea063d66c 29-Dec-2007 Chris Lattner <sabre@nondot.org> Delete a store whose input is a load from the same pointer:
x = load p
store x -> p


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
447d8e8978ea81da25e7cac988a57998ce2cba6d 29-Dec-2007 Chris Lattner <sabre@nondot.org> Delete a store whose input is a load from the same pointer:
x = load p
store x -> p


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f1519e836145fb243d659f5f6b4f92a93aa5de5e 24-Dec-2007 Owen Anderson <resistor@mac.com> Flesh out the Briggs implementation a little bit more, fix a few FIXMEs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45347 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
7e1df66f1d7dd983c59d5e6dc23b6dd52a2629b2 24-Dec-2007 Owen Anderson <resistor@mac.com> Flesh out the Briggs implementation a little bit more, fix a few FIXMEs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45347 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
efbcebc95dc8a7936dda8ec5733b6f6d4bd62343 23-Dec-2007 Owen Anderson <resistor@mac.com> Sketch out an implementation of Briggs' copy placement algorithm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45334 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0bab291870e7a229a905e711bc41563dc53d66ec 23-Dec-2007 Owen Anderson <resistor@mac.com> Sketch out an implementation of Briggs' copy placement algorithm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45334 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
2ceb2cfa8e8580a7d080f5c6235ab133b97fb8fb 22-Dec-2007 Chris Lattner <sabre@nondot.org> initial code for forming an FGETSIGN node. This is disabled until
legalizer support goes in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45323 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
516731f9fd4eb91c18fa8fbecdff33eea3d4837f 22-Dec-2007 Chris Lattner <sabre@nondot.org> initial code for forming an FGETSIGN node. This is disabled until
legalizer support goes in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45323 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d268a497f916b65efaf9ae7392f81d12d4f95e00 22-Dec-2007 Chris Lattner <sabre@nondot.org> improve support for fgetsign


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45322 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
13f06830c10455e7adbbd55161bf03989b4a06a9 22-Dec-2007 Chris Lattner <sabre@nondot.org> improve support for fgetsign


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45322 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b16f55f3c82fe72e2ca73f1071db5daaa2124e51 22-Dec-2007 Chris Lattner <sabre@nondot.org> Tell TargetLoweringOpt whether it is running before
or after legalize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45321 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2f36eb975c28224cd21bfe7f930271dd64a15bdd 22-Dec-2007 Chris Lattner <sabre@nondot.org> Tell TargetLoweringOpt whether it is running before
or after legalize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45321 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1a3048bb8e0f3de0b4e56704c15c556c71565f4b 22-Dec-2007 Chris Lattner <sabre@nondot.org> Add a new FGETSIGN operation, which defaults to expand on all
targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
db5f7ff22ab5d435e137f48cdd77d57285ae5718 22-Dec-2007 Chris Lattner <sabre@nondot.org> Add a new FGETSIGN operation, which defaults to expand on all
targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
a6c99250877dad280fbd59480463bd9f91740187 22-Dec-2007 Gordon Henriksen <gordonhenriksen@mac.com> Use getIntrinsicID instead of looking up intrinsic prototypes. Also
fixes a bug with indirect calls. (Test case will be included with
ocaml collector patch.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45316 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
174d28ae515cb574cf5d84187c2396ae1ca16230 22-Dec-2007 Gordon Henriksen <gordonhenriksen@mac.com> Use getIntrinsicID instead of looking up intrinsic prototypes. Also
fixes a bug with indirect calls. (Test case will be included with
ocaml collector patch.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45316 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
cae8d8d4bebd0517c16145cf3bc3304e8eadad6b 22-Dec-2007 Owen Anderson <resistor@mac.com> Note what still needs doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45310 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
4b2483cc0dffb3f5c46819bc6f40edefedcaa28e 22-Dec-2007 Owen Anderson <resistor@mac.com> Note what still needs doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45310 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
22c43b2988f1167a5fe8a2b067bd0e1798dbc710 22-Dec-2007 Owen Anderson <resistor@mac.com> Remove critical edge breaking. It won't be necessary as long as we are very careful when inserting copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45309 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
7c2e8fb2db6925714ae1b2e0aa8444a10521a377 22-Dec-2007 Owen Anderson <resistor@mac.com> Remove critical edge breaking. It won't be necessary as long as we are very careful when inserting copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45309 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
180c210a1d96a56ae0611d4f8de81e1ada5559eb 20-Dec-2007 Evan Cheng <evan.cheng@apple.com> More accurate checks for two-address constraints.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45259 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
08b7f349cd997c04b29d18916e3f9038c5e55d11 20-Dec-2007 Evan Cheng <evan.cheng@apple.com> More accurate checks for two-address constraints.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45259 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
689494208b555240d6021a7bbc25b9bbb9c2d49f 20-Dec-2007 Evan Cheng <evan.cheng@apple.com> The physical register + virtual register joining requirement was much too strict.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45253 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
16228e6b8cc0b2f74f9bd9e4830331050c33c7a7 20-Dec-2007 Evan Cheng <evan.cheng@apple.com> The physical register + virtual register joining requirement was much too strict.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45253 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d6c0758944b31bb5316b36cad37f4610a77f784d 20-Dec-2007 Evan Cheng <evan.cheng@apple.com> Bring back a burr scheduling heuristic that's still needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45252 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
7cead1c297f367069a91935694ae50eb5093c25b 20-Dec-2007 Evan Cheng <evan.cheng@apple.com> Bring back a burr scheduling heuristic that's still needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45252 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
60ff1a300523d931bc297905a7238219e789028d 20-Dec-2007 Bill Wendling <isanbard@gmail.com> Updated comments to reflect what "side effects" means in this situation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45245 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
5b1d665107ce073a0262df7c125f0612b8a29216 20-Dec-2007 Bill Wendling <isanbard@gmail.com> Updated comments to reflect what "side effects" means in this situation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45245 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
6f74b48862948ebb83c7bf7036a76c9e84543fb4 19-Dec-2007 Duncan Sands <baldrick@free.fr> Simplify LowerCallTo by using a callsite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45198 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e9bc9133656455ac559188a17e7b78424ef75934 19-Dec-2007 Duncan Sands <baldrick@free.fr> Simplify LowerCallTo by using a callsite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45198 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
481dc721c37a3da0b3cc88191d01fe5b523625ee 19-Dec-2007 Duncan Sands <baldrick@free.fr> The C++ exception handling personality function wants
to know about calls that cannot throw ('nounwind'):
if such a call does throw for some reason then the
personality will terminate the program. The distinction
between an ordinary call and a nounwind call is that
an ordinary call gets an entry in the exception table
but a nounwind call does not. This patch sets up the
exception table appropriately. One oddity is that
I've chosen to bracket nounwind calls with labels (like
invokes) - the other choice would have been to bracket
ordinary calls with labels. While bracketing
ordinary calls is more natural (because bracketing
by labels would then correspond exactly to getting an
entry in the exception table), I didn't do it because
introducing labels impedes some optimizations and I'm
guessing that ordinary calls occur more often than
nounwind calls. This fixes the gcc filter2 eh test,
at least at -O0 (the inliner needs some tweaking at
higher optimization levels).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45197 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
4ff179f65b51bfbeff381a5d4c38f1b00a1f5e52 19-Dec-2007 Duncan Sands <baldrick@free.fr> The C++ exception handling personality function wants
to know about calls that cannot throw ('nounwind'):
if such a call does throw for some reason then the
personality will terminate the program. The distinction
between an ordinary call and a nounwind call is that
an ordinary call gets an entry in the exception table
but a nounwind call does not. This patch sets up the
exception table appropriately. One oddity is that
I've chosen to bracket nounwind calls with labels (like
invokes) - the other choice would have been to bracket
ordinary calls with labels. While bracketing
ordinary calls is more natural (because bracketing
by labels would then correspond exactly to getting an
entry in the exception table), I didn't do it because
introducing labels impedes some optimizations and I'm
guessing that ordinary calls occur more often than
nounwind calls. This fixes the gcc filter2 eh test,
at least at -O0 (the inliner needs some tweaking at
higher optimization levels).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45197 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
02132d62c1ed55fc0d5e03413c314fffc59489f0 19-Dec-2007 Evan Cheng <evan.cheng@apple.com> Don't leave newly created nodes around if it turns out they are not needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45186 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
72b84d0735cd0ab995da3dcac1472ed3e497f97c 19-Dec-2007 Evan Cheng <evan.cheng@apple.com> Don't leave newly created nodes around if it turns out they are not needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45186 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
280f4565eb599ce424c204b9ea07130d772af7e3 18-Dec-2007 Bill Wendling <isanbard@gmail.com> Add debugging info. Use the newly created "hasUnmodelledSideEffects" method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45178 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
558e3bc8fe1ff2a093f709d0d3388e341eff1326 18-Dec-2007 Bill Wendling <isanbard@gmail.com> Add debugging info. Use the newly created "hasUnmodelledSideEffects" method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45178 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
feb8893d1757cc4f9400a5969df7f926606e246e 18-Dec-2007 Anton Korobeynikov <asl@math.spbu.ru> Support more insane CEP's in AsmPrinter (Yes, PyPy folks do really use them).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45172 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
d3b5874e753cbb928decb1c40b4600a4a20272af 18-Dec-2007 Anton Korobeynikov <asl@math.spbu.ru> Support more insane CEP's in AsmPrinter (Yes, PyPy folks do really use them).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45172 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
636e5a216c8dab7567b5e5d8d1c7d982f507f7eb 18-Dec-2007 Evan Cheng <evan.cheng@apple.com> Fix PR1872: SrcValue and SrcValueOffset should not be used to compute load / store node id.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45167 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
38c24dbf709fbc6f0da02f2ed621abebda70858b 18-Dec-2007 Evan Cheng <evan.cheng@apple.com> Fix PR1872: SrcValue and SrcValueOffset should not be used to compute load / store node id.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45167 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
81310138619ac46a4eb5ea9a28929c9f5ea8012c 18-Dec-2007 Evan Cheng <evan.cheng@apple.com> Also print alignment and volatileness.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
034c4f82d9316b2674e98abf4dcf38b13aa51924 18-Dec-2007 Evan Cheng <evan.cheng@apple.com> Also print alignment and volatileness.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
beec823d4bba22b1c0c6658d2b3e71cd64a70e2e 18-Dec-2007 Evan Cheng <evan.cheng@apple.com> FIX for PR1799: When a load is unfolded from an instruction, check if it is a new node. If not, do not create a new SUnit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45157 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
2e03ad02219f50c6001f085c9a7e110f1148fbf5 18-Dec-2007 Evan Cheng <evan.cheng@apple.com> FIX for PR1799: When a load is unfolded from an instruction, check if it is a new node. If not, do not create a new SUnit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45157 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
88ce93e0efc644e1a27a518d2c26f62a1d9ddb7a 18-Dec-2007 Evan Cheng <evan.cheng@apple.com> SelectionDAG::dump() should print SrcValue of LoadSDNode and StoreSDNode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45151 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7196a7bf345a8c2ba8f18be10e9394b4e55d6ef3 18-Dec-2007 Evan Cheng <evan.cheng@apple.com> SelectionDAG::dump() should print SrcValue of LoadSDNode and StoreSDNode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45151 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
fd7b326bea39c077eea8d378156bcf09051cc4ec 17-Dec-2007 Duncan Sands <baldrick@free.fr> Make invokes of inline asm legal. Teach codegen
how to lower them (with no attempt made to be
efficient, since they should only occur for
unoptimized code).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45108 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1c5526cec6518153bbd04821ca59a592f27fc04b 17-Dec-2007 Duncan Sands <baldrick@free.fr> Make invokes of inline asm legal. Teach codegen
how to lower them (with no attempt made to be
efficient, since they should only occur for
unoptimized code).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45108 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
43ad6b3e0d6ada51e9b23aab3e061187f1f5710c 17-Dec-2007 Christopher Lamb <christopher.lamb@gmail.com> Change the PointerType api for creating pointer types. The old functionality of PointerType::get() has become PointerType::getUnqual(), which returns a pointer in the generic address space. The new prototype of PointerType::get() requires both a type and an address space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45082 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
achineModuleInfo.cpp
bb2f2222b45179d8ddd0c7d481ad9dc068c82b6c 17-Dec-2007 Christopher Lamb <christopher.lamb@gmail.com> Change the PointerType api for creating pointer types. The old functionality of PointerType::get() has become PointerType::getUnqual(), which returns a pointer in the generic address space. The new prototype of PointerType::get() requires both a type and an address space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45082 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
achineModuleInfo.cpp
87a702be1a1d5f1be2e5f78bb0a22447e22c139a 16-Dec-2007 Owen Anderson <resistor@mac.com> Break local interferences in StrongPHIElimination. One step closer...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45070 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
455aa71df3996bdf6411be9ad9a29b509d92560a 16-Dec-2007 Owen Anderson <resistor@mac.com> Break local interferences in StrongPHIElimination. One step closer...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45070 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
965b4677670ad6103cc95989c4baa57bb6d01e83 16-Dec-2007 Owen Anderson <resistor@mac.com> A few more comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45069 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
de819d779135b59d25fbed6c3128cb80f5dddc32 16-Dec-2007 Owen Anderson <resistor@mac.com> A few more comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45069 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
ded2b0d0fb0d4fa09198e3d05da529d2c97214c3 14-Dec-2007 Dan Gohman <gohman@apple.com> Add explicit keywords, and fix a minor typo that they uncovered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45034 91177308-0d34-0410-b5e6-96231b3b80d8
ollectorMetadata.cpp
LFWriter.cpp
impleRegisterCoalescing.h
c43c7f4dc736f7a5811b5dc0d7bc654703d40349 14-Dec-2007 Dan Gohman <djg@cray.com> Add explicit keywords, and fix a minor typo that they uncovered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45034 91177308-0d34-0410-b5e6-96231b3b80d8
ollectorMetadata.cpp
LFWriter.cpp
impleRegisterCoalescing.h
7c07aebd19ea07c6219c36c9e96a5d7a6052ba95 14-Dec-2007 Evan Cheng <evan.cheng@apple.com> Bug fix. Must also match ResNo when matching an operand with a user.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45028 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
4f0345c285f0194616be756b6138d40f810b0984 14-Dec-2007 Evan Cheng <evan.cheng@apple.com> Bug fix. Must also match ResNo when matching an operand with a user.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45028 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
62d67dd3a3384d3899ca32aebd3d19bbf8b7d326 13-Dec-2007 Owen Anderson <resistor@mac.com> Add register pairs to the list to check for local interferences.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44987 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
840ec7df190c23862ea0b7548b932e37f781dddc 13-Dec-2007 Owen Anderson <resistor@mac.com> Add register pairs to the list to check for local interferences.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44987 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
4ba08ecbcf7f784ec1d8ece7f062c529b668085a 13-Dec-2007 Owen Anderson <resistor@mac.com> Remove ugly and horrible code. It's not necessary for correctness, and can be added back later if it causes code quality issues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44986 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
3b84b06aff4fcb566a015f2a97842afa1dccf32b 13-Dec-2007 Owen Anderson <resistor@mac.com> Remove ugly and horrible code. It's not necessary for correctness, and can be added back later if it causes code quality issues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44986 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
6e141fd04897e5eb4925bb6351297170ebd8a756 13-Dec-2007 Evan Cheng <evan.cheng@apple.com> Implicit def instructions, e.g. X86::IMPLICIT_DEF_GR32, are always re-materializable and they should not be spilled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44960 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e399fbbd8e53d83a50781b790d15de2a5b89373c 13-Dec-2007 Evan Cheng <evan.cheng@apple.com> Implicit def instructions, e.g. X86::IMPLICIT_DEF_GR32, are always re-materializable and they should not be spilled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44960 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
890813243f9b4f5aa9c6d5ab79ffe948458197ab 12-Dec-2007 Dan Gohman <gohman@apple.com> Allow vector integer constants to be created with
SelectionDAG::getConstant, in the same way as vector floating-point
constants. This allows the legalize expansion code for @llvm.ctpop and
friends to be usable with vector types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44954 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5b9d641e6a10c9aee165d2d492a5899dc99057db 12-Dec-2007 Dan Gohman <djg@cray.com> Allow vector integer constants to be created with
SelectionDAG::getConstant, in the same way as vector floating-point
constants. This allows the legalize expansion code for @llvm.ctpop and
friends to be usable with vector types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44954 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ed2ffa25a18db3e9537bf919140f688bc415a055 12-Dec-2007 Owen Anderson <resistor@mac.com> Forgot to remove a register from the PHI-union after I'd determined that it
interfered with other registers. Seems like that might be a good thing to do. :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44902 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
64548bfce1f47c04f1c7e24cb407b20227e3de49 12-Dec-2007 Owen Anderson <resistor@mac.com> Forgot to remove a register from the PHI-union after I'd determined that it
interfered with other registers. Seems like that might be a good thing to do. :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44902 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
39c883cfc52776fa9a553f7e7ff06816ed476adb 12-Dec-2007 Evan Cheng <evan.cheng@apple.com> If deleting a reload instruction due to reuse (value is available in register R and reload is targeting R), make sure to invalidate the kill information of the last kill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44894 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
6d74b32569fd97bd9a8cebd326d9301e8d0005e0 12-Dec-2007 Evan Cheng <evan.cheng@apple.com> If deleting a reload instruction due to reuse (value is available in register R and reload is targeting R), make sure to invalidate the kill information of the last kill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44894 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
efe2be797699d77dc3387969aa566c26d5c36d9d 12-Dec-2007 Bill Wendling <isanbard@gmail.com> Need to grow the indexed map. Added debug statements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44892 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
3caa4705a5136f0260ee61e89bd3c9e96f7f4b0f 12-Dec-2007 Bill Wendling <isanbard@gmail.com> Need to grow the indexed map. Added debug statements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44892 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
a17ad59e13f5caafe33738bafc75af00ca354c9f 11-Dec-2007 Bill Wendling <isanbard@gmail.com> Simplify slightly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44881 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
14ba7ae05473dc47aa9092fcfc897f8d357e325b 11-Dec-2007 Bill Wendling <isanbard@gmail.com> Simplify slightly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44881 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
d525f664c92bc285c80484015f7aaa8fc17c4cb3 11-Dec-2007 Owen Anderson <resistor@mac.com> More progress on StrongPHIElimination. Now we actually USE the DomForest!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44877 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
aced7d3610456df34367922479cf18ba159b4a21 11-Dec-2007 Owen Anderson <resistor@mac.com> More progress on StrongPHIElimination. Now we actually USE the DomForest!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44877 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
12ebf14048f4a6489033f8468ba36424442140ac 11-Dec-2007 Bill Wendling <isanbard@gmail.com> Blark! How in the world did this work without this?!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44874 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
d9b9be6e412d1cb808b38a1c3efcf3065b0fe517 11-Dec-2007 Bill Wendling <isanbard@gmail.com> Blark! How in the world did this work without this?!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44874 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
28bd5f0e47d968d64ea2e64868c505923b27c24d 11-Dec-2007 Bill Wendling <isanbard@gmail.com> - Update the virtual reg to machine instruction map when hoisting.
- Fix subtle bug when creating initially creating this map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44873 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
e91b2ef2ca926449906685a9ab0930427158acde 11-Dec-2007 Bill Wendling <isanbard@gmail.com> - Update the virtual reg to machine instruction map when hoisting.
- Fix subtle bug when creating initially creating this map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44873 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
650b0527a495acbf7d6ee3343e8c41fae1686148 11-Dec-2007 Bill Wendling <isanbard@gmail.com> Checking for "zero operands" during the "CanHoistInst()" method isn't necessary
because those with side effects will be caught by other checks in here.

Also, simplify the check for a BB in a sub loop.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44871 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
2dfc9eb6b3150ffd30b8a60f3b10e885fb32bc7e 11-Dec-2007 Bill Wendling <isanbard@gmail.com> Checking for "zero operands" during the "CanHoistInst()" method isn't necessary
because those with side effects will be caught by other checks in here.

Also, simplify the check for a BB in a sub loop.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44871 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
22f07ffd27d1d721634d502c37267721d2e025cf 11-Dec-2007 Evan Cheng <evan.cheng@apple.com> Switch over to MachineLoopInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44838 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
26d17df01812012f6f231b72bf5759db79c628cb 11-Dec-2007 Evan Cheng <evan.cheng@apple.com> Switch over to MachineLoopInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44838 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
ce25443608063357247ca7943ff623af43debc77 11-Dec-2007 Evan Cheng <evan.cheng@apple.com> Pretty print shuffle mask operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44837 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
aad43a0c0d71c15f305aa0b80aae13c17098d94a 11-Dec-2007 Evan Cheng <evan.cheng@apple.com> Pretty print shuffle mask operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44837 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ad93c4f936d220570535711262e0fff8857f798a 11-Dec-2007 Gordon Henriksen <gordonhenriksen@mac.com> CollectorMetadata and Collector are rejiggered to get along with
per-function collector model. Collector is now the factory for
CollectorMetadata, so the latter may be subclassed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44827 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
ollectorMetadata.cpp
c22962f737e5ce4bab854869342111f86d55fcf8 11-Dec-2007 Gordon Henriksen <gordonhenriksen@mac.com> CollectorMetadata and Collector are rejiggered to get along with
per-function collector model. Collector is now the factory for
CollectorMetadata, so the latter may be subclassed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44827 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
ollectorMetadata.cpp
afc6de0015bbeb33a87faa6548c1289d649e832e 10-Dec-2007 Owen Anderson <resistor@mac.com> A little more progress on StrongPHIElimination, now that I have a better sense of
how the CodeGen machinery works.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44786 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
4e369a14db0b38ecd3ca9c57433c68263cd59190 10-Dec-2007 Owen Anderson <resistor@mac.com> A little more progress on StrongPHIElimination, now that I have a better sense of
how the CodeGen machinery works.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44786 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
11a4f64bd4cb6d438dd4b5882ee1b7404832f27f 10-Dec-2007 Christopher Lamb <christopher.lamb@gmail.com> Improve branch folding by recgonizing that explict successor relationships impact the value of fall-through choices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44785 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
ff9045441499e076604a4f648c63de4fb9d0e64a 10-Dec-2007 Christopher Lamb <christopher.lamb@gmail.com> Improve branch folding by recgonizing that explict successor relationships impact the value of fall-through choices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44785 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
46a6e79e602b23ea3478027d5bdd1f904aea7924 09-Dec-2007 Chris Lattner <sabre@nondot.org> Duncan points out that the subtraction is unneeded since hte code
knows the vector is not pow2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44740 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesSplit.cpp
419e907901bf2fe0f73f8a2b22dd9f0708735133 09-Dec-2007 Chris Lattner <sabre@nondot.org> Duncan points out that the subtraction is unneeded since hte code
knows the vector is not pow2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44740 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypesSplit.cpp
0097555e01683a0c9a25adef75efa1ed611e1705 09-Dec-2007 Chris Lattner <sabre@nondot.org> Add support for splitting the operand of a return instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44728 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesSplit.cpp
ff354112b235304b9751448f0134d8364d7914b2 09-Dec-2007 Chris Lattner <sabre@nondot.org> Add support for splitting the operand of a return instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44728 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesExpand.cpp
electionDAG/LegalizeTypesSplit.cpp
041b3f835682588cb63df7e609d726369dd6b7d3 09-Dec-2007 Bill Wendling <isanbard@gmail.com> Reverting 44702. It wasn't correct to rename them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44727 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineLICM.cpp
0fe34c2912244200daa48d60e845f4fcf669e007 09-Dec-2007 Bill Wendling <isanbard@gmail.com> Reverting 44702. It wasn't correct to rename them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44727 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineLICM.cpp
eeaad40246e45ec48c85acac4ab57e82457abf19 09-Dec-2007 Chris Lattner <sabre@nondot.org> add many new cases to SplitResult. SplitResult now handles all the cases that LegalizeDAG does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44726 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesSplit.cpp
595c61f303919ac64c758b81fdae1e7487da6447 09-Dec-2007 Chris Lattner <sabre@nondot.org> add many new cases to SplitResult. SplitResult now handles all the cases that LegalizeDAG does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44726 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesSplit.cpp
50187864c12dbf15f021cacfd6922d9c014f3f8d 09-Dec-2007 Chris Lattner <sabre@nondot.org> Implement splitting support for store, allowing us to compile:

%f8 = type <8 x float>

define void @test_f8(%f8* %P, %f8* %Q, %f8* %S) {
%p = load %f8* %P ; <%f8> [#uses=1]
%q = load %f8* %Q ; <%f8> [#uses=1]
%R = add %f8 %p, %q ; <%f8> [#uses=1]
store %f8 %R, %f8* %S
ret void
}

into:

_test_f8:
movaps 16(%rdi), %xmm0
addps 16(%rsi), %xmm0
movaps (%rdi), %xmm1
addps (%rsi), %xmm1
movaps %xmm0, 16(%rdx)
movaps %xmm1, (%rdx)
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44725 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesSplit.cpp
0cd03308ac3d130f80c83dee0efd0fb2c146d5ff 09-Dec-2007 Chris Lattner <sabre@nondot.org> Implement splitting support for store, allowing us to compile:

%f8 = type <8 x float>

define void @test_f8(%f8* %P, %f8* %Q, %f8* %S) {
%p = load %f8* %P ; <%f8> [#uses=1]
%q = load %f8* %Q ; <%f8> [#uses=1]
%R = add %f8 %p, %q ; <%f8> [#uses=1]
store %f8 %R, %f8* %S
ret void
}

into:

_test_f8:
movaps 16(%rdi), %xmm0
addps 16(%rsi), %xmm0
movaps (%rdi), %xmm1
addps (%rsi), %xmm1
movaps %xmm0, 16(%rdx)
movaps %xmm1, (%rdx)
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44725 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesSplit.cpp
697b53e0b2278ce39974748074fc23014a6636c5 09-Dec-2007 Chris Lattner <sabre@nondot.org> implement vector splitting of load, undef, and binops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44724 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesSplit.cpp
8a42aabcfb14c177e270ef42d7fde657bee6e5b0 09-Dec-2007 Chris Lattner <sabre@nondot.org> implement vector splitting of load, undef, and binops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44724 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesSplit.cpp
e4af7b5a573593dcf2a37cd4590bf76d1322d6da 08-Dec-2007 Chris Lattner <sabre@nondot.org> implement some methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44723 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
e089eb80bc47def3d8d3ab0b8c52cf0822588929 08-Dec-2007 Chris Lattner <sabre@nondot.org> implement some methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44723 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
13c6a1740cb8877f10e202ee1442231e0c4a903a 08-Dec-2007 Chris Lattner <sabre@nondot.org> add scaffolding for splitting of vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44722 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesSplit.cpp
48c937fc4258ec7c90f37d39939def134ed743b6 08-Dec-2007 Chris Lattner <sabre@nondot.org> add scaffolding for splitting of vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44722 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypes.h
electionDAG/LegalizeTypesSplit.cpp
7514646b3115706ee98452ddbcc7b686f6869ab0 08-Dec-2007 Chris Lattner <sabre@nondot.org> reorganize header to separate into functional blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44719 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
24790822d16fd46b91fb1b9531acb744a9bb1cb3 08-Dec-2007 Chris Lattner <sabre@nondot.org> reorganize header to separate into functional blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44719 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.h
ee888132754c709de8d2e2c5ef85531a15ed44f2 08-Dec-2007 Chris Lattner <sabre@nondot.org> split scalarization out to its own file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44718 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesScalarize.cpp
ec3792d167c6c2bcd33168c64fc66b75b450c554 08-Dec-2007 Chris Lattner <sabre@nondot.org> split scalarization out to its own file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44718 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesScalarize.cpp
cc663a8112017f06e0cd4b6fe1546ccfcd5d05c3 08-Dec-2007 Chris Lattner <sabre@nondot.org> Split expansion out into its own file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44717 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesExpand.cpp
47a84c94cf8d740012764697d176f61aef240c42 08-Dec-2007 Chris Lattner <sabre@nondot.org> Split expansion out into its own file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44717 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesExpand.cpp
08d1275cb8137152dbfb13fab361b9b496725124 08-Dec-2007 Chris Lattner <sabre@nondot.org> Split promotion support out to its own file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44716 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesPromote.cpp
145b85957e56b60bdc9be85f1bdf0a3df5a21840 08-Dec-2007 Chris Lattner <sabre@nondot.org> Split promotion support out to its own file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44716 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeTypes.cpp
electionDAG/LegalizeTypesPromote.cpp
524825b626e8cf9b323a9dd985dcf0f74a99c46e 08-Dec-2007 Chris Lattner <sabre@nondot.org> Rename LegalizeDAGTypes.cpp -> LegalizeTypes.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44715 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
electionDAG/LegalizeTypes.cpp
0493715f4b23233bb29562cbd7b750b0d9ad346d 08-Dec-2007 Chris Lattner <sabre@nondot.org> Rename LegalizeDAGTypes.cpp -> LegalizeTypes.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44715 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
electionDAG/LegalizeTypes.cpp
dff67f5770ada2942dd8c815323ad2480bfdde44 08-Dec-2007 Chris Lattner <sabre@nondot.org> Split the class definition of DAGTypeLegalizer out into a header.
Leave it visibility hidden, but not in an anon namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44714 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
electionDAG/LegalizeTypes.h
27f5b7287cd01a61c1d5dd267c4ddc7a3dc933e5 08-Dec-2007 Chris Lattner <sabre@nondot.org> Split the class definition of DAGTypeLegalizer out into a header.
Leave it visibility hidden, but not in an anon namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44714 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
electionDAG/LegalizeTypes.h
320c630c1b55e17fa00249d499f974cb1a4238f8 08-Dec-2007 Bill Wendling <isanbard@gmail.com> Renaming:

isTriviallyReMaterializable -> hasNoSideEffects
isReallyTriviallyReMaterializable -> isTriviallyReMaterializable


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44702 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineLICM.cpp
0aba3ab898632efa8f4da6f2cbd3eb35bbe2dd24 08-Dec-2007 Bill Wendling <isanbard@gmail.com> Renaming:

isTriviallyReMaterializable -> hasNoSideEffects
isReallyTriviallyReMaterializable -> isTriviallyReMaterializable


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44702 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineLICM.cpp
b48519cbadbb2b91a811f6fc189f40bd67c007f4 08-Dec-2007 Bill Wendling <isanbard@gmail.com> Incorporated comments from Evan and Chris:

http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20071203/056043.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20071203/056048.html



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44696 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
7c7888bb2d352f631aa050ecc7c9dcb1d7808d50 08-Dec-2007 Bill Wendling <isanbard@gmail.com> Incorporated comments from Evan and Chris:

http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20071203/056043.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20071203/056048.html



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44696 91177308-0d34-0410-b5e6-96231b3b80d8
achineLICM.cpp
0f940c95d4506f8d04fa2aeda8a79cadb3105fe3 07-Dec-2007 Bill Wendling <isanbard@gmail.com> Initial commit of the machine code LICM pass. It successfully hoists this:

_foo:
li r2, 0
LBB1_1: ; bb
li r5, 0
stw r5, 0(r3)
addi r2, r2, 1
addi r3, r3, 4
cmplw cr0, r2, r4
bne cr0, LBB1_1 ; bb
LBB1_2: ; return
blr

to:

_foo:
li r2, 0
li r5, 0
LBB1_1: ; bb
stw r5, 0(r3)
addi r2, r2, 1
addi r3, r3, 4
cmplw cr0, r2, r4
bne cr0, LBB1_1 ; bb
LBB1_2: ; return
blr

ZOMG!! :-)

Moar to come...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44687 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineLICM.cpp
b958b0d1b262bd2dd4da1d2ac4f1fad6b94f2a1c 07-Dec-2007 Bill Wendling <isanbard@gmail.com> Initial commit of the machine code LICM pass. It successfully hoists this:

_foo:
li r2, 0
LBB1_1: ; bb
li r5, 0
stw r5, 0(r3)
addi r2, r2, 1
addi r3, r3, 4
cmplw cr0, r2, r4
bne cr0, LBB1_1 ; bb
LBB1_2: ; return
blr

to:

_foo:
li r2, 0
li r5, 0
LBB1_1: ; bb
stw r5, 0(r3)
addi r2, r2, 1
addi r3, r3, 4
cmplw cr0, r2, r4
bne cr0, LBB1_1 ; bb
LBB1_2: ; return
blr

ZOMG!! :-)

Moar to come...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44687 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
achineLICM.cpp
dfb156143489e7d16e6b034d6e535fe97eafbb9c 07-Dec-2007 Evan Cheng <evan.cheng@apple.com> Add an option to control this heuristic tweak so I can test it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44671 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
36f323cbb6d99c7e28a64926432b0e7a5612a1ba 07-Dec-2007 Evan Cheng <evan.cheng@apple.com> Add an option to control this heuristic tweak so I can test it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44671 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
e0e6fac5e9179b2c95fe3c25591474e4b94f5047 06-Dec-2007 Dale Johannesen <dalej@apple.com> Redo previous patch so optimization only done for i1.
Simpler and safer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44663 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
53e0ad7b804e913a95feb8aa700bd1ae7294570b 06-Dec-2007 Dale Johannesen <dalej@apple.com> Redo previous patch so optimization only done for i1.
Simpler and safer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44663 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
33faddc35d5da8451f03edf27f90b901ba529c58 06-Dec-2007 Evan Cheng <evan.cheng@apple.com> Turning simple splitting on. Start testing new coalescer heuristics as new llcbeta.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44660 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d6cee72920abf3bbea344d7bb706c959b5b2ecb2 06-Dec-2007 Evan Cheng <evan.cheng@apple.com> Turning simple splitting on. Start testing new coalescer heuristics as new llcbeta.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44660 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d3fd6d2b25fc4e932ac796664ae7f4cd810ced8a 06-Dec-2007 Chris Lattner <sabre@nondot.org> third time around: instead of disabling this completely,
only disable it if we don't know it will be obviously profitable.
Still fixme, but less so. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44658 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
dcd197643fbae5f0f84620c2ff3864d8c3556456 06-Dec-2007 Chris Lattner <sabre@nondot.org> third time around: instead of disabling this completely,
only disable it if we don't know it will be obviously profitable.
Still fixme, but less so. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44658 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e00cbad78de86ac8e736f35db35632c83ef64c1d 06-Dec-2007 Chris Lattner <sabre@nondot.org> Actually, disable this code for now. More analysis and improvements to
the X86 backend are needed before this should be enabled by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44657 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
211f9f2d4307b306b2eb5faff5eab83a604340df 06-Dec-2007 Chris Lattner <sabre@nondot.org> Actually, disable this code for now. More analysis and improvements to
the X86 backend are needed before this should be enabled by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44657 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e70da20f9a7edb15e1d9bd221839e2ff26e40955 06-Dec-2007 Chris Lattner <sabre@nondot.org> implement a readme entry, compiling the code into:

_foo:
movl $12, %eax
andl 4(%esp), %eax
movl _array(%eax), %eax
ret

instead of:

_foo:
movl 4(%esp), %eax
shrl $2, %eax
andl $3, %eax
movl _array(,%eax,4), %eax
ret

As it turns out, this triggers all the time, in a wide variety of
situations, for example, I see diffs like this in various programs:

- movl 8(%eax), %eax
- shll $2, %eax
- andl $1020, %eax
- movl (%esi,%eax), %eax
+ movzbl 8(%eax), %eax
+ movl (%esi,%eax,4), %eax


- shll $2, %edx
- andl $1020, %edx
- movl (%edi,%edx), %edx
+ andl $255, %edx
+ movl (%edi,%edx,4), %edx

Unfortunately, I also see stuff like this, which can be fixed in the
X86 backend:

- andl $85, %ebx
- addl _bit_count(,%ebx,4), %ebp
+ shll $2, %ebx
+ andl $340, %ebx
+ addl _bit_count(%ebx), %ebp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44656 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
91ed3c3f5c36a68bdf963b1438bdacc328fcf295 06-Dec-2007 Chris Lattner <sabre@nondot.org> implement a readme entry, compiling the code into:

_foo:
movl $12, %eax
andl 4(%esp), %eax
movl _array(%eax), %eax
ret

instead of:

_foo:
movl 4(%esp), %eax
shrl $2, %eax
andl $3, %eax
movl _array(,%eax,4), %eax
ret

As it turns out, this triggers all the time, in a wide variety of
situations, for example, I see diffs like this in various programs:

- movl 8(%eax), %eax
- shll $2, %eax
- andl $1020, %eax
- movl (%esi,%eax), %eax
+ movzbl 8(%eax), %eax
+ movl (%esi,%eax,4), %eax


- shll $2, %edx
- andl $1020, %edx
- movl (%edi,%edx), %edx
+ andl $255, %edx
+ movl (%edi,%edx,4), %edx

Unfortunately, I also see stuff like this, which can be fixed in the
X86 backend:

- andl $85, %ebx
- addl _bit_count(,%ebx,4), %ebp
+ shll $2, %ebx
+ andl $340, %ebx
+ addl _bit_count(%ebx), %ebp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44656 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
72b2df1f7718c2ac8a87802e28bf07a9b649252a 06-Dec-2007 Chris Lattner <sabre@nondot.org> implement the rest of the functionality from SelectionDAGLegalize::ScalarizeVectorOp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44654 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
12de88c3be91114fc075d3dac6ebe4156a8353ad 06-Dec-2007 Chris Lattner <sabre@nondot.org> implement the rest of the functionality from SelectionDAGLegalize::ScalarizeVectorOp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44654 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
59f1e97ef3940840e023ae1d6226c9b416222d2d 06-Dec-2007 Dale Johannesen <dalej@apple.com> Fix PR1842.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44649 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a37fd09121d16fbaf6e8c4501a49b2b157390f51 06-Dec-2007 Dale Johannesen <dalej@apple.com> Fix PR1842.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44649 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5ef3a04b542c4e585276768fa9ca2af698ef5c87 06-Dec-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1831: if all defs of an interval are re-materializable, then it's a preferred spill candiate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44644 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
e81fdb99014d07ac595742a05a4590194d16c064 06-Dec-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1831: if all defs of an interval are re-materializable, then it's a preferred spill candiate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44644 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
d120ffd26f2715c600b028d4eac9a3c41a9f4653 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> MachineInstr can change. Store indexes instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44612 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
d973104b912db9dc854d22e4be75c62f8343005a 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> MachineInstr can change. Store indexes instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44612 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
adf85906906ebf85c57c333e8209f37ef11a6c99 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> If a split live interval is spilled again, remove the kill marker on its last use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44611 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
6f52267f924523137e78ac1491a289e162936b42 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> If a split live interval is spilled again, remove the kill marker on its last use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44611 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
f38d14f03e495ea98ae16bda6febbde276513294 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> Clobber more bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44610 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
550092fabf0b4b02e1e9f1abeb6a7be6525c69ec 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> Clobber more bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44610 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b50bb8cf197709b3f49044740044c06d8f314564 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> Fix kill info for split intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44609 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
ed17a89e7ae98a53f1298a2b6fcdb80106a5cfb1 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> Fix kill info for split intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44609 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
60fb5eccccf0984e807276ac01e5e9286b199339 05-Dec-2007 Chris Lattner <sabre@nondot.org> more scalarization


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44608 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
b455fec1b4613b0b55e4e9446d0566efa95c4f31 05-Dec-2007 Chris Lattner <sabre@nondot.org> more scalarization


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44608 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
d36db029c82867adbae9289ecc9f901907665544 05-Dec-2007 Chris Lattner <sabre@nondot.org> scalarize vector binops


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44607 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
a00601f6d3aab0968518ac18a09c9c962520bff2 05-Dec-2007 Chris Lattner <sabre@nondot.org> scalarize vector binops


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44607 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
018f9b020bb12b731b0a7081578e5f82fb35092d 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> - Mark last use of a split interval as kill instead of letting spiller track it.
This allows an important optimization to be re-enabled.
- If all uses / defs of a split interval can be folded, give the interval a
low spill weight so it would not be picked in case spilling is needed (avoid
pushing other intervals in the same BB to be spilled).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44601 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
ebcba1e5d8a34cb1ef2a31ac1231d04715b60e8b 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> - Mark last use of a split interval as kill instead of letting spiller track it.
This allows an important optimization to be re-enabled.
- If all uses / defs of a split interval can be folded, give the interval a
low spill weight so it would not be picked in case spilling is needed (avoid
pushing other intervals in the same BB to be spilled).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44601 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
d64b5c82b97ad1b74eb9fd2f23257a7899b0c307 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> Add a argument to storeRegToStackSlot and storeRegToAddr to specify whether
the stored register is killed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44600 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterScavenging.cpp
irtRegMap.cpp
2af4a6c288939754c302cb397c3c334dff6def41 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> Add a argument to storeRegToStackSlot and storeRegToAddr to specify whether
the stored register is killed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44600 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterScavenging.cpp
irtRegMap.cpp
dd86ce3d570a77f90d6d2ccb6dde8d1fef35e094 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> Remove a unsafe optimization. This fixes 401.bzip2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44587 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
567d358193effac22cbda6144ca5b9b08e524f96 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> Remove a unsafe optimization. This fixes 401.bzip2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44587 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
35a3e4abb96a6947ec66254b72e788bacc3aadd6 04-Dec-2007 Evan Cheng <evan.cheng@apple.com> Spiller unfold optimization bug: do not clobber a reusable stack slot value unless it can be modified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44575 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
811fadb7b51b57bd067c2d310551a8eafbf21848 04-Dec-2007 Evan Cheng <evan.cheng@apple.com> Spiller unfold optimization bug: do not clobber a reusable stack slot value unless it can be modified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44575 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
eb1819d1e5d6790c24bd92e4cce2058f81a5791a 04-Dec-2007 Chris Lattner <sabre@nondot.org> Implement framework for scalarizing node results. This is sufficient
to codegen this:

define float @test_extract_elt(<1 x float> * %P) {
%p = load <1 x float>* %P
%R = extractelement <1 x float> %p, i32 0
ret float %R
}




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44570 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
777f2de998085e7bfc6256c97642dbcb0795131d 04-Dec-2007 Chris Lattner <sabre@nondot.org> Implement framework for scalarizing node results. This is sufficient
to codegen this:

define float @test_extract_elt(<1 x float> * %P) {
%p = load <1 x float>* %P
%R = extractelement <1 x float> %p, i32 0
ret float %R
}




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44570 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
13c207b5c84cbac78147fa4472a4e14232cb6feb 04-Dec-2007 Chris Lattner <sabre@nondot.org> start providing framework for scalarizing vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44569 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
c082f2c2689450a3f0c277733446411a88e50c14 04-Dec-2007 Chris Lattner <sabre@nondot.org> start providing framework for scalarizing vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44569 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
597d10d84fb6b34f7776121404d5ed802b21b2b6 04-Dec-2007 Evan Cheng <evan.cheng@apple.com> Discard split intervals made empty due to folding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44565 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3a46f226b8b6011ebc511e31640b67aeb911aca7 04-Dec-2007 Evan Cheng <evan.cheng@apple.com> Discard split intervals made empty due to folding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44565 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e4b39007c9d3056334264eba9e2e6025e241d2c5 03-Dec-2007 Evan Cheng <evan.cheng@apple.com> Bug fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44549 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
a8420f008dc6a97f0459ba879e7a0c074ab45db7 03-Dec-2007 Evan Cheng <evan.cheng@apple.com> Bug fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44549 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
a3355ffb3d30d19d226bbb75707991c60f236e37 03-Dec-2007 Duncan Sands <baldrick@free.fr> Rather than having special rules like "intrinsics cannot
throw exceptions", just mark intrinsics with the nounwind
attribute. Likewise, mark intrinsics as readnone/readonly
and get rid of special aliasing logic (which didn't use
anything more than this anyway).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44544 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
79d2887c7bd6fa2d4cd915d3f2b0e45e3dba83b2 03-Dec-2007 Duncan Sands <baldrick@free.fr> Rather than having special rules like "intrinsics cannot
throw exceptions", just mark intrinsics with the nounwind
attribute. Likewise, mark intrinsics as readnone/readonly
and get rid of special aliasing logic (which didn't use
anything more than this anyway).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44544 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
31d43183a40fb721cfe0bb903f147d0d5235c1b9 03-Dec-2007 Evan Cheng <evan.cheng@apple.com> Typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44532 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6710b5b82129c86b43108b4dc4394f7a3d9d6c94 03-Dec-2007 Evan Cheng <evan.cheng@apple.com> Typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44532 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
70306f8348f27c61cfed5a60e2fceac0f29746a2 03-Dec-2007 Evan Cheng <evan.cheng@apple.com> Update kill info for uses of split intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44531 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
1083a2ff38466631acdccc8105a67b0dcbcd1c61 03-Dec-2007 Evan Cheng <evan.cheng@apple.com> Update kill info for uses of split intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44531 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
aee4af68ae2016afc5b4ec0c430e539c5810a766 02-Dec-2007 Evan Cheng <evan.cheng@apple.com> Remove redundant foldMemoryOperand variants and other code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44517 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
irtRegMap.cpp
irtRegMap.h
fd0bd3cd6b680605c609ffba12c0bbe997edd6e5 02-Dec-2007 Evan Cheng <evan.cheng@apple.com> Remove redundant foldMemoryOperand variants and other code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44517 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocBigBlock.cpp
egAllocLocal.cpp
irtRegMap.cpp
irtRegMap.h
e3110d0825e6316fd2dd21d6a4e593295cd413f1 01-Dec-2007 Evan Cheng <evan.cheng@apple.com> Fix a bug where splitting cause some unnecessary spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44482 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
999f947b64bfe038f63a611f003b6fc6fc673826 01-Dec-2007 Evan Cheng <evan.cheng@apple.com> Fix a bug where splitting cause some unnecessary spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44482 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e62f97c094dba44e4c259d20135167fa91912eea 01-Dec-2007 Evan Cheng <evan.cheng@apple.com> Allow some reloads to be folded in multi-use cases. Specifically testl r, r -> cmpl [mem], 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44479 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ff52f082846db6a31d73cb6f02f62401e20eda6f 01-Dec-2007 Evan Cheng <evan.cheng@apple.com> Allow some reloads to be folded in multi-use cases. Specifically testl r, r -> cmpl [mem], 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44479 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cddbb83ea82e98658d9f530c50a7b9d23249afc2 30-Nov-2007 Evan Cheng <evan.cheng@apple.com> Do not fold reload into an instruction with multiple uses. It issues one extra load.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44467 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
16ebb8ce739817c4def3872a2b5f800ce21cb5e6 30-Nov-2007 Evan Cheng <evan.cheng@apple.com> Do not fold reload into an instruction with multiple uses. It issues one extra load.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44467 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
962e0750a545ccced983386c859e436d9afddd79 30-Nov-2007 Devang Patel <dpatel@apple.com> Provide a way to update DescGlobals cache directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44446 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
d83c2c0ffeeef5cd28afb55f904b7376a448137d 30-Nov-2007 Devang Patel <dpatel@apple.com> Provide a way to update DescGlobals cache directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44446 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
cb3c330d39442130d0587208d673ce9c33c7008f 30-Nov-2007 Evan Cheng <evan.cheng@apple.com> Do not lose rematerialization info when spilling already split live intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44443 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
35d477654ca963fc39bb556018a60272f1f44ec0 30-Nov-2007 Evan Cheng <evan.cheng@apple.com> Do not lose rematerialization info when spilling already split live intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44443 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1953d0cb7d6d27da3ad067468a7ad6dd7c4fa46e 29-Nov-2007 Evan Cheng <evan.cheng@apple.com> Fix a major performance issue with splitting. If there is a def (not def/use)
in the middle of a split basic block, create a new live interval starting at
the def. This avoid artifically extending the live interval over a number of
cycles where it is dead. e.g.

bb1:
= vr1204 (use / kill) <= new interval starts and ends here.
...
...
vr1204 = (new def) <= start a new interval here.
= vr1204 (use)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44436 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7b63236ec85f530b66dc8d4f9e62763cac82f275 29-Nov-2007 Evan Cheng <evan.cheng@apple.com> Fix a major performance issue with splitting. If there is a def (not def/use)
in the middle of a split basic block, create a new live interval starting at
the def. This avoid artifically extending the live interval over a number of
cycles where it is dead. e.g.

bb1:
= vr1204 (use / kill) <= new interval starts and ends here.
...
...
vr1204 = (new def) <= start a new interval here.
= vr1204 (use)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44436 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c3fc7d9ec9b495c8a88cd854247105c296d3aabd 29-Nov-2007 Evan Cheng <evan.cheng@apple.com> Replace the odd kill# hack with something less fragile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44434 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
8b70e63ab4fbb07926dc0572c70988fa1277fa82 29-Nov-2007 Evan Cheng <evan.cheng@apple.com> Replace the odd kill# hack with something less fragile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44434 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
0cbb1164b3227f25f5e5d3681800a8e50e6b9865 29-Nov-2007 Evan Cheng <evan.cheng@apple.com> Fixed various live interval splitting bugs / compile time issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44428 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
96c61315a0a7a66a7e4c55a507251d6da24af46c 29-Nov-2007 Evan Cheng <evan.cheng@apple.com> Fixed various live interval splitting bugs / compile time issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44428 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
c3868e04bf90d55f2599245ee7f3358d7b2a93ad 29-Nov-2007 Evan Cheng <evan.cheng@apple.com> Kill info update bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44427 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
1f458158cf263e8b1b0f92e7c80bd5d22489a180 29-Nov-2007 Evan Cheng <evan.cheng@apple.com> Kill info update bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44427 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
afa3b6da11bc05281bcf09e45de9e037e0ee5011 28-Nov-2007 Duncan Sands <baldrick@free.fr> Add some convenience methods for querying attributes, and
use them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44403 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
637ec55233bf7a93bd9f605fb9d4a8fb7184eb14 28-Nov-2007 Duncan Sands <baldrick@free.fr> Add some convenience methods for querying attributes, and
use them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44403 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0a488b320c3891f427ca2e6d96b1b3fc0fcc9de8 28-Nov-2007 Duncan Sands <baldrick@free.fr> Add missing newlines at EOF.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44399 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
95412b3dafb25afe561396702dfdf13be099ef1d 28-Nov-2007 Duncan Sands <baldrick@free.fr> Add missing newlines at EOF.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44399 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
cada245d06959831b90f8c29f92e77beda4b71cb 28-Nov-2007 Evan Cheng <evan.cheng@apple.com> Recover compile time regression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44386 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
91e32d0d17ec174e9f493cd830ea486ea4570e93 28-Nov-2007 Evan Cheng <evan.cheng@apple.com> Recover compile time regression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44386 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
e4ad9c70e4a1261c212b11623d99e2477ef02783 27-Nov-2007 Owen Anderson <resistor@mac.com> Add MachineLoopInfo. This is not yet tested.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44384 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
815297c8d8006ffda21744133cbfa16bc58af351 27-Nov-2007 Owen Anderson <resistor@mac.com> Add MachineLoopInfo. This is not yet tested.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44384 91177308-0d34-0410-b5e6-96231b3b80d8
achineLoopInfo.cpp
d73ab8884f5c95d2704be3c00af4cc3dba963da6 27-Nov-2007 Nate Begeman <natebegeman@mac.com> Support returning non-power-of-2 vectors to unblock some work


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
3d83c3fd5cbc8b2268bd2ec46879cd4c04b9d32c 27-Nov-2007 Nate Begeman <natebegeman@mac.com> Support returning non-power-of-2 vectors to unblock some work


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
dc024674ff96820d6020757b48d47f46d4c07db2 27-Nov-2007 Duncan Sands <baldrick@free.fr> Fix PR1146: parameter attributes are longer part of
the function type, instead they belong to functions
and function calls. This is an updated and slightly
corrected version of Reid Spencer's original patch.
The only known problem is that auto-upgrading of
bitcode files doesn't seem to work properly (see
test/Bitcode/AutoUpgradeIntrinsics.ll). Hopefully
a bitcode guru (who might that be? :) ) will fix it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f5588dc4ec43da1e4423e5ff2394669c0f000350 27-Nov-2007 Duncan Sands <baldrick@free.fr> Fix PR1146: parameter attributes are longer part of
the function type, instead they belong to functions
and function calls. This is an updated and slightly
corrected version of Reid Spencer's original patch.
The only known problem is that auto-upgrading of
bitcode files doesn't seem to work properly (see
test/Bitcode/AutoUpgradeIntrinsics.ll). Hopefully
a bitcode guru (who might that be? :) ) will fix it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b3d9cdb6776355ffba1c43809094f29e4d57a45f 27-Nov-2007 Chris Lattner <sabre@nondot.org> err, no really.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44352 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5624ae4479f46f442704fa8c54371bc96424ae01 27-Nov-2007 Chris Lattner <sabre@nondot.org> err, no really.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44352 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5ebfaa2c9d528d72903641653171eef73f0c547b 27-Nov-2007 Chris Lattner <sabre@nondot.org> don't depend on ADL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44351 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3b46e9c9589693851212da1a72fab37680d0f1e9 27-Nov-2007 Chris Lattner <sabre@nondot.org> don't depend on ADL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44351 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
77003040b21816725dc1ca3a55111044d36ac21f 27-Nov-2007 Dan Gohman <gohman@apple.com> Don't lower srem/urem X%C to X-X/C*C unless the division is actually
optimized. This avoids creating illegal divisions when the combiner is
running after legalize; this fixes PR1815. Also, it produces better
code in the included testcase by avoiding the subtract and multiply
when the division isn't optimized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44341 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fdb31f1da69c857d4fd7275652d0ccb2f55d9194 27-Nov-2007 Dan Gohman <djg@cray.com> Don't lower srem/urem X%C to X-X/C*C unless the division is actually
optimized. This avoids creating illegal divisions when the combiner is
running after legalize; this fixes PR1815. Also, it produces better
code in the included testcase by avoiding the subtract and multiply
when the division isn't optimized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44341 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c58d558a79c3638c23d8fd09d89accff33285653 24-Nov-2007 Chris Lattner <sabre@nondot.org> Implement expand support for MERGE_VALUEs that only produces one result.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44304 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1b66f82d6e76174231832f513f1721cbddf972ca 24-Nov-2007 Chris Lattner <sabre@nondot.org> Implement expand support for MERGE_VALUEs that only produces one result.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44304 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
87726ac0f9f62178fcbba6ebc83ae048a4f97727 24-Nov-2007 Chris Lattner <sabre@nondot.org> Implement support for custom legalization in DAGTypeLegalizer::ExpandOperand.
Improve a comment.
Unbreak Duncan's carefully written path compression where I didn't realize
what was happening!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44301 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
63aaf6f6bd97e981038794865ed45f94f5da2d80 24-Nov-2007 Chris Lattner <sabre@nondot.org> Implement support for custom legalization in DAGTypeLegalizer::ExpandOperand.
Improve a comment.
Unbreak Duncan's carefully written path compression where I didn't realize
what was happening!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44301 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
27a6c7380fa4dfc8e1837a8dd67967d063b26544 24-Nov-2007 Chris Lattner <sabre@nondot.org> Several changes:
1) Change the interface to TargetLowering::ExpandOperationResult to
take and return entire NODES that need a result expanded, not just
the value. This allows us to handle things like READCYCLECOUNTER,
which returns two values.
2) Implement (extremely limited) support in LegalizeDAG::ExpandOp for MERGE_VALUES.
3) Reimplement custom lowering in LegalizeDAGTypes in terms of the new
ExpandOperationResult. This makes the result simpler and fully
general.
4) Implement (fully general) expand support for MERGE_VALUES in LegalizeDAGTypes.
5) Implement ExpandOperationResult support for ARM f64->i64 bitconvert and ARM
i64 shifts, allowing them to work with LegalizeDAGTypes.
6) Implement ExpandOperationResult support for X86 READCYCLECOUNTER and FP_TO_SINT,
allowing them to work with LegalizeDAGTypes.

LegalizeDAGTypes now passes several more X86 codegen tests when enabled and when
type legalization in LegalizeDAG is ifdef'd out.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeDAGTypes.cpp
electionDAG/SelectionDAGISel.cpp
dfb947d423f6355537d1a545fb8fa4fbc6dad230 24-Nov-2007 Chris Lattner <sabre@nondot.org> Several changes:
1) Change the interface to TargetLowering::ExpandOperationResult to
take and return entire NODES that need a result expanded, not just
the value. This allows us to handle things like READCYCLECOUNTER,
which returns two values.
2) Implement (extremely limited) support in LegalizeDAG::ExpandOp for MERGE_VALUES.
3) Reimplement custom lowering in LegalizeDAGTypes in terms of the new
ExpandOperationResult. This makes the result simpler and fully
general.
4) Implement (fully general) expand support for MERGE_VALUES in LegalizeDAGTypes.
5) Implement ExpandOperationResult support for ARM f64->i64 bitconvert and ARM
i64 shifts, allowing them to work with LegalizeDAGTypes.
6) Implement ExpandOperationResult support for X86 READCYCLECOUNTER and FP_TO_SINT,
allowing them to work with LegalizeDAGTypes.

LegalizeDAGTypes now passes several more X86 codegen tests when enabled and when
type legalization in LegalizeDAG is ifdef'd out.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeDAGTypes.cpp
electionDAG/SelectionDAGISel.cpp
baccd5872e87adb0431ae3ebfa83719b97880808 21-Nov-2007 Duncan Sands <baldrick@free.fr> Fix a bug in which node A is replaced by node B, but later
node A gets back into the DAG again because it was hiding in
one of the node maps: make sure that node replacement happens
in those maps too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
b03c790237122430b61b50841c48a71d108b28e8 21-Nov-2007 Duncan Sands <baldrick@free.fr> Fix a bug in which node A is replaced by node B, but later
node A gets back into the DAG again because it was hiding in
one of the node maps: make sure that node replacement happens
in those maps too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
1d4ce2ab962fee691239d58c8157c12b8037f9de 21-Nov-2007 Dale Johannesen <dalej@apple.com> Fix .eh table linkage issues on Darwin. Some EH support
for Darwin PPC, but it's not fully working yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44258 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
fb3ac73f59c764be9020fbed2e179785a5902b53 21-Nov-2007 Dale Johannesen <dalej@apple.com> Fix .eh table linkage issues on Darwin. Some EH support
for Darwin PPC, but it's not fully working yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44258 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
e400af83b3f8b69407a8963f1d2e2c82fa766f33 19-Nov-2007 Chris Lattner <sabre@nondot.org> ExpandUnalignedLoad doesn't handle vectors right at all apparently.
Fix a couple of problems:
1. Don't assume the VT-1 is a VT that is half the size.
2. Treat vectors of FP in the vector path, not the FP path.

This has a couple of remaining problems before it will work with
the code in PR1811: the code below this change assumes that it can
use extload/shift/or to construct the result, which isn't right for
vectors.

This also doesn't handle vectors of 1 or vectors that aren't pow-2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44243 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4cf8a5bde8b7db74f9ed878a354dc208c43f6a74 19-Nov-2007 Chris Lattner <sabre@nondot.org> ExpandUnalignedLoad doesn't handle vectors right at all apparently.
Fix a couple of problems:
1. Don't assume the VT-1 is a VT that is half the size.
2. Treat vectors of FP in the vector path, not the FP path.

This has a couple of remaining problems before it will work with
the code in PR1811: the code below this change assumes that it can
use extload/shift/or to construct the result, which isn't right for
vectors.

This also doesn't handle vectors of 1 or vectors that aren't pow-2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44243 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6c9c6800b844771117943c400d0a9a47460a46b9 19-Nov-2007 Chris Lattner <sabre@nondot.org> Implement vector expand support for shuffle_vector. This fixes PR1811.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44242 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
587c46dfdf4e0aeb23b9564486ed37cd86098fe3 19-Nov-2007 Chris Lattner <sabre@nondot.org> Implement vector expand support for shuffle_vector. This fixes PR1811.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44242 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
daf9bc8eee3eb1bc992480921f50ef1b760f4159 19-Nov-2007 Chris Lattner <sabre@nondot.org> Implement splitting of UNDEF nodes. This is the first step towards fixing PR1811


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44239 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3dec33af58c8392159bd355c6c8ae2425c98c0d7 19-Nov-2007 Chris Lattner <sabre@nondot.org> Implement splitting of UNDEF nodes. This is the first step towards fixing PR1811


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44239 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
089617d9e3acc242151a007e7a051ed2fb200b1f 19-Nov-2007 Dan Gohman <gohman@apple.com> Add support in SplitVectorOp for remainder operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44233 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9e1b7ee6e84e14a314c94e7fc98f92d02266f1db 19-Nov-2007 Dan Gohman <djg@cray.com> Add support in SplitVectorOp for remainder operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44233 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b348d18caf834bc26a80e60aa7a2c9b1748734e8 17-Nov-2007 Nate Begeman <natebegeman@mac.com> Add support for vectors to int <-> float casts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
78246cae8f37740879b3b099b388f0595106db6b 17-Nov-2007 Nate Begeman <natebegeman@mac.com> Add support for vectors to int <-> float casts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
81a038218171860ee4c382849c647d3dc841fe8b 17-Nov-2007 Evan Cheng <evan.cheng@apple.com> Live interval splitting:

When a live interval is being spilled, rather than creating short, non-spillable
intervals for every def / use, split the interval at BB boundaries. That is, for
every BB where the live interval is defined or used, create a new interval that
covers all the defs and uses in the BB.

This is designed to eliminate one common problem: multiple reloads of the same
value in a single basic block. Note, it does *not* decrease the number of spills
since no copies are inserted so the split intervals are *connected* through
spill and reloads (or rematerialization). The newly created intervals can be
spilled again, in that case, since it does not span multiple basic blocks, it's
spilled in the usual manner. However, it can reuse the same stack slot as the
previously split interval.

This is currently controlled by -split-intervals-at-bb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44198 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
irtRegMap.h
cecc82245c884e45dd2f1cbe2f1d77497fbfa5a6 17-Nov-2007 Evan Cheng <evan.cheng@apple.com> Live interval splitting:

When a live interval is being spilled, rather than creating short, non-spillable
intervals for every def / use, split the interval at BB boundaries. That is, for
every BB where the live interval is defined or used, create a new interval that
covers all the defs and uses in the BB.

This is designed to eliminate one common problem: multiple reloads of the same
value in a single basic block. Note, it does *not* decrease the number of spills
since no copies are inserted so the split intervals are *connected* through
spill and reloads (or rematerialization). The newly created intervals can be
spilled again, in that case, since it does not span multiple basic blocks, it's
spilled in the usual manner. However, it can reuse the same stack slot as the
previously split interval.

This is currently controlled by -split-intervals-at-bb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44198 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
irtRegMap.h
917c2a6ff2cfcd1263a5dd80c54336754c553ace 16-Nov-2007 Anton Korobeynikov <asl@math.spbu.ru> Implement necessary bits for flt_rounds gcc builtin.
Codegen bits and llvm-gcc support will follow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44182 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
c915e271dabb580bad526655306e39bb097f5980 16-Nov-2007 Anton Korobeynikov <asl@math.spbu.ru> Implement necessary bits for flt_rounds gcc builtin.
Codegen bits and llvm-gcc support will follow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44182 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
5db1afb462b048bc10e0003db5a770ed960b2ddf 15-Nov-2007 Nate Begeman <natebegeman@mac.com> Basic non-power-of-2 vector support


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44181 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4a365ad43016e3bf8ce4d0383706a57f5d59976d 15-Nov-2007 Nate Begeman <natebegeman@mac.com> Basic non-power-of-2 vector support


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44181 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
560a737e073788463b9275c5e92ebc12f0ea62a2 15-Nov-2007 Duncan Sands <baldrick@free.fr> This assertion was bogus.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44167 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9b7e14879587a79a1ab17ca4e8c99f2d93064256 15-Nov-2007 Duncan Sands <baldrick@free.fr> This assertion was bogus.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44167 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5d446265c740c17ed12e693423f0363296670d60 15-Nov-2007 Evan Cheng <evan.cheng@apple.com> Fix a thinko in post-allocation coalescer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44166 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
58edd785018b91f0e01739218a3e6a057ab836a8 15-Nov-2007 Evan Cheng <evan.cheng@apple.com> Fix a thinko in post-allocation coalescer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44166 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5b8318a1a4819131decb95b9b2be844d678d7a9e 15-Nov-2007 Bill Wendling <isanbard@gmail.com> Adding debug output during coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44154 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
28f22abfc5b3def8c72c6d72f3ac6599b0e418fb 15-Nov-2007 Bill Wendling <isanbard@gmail.com> Adding debug output during coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44154 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
87075caa18feea3a2f65c381369f92b43886c356 15-Nov-2007 Bill Wendling <isanbard@gmail.com> Need to increment the iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44153 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
1817ab86bf43253f98d920900d216bb0fc099e9a 15-Nov-2007 Bill Wendling <isanbard@gmail.com> Need to increment the iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44153 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
9de1934099f4eedaeb2f3a023411b2cd3e0e1eae 14-Nov-2007 Anton Korobeynikov <asl@math.spbu.ru> Fix PIC jump table codegen on x86-32/linux. In fact, such thing should be applied
to all targets uses GOT-relative offsets for PIC (Alpha?)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44108 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
5772c674c773e0c96f6e624000e35840ba56817a 14-Nov-2007 Anton Korobeynikov <asl@math.spbu.ru> Fix PIC jump table codegen on x86-32/linux. In fact, such thing should be applied
to all targets uses GOT-relative offsets for PIC (Alpha?)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44108 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
c498b0281fa81bc213ad1a1228664d480936c0e6 14-Nov-2007 Evan Cheng <evan.cheng@apple.com> Clean up sub-register implementation by moving subReg information back to
MachineOperand auxInfo. Previous clunky implementation uses an external map
to track sub-register uses. That works because register allocator uses
a new virtual register for each spilled use. With interval splitting (coming
soon), we may have multiple uses of the same register some of which are
of using different sub-registers from others. It's too fragile to constantly
update the information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44104 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
4d0fbf31e38f28a3c1501e74d7058a88bb8d7c2c 14-Nov-2007 Evan Cheng <evan.cheng@apple.com> Clean up sub-register implementation by moving subReg information back to
MachineOperand auxInfo. Previous clunky implementation uses an external map
to track sub-register uses. That works because register allocator uses
a new virtual register for each spilled use. With interval splitting (coming
soon), we may have multiple uses of the same register some of which are
of using different sub-registers from others. It's too fragile to constantly
update the information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44104 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
42f9e96e97fd42cd71e7096ab7eb9eac7a9c8b32 13-Nov-2007 Owen Anderson <resistor@mac.com> Run computeDomForest() on the set of registers that need to be tested for
interference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44064 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
720d37ce24b65529705cb4f5aadcf2e053ade983 13-Nov-2007 Owen Anderson <resistor@mac.com> Run computeDomForest() on the set of registers that need to be tested for
interference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44064 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
17b1418bead13b5f78764f1435fc514475123dfc 13-Nov-2007 Owen Anderson <resistor@mac.com> Preserve LiveVariables when doing critical edge splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44063 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
cc9626995dde34ebf54abec09666f04a16f5e572 13-Nov-2007 Owen Anderson <resistor@mac.com> Preserve LiveVariables when doing critical edge splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44063 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
b97aec663b1591e71c9ddee6dbb327d1b827eda5 13-Nov-2007 Dale Johannesen <dalej@apple.com> Add parameter to getDwarfRegNum to permit targets
to use different mappings for EH and debug info;
no functional change yet.
Fix warning in X86CodeEmitter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44056 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
f5a1153219e7c91069d2ff8299434f06d465f516 13-Nov-2007 Dale Johannesen <dalej@apple.com> Add parameter to getDwarfRegNum to permit targets
to use different mappings for EH and debug info;
no functional change yet.
Fix warning in X86CodeEmitter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44056 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
0f8d9c04d9feef86cee35cf5fecfb348a6b3de50 13-Nov-2007 Bill Wendling <isanbard@gmail.com> Unify CALLSEQ_{START,END}. They take 4 parameters: the chain, two stack
adjustment fields, and an optional flag. If there is a "dynamic_stackalloc" in
the code, make sure that it's bracketed by CALLSEQ_START and CALLSEQ_END. If
not, then there is the potential for the stack to be changed while the stack's
being used by another instruction (like a call).

This can only result in tears...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44037 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
22f8debd4e886118daaa419ba6bfa0c1ef279beb 13-Nov-2007 Bill Wendling <isanbard@gmail.com> Unify CALLSEQ_{START,END}. They take 4 parameters: the chain, two stack
adjustment fields, and an optional flag. If there is a "dynamic_stackalloc" in
the code, make sure that it's bracketed by CALLSEQ_START and CALLSEQ_END. If
not, then there is the potential for the stack to be changed while the stack's
being used by another instruction (like a call).

This can only result in tears...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44037 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
35e2dba67215045b1be2b890699788adfa939d05 12-Nov-2007 Owen Anderson <resistor@mac.com> Break critical edges coming into blocks with PHI nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44019 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
26d5538713a4bb12d3339b6cb8c800a8844425c3 12-Nov-2007 Owen Anderson <resistor@mac.com> Break critical edges coming into blocks with PHI nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44019 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
f2fbca68f868122d6df0bfc9952b4e4c3dfb60b7 12-Nov-2007 Evan Cheng <evan.cheng@apple.com> Refactor some code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44010 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
9b741600db1ab399d114224a54e6a4c2ce22aecb 12-Nov-2007 Evan Cheng <evan.cheng@apple.com> Refactor some code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44010 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
fe0c882e5a6ddf4e3c9f771485fdaa4672759539 12-Nov-2007 Owen Anderson <resistor@mac.com> As Chris and Evan pointed out, BreakCriticalMachineEdges doesn't really need
to be a pass of its own. Instead, move it out into a helper method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44002 91177308-0d34-0410-b5e6-96231b3b80d8
reakCriticalMachineEdges.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
34971fd3500a4b9952525d6156c6ef1c82ce54f0 12-Nov-2007 Owen Anderson <resistor@mac.com> As Chris and Evan pointed out, BreakCriticalMachineEdges doesn't really need
to be a pass of its own. Instead, move it out into a helper method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44002 91177308-0d34-0410-b5e6-96231b3b80d8
reakCriticalMachineEdges.cpp
trongPHIElimination.cpp
woAddressInstructionPass.cpp
7168be956d2469fdd1ec25518f0ea8225487923a 09-Nov-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Fixed a strange construct. Please review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43960 91177308-0d34-0410-b5e6-96231b3b80d8
reakCriticalMachineEdges.cpp
ada4792f3658e3abbbd1cae393f58743b9948632 09-Nov-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Fixed a strange construct. Please review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43960 91177308-0d34-0410-b5e6-96231b3b80d8
reakCriticalMachineEdges.cpp
fd617d0143a158bc1c996445262d409280e7b0cc 09-Nov-2007 Duncan Sands <baldrick@free.fr> Move MinAlign to MathExtras.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43944 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeDAGTypes.cpp
d2f53d1904d1e405a876eb1f7fcbffa4f34c4255 09-Nov-2007 Duncan Sands <baldrick@free.fr> Move MinAlign to MathExtras.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43944 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeDAGTypes.cpp
c6fa170b4db6659c411e77a9a5144ae2e92136c7 09-Nov-2007 Duncan Sands <baldrick@free.fr> Fix some load/store logic that would be wrong for
apints on big-endian machines if the bitwidth is
not a multiple of 8. Introduce a new helper,
MVT::getStoreSizeInBits, and use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAGTypes.cpp
4f18d4f7d6ed1bdddc07599c0e946557107423eb 09-Nov-2007 Duncan Sands <baldrick@free.fr> Fix some load/store logic that would be wrong for
apints on big-endian machines if the bitwidth is
not a multiple of 8. Introduce a new helper,
MVT::getStoreSizeInBits, and use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAGTypes.cpp
f6bd0ce4c9a9c08500ab50cea322770c611d1af3 09-Nov-2007 Duncan Sands <baldrick@free.fr> Add terminating newline.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43933 91177308-0d34-0410-b5e6-96231b3b80d8
reakCriticalMachineEdges.cpp
d794c85d464278bbfafaaa162e38dcf21f10881d 09-Nov-2007 Duncan Sands <baldrick@free.fr> Add terminating newline.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43933 91177308-0d34-0410-b5e6-96231b3b80d8
reakCriticalMachineEdges.cpp
cc41586b9d79532172b37e1f44a9077da4b73fc9 09-Nov-2007 Evan Cheng <evan.cheng@apple.com> Much improved pic jumptable codegen:

Then:
call "L1$pb"
"L1$pb":
popl %eax
...
LBB1_1: # entry
imull $4, %ecx, %ecx
leal LJTI1_0-"L1$pb"(%eax), %edx
addl LJTI1_0-"L1$pb"(%ecx,%eax), %edx
jmpl *%edx

.align 2
.set L1_0_set_3,LBB1_3-LJTI1_0
.set L1_0_set_2,LBB1_2-LJTI1_0
.set L1_0_set_5,LBB1_5-LJTI1_0
.set L1_0_set_4,LBB1_4-LJTI1_0
LJTI1_0:
.long L1_0_set_3
.long L1_0_set_2

Now:
call "L1$pb"
"L1$pb":
popl %eax
...
LBB1_1: # entry
addl LJTI1_0-"L1$pb"(%eax,%ecx,4), %eax
jmpl *%eax

.align 2
.set L1_0_set_3,LBB1_3-"L1$pb"
.set L1_0_set_2,LBB1_2-"L1$pb"
.set L1_0_set_5,LBB1_5-"L1$pb"
.set L1_0_set_4,LBB1_4-"L1$pb"
LJTI1_0:
.long L1_0_set_3
.long L1_0_set_2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43924 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
6fb0676d69697f38712be6843073618583d3a3f8 09-Nov-2007 Evan Cheng <evan.cheng@apple.com> Much improved pic jumptable codegen:

Then:
call "L1$pb"
"L1$pb":
popl %eax
...
LBB1_1: # entry
imull $4, %ecx, %ecx
leal LJTI1_0-"L1$pb"(%eax), %edx
addl LJTI1_0-"L1$pb"(%ecx,%eax), %edx
jmpl *%edx

.align 2
.set L1_0_set_3,LBB1_3-LJTI1_0
.set L1_0_set_2,LBB1_2-LJTI1_0
.set L1_0_set_5,LBB1_5-LJTI1_0
.set L1_0_set_4,LBB1_4-LJTI1_0
LJTI1_0:
.long L1_0_set_3
.long L1_0_set_2

Now:
call "L1$pb"
"L1$pb":
popl %eax
...
LBB1_1: # entry
addl LJTI1_0-"L1$pb"(%eax,%ecx,4), %eax
jmpl *%eax

.align 2
.set L1_0_set_3,LBB1_3-"L1$pb"
.set L1_0_set_2,LBB1_2-"L1$pb"
.set L1_0_set_5,LBB1_5-"L1$pb"
.set L1_0_set_4,LBB1_4-"L1$pb"
LJTI1_0:
.long L1_0_set_3
.long L1_0_set_2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43924 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
2dfdefd282a04785c4d7b43e37782ace65af2ba6 09-Nov-2007 Evan Cheng <evan.cheng@apple.com> Didn't mean to check these in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
d5d2f0295f4abd084348d8a047836ef65433406a 09-Nov-2007 Evan Cheng <evan.cheng@apple.com> Didn't mean to check these in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
7da8f399bf09e9a03fe8bdd8c8eef6e5a7d87327 09-Nov-2007 Evan Cheng <evan.cheng@apple.com> Bug fix. Passive nodes are not in SUnitMap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/TargetLowering.cpp
a81a770f0f290e9f1f6c71a886d5294a0adeef8d 09-Nov-2007 Evan Cheng <evan.cheng@apple.com> Bug fix. Passive nodes are not in SUnitMap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/TargetLowering.cpp
0823cea34a5e02513c513b7ba00db4fc6266c4a1 08-Nov-2007 Owen Anderson <resistor@mac.com> This preserves critical edge breaking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43911 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
ee170f968ebb15c528a645bb39d6fef1560c3580 08-Nov-2007 Owen Anderson <resistor@mac.com> This preserves critical edge breaking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43911 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
d195ce1fb6539469bf1e82c41d5a8c2efdb5f61b 08-Nov-2007 Owen Anderson <resistor@mac.com> Make BreakCriticalMachineEdges available as a pass that can be depended on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43910 91177308-0d34-0410-b5e6-96231b3b80d8
reakCriticalMachineEdges.cpp
c6394d115d2d86d6ac3f492ed1381d68c33956be 08-Nov-2007 Owen Anderson <resistor@mac.com> Make BreakCriticalMachineEdges available as a pass that can be depended on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43910 91177308-0d34-0410-b5e6-96231b3b80d8
reakCriticalMachineEdges.cpp
4471194d69cc99ed53dc1638e06053b069dc6454 08-Nov-2007 Evan Cheng <evan.cheng@apple.com> If both parts of smul_lohi, etc. are used, don't simplify. If only one part is used, try simplify it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43888 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ddfa8c7f39c64cb1211077ca8732ab9044c8cb66 08-Nov-2007 Evan Cheng <evan.cheng@apple.com> If both parts of smul_lohi, etc. are used, don't simplify. If only one part is used, try simplify it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43888 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
01f43a4d551eb126731d2ae622d39ca0291965c6 08-Nov-2007 Owen Anderson <resistor@mac.com> Add the majority of machine-level critical edge breaking pass. Most of this was written by Fernando, cleanup and updating to TOT by me.

This still needs a bit of work, particularly to handle jump tables properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43885 91177308-0d34-0410-b5e6-96231b3b80d8
reakCriticalMachineEdges.cpp
8ba69d8845336dc69a14f99145891b11233e4f60 08-Nov-2007 Owen Anderson <resistor@mac.com> Add the majority of machine-level critical edge breaking pass. Most of this was written by Fernando, cleanup and updating to TOT by me.

This still needs a bit of work, particularly to handle jump tables properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43885 91177308-0d34-0410-b5e6-96231b3b80d8
reakCriticalMachineEdges.cpp
14b3fb78059a7b720ac9592e1f5d827166a5b5ac 08-Nov-2007 Owen Anderson <resistor@mac.com> Take another stab at getting isLiveIn() and isLiveOut() right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43869 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
5fa93ca1707c5032c4f95829c21ba4156a02b95f 08-Nov-2007 Owen Anderson <resistor@mac.com> Take another stab at getting isLiveIn() and isLiveOut() right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43869 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
a018540807775703d630e9c92f9d8013d545599e 08-Nov-2007 Owen Anderson <resistor@mac.com> Bring UsedBlocks back. StrongPHIElimination needs this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43866 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
woAddressInstructionPass.cpp
721b2ccda626f175ab941d085d2bbc552ddafd9f 08-Nov-2007 Owen Anderson <resistor@mac.com> Bring UsedBlocks back. StrongPHIElimination needs this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43866 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
woAddressInstructionPass.cpp
29121848b912b1e062760e5d14c6fbec63b16d9b 07-Nov-2007 Evan Cheng <evan.cheng@apple.com> Simplify my (il)logic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43819 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a5e4024e3fedc2fbe6aeb8d173b1a9a95042ae97 07-Nov-2007 Evan Cheng <evan.cheng@apple.com> Simplify my (il)logic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43819 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
60a877d71351855d68491eeb123835ac7833a9e4 07-Nov-2007 Owen Anderson <resistor@mac.com> Add some more of StrongPHIElim.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43805 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
1fbddf00956662f28b94e73c2656bb79049d8598 07-Nov-2007 Owen Anderson <resistor@mac.com> Add some more of StrongPHIElim.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43805 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
0d97426b7b3d57cc3ff651a400b758733f2058a8 06-Nov-2007 Dan Gohman <gohman@apple.com> Remainder operations must be either integer or floating-point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43781 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
59b4b1040ecf1055854d86693a3674814510cf27 06-Nov-2007 Dan Gohman <djg@cray.com> Remainder operations must be either integer or floating-point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43781 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
be6781b5d00107f4b60797c3ebdc0aab110487ff 06-Nov-2007 Evan Cheng <evan.cheng@apple.com> When the allocator rewrite a spill register with new virtual register, it replaces other operands of the same register. Watch out for situations where
only some of the operands are sub-register uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43776 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
945923c3f11ee4ad9f261a9bca0c0a104d6804f8 06-Nov-2007 Evan Cheng <evan.cheng@apple.com> When the allocator rewrite a spill register with new virtual register, it replaces other operands of the same register. Watch out for situations where
only some of the operands are sub-register uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43776 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8fc9a1022108e1afa8077e3e0a7b8a70eb3c3bc3 06-Nov-2007 Evan Cheng <evan.cheng@apple.com> First step towards moving the coalescer to priority_queue based machinery.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43764 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
5bf8997dd322cd0d929c3a62c81c14b042da026f 06-Nov-2007 Evan Cheng <evan.cheng@apple.com> First step towards moving the coalescer to priority_queue based machinery.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43764 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
ab847242976b8e7c495308f8b771ae5d0db8b340 06-Nov-2007 Evan Cheng <evan.cheng@apple.com> Fix a bug where a def use operand isn't being detected as a sub-register use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43763 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9a9614f6623ecee1e63591b59fd338764abd710d 06-Nov-2007 Evan Cheng <evan.cheng@apple.com> Fix a bug where a def use operand isn't being detected as a sub-register use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43763 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1fd15ba9614e81a3b9cc5cd9631ca76c845159b2 06-Nov-2007 Evan Cheng <evan.cheng@apple.com> Add pseudo dependency to force two-address instruction to be scheduled after
other uses. There was a overly restricted check that prevented some obvious
cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43762 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
48fb0205803f2fadef072d33720c11536490d213 06-Nov-2007 Evan Cheng <evan.cheng@apple.com> Add pseudo dependency to force two-address instruction to be scheduled after
other uses. There was a overly restricted check that prevented some obvious
cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43762 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
8b96b9fce084640cee62d39dab8d7f882818e122 06-Nov-2007 Owen Anderson <resistor@mac.com> Add a few comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43755 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
9c88538126b554eb14405e98cfaedda6893a39d7 06-Nov-2007 Owen Anderson <resistor@mac.com> Add a few comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43755 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
ee49b5385b365559ce3c28e5ace7f821090df466 06-Nov-2007 Owen Anderson <resistor@mac.com> DomForest is a forest of registers, not instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43754 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
5a9ce05eb9601ddf5ec0e9dea9f188df6ef0709f 06-Nov-2007 Owen Anderson <resistor@mac.com> DomForest is a forest of registers, not instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43754 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
a4ad2e740ac7727229ee0b47affb2e7efae085eb 06-Nov-2007 Owen Anderson <resistor@mac.com> StrongPHIElimination requires LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43751 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
f3920cbe6e4b8161f7d8878dec311020cf3eb74c 06-Nov-2007 Owen Anderson <resistor@mac.com> StrongPHIElimination requires LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43751 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
80176319f3ea5d3d943aa540e76381e8567f5dcb 06-Nov-2007 Dan Gohman <gohman@apple.com> Add support for vector remainder operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43744 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3e3fd8cf1c6bb2bff373903ff55d8c7562b2f4ea 06-Nov-2007 Dan Gohman <djg@cray.com> Add support for vector remainder operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43744 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f1ba1cad387dc52f3c2c5afc665edf9caad00992 06-Nov-2007 Rafael Espindola <rafael.espindola@gmail.com> Move the LowerMEMCPY and LowerMEMCPYCall to a common place.

Thanks for the suggestions Bill :-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
dd867c703a1fb12d758ab2ea45aaa0e4e6be4074 06-Nov-2007 Rafael Espindola <rafael.espindola@gmail.com> Move the LowerMEMCPY and LowerMEMCPYCall to a common place.

Thanks for the suggestions Bill :-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
eb57ea7ea2378b77bc995371c1888193b960cd03 05-Nov-2007 Dale Johannesen <dalej@apple.com> Make labels work in asm blocks; allow labels as
parameters. Rename ValueRefList to ParamList
in AsmParser, since its only use is for parameters.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43734 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
cfb19e6297a5527845fd6c14b7dff5dea34b6a25 05-Nov-2007 Dale Johannesen <dalej@apple.com> Make labels work in asm blocks; allow labels as
parameters. Rename ValueRefList to ParamList
in AsmParser, since its only use is for parameters.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43734 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
0c8a13b5107eb41d3c62d7b0db1bd17fa5549368 05-Nov-2007 Duncan Sands <baldrick@free.fr> Don't output ABI size padding twice. By using the store
size for the field we get ABI padding automatically, so
no need to put it in again when we emit the field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43720 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
c15d58ca28e8727d8c8f2f95d997a724069f04be 05-Nov-2007 Duncan Sands <baldrick@free.fr> Don't output ABI size padding twice. By using the store
size for the field we get ABI padding automatically, so
no need to put it in again when we emit the field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43720 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
a461c4d75b66135ff6f3d41b46a08054b8fc1dc8 05-Nov-2007 Evan Cheng <evan.cheng@apple.com> Move SimpleRegisterCoalescing.h to lib/CodeGen since there is now a common
register coalescer interface: RegisterCoalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43714 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
ec045b817d565dc31bf65f9aa3d9711c7e1db293 05-Nov-2007 Evan Cheng <evan.cheng@apple.com> Move SimpleRegisterCoalescing.h to lib/CodeGen since there is now a common
register coalescer interface: RegisterCoalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43714 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
impleRegisterCoalescing.h
5031fd2d32a8ce5e82059928396e0c659e2a7c27 05-Nov-2007 Evan Cheng <evan.cheng@apple.com> Skip over deleted val#'s.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43700 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
30d15d0bb3ff073a13fc45f330b356fead9e46d8 05-Nov-2007 Evan Cheng <evan.cheng@apple.com> Skip over deleted val#'s.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43700 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5942efb0e5f49fb772e340c251502cc0a7ff157e 05-Nov-2007 Evan Cheng <evan.cheng@apple.com> Handle cases where a register and one of its super-register are both marked as
defined on the same instruction. This fixes PR1767.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43699 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
9cf8f9c2401675e1b097e8c0ec9132e739acca64 05-Nov-2007 Evan Cheng <evan.cheng@apple.com> Handle cases where a register and one of its super-register are both marked as
defined on the same instruction. This fixes PR1767.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43699 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
5f5f3b6333ed5ecaf40699e8cd0b1aba524cbf0f 05-Nov-2007 Evan Cheng <evan.cheng@apple.com> Fix PR1187.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43692 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ccfa6921070225ad30fe5e82641775da0983f07a 05-Nov-2007 Evan Cheng <evan.cheng@apple.com> Fix PR1187.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43692 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ca0ed744852a7d9625572fbb793f65e81225a3e8 05-Nov-2007 Duncan Sands <baldrick@free.fr> Eliminate the remaining uses of getTypeSize. This
should only effect x86 when using long double. Now
12/16 bytes are output for long double globals (the
exact amount depends on the alignment). This brings
globals in line with the rest of LLVM: the space
reserved for an object is now always the ABI size.
One tricky point is that only 10 bytes should be
output for long double if it is a field in a packed
struct, which is the reason for the additional
argument to EmitGlobalConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43688 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
LFWriter.cpp
achOWriter.cpp
achOWriter.h
achineFunction.cpp
8157ef423408bd50e6712814e7792a308b5db7d7 05-Nov-2007 Duncan Sands <baldrick@free.fr> Eliminate the remaining uses of getTypeSize. This
should only effect x86 when using long double. Now
12/16 bytes are output for long double globals (the
exact amount depends on the alignment). This brings
globals in line with the rest of LLVM: the space
reserved for an object is now always the ABI size.
One tricky point is that only 10 bytes should be
output for long double if it is a field in a packed
struct, which is the reason for the additional
argument to EmitGlobalConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43688 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
LFWriter.cpp
achOWriter.cpp
achOWriter.h
achineFunction.cpp
83430bce1d21c8095438ed591cb9c72b5c666a07 04-Nov-2007 Owen Anderson <resistor@mac.com> Another step of stronger PHI elimination down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43684 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
e4df5e078d7f8a47e9dc3ff9431c58e082947fb5 04-Nov-2007 Owen Anderson <resistor@mac.com> Another step of stronger PHI elimination down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43684 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
9aeaf7593bb3c124aa8a5aa9623efcf3db3b0534 04-Nov-2007 Evan Cheng <evan.cheng@apple.com> If an interval is being undone clear its preference as well since the source interval may have been undone as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43670 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
b6aa671893136982fb23be64cc69dfc7a42aa260 04-Nov-2007 Evan Cheng <evan.cheng@apple.com> If an interval is being undone clear its preference as well since the source interval may have been undone as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43670 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
c92da3882ee4e18153bb36fcdf33af393aba8259 03-Nov-2007 Evan Cheng <evan.cheng@apple.com> There are times when the coalescer would not coalesce away a copy but the copy
can be eliminated by the allocator is the destination and source targets the
same register. The most common case is when the source and destination registers
are in different class. For example, on x86 mov32to32_ targets GR32_ which
contains a subset of the registers in GR32.

The allocator can do 2 things:
1. Set the preferred allocation for the destination of a copy to that of its source.
2. After allocation is done, change the allocation of a copy destination (if
legal) so the copy can be eliminated.

This eliminates 443 extra moves from 403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43662 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
c4c75f53f7a933644abd1805e73cb4655b3beb5b 03-Nov-2007 Evan Cheng <evan.cheng@apple.com> There are times when the coalescer would not coalesce away a copy but the copy
can be eliminated by the allocator is the destination and source targets the
same register. The most common case is when the source and destination registers
are in different class. For example, on x86 mov32to32_ targets GR32_ which
contains a subset of the registers in GR32.

The allocator can do 2 things:
1. Set the preferred allocation for the destination of a copy to that of its source.
2. After allocation is done, change the allocation of a copy destination (if
legal) so the copy can be eliminated.

This eliminates 443 extra moves from 403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43662 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
111c4f897eb9a42eac6aceea830b8e76058afd73 02-Nov-2007 Dan Gohman <gohman@apple.com> Add std:: to sort calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43652 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
68840707c8763f4e7a5377039b14d08fef6caef9 02-Nov-2007 Dan Gohman <djg@cray.com> Add std:: to sort calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43652 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b61f2f061feefd79623fadd21eee4f195b0b8e56 02-Nov-2007 Dan Gohman <gohman@apple.com> Change illegal uses of ++ to uses of STLExtra.h's next function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43651 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0bb8bdc724f0dbd88a4be9853dfe31cf6f244f56 02-Nov-2007 Dan Gohman <djg@cray.com> Change illegal uses of ++ to uses of STLExtra.h's next function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43651 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7277a7d031d2ccd66e2c3da0c797af0bf9f089ca 02-Nov-2007 Evan Cheng <evan.cheng@apple.com> One more extract_subreg coalescing bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43644 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
a1b89c2ad478ffac5e84a0323e451b8bf8322ba7 02-Nov-2007 Evan Cheng <evan.cheng@apple.com> One more extract_subreg coalescing bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43644 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
e414cdacb4ee442624128e41cb985c4e9f312b52 02-Nov-2007 Duncan Sands <baldrick@free.fr> Fix a thinko.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43639 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
ee9c9b0d7868ada6d88e959d6959f6848e320002 02-Nov-2007 Duncan Sands <baldrick@free.fr> Fix a thinko.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43639 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
514ab348fddcdffa8367685dc608b2f8d5de986d 01-Nov-2007 Duncan Sands <baldrick@free.fr> Executive summary: getTypeSize -> getTypeStoreSize / getABITypeSize.
The meaning of getTypeSize was not clear - clarifying it is important
now that we have x86 long double and arbitrary precision integers.
The issue with long double is that it requires 80 bits, and this is
not a multiple of its alignment. This gives a primitive type for
which getTypeSize differed from getABITypeSize. For arbitrary precision
integers it is even worse: there is the minimum number of bits needed to
hold the type (eg: 36 for an i36), the maximum number of bits that will
be overwriten when storing the type (40 bits for i36) and the ABI size
(i.e. the storage size rounded up to a multiple of the alignment; 64 bits
for i36).

This patch removes getTypeSize (not really - it is still there but
deprecated to allow for a gradual transition). Instead there is:

(1) getTypeSizeInBits - a number of bits that suffices to hold all
values of the type. For a primitive type, this is the minimum number
of bits. For an i36 this is 36 bits. For x86 long double it is 80.
This corresponds to gcc's TYPE_PRECISION.

(2) getTypeStoreSizeInBits - the maximum number of bits that is
written when storing the type (or read when reading it). For an
i36 this is 40 bits, for an x86 long double it is 80 bits. This
is the size alias analysis is interested in (getTypeStoreSize
returns the number of bytes). There doesn't seem to be anything
corresponding to this in gcc.

(3) getABITypeSizeInBits - this is getTypeStoreSizeInBits rounded
up to a multiple of the alignment. For an i36 this is 64, for an
x86 long double this is 96 or 128 depending on the OS. This is the
spacing between consecutive elements when you form an array out of
this type (getABITypeSize returns the number of bytes). This is
TYPE_SIZE in gcc.

Since successive elements in a SequentialType (arrays, pointers
and vectors) need to be aligned, the spacing between them will be
given by getABITypeSize. This means that the size of an array
is the length times the getABITypeSize. It also means that GEP
computations need to use getABITypeSize when computing offsets.
Furthermore, if an alloca allocates several elements at once then
these too need to be aligned, so the size of the alloca has to be
the number of elements multiplied by getABITypeSize. Logically
speaking this doesn't have to be the case when allocating just
one element, but it is simpler to also use getABITypeSize in this
case. So alloca's and mallocs should use getABITypeSize. Finally,
since gcc's only notion of size is that given by getABITypeSize, if
you want to output assembler etc the same as gcc then getABITypeSize
is the size you want.

Since a store will overwrite no more than getTypeStoreSize bytes,
and a read will read no more than that many bytes, this is the
notion of size appropriate for alias analysis calculations.

In this patch I have corrected all type size uses except some of
those in ScalarReplAggregates, lib/Codegen, lib/Target (the hard
cases). I will get around to auditing these too at some point,
but I could do with some help.

Finally, I made one change which I think wise but others might
consider pointless and suboptimal: in an unpacked struct the
amount of space allocated for a field is now given by the ABI
size rather than getTypeStoreSize. I did this because every
other place that reserves memory for a type (eg: alloca) now
uses getABITypeSize, and I didn't want to make an exception
for unpacked structs, i.e. I did it to make things more uniform.
This only effects structs containing long doubles and arbitrary
precision integers. If someone wants to pack these types more
tightly they can always use a packed struct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
f99fdc666e16255e15d8ab0888a49bddbb96aa2d 01-Nov-2007 Duncan Sands <baldrick@free.fr> Executive summary: getTypeSize -> getTypeStoreSize / getABITypeSize.
The meaning of getTypeSize was not clear - clarifying it is important
now that we have x86 long double and arbitrary precision integers.
The issue with long double is that it requires 80 bits, and this is
not a multiple of its alignment. This gives a primitive type for
which getTypeSize differed from getABITypeSize. For arbitrary precision
integers it is even worse: there is the minimum number of bits needed to
hold the type (eg: 36 for an i36), the maximum number of bits that will
be overwriten when storing the type (40 bits for i36) and the ABI size
(i.e. the storage size rounded up to a multiple of the alignment; 64 bits
for i36).

This patch removes getTypeSize (not really - it is still there but
deprecated to allow for a gradual transition). Instead there is:

(1) getTypeSizeInBits - a number of bits that suffices to hold all
values of the type. For a primitive type, this is the minimum number
of bits. For an i36 this is 36 bits. For x86 long double it is 80.
This corresponds to gcc's TYPE_PRECISION.

(2) getTypeStoreSizeInBits - the maximum number of bits that is
written when storing the type (or read when reading it). For an
i36 this is 40 bits, for an x86 long double it is 80 bits. This
is the size alias analysis is interested in (getTypeStoreSize
returns the number of bytes). There doesn't seem to be anything
corresponding to this in gcc.

(3) getABITypeSizeInBits - this is getTypeStoreSizeInBits rounded
up to a multiple of the alignment. For an i36 this is 64, for an
x86 long double this is 96 or 128 depending on the OS. This is the
spacing between consecutive elements when you form an array out of
this type (getABITypeSize returns the number of bytes). This is
TYPE_SIZE in gcc.

Since successive elements in a SequentialType (arrays, pointers
and vectors) need to be aligned, the spacing between them will be
given by getABITypeSize. This means that the size of an array
is the length times the getABITypeSize. It also means that GEP
computations need to use getABITypeSize when computing offsets.
Furthermore, if an alloca allocates several elements at once then
these too need to be aligned, so the size of the alloca has to be
the number of elements multiplied by getABITypeSize. Logically
speaking this doesn't have to be the case when allocating just
one element, but it is simpler to also use getABITypeSize in this
case. So alloca's and mallocs should use getABITypeSize. Finally,
since gcc's only notion of size is that given by getABITypeSize, if
you want to output assembler etc the same as gcc then getABITypeSize
is the size you want.

Since a store will overwrite no more than getTypeStoreSize bytes,
and a read will read no more than that many bytes, this is the
notion of size appropriate for alias analysis calculations.

In this patch I have corrected all type size uses except some of
those in ScalarReplAggregates, lib/Codegen, lib/Target (the hard
cases). I will get around to auditing these too at some point,
but I could do with some help.

Finally, I made one change which I think wise but others might
consider pointless and suboptimal: in an unpacked struct the
amount of space allocated for a field is now given by the ABI
size rather than getTypeStoreSize. I did this because every
other place that reserves memory for a type (eg: alloca) now
uses getABITypeSize, and I didn't want to make an exception
for unpacked structs, i.e. I did it to make things more uniform.
This only effects structs containing long doubles and arbitrary
precision integers. If someone wants to pack these types more
tightly they can always use a packed struct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
0547bab214c65402cd80846e8bccb7535c0ddf09 01-Nov-2007 Evan Cheng <evan.cheng@apple.com> - Coalesce extract_subreg when both intervals are relatively small.
- Some code clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43606 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
7dbf2570c869b7330f3a3df1c108f0f3c0073f04 01-Nov-2007 Evan Cheng <evan.cheng@apple.com> - Coalesce extract_subreg when both intervals are relatively small.
- Some code clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43606 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
7169a2f9e87d3cb13666071b9af022fdb82218e4 31-Oct-2007 Duncan Sands <baldrick@free.fr> Promotion of sdiv/srem/udiv/urem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43551 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
d12d06725624645c26540e82d848e4f13b490864 31-Oct-2007 Duncan Sands <baldrick@free.fr> Promotion of sdiv/srem/udiv/urem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43551 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
1bd3271b16d7f9f0b69af00d8ff29ed00a29f9ef 31-Oct-2007 Duncan Sands <baldrick@free.fr> Add a newline at the end of the file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43550 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
trongPHIElimination.cpp
d830533de6017e2a2c2b982b780be3a164fefaa5 31-Oct-2007 Duncan Sands <baldrick@free.fr> Add a newline at the end of the file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43550 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
trongPHIElimination.cpp
0bda0e8895285c3a03c8859e11f2fff69861fd9d 31-Oct-2007 Owen Anderson <resistor@mac.com> Add the skeleton of a better PHI elimination pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43542 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
4ae2d3f502fa779adb0a93c56c9c14f3c66f517c 31-Oct-2007 Owen Anderson <resistor@mac.com> Add the skeleton of a better PHI elimination pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43542 91177308-0d34-0410-b5e6-96231b3b80d8
trongPHIElimination.cpp
5d32ec4cb002973cb12bc21a3fe12364794168c8 31-Oct-2007 Owen Anderson <resistor@mac.com> Some fixes to get MachineDomTree working better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43541 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
444710d3e044f06eea20ce1206dc096b095c3efd 31-Oct-2007 Owen Anderson <resistor@mac.com> Some fixes to get MachineDomTree working better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43541 91177308-0d34-0410-b5e6-96231b3b80d8
achineDominators.cpp
25f1d08619720b82e7c944b18eee488fc07ba153 31-Oct-2007 Dale Johannesen <dalej@apple.com> Make i64=expand_vector_elt(v2i64) work in 32-bit mode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43535 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2ff963d7b805464bb77a600a7dc3a8fc24d2836d 31-Oct-2007 Dale Johannesen <dalej@apple.com> Make i64=expand_vector_elt(v2i64) work in 32-bit mode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43535 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
de1631bc85380857b11240eb22ddff2bfa5b7104 30-Oct-2007 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43511 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
06aaf4c28ad00f87b797faf1a061aefadc5ab811 30-Oct-2007 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43511 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
01405f928418e1c1268dd0e7a4b9dd68e0cb146c 30-Oct-2007 Duncan Sands <baldrick@free.fr> Add support for expanding trunc stores. Consider
storing an i170 on a 32 bit machine. This is first
promoted to a trunc-i170 store of an i256. On a
little-endian machine this expands to a store of
an i128 and a trunc-i42 store of an i128. The
trunc-i42 store is further expanded to a trunc-i42
store of an i64, then to a store of an i32 and a
trunc-i10 store of an i32. At this point the operand
type is legal (i32) and expansion stops (legalization
of the trunc-i10 needs to be handled in LegalizeDAG.cpp).
On big-endian machines the high bits are stored first,
and some bit-fiddling is needed in order to generate
aligned stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43499 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
77bf4c48821a37c19b1c7fc41265fe327438eaa3 30-Oct-2007 Duncan Sands <baldrick@free.fr> Add support for expanding trunc stores. Consider
storing an i170 on a 32 bit machine. This is first
promoted to a trunc-i170 store of an i256. On a
little-endian machine this expands to a store of
an i128 and a trunc-i42 store of an i128. The
trunc-i42 store is further expanded to a trunc-i42
store of an i64, then to a store of an i32 and a
trunc-i10 store of an i32. At this point the operand
type is legal (i32) and expansion stops (legalization
of the trunc-i10 needs to be handled in LegalizeDAG.cpp).
On big-endian machines the high bits are stored first,
and some bit-fiddling is needed in order to generate
aligned stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43499 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
ba3b1d10fd9bc3034a5947da7cc6e32a70ce23d4 30-Oct-2007 Duncan Sands <baldrick@free.fr> If a call to getTruncStore is for a normal store,
offload to getStore rather than trying to handle
both cases at once (the assertions for example
assume the store really is truncating).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43498 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
06fcf6543423ddff7414f40a53279344e97044d9 30-Oct-2007 Duncan Sands <baldrick@free.fr> If a call to getTruncStore is for a normal store,
offload to getStore rather than trying to handle
both cases at once (the assertions for example
assume the store really is truncating).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43498 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
090b38a0dafbdad144db1e2c5c9db082eb7dc9fe 29-Oct-2007 Dan Gohman <gohman@apple.com> Fix a DAGCombiner abort on a bitcast from a scalar to a vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43470 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a3591d9ec3fd99ae03aee545913d5fc84fba60b8 29-Oct-2007 Dan Gohman <djg@cray.com> Fix a DAGCombiner abort on a bitcast from a scalar to a vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43470 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3c3ddb3a856e44c603cb8cf8f52ff9c0f06ff14a 29-Oct-2007 Evan Cheng <evan.cheng@apple.com> Enable more fold (sext (load x)) -> (sext (truncate (sextload x)))
transformation. Previously, it's restricted by ensuring the number of load uses
is one. Now the restriction is loosened up by allowing setcc uses to be
"extended" (e.g. setcc x, c, eq -> setcc sext(x), sext(c), eq).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9decb33dcb7844c828849b763dd80af08785ba35 29-Oct-2007 Evan Cheng <evan.cheng@apple.com> Enable more fold (sext (load x)) -> (sext (truncate (sextload x)))
transformation. Previously, it's restricted by ensuring the number of load uses
is one. Now the restriction is loosened up by allowing setcc uses to be
"extended" (e.g. setcc x, c, eq -> setcc sext(x), sext(c), eq).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9962054775455c43402bf176da4a28c68197feef 29-Oct-2007 Dan Gohman <gohman@apple.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
751fed71f59d152b3017e2c175bc4285a219a9d0 29-Oct-2007 Dan Gohman <djg@cray.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
dc84650679b6330e0fcdd4cf8bc2a351387db7ca 28-Oct-2007 Duncan Sands <baldrick@free.fr> The guaranteed alignment of ptr+offset is only the minimum of
of offset and the alignment of ptr if these are both powers of
2. While the ptr alignment is guaranteed to be a power of 2,
there is no reason to think that offset is. For example, if
offset is 12 (the size of a long double on x86-32 linux) and
the alignment of ptr is 8, then the alignment of ptr+offset
will in general be 4, not 8. Introduce a function MinAlign,
lifted from gcc, for computing the minimum guaranteed alignment.
I've tried to fix up everywhere under lib/CodeGen/SelectionDAG/.
I also changed some places that weren't wrong (because both values
were a power of 2), as a defensive change against people copying
and pasting the code.
Hopefully someone who cares about alignment will review the rest
of LLVM and fix up the remaining places. Since I'm on x86 I'm
not very motivated to do this myself...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43421 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeDAGTypes.cpp
a369143858d4b127ef672b305a4bd676b5030898 28-Oct-2007 Duncan Sands <baldrick@free.fr> The guaranteed alignment of ptr+offset is only the minimum of
of offset and the alignment of ptr if these are both powers of
2. While the ptr alignment is guaranteed to be a power of 2,
there is no reason to think that offset is. For example, if
offset is 12 (the size of a long double on x86-32 linux) and
the alignment of ptr is 8, then the alignment of ptr+offset
will in general be 4, not 8. Introduce a function MinAlign,
lifted from gcc, for computing the minimum guaranteed alignment.
I've tried to fix up everywhere under lib/CodeGen/SelectionDAG/.
I also changed some places that weren't wrong (because both values
were a power of 2), as a defensive change against people copying
and pasting the code.
Hopefully someone who cares about alignment will review the rest
of LLVM and fix up the remaining places. Since I'm on x86 I'm
not very motivated to do this myself...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43421 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeDAGTypes.cpp
984e986929c34f9fa41ad33e3a4f19816f80c1ad 26-Oct-2007 Bill Wendling <isanbard@gmail.com> - Remove the hacky code that forces a memcpy. Alignment is taken care of in the
FE.
- Explicitly pass in the alignment of the load & store.
- XFAIL 2007-10-23-UnalignedMemcpy.ll because llc has a bug that crashes on
unaligned pointers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
84ebece8b1abc9b63c7360fc124a7e282deee332 26-Oct-2007 Bill Wendling <isanbard@gmail.com> - Remove the hacky code that forces a memcpy. Alignment is taken care of in the
FE.
- Explicitly pass in the alignment of the load & store.
- XFAIL 2007-10-23-UnalignedMemcpy.ll because llc has a bug that crashes on
unaligned pointers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
da6efc5268958a0668806e989c1c5a1f788543e5 25-Oct-2007 Bill Wendling <isanbard@gmail.com> Changed XXX to FIXME, and added comment to the README file

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43359 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
EADME.txt
f728a1ceebdaeb8d5765071bd0c70b41a485b3da 25-Oct-2007 Bill Wendling <isanbard@gmail.com> Changed XXX to FIXME, and added comment to the README file

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43359 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
EADME.txt
0713a224234b4596709c7582ebf17a1ccb95c872 25-Oct-2007 Bill Wendling <isanbard@gmail.com> Added comment explaining why we are doing this check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43353 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
8362818146eb0198a47561fe5628a1d8cf2a19a4 25-Oct-2007 Bill Wendling <isanbard@gmail.com> Added comment explaining why we are doing this check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43353 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
2e606cfc7a2a8523114f0666756fce1e61fa9f6b 25-Oct-2007 Duncan Sands <baldrick@free.fr> Small formatting changes. Add a sanity check.
Use NVT rather than looking it up, since we have
it to hand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43341 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
abace9db0cd2cbca0e9bbf17adfedc1650f92129 25-Oct-2007 Duncan Sands <baldrick@free.fr> Small formatting changes. Add a sanity check.
Use NVT rather than looking it up, since we have
it to hand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43341 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
cac99db7dafb832710d9cb95bc7561d861f9e55b 25-Oct-2007 Duncan Sands <baldrick@free.fr> Promote SETCC operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
10ca7fb7ae34a80c98088dfb00e9362f80fed908 25-Oct-2007 Duncan Sands <baldrick@free.fr> Promote SETCC operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
a3d10d808eb68c8e330eee382168cd747c718baf 25-Oct-2007 Duncan Sands <baldrick@free.fr> Correctly extract the ValueType from a VTSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43339 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
2353b747aee0e6f4634b1219c94cf95cb3337f36 25-Oct-2007 Duncan Sands <baldrick@free.fr> Correctly extract the ValueType from a VTSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43339 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
8eadd5a6db79da067c773d1bd1cc13edc07788cc 25-Oct-2007 Dale Johannesen <dalej@apple.com> Another expansion for i64 multiply, suitable for PPC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43314 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
612c88b47558b9cd4109058733442a148b05feb5 25-Oct-2007 Dale Johannesen <dalej@apple.com> Another expansion for i64 multiply, suitable for PPC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43314 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
30eeb3c6c00088ecdcaae8850fbaaa933a316c32 24-Oct-2007 Bill Wendling <isanbard@gmail.com> Fix comment and use the "Size" variable that's already provided.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43271 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6310506781df7714cf4df32de832b0ea8dcb64f0 24-Oct-2007 Bill Wendling <isanbard@gmail.com> Fix comment and use the "Size" variable that's already provided.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43271 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8b1c68cee4ddf42b4b57d4224f945ad9e9d4a779 24-Oct-2007 Bill Wendling <isanbard@gmail.com> If there's an unaligned memcpy to/from the stack, don't lower it. Just call the
memcpy library function instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43270 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f7fcf9c22399a68d9a0a114de561f25e2ac9bb82 24-Oct-2007 Bill Wendling <isanbard@gmail.com> If there's an unaligned memcpy to/from the stack, don't lower it. Just call the
memcpy library function instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43270 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
803396fce26270fae6ff0dfba4813f4d4e5002fd 24-Oct-2007 Bill Wendling <isanbard@gmail.com> This broke lots. Reverting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43264 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b9dacd9fc2f988dc2635fa4534abc6fdebf6489a 24-Oct-2007 Bill Wendling <isanbard@gmail.com> This broke lots. Reverting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43264 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
de09040946b4aa9bdc70057d65f840685ac31fef 23-Oct-2007 Bill Wendling <isanbard@gmail.com> Lowering a memcpy to the stack is killing PPC. The ARM and X86 backends already
have their own custom memcpy lowering code. This code needs to be factored out
into a target-independent lowering method with hooks to the backend. In the
meantime, just call memcpy if we're trying to copy onto a stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43262 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d9216574ddab03de298afadafda68d770b49545d 23-Oct-2007 Bill Wendling <isanbard@gmail.com> Lowering a memcpy to the stack is killing PPC. The ARM and X86 backends already
have their own custom memcpy lowering code. This code needs to be factored out
into a target-independent lowering method with hooks to the backend. In the
meantime, just call memcpy if we're trying to copy onto a stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43262 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7bb175b4d12e3a22a66a26f0e9ba2ebd4406acc7 23-Oct-2007 Evan Cheng <evan.cheng@apple.com> It's possible to commute instrctions with more than 3 operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43256 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b5130eb0d47d69561c2b907f082a757ed38cfb32 23-Oct-2007 Evan Cheng <evan.cheng@apple.com> It's possible to commute instrctions with more than 3 operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43256 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
e11fb343817d4bfa536cbf1b0ba979e1a4e16381 23-Oct-2007 Evan Cheng <evan.cheng@apple.com> isSubRegOf() is a dup of isSubRegister.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43249 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
713bc616ede84fbd39a8fde851ca52f966e38bfe 23-Oct-2007 Evan Cheng <evan.cheng@apple.com> isSubRegOf() is a dup of isSubRegister.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43249 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
76500d52be67e5dbdf9b7fb2843d286f26f37e3b 22-Oct-2007 Evan Cheng <evan.cheng@apple.com> Add missing paratheses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43227 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
358d8ddc33c402005a17ddfd5eff1b1d85367c8c 22-Oct-2007 Evan Cheng <evan.cheng@apple.com> Add missing paratheses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43227 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
fec3ad3e5f98ffdafee873c4afed81648ff2049f 22-Oct-2007 Duncan Sands <baldrick@free.fr> Support for expanding extending loads of integers with
funky bit-widths.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43225 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
673b87b92c3f4a63eeab070ed6539be4e6a0df82 22-Oct-2007 Duncan Sands <baldrick@free.fr> Support for expanding extending loads of integers with
funky bit-widths.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43225 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
245741d2a1ccec53a87bb5d02b711244c179f07a 22-Oct-2007 Duncan Sands <baldrick@free.fr> Fix up the logic for result expanding the various extension
operations so they work right for integers with funky
bit-widths. For example, consider extending i48 to i64
on a 32 bit machine. The i64 result is expanded to 2 x i32.
We know that the i48 operand will be promoted to i64, then
also expanded to 2 x i32. If we had the expanded promoted
operand to hand, then expanding the result would be trivial.
Unfortunately at this stage we can only get hold of the
promoted operand. So instead we kind of hand-expand, doing
explicit shifting and truncating to get the top and bottom
halves of the i64 operand into 2 x i32, which are then used
to expand the result. This is harmless, because when the
promoted operand is finally expanded all this bit fiddling
turns into trivial operations which are eliminated either
by the expansion code itself or the DAG combiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43223 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
78ca93bb4960929e72ad3a86219f2a83a4413288 22-Oct-2007 Duncan Sands <baldrick@free.fr> Fix up the logic for result expanding the various extension
operations so they work right for integers with funky
bit-widths. For example, consider extending i48 to i64
on a 32 bit machine. The i64 result is expanded to 2 x i32.
We know that the i48 operand will be promoted to i64, then
also expanded to 2 x i32. If we had the expanded promoted
operand to hand, then expanding the result would be trivial.
Unfortunately at this stage we can only get hold of the
promoted operand. So instead we kind of hand-expand, doing
explicit shifting and truncating to get the top and bottom
halves of the i64 operand into 2 x i32, which are then used
to expand the result. This is harmless, because when the
promoted operand is finally expanded all this bit fiddling
turns into trivial operations which are eliminated either
by the expansion code itself or the DAG combiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43223 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
cbfb9b27efd2b4fc1fbc02addf4d41a7d8d8d8eb 22-Oct-2007 Evan Cheng <evan.cheng@apple.com> - Only perform the unfolding optimization when the folding in question is modref.
- Remove a bogus assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43211 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
3b94f75ebe1a3d6356bfcaba5a0857d05ba70744 22-Oct-2007 Evan Cheng <evan.cheng@apple.com> - Only perform the unfolding optimization when the folding in question is modref.
- Remove a bogus assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43211 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
d0e908e830b2d2415e501e862c0aafbb9d5c2a5f 21-Oct-2007 Chris Lattner <sabre@nondot.org> Add promote operand support for [su]int_to_fp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
2db52893b4a0adf3a4203bda64d8582fae62a1aa 21-Oct-2007 Chris Lattner <sabre@nondot.org> Add promote operand support for [su]int_to_fp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
be5a0a466880b2636404a976d4ed6546877215b5 20-Oct-2007 Chris Lattner <sabre@nondot.org> Add result promotion of FP_TO_*INT, fixing CodeGen/X86/trunc-to-bool.ll
with the new legalizer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43199 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
6587f34750656282059b24f7af2a065baf095382 20-Oct-2007 Chris Lattner <sabre@nondot.org> Add result promotion of FP_TO_*INT, fixing CodeGen/X86/trunc-to-bool.ll
with the new legalizer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43199 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
aaeb0c86666662d3ed5766540ecd8c552049c320 20-Oct-2007 Chris Lattner <sabre@nondot.org> simplify some code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43198 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
786ab068cec0d55198d800ba57d5cb3ecf0c6e1e 20-Oct-2007 Chris Lattner <sabre@nondot.org> simplify some code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43198 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
d20154c76286a750a0bcd270909190871e95c149 20-Oct-2007 Chris Lattner <sabre@nondot.org> Implement promote and expand for operands of memcpy and friends.
This fixes CodeGen/X86/mem*.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43197 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
180760038d0772da0a2ceb9ff2e07d7ce5b174dc 20-Oct-2007 Chris Lattner <sabre@nondot.org> Implement promote and expand for operands of memcpy and friends.
This fixes CodeGen/X86/mem*.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43197 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
b9d5e7cdc9ce587f27e0ea9ced35db60f2601d2e 20-Oct-2007 Evan Cheng <evan.cheng@apple.com> Added missing curly braces which renders the if clause useless in debug build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43196 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
8ba2af53e5955e74581eb35af81a363f314bb797 20-Oct-2007 Evan Cheng <evan.cheng@apple.com> Added missing curly braces which renders the if clause useless in debug build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43196 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
e526962fc59d38b4b0f671717df7657b8e0d8baa 20-Oct-2007 Dale Johannesen <dalej@apple.com> Fix a few places vector operations were not getting
the operand's type from the right place.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
db132452e3caa89308c519f44693efa96b583f59 20-Oct-2007 Dale Johannesen <dalej@apple.com> Fix a few places vector operations were not getting
the operand's type from the right place.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
66f716354527c5ab4687a89a1605915e5128a106 19-Oct-2007 Evan Cheng <evan.cheng@apple.com> Local spiller optimization:
Turn a store folding instruction into a load folding instruction. e.g.
xorl %edi, %eax
movl %eax, -32(%ebp)
movl -36(%ebp), %eax
orl %eax, -32(%ebp)
=>
xorl %edi, %eax
orl -36(%ebp), %eax
mov %eax, -32(%ebp)
This enables the unfolding optimization for a subsequent instruction which will
also eliminate the newly introduced store instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43192 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
4a7e72ff3e293d3fcf0a55338ec6316b3731aacb 19-Oct-2007 Evan Cheng <evan.cheng@apple.com> Local spiller optimization:
Turn a store folding instruction into a load folding instruction. e.g.
xorl %edi, %eax
movl %eax, -32(%ebp)
movl -36(%ebp), %eax
orl %eax, -32(%ebp)
=>
xorl %edi, %eax
orl -36(%ebp), %eax
mov %eax, -32(%ebp)
This enables the unfolding optimization for a subsequent instruction which will
also eliminate the newly introduced store instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43192 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
80629c85f1041df41b5158ebb03a4725af6ecd90 19-Oct-2007 Bill Wendling <isanbard@gmail.com> Don't branch fold inline asm statements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43191 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
46329b72097fe55d565d8d05b3c07dfdde04bf8e 19-Oct-2007 Bill Wendling <isanbard@gmail.com> Don't branch fold inline asm statements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43191 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
7f5f6851c386e1f74d35ee708e4654ae1c1038b6 19-Oct-2007 Duncan Sands <baldrick@free.fr> Add support for a few more nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43190 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
3d6e9e2fabde4875e638fb27a89392f286a3013e 19-Oct-2007 Duncan Sands <baldrick@free.fr> Add support for a few more nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43190 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
b6210fc92b643a5440d8373b5f36b6e579b5feb8 19-Oct-2007 Dale Johannesen <dalej@apple.com> Redo "last ppc long double fix" as Chris wants.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43189 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
2550e3aa67fc6b5192976b0a6ad5c8cd7829cf32 19-Oct-2007 Dale Johannesen <dalej@apple.com> Redo "last ppc long double fix" as Chris wants.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43189 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
f185e67844e6229e2b0fe9080a5f66fb01fb7f5a 19-Oct-2007 Chris Lattner <sabre@nondot.org> Fix a really nasty vector miscompilation bill recently introduced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43181 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9f9b880c45ba65f79ab1262eef9c716c8d9a917a 19-Oct-2007 Chris Lattner <sabre@nondot.org> Fix a really nasty vector miscompilation bill recently introduced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43181 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1c4d492b944768ded5356587779045cc346409d7 19-Oct-2007 Chris Lattner <sabre@nondot.org> rename ExpandOperation to ExpandOperationResult, as suggested
by Duncan


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43177 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
electionDAG/SelectionDAGISel.cpp
92da0502967c55166272fabcd4fca394f31d03bf 19-Oct-2007 Chris Lattner <sabre@nondot.org> rename ExpandOperation to ExpandOperationResult, as suggested
by Duncan


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43177 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
electionDAG/SelectionDAGISel.cpp
c8ca2365e5fcd1cd3b69d4324106d6ebb28a152a 19-Oct-2007 Duncan Sands <baldrick@free.fr> Support for expanding ADDE and SUBE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43175 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
700e008b476479e4edd1123ab267fc03a071948a 19-Oct-2007 Duncan Sands <baldrick@free.fr> Support for expanding ADDE and SUBE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43175 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
5d868b1ffedfb4917abcb3b41afa6e21d9160ff7 19-Oct-2007 Duncan Sands <baldrick@free.fr> If the value types are equal then this routine
asserts in later checks rather than producing
the ordinary load it is supposed to. Avoid all
such hassles by directly returning an ordinary
load in this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43174 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9b61474a7e449c3274efd672d9fea79d210db625 19-Oct-2007 Duncan Sands <baldrick@free.fr> If the value types are equal then this routine
asserts in later checks rather than producing
the ordinary load it is supposed to. Avoid all
such hassles by directly returning an ordinary
load in this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43174 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5c0d6ed325417baa5d119af9c2b6790231d8565f 19-Oct-2007 Rafael Espindola <rafael.espindola@gmail.com> Add support for byval function whose argument is not 32 bit aligned.
To do this it is necessary to add a "always inline" argument to the
memcpy node. For completeness I have also added this node to memmove
and memset. I have also added getMem* functions, because the extra
argument makes it cumbersome to use getNode and because I get confused
by it :-)




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43172 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
808259095dfac3128b20664c1c40f0b2a5b0f8bc 19-Oct-2007 Rafael Espindola <rafael.espindola@gmail.com> Add support for byval function whose argument is not 32 bit aligned.
To do this it is necessary to add a "always inline" argument to the
memcpy node. For completeness I have also added this node to memmove
and memset. I have also added getMem* functions, because the extra
argument makes it cumbersome to use getNode and because I get confused
by it :-)




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43172 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
1f39dc42cdb70b5ebe86e3076c025a814adcbc41 19-Oct-2007 Chris Lattner <sabre@nondot.org> Implement a few new operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
b235c4ab7f957f7b0ed314cf28809d289f648aba 19-Oct-2007 Chris Lattner <sabre@nondot.org> Implement a few new operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
50f4395d86fdf3c6910fc63f38cc4d6d1ce3cef6 19-Oct-2007 Chris Lattner <sabre@nondot.org> Implement expansion of SINT_TO_FP and UINT_TO_FP operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43170 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
0a4f31160b6ee626086a27085db0be9853de22f6 19-Oct-2007 Chris Lattner <sabre@nondot.org> Implement expansion of SINT_TO_FP and UINT_TO_FP operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43170 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
c99df1b8484365318aaab3593f7252a7d95fd5f3 19-Oct-2007 Chris Lattner <sabre@nondot.org> implement support for custom expansion of any node type, in one place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
9d8cab4bf926f1616c1cea4deea1ce29cc7e61f4 19-Oct-2007 Chris Lattner <sabre@nondot.org> implement support for custom expansion of any node type, in one place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
597ab48ca04e470dc90a2022ca7729dce68d092a 19-Oct-2007 Chris Lattner <sabre@nondot.org> Make use of TLI.ExpandOperation, remove softfloat stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43167 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
232a9342c32f42f74ccd695c78b93307004f8f6f 19-Oct-2007 Chris Lattner <sabre@nondot.org> Make use of TLI.ExpandOperation, remove softfloat stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43167 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
c224a53d7aa077d36f1495b242d7c8e4f324754d 19-Oct-2007 Chris Lattner <sabre@nondot.org> add expand support for bit_convert result, even allowing custom expansion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43166 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
3236e9024d89112ffda3d35c9fd531700d2fcd1b 19-Oct-2007 Chris Lattner <sabre@nondot.org> add expand support for bit_convert result, even allowing custom expansion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43166 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
f58dac31690f37c8f93328f8470298e1fe7862cc 19-Oct-2007 Chris Lattner <sabre@nondot.org> add a new target hook.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3e5c6d07559da67346bdb4b74a8319b6325a4379 19-Oct-2007 Chris Lattner <sabre@nondot.org> add a new target hook.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1851898e757008228453aa3f4e3e06bbaecce04d 19-Oct-2007 Bill Wendling <isanbard@gmail.com> Negative indices aren't allowed here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43161 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b502067433df7a567b3a95b7863582ccc8d8991b 19-Oct-2007 Bill Wendling <isanbard@gmail.com> Negative indices aren't allowed here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43161 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fabd32deb025ebd47c5eb47259d2424fd789b05c 19-Oct-2007 Dale Johannesen <dalej@apple.com> More ppcf128 issues (maybe the last)?



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43160 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6f3c7bf111297eddf8e5799a3032dd0b6bde245d 19-Oct-2007 Dale Johannesen <dalej@apple.com> More ppcf128 issues (maybe the last)?



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43160 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
90bfc2d10520f9621309436c1c6928a59cd33616 18-Oct-2007 Bill Wendling <isanbard@gmail.com> Pointer arithmetic should be done with the index the same size as the pointer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43120 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
60f7b4d2a301ad02e2aee5174f65037d22d1d7e2 18-Oct-2007 Bill Wendling <isanbard@gmail.com> Pointer arithmetic should be done with the index the same size as the pointer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43120 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
70ba3d480302187143faf4dc5226a6f3c7b71bc8 18-Oct-2007 Duncan Sands <baldrick@free.fr> Support for ADDC/SUBC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43119 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
221ca0a430c9ff0e9e274cd93754186452ebf86f 18-Oct-2007 Duncan Sands <baldrick@free.fr> Support for ADDC/SUBC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43119 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
4ae31a5d3297af4c6e9752ec91d76b6daa0fc05c 18-Oct-2007 Evan Cheng <evan.cheng@apple.com> Really fix PR1734. Carefully track which register uses are sub-register uses by
traversing inverse register coalescing map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43118 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
bcf43fcc13a32b03d71f4eeaea96b2709853c96f 18-Oct-2007 Evan Cheng <evan.cheng@apple.com> Really fix PR1734. Carefully track which register uses are sub-register uses by
traversing inverse register coalescing map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43118 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c623096fe227a7705ccac5a5db514b64ccdfe6b2 17-Oct-2007 Dan Gohman <gohman@apple.com> Add support for ISD::SELECT in SplitVectorOp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d5d4c872e2fbfeb92795cdbb9fe946c20280facc 17-Oct-2007 Dan Gohman <djg@cray.com> Add support for ISD::SELECT in SplitVectorOp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f411b83c8c6853c2a922b692e782566353153f08 17-Oct-2007 Duncan Sands <baldrick@free.fr> Return Expand from getOperationAction for all extended
types. This is needed for SIGN_EXTEND_INREG at least.
It is not clear if this is correct for other operations.
On the other hand, for the various load/store actions
it seems to correct to return the type action, as is
currently done.
Also, it seems that SelectionDAG::getValueType can be
called for extended value types; introduce a map for
holding these, since we don't really want to extend
the vector to be 2^32 pointers long!
Generalize DAGTypeLegalizer::PromoteResult_TRUNCATE
and DAGTypeLegalizer::PromoteResult_INT_EXTEND to handle
the various funky possibilities that apints introduce,
for example that you can promote to a type that needs
to be expanded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43071 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeDAGTypes.cpp
electionDAG/SelectionDAG.cpp
d7307a96c5fd0340b60e962caa8f5a531442c72f 17-Oct-2007 Duncan Sands <baldrick@free.fr> Return Expand from getOperationAction for all extended
types. This is needed for SIGN_EXTEND_INREG at least.
It is not clear if this is correct for other operations.
On the other hand, for the various load/store actions
it seems to correct to return the type action, as is
currently done.
Also, it seems that SelectionDAG::getValueType can be
called for extended value types; introduce a map for
holding these, since we don't really want to extend
the vector to be 2^32 pointers long!
Generalize DAGTypeLegalizer::PromoteResult_TRUNCATE
and DAGTypeLegalizer::PromoteResult_INT_EXTEND to handle
the various funky possibilities that apints introduce,
for example that you can promote to a type that needs
to be expanded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43071 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/LegalizeDAGTypes.cpp
electionDAG/SelectionDAG.cpp
a5bfc97da713ec9e185226d44e6adb4d3087b304 17-Oct-2007 Evan Cheng <evan.cheng@apple.com> Apply Chris' suggestions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43069 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
12d6fcb0e881af3d0203239331ba58b45b7b8b0b 17-Oct-2007 Evan Cheng <evan.cheng@apple.com> Apply Chris' suggestions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43069 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
95f0ab624d96e4ef56dbeccf86cd7ced4e42f519 17-Oct-2007 Evan Cheng <evan.cheng@apple.com> One more extract_subreg coalescing bug fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43065 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
66c1ee9d27b285769fef64734876e9fcf031e6f4 17-Oct-2007 Evan Cheng <evan.cheng@apple.com> One more extract_subreg coalescing bug fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43065 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
3c1f4a4d4726d1213871c9fc9b42822341fd3f55 17-Oct-2007 Evan Cheng <evan.cheng@apple.com> Fix MergeValueInAsValue(). It allows overlapping live ranges but should replace
their value numbers with the specified value number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43062 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
303fed8a6365ef87a947fb42e115da07f3151fbb 17-Oct-2007 Evan Cheng <evan.cheng@apple.com> Fix MergeValueInAsValue(). It allows overlapping live ranges but should replace
their value numbers with the specified value number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43062 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
3f4b80ec0c898f4de8232217f8ef3dcd5f65769c 17-Oct-2007 Evan Cheng <evan.cheng@apple.com> Clean up code that calculate MBB live-in's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43061 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
f5cdf12ad3fdae00367fc4786ec9ba78c2d803ad 17-Oct-2007 Evan Cheng <evan.cheng@apple.com> Clean up code that calculate MBB live-in's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43061 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
4ca980e7f9ce7b78955307c2d07001a24d3b6bef 17-Oct-2007 Evan Cheng <evan.cheng@apple.com> Clean up code that calculate MBB live-in's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43060 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
94262e42c308c2eca22d5961dccbf4647af0342a 17-Oct-2007 Evan Cheng <evan.cheng@apple.com> Clean up code that calculate MBB live-in's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43060 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
db44bf85d832b26c398cda9acfd3473832f6e585 17-Oct-2007 Dale Johannesen <dalej@apple.com> Disable attempts to constant fold PPC f128.
Remove the assumption that this will happen from
various places.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43053 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
b89072ee61cbc97a45f90da25419396a4f62283f 17-Oct-2007 Dale Johannesen <dalej@apple.com> Disable attempts to constant fold PPC f128.
Remove the assumption that this will happen from
various places.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43053 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
11923cc05efc4b7589c6c33e39a87459132dda06 16-Oct-2007 Evan Cheng <evan.cheng@apple.com> Some clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43043 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
d48f2bc26824098869ebdb3664fbffde81bf0f80 16-Oct-2007 Evan Cheng <evan.cheng@apple.com> Some clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43043 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
dcd8f78f8a84b7d6d2d1b67fc64672e4504c0434 16-Oct-2007 Evan Cheng <evan.cheng@apple.com> Fix PR1734.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43035 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
af679dec3c9b3fce43ab0725de28e75b402d85cb 16-Oct-2007 Evan Cheng <evan.cheng@apple.com> Fix PR1734.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43035 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
af47b11b959713d70c45bee1922e468adfaeaff0 16-Oct-2007 Duncan Sands <baldrick@free.fr> Initial infrastructure for arbitrary precision integer
codegen support. This should have no effect on codegen
for other types. Debatable bits: (1) the use (abuse?)
of a set in SDNode::getValueTypeList; (2) the length of
getTypeToTransformTo, which maybe should be refactored
with a non-inline part for extended value types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43030 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a9810f32ff738d554b6795d58929e990b2415c7b 16-Oct-2007 Duncan Sands <baldrick@free.fr> Initial infrastructure for arbitrary precision integer
codegen support. This should have no effect on codegen
for other types. Debatable bits: (1) the use (abuse?)
of a set in SDNode::getValueTypeList; (2) the length of
getTypeToTransformTo, which maybe should be refactored
with a non-inline part for extended value types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43030 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a7c97a7f5b82778ca5abfc3791c6b7f96b82a5fa 16-Oct-2007 Duncan Sands <baldrick@free.fr> Fixes due to lack of type-safety for ValueType: (1) ValueType
being passed instead of an opcode; (2) ValueType being passed
for isVolatile (!) in getLoad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43028 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b42a44e003aa488665981ad8fb11b671a2834343 16-Oct-2007 Duncan Sands <baldrick@free.fr> Fixes due to lack of type-safety for ValueType: (1) ValueType
being passed instead of an opcode; (2) ValueType being passed
for isVolatile (!) in getLoad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43028 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8b0b8749875cd20fc694f7550a62ed517fe2cd9c 16-Oct-2007 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43026 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
33e5ea130bedb1873b7fd66fb9ad7e136bb20904 16-Oct-2007 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43026 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
59e84258cb899de1f31e730cc5568386b66ccc4b 16-Oct-2007 Chris Lattner <sabre@nondot.org> implement promotion of select and select_cc, allowing MallocBench/gs to
work with type promotion on x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43025 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
ca9b0ac227f43301a4a51326a0bc94b038d0314f 16-Oct-2007 Chris Lattner <sabre@nondot.org> implement promotion of select and select_cc, allowing MallocBench/gs to
work with type promotion on x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43025 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
c4c966012901691fff21eed02d72a3de44dd47f1 16-Oct-2007 Dan Gohman <gohman@apple.com> Teach IntrinsicLowering.cpp about the sin, cos, and pow intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43020 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
02f9ed9f4a11c2a990eb12ada36ed3ea087b1fee 16-Oct-2007 Dan Gohman <djg@cray.com> Teach IntrinsicLowering.cpp about the sin, cos, and pow intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43020 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
4859e277f773180924241beeb25fb4c37f7fa337 15-Oct-2007 Evan Cheng <evan.cheng@apple.com> Make CalcLatency() non-recursive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43017 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
f4aeeee312e009ff4a9f424f8fe5b36b79c6093c 15-Oct-2007 Evan Cheng <evan.cheng@apple.com> Make CalcLatency() non-recursive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43017 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
f5c7359afa8c9ab8d1bfbb6dc41c2d6db8c0420d 15-Oct-2007 Evan Cheng <evan.cheng@apple.com> Fix PR1729: watch out for val# with no def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42996 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
69f969ac26b6af62ca9f331df5dc068b7438bbf6 15-Oct-2007 Evan Cheng <evan.cheng@apple.com> Fix PR1729: watch out for val# with no def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42996 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
85dd3be7354f848231362bd70f6517c0e667f95d 15-Oct-2007 Chris Lattner <sabre@nondot.org> Move CreateStackTemporary out to SelectionDAG


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6fb53da769e50d3cc7a5c22e73f1177dd2c5e40c 15-Oct-2007 Chris Lattner <sabre@nondot.org> Move CreateStackTemporary out to SelectionDAG


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
37ce9df0da6cddc3b8bfef9b63d33d058a0f2f15 15-Oct-2007 Chris Lattner <sabre@nondot.org> add a new CreateStackTemporary helper method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
53f5aee28e0f06df7372f637853b71663571b2bf 15-Oct-2007 Chris Lattner <sabre@nondot.org> add a new CreateStackTemporary helper method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
cfc24007b13564c6720571a2e809cf84fda67737 15-Oct-2007 Chris Lattner <sabre@nondot.org> implement promotion of BR_CC operands, fixing bisort on ppc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
68f6d16711acf519f39f63730bb66f8e2a893ef8 15-Oct-2007 Chris Lattner <sabre@nondot.org> implement promotion of BR_CC operands, fixing bisort on ppc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
1296e9d306e32ee475e5f01826032e736698b5da 15-Oct-2007 Chris Lattner <sabre@nondot.org> updates from duncan


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42991 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
4ac63208f1ce76820f442d4d46b789ef5773165e 15-Oct-2007 Chris Lattner <sabre@nondot.org> updates from duncan


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42991 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
65f8d3bf6bd49e08d1a8f845e4a91e67228d564c 15-Oct-2007 Duncan Sands <baldrick@free.fr> Fix some typos. Call getTypeToTransformTo rather than
getTypeToExpandTo. The difference is that
getTypeToExpandTo gives the final result of expansion
(eg: i128 -> i32 on a 32 bit machine) while
getTypeToTransformTo does just one step (i128 -> i64).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42982 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
74ef38952f901006d42a78eb0c99663640a3f163 15-Oct-2007 Duncan Sands <baldrick@free.fr> Fix some typos. Call getTypeToTransformTo rather than
getTypeToExpandTo. The difference is that
getTypeToExpandTo gives the final result of expansion
(eg: i128 -> i32 on a 32 bit machine) while
getTypeToTransformTo does just one step (i128 -> i64).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42982 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAGTypes.cpp
01d029b82cb08367d81aa10cdc94d05360466649 15-Oct-2007 Chris Lattner <sabre@nondot.org> One mundane change: Change ReplaceAllUsesOfValueWith to *optionally*
take a deleted nodes vector, instead of requiring it.

One more significant change: Implement the start of a legalizer that
just works on types. This legalizer is designed to run before the
operation legalizer and ensure just that the input dag is transformed
into an output dag whose operand and result types are all legal, even
if the operations on those types are not.

This design/impl has the following advantages:

1. When finished, this will *significantly* reduce the amount of code in
LegalizeDAG.cpp. It will remove all the code related to promotion and
expansion as well as splitting and scalarizing vectors.
2. The new code is very simple, idiomatic, and modular: unlike
LegalizeDAG.cpp, it has no 3000 line long functions. :)
3. The implementation is completely iterative instead of recursive, good
for hacking on large dags without blowing out your stack.
4. The implementation updates nodes in place when possible instead of
deallocating and reallocating the entire graph that points to some
mutated node.
5. The code nicely separates out handling of operations with invalid
results from operations with invalid operands, making some cases
simpler and easier to understand.
6. The new -debug-only=legalize-types option is very very handy :),
allowing you to easily understand what legalize types is doing.

This is not yet done. Until the ifdef added to SelectionDAGISel.cpp is
enabled, this does nothing. However, this code is sufficient to legalize
all of the code in 186.crafty, olden and freebench on an x86 machine. The
biggest issues are:

1. Vectors aren't implemented at all yet
2. SoftFP is a mess, I need to talk to Evan about it.
3. No lowering to libcalls is implemented yet.
4. Various operations are missing etc.
5. There are FIXME's for stuff I hax0r'd out, like softfp.

Hey, at least it is a step in the right direction :). If you'd like to help,
just enable the #ifdef in SelectionDAGISel.cpp and compile code with it. If
this explodes it will tell you what needs to be implemented. Help is
certainly appreciated.

Once this goes in, we can do three things:

1. Add a new pass of dag combine between the "type legalizer" and "operation
legalizer" passes. This will let us catch some long-standing isel issues
that we miss because operation legalization often obfuscates the dag with
target-specific nodes.
2. We can rip out all of the type legalization code from LegalizeDAG.cpp,
making it much smaller and simpler. When that happens we can then
reimplement the core functionality left in it in a much more efficient and
non-recursive way.
3. Once the whole legalizer is non-recursive, we can implement whole-function
selectiondags maybe...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42981 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAGTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
8a2582060e6eed082ed099672f9f34f108b502e8 15-Oct-2007 Chris Lattner <sabre@nondot.org> One mundane change: Change ReplaceAllUsesOfValueWith to *optionally*
take a deleted nodes vector, instead of requiring it.

One more significant change: Implement the start of a legalizer that
just works on types. This legalizer is designed to run before the
operation legalizer and ensure just that the input dag is transformed
into an output dag whose operand and result types are all legal, even
if the operations on those types are not.

This design/impl has the following advantages:

1. When finished, this will *significantly* reduce the amount of code in
LegalizeDAG.cpp. It will remove all the code related to promotion and
expansion as well as splitting and scalarizing vectors.
2. The new code is very simple, idiomatic, and modular: unlike
LegalizeDAG.cpp, it has no 3000 line long functions. :)
3. The implementation is completely iterative instead of recursive, good
for hacking on large dags without blowing out your stack.
4. The implementation updates nodes in place when possible instead of
deallocating and reallocating the entire graph that points to some
mutated node.
5. The code nicely separates out handling of operations with invalid
results from operations with invalid operands, making some cases
simpler and easier to understand.
6. The new -debug-only=legalize-types option is very very handy :),
allowing you to easily understand what legalize types is doing.

This is not yet done. Until the ifdef added to SelectionDAGISel.cpp is
enabled, this does nothing. However, this code is sufficient to legalize
all of the code in 186.crafty, olden and freebench on an x86 machine. The
biggest issues are:

1. Vectors aren't implemented at all yet
2. SoftFP is a mess, I need to talk to Evan about it.
3. No lowering to libcalls is implemented yet.
4. Various operations are missing etc.
5. There are FIXME's for stuff I hax0r'd out, like softfp.

Hey, at least it is a step in the right direction :). If you'd like to help,
just enable the #ifdef in SelectionDAGISel.cpp and compile code with it. If
this explodes it will tell you what needs to be implemented. Help is
certainly appreciated.

Once this goes in, we can do three things:

1. Add a new pass of dag combine between the "type legalizer" and "operation
legalizer" passes. This will let us catch some long-standing isel issues
that we miss because operation legalization often obfuscates the dag with
target-specific nodes.
2. We can rip out all of the type legalization code from LegalizeDAG.cpp,
making it much smaller and simpler. When that happens we can then
reimplement the core functionality left in it in a much more efficient and
non-recursive way.
3. Once the whole legalizer is non-recursive, we can implement whole-function
selectiondags maybe...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42981 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAGTypes.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
3cb9351e8a3691ee8cad6960601c6e3d4b293352 15-Oct-2007 Chris Lattner <sabre@nondot.org> One xform performed by LegalizeDAG is transformation of "store of fp" to "store of int".
Make two changes:
1) only xform "store of f32" if i32 is a legal type for the target.
2) only xform "store of f64" if either i64 or i32 are legal for the target.
3) if i64 isn't legal, manually lower to 2 stores of i32 instead of letting a
later pass of legalize do it. This is ugly, but helps future changes I'm
about to commit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42980 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
19f229a5aa5fa80405a67fd662e5e53c9a3a451e 15-Oct-2007 Chris Lattner <sabre@nondot.org> One xform performed by LegalizeDAG is transformation of "store of fp" to "store of int".
Make two changes:
1) only xform "store of f32" if i32 is a legal type for the target.
2) only xform "store of f64" if either i64 or i32 are legal for the target.
3) if i64 isn't legal, manually lower to 2 stores of i32 instead of letting a
later pass of legalize do it. This is ugly, but helps future changes I'm
about to commit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42980 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
59afba0fe997c9f65abd66a4c3902ee2064abc4b 15-Oct-2007 Chris Lattner <sabre@nondot.org> Add a (disabled by default) way to view the ID of a node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42978 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
7271a2d49ee103d63154bc87d5b921213d50cd0b 15-Oct-2007 Chris Lattner <sabre@nondot.org> Add a (disabled by default) way to view the ID of a node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42978 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
7a3c85583d523edb90aa957a02385254957c6e37 14-Oct-2007 Chris Lattner <sabre@nondot.org> remove misleading comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42970 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8c9314547dbfbe149b7b89ab3d3991447b0be71b 14-Oct-2007 Chris Lattner <sabre@nondot.org> remove misleading comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42970 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fb5b11046bfc27e4c8388f4b3d7f1adc927f7fe6 14-Oct-2007 Chris Lattner <sabre@nondot.org> If a target doesn't have HasMULHU or HasUMUL_LOHI, ExpandOp would return
without lo/hi set. Fall through to making a libcall instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7048cc6604a095798ad251b5570c263ef0e77a34 14-Oct-2007 Chris Lattner <sabre@nondot.org> If a target doesn't have HasMULHU or HasUMUL_LOHI, ExpandOp would return
without lo/hi set. Fall through to making a libcall instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
34729256e8058d4106706e9feb2dfad7893502d1 14-Oct-2007 Evan Cheng <evan.cheng@apple.com> When coalescing an EXTRACT_SUBREG and the dst register is a physical register,
the source register will be coalesced to the super register of the LHS. Properly
merge in the live ranges of the resulting coalesced interval that were part of
the original source interval to the live interval of the super-register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42961 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
06582a08758a321694a81918db82b9ab5928e1e2 14-Oct-2007 Evan Cheng <evan.cheng@apple.com> When coalescing an EXTRACT_SUBREG and the dst register is a physical register,
the source register will be coalesced to the super register of the LHS. Properly
merge in the live ranges of the resulting coalesced interval that were part of
the original source interval to the live interval of the super-register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42961 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
347d39f1fd8ad825a7ec5b8a3dce816723a56d42 14-Oct-2007 Evan Cheng <evan.cheng@apple.com> Revert 42908 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42960 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
477013c1dda38cf918e259e972998664008da616 14-Oct-2007 Evan Cheng <evan.cheng@apple.com> Revert 42908 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42960 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
5927d8e94d0b50296c2af4acdfe4d799e369fc08 14-Oct-2007 Dale Johannesen <dalej@apple.com> Disable some compile-time optimizations on PPC
long double.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42958 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
80ca14c85ebd6dd0e0e9c5e6a0aa321cbbb352e9 14-Oct-2007 Dale Johannesen <dalej@apple.com> Disable some compile-time optimizations on PPC
long double.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42958 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e33544ce55ca18e6e9c90ab7a4de85c90f907258 13-Oct-2007 Chris Lattner <sabre@nondot.org> Enhance the truncstore optimization code to handle shifted
values and propagate demanded bits through them in simple cases.

This allows this code:
void foo(char *P) {
strcpy(P, "abc");
}
to compile to:

_foo:
ldrb r3, [r1]
ldrb r2, [r1, #+1]
ldrb r12, [r1, #+2]!
ldrb r1, [r1, #+1]
strb r1, [r0, #+3]
strb r2, [r0, #+1]
strb r12, [r0, #+2]
strb r3, [r0]
bx lr

instead of:

_foo:
ldrb r3, [r1, #+3]
ldrb r2, [r1, #+2]
orr r3, r2, r3, lsl #8
ldrb r2, [r1, #+1]
ldrb r1, [r1]
orr r2, r1, r2, lsl #8
orr r3, r2, r3, lsl #16
strb r3, [r0]
mov r2, r3, lsr #24
strb r2, [r0, #+3]
mov r2, r3, lsr #16
strb r2, [r0, #+2]
mov r3, r3, lsr #8
strb r3, [r0, #+1]
bx lr

testcase here: test/CodeGen/ARM/truncstore-dag-combine.ll

This also helps occasionally for X86 and other cases not involving
unaligned load/stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42954 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b77ea550467091e8840d06886dc068f62e9e1c99 13-Oct-2007 Chris Lattner <sabre@nondot.org> Enhance the truncstore optimization code to handle shifted
values and propagate demanded bits through them in simple cases.

This allows this code:
void foo(char *P) {
strcpy(P, "abc");
}
to compile to:

_foo:
ldrb r3, [r1]
ldrb r2, [r1, #+1]
ldrb r12, [r1, #+2]!
ldrb r1, [r1, #+1]
strb r1, [r0, #+3]
strb r2, [r0, #+1]
strb r12, [r0, #+2]
strb r3, [r0]
bx lr

instead of:

_foo:
ldrb r3, [r1, #+3]
ldrb r2, [r1, #+2]
orr r3, r2, r3, lsl #8
ldrb r2, [r1, #+1]
ldrb r1, [r1]
orr r2, r1, r2, lsl #8
orr r3, r2, r3, lsl #16
strb r3, [r0]
mov r2, r3, lsr #24
strb r2, [r0, #+3]
mov r2, r3, lsr #16
strb r2, [r0, #+2]
mov r3, r3, lsr #8
strb r3, [r0, #+1]
bx lr

testcase here: test/CodeGen/ARM/truncstore-dag-combine.ll

This also helps occasionally for X86 and other cases not involving
unaligned load/stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42954 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2b4c279a8e203fa8b13adf7ba3a5d4c8bef70df3 13-Oct-2007 Chris Lattner <sabre@nondot.org> Add a simple optimization to simplify the input to
truncate and truncstore instructions, based on the
knowledge that they don't demand the top bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
e8671c5b8756ea7eef8898e52859dd8635e567bf 13-Oct-2007 Chris Lattner <sabre@nondot.org> Add a simple optimization to simplify the input to
truncate and truncstore instructions, based on the
knowledge that they don't demand the top bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
7f56625447b94178118f2fec732b10f9e4aa7fbf 13-Oct-2007 Evan Cheng <evan.cheng@apple.com> Local spiller optimization:
Turn this:
movswl %ax, %eax
movl %eax, -36(%ebp)
xorl %edi, -36(%ebp)
into
movswl %ax, %eax
xorl %edi, %eax
movl %eax, -36(%ebp)
by unfolding the load / store xorl into an xorl and a store when we know the
value in the spill slot is available in a register. This doesn't change the
number of instructions but reduce the number of times memory is accessed.

Also unfold some load folding instructions and reuse the value when similar
situation presents itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42947 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
f32558483732b7c8d1dd57c745d1b9d0359cd785 13-Oct-2007 Evan Cheng <evan.cheng@apple.com> Local spiller optimization:
Turn this:
movswl %ax, %eax
movl %eax, -36(%ebp)
xorl %edi, -36(%ebp)
into
movswl %ax, %eax
xorl %edi, %eax
movl %eax, -36(%ebp)
by unfolding the load / store xorl into an xorl and a store when we know the
value in the spill slot is available in a register. This doesn't change the
number of instructions but reduce the number of times memory is accessed.

Also unfold some load folding instructions and reuse the value when similar
situation presents itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42947 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
fa9457276a2174aaf302240dd32d89900ad021ae 13-Oct-2007 Evan Cheng <evan.cheng@apple.com> Optionally create a MachineInstr without default implicit operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42945 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
bdf72b43829c5e6238e96cb11a81c3f7ae3f7081 13-Oct-2007 Evan Cheng <evan.cheng@apple.com> Optionally create a MachineInstr without default implicit operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42945 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
48abc5cf6ba6d53513034aa8c68b0a9abd748190 12-Oct-2007 Arnold Schwaighofer <arnold.schwaighofer@gmail.com> Corrected many typing errors. And removed 'nest' parameter handling
for fastcc from X86CallingConv.td. This means that nested functions
are not supported for calling convention 'fastcc'.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
373e865aae83b50dfd2e2caa7038082f8d0216bb 12-Oct-2007 Arnold Schwaighofer <arnold.schwaighofer@gmail.com> Corrected many typing errors. And removed 'nest' parameter handling
for fastcc from X86CallingConv.td. This means that nested functions
are not supported for calling convention 'fastcc'.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f646774edd2588f6aa866ceb5e1b921f924a246f 12-Oct-2007 Dale Johannesen <dalej@apple.com> ppc long double. Implement fabs and fneg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42924 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5707ef835b62d0c5e3bafee6aa331f6cfa67bddf 12-Oct-2007 Dale Johannesen <dalej@apple.com> ppc long double. Implement fabs and fneg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42924 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6e63e092365b763b65cc97a4d2c634443046c15a 12-Oct-2007 Dale Johannesen <dalej@apple.com> Implement i64->ppcf128 conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42919 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9aec5b219861e4290deb7b037cff95854c057b79 12-Oct-2007 Dale Johannesen <dalej@apple.com> Implement i64->ppcf128 conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42919 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
48ff282dd49197d2b42285b769126ba7991aa93a 12-Oct-2007 Evan Cheng <evan.cheng@apple.com> Did mean to leave this in. INSERT_SUBREG isn't being coalesced yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42916 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
982f251b930eb779effc1ea15b531dce813fe4b8 12-Oct-2007 Evan Cheng <evan.cheng@apple.com> Did mean to leave this in. INSERT_SUBREG isn't being coalesced yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42916 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8ddde0a151c5297ae5694a4b9201b2d3fe56b196 12-Oct-2007 Dan Gohman <gohman@apple.com> Change the names used for internal labels to use the current
function symbol name instead of a codegen-assigned function
number.

Thanks Evan! :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42908 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
36eb6b7103ccca77ac51754a2265340ce9a2a8d7 12-Oct-2007 Dan Gohman <djg@cray.com> Change the names used for internal labels to use the current
function symbol name instead of a codegen-assigned function
number.

Thanks Evan! :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42908 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
a9b511187b5450ec2e241f45b640358bfdc9c42c 12-Oct-2007 Dan Gohman <gohman@apple.com> Fix some corner cases with vectors in copyToRegs and copyFromRegs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42907 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c68a8de07faba0881b25a8eb9346deced1e024fd 12-Oct-2007 Dan Gohman <djg@cray.com> Fix some corner cases with vectors in copyToRegs and copyFromRegs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42907 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9e04c82c0ec7c94d82168c07177ff9d1fea5b9d5 12-Oct-2007 Dan Gohman <gohman@apple.com> Add support to SplitVectorOp for powi, where the second operand
is a scalar integer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42906 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ae4c2f8b1a375dc9ecd8305061d35553b2d73536 12-Oct-2007 Dan Gohman <djg@cray.com> Add support to SplitVectorOp for powi, where the second operand
is a scalar integer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42906 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
52c7ff70679d31d95db3f9c15fb7192e504942a9 12-Oct-2007 Evan Cheng <evan.cheng@apple.com> Restrict EXTRACT_SUBREG coalescing to avoid negative performance impact.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42903 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d210b337ddc3b35d64cbf26e3e46fb41ddfa4f05 12-Oct-2007 Evan Cheng <evan.cheng@apple.com> Restrict EXTRACT_SUBREG coalescing to avoid negative performance impact.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42903 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
32dfbeada7292167bb488f36a71a5a6a519ddaff 12-Oct-2007 Evan Cheng <evan.cheng@apple.com> EXTRACT_SUBREG coalescing support. The coalescer now treats EXTRACT_SUBREG like
(almost) a register copy. However, it always coalesced to the register of the
RHS (the super-register). All uses of the result of a EXTRACT_SUBREG are sub-
register uses which adds subtle complications to load folding, spiller rewrite,
etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42899 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
687d1080abc51aac365d4f263ef206162815a86a 12-Oct-2007 Evan Cheng <evan.cheng@apple.com> EXTRACT_SUBREG coalescing support. The coalescer now treats EXTRACT_SUBREG like
(almost) a register copy. However, it always coalesced to the register of the
RHS (the super-register). All uses of the result of a EXTRACT_SUBREG are sub-
register uses which adds subtle complications to load folding, spiller rewrite,
etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42899 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
10136e7c7f599a559917e04f04e6dfbf025e451b 12-Oct-2007 Evan Cheng <evan.cheng@apple.com> Some clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42898 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
ba6246963405f95a9a2b76ff2694136bfdb88a61 12-Oct-2007 Evan Cheng <evan.cheng@apple.com> Some clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42898 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
ca68aaa0e50c4037c0faa9bfbe7e091087837259 12-Oct-2007 Dale Johannesen <dalej@apple.com> PPC long double. Implement a couple more conversions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42888 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4c14d512ea8e8fd8ec625604cf82275e319303d9 12-Oct-2007 Dale Johannesen <dalej@apple.com> PPC long double. Implement a couple more conversions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42888 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ac9385a5557ee2f34a509d39c58a8557a0ff686d 12-Oct-2007 Dan Gohman <gohman@apple.com> Add intrinsics for sin, cos, and pow. These use llvm_anyfloat_ty, and so
may be overloaded with vector types. And add a testcase for codegen for
these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42885 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e1bb8c1838800f6817b7d80a58e41b1ef09a4f34 12-Oct-2007 Dan Gohman <djg@cray.com> Add intrinsics for sin, cos, and pow. These use llvm_anyfloat_ty, and so
may be overloaded with vector types. And add a testcase for codegen for
these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42885 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
826695281344e3a4c4d44d73dd155107aafd689b 12-Oct-2007 Dan Gohman <gohman@apple.com> Codegen support for vector intrinsics.

Factor out the code that expands the "nasty scalar code" for unrolling
vectors into a separate routine, teach it how to handle mixed
vector/scalar operands, as seen in powi, and use it for several operators,
including sin, cos, powi, and pow.

Add support in SplitVectorOp for fpow, fpowi and for several unary
operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6d05cac05bddb54c7c88dd1337b21fadcb5124c8 12-Oct-2007 Dan Gohman <djg@cray.com> Codegen support for vector intrinsics.

Factor out the code that expands the "nasty scalar code" for unrolling
vectors into a separate routine, teach it how to handle mixed
vector/scalar operands, as seen in powi, and use it for several operators,
including sin, cos, powi, and pow.

Add support in SplitVectorOp for fpow, fpowi and for several unary
operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fcf4d24ffbba0935de3e8371cfd52fc3d6980789 12-Oct-2007 Dale Johannesen <dalej@apple.com> Implement ppc long double->uint conversion.
Make ppc long double constants print.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42882 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/LegalizeDAG.cpp
d3b6af370126a696c74e5fdbba4a6590b5866ad7 12-Oct-2007 Dale Johannesen <dalej@apple.com> Implement ppc long double->uint conversion.
Make ppc long double constants print.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42882 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/LegalizeDAG.cpp
e54be104180d81b61c5fcc29ccb7960f9b78476e 12-Oct-2007 Dan Gohman <gohman@apple.com> Add runtime library names for pow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
fe67863e270972822d09cfc7e600e112508e9fa0 12-Oct-2007 Dan Gohman <djg@cray.com> Add runtime library names for pow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
07f04fd574a59c690f297fd10c2e0dd14093675e 12-Oct-2007 Dan Gohman <gohman@apple.com> Add an ISD::FPOW node type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1d744bbe789014cd057ff17b72ca154d52f144d2 12-Oct-2007 Dan Gohman <djg@cray.com> Add an ISD::FPOW node type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c85e1716f0e45e4c18a9ef2fbe431a51ac3a4252 11-Oct-2007 Arnold Schwaighofer <arnold.schwaighofer@gmail.com> Added tail call optimization to the x86 back end. It can be
enabled by passing -tailcallopt to llc. The optimization is
performed if the following conditions are satisfied:
* caller/callee are fastcc
* elf/pic is disabled OR
elf/pic enabled + callee is in module + callee has
visibility protected or hidden


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42870 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e2d6bbb00da7530c4f8846774bfeddeef56f66ed 11-Oct-2007 Arnold Schwaighofer <arnold.schwaighofer@gmail.com> Added tail call optimization to the x86 back end. It can be
enabled by passing -tailcallopt to llc. The optimization is
performed if the following conditions are satisfied:
* caller/callee are fastcc
* elf/pic is disabled OR
elf/pic enabled + callee is in module + callee has
visibility protected or hidden


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42870 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a471c2ecda37cd1bae0d94e832f002caa7b63216 11-Oct-2007 Dale Johannesen <dalej@apple.com> Next PPC long double bits. First cut at constants.
No compile-time support for constant operations yet,
just format transformations. Make readers and
writers work. Split constants into 2 doubles in
Legalize.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42865 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2aef569811b24bf254b27cab0f6307c2c8d27d17 11-Oct-2007 Dale Johannesen <dalej@apple.com> Next PPC long double bits. First cut at constants.
No compile-time support for constant operations yet,
just format transformations. Make readers and
writers work. Split constants into 2 doubles in
Legalize.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42865 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
272dce013727398ff9a8726bc720bc6ecff81184 10-Oct-2007 Duncan Sands <baldrick@free.fr> Correct swapped arguments to getConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bed2147264e6fc3a09146e4d3dcf070c9cd27f08 10-Oct-2007 Duncan Sands <baldrick@free.fr> Correct swapped arguments to getConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6eaeff29b8a6990107735f7e5f5e49da38f56223 10-Oct-2007 Dale Johannesen <dalej@apple.com> Next PPC long double bits: ppcf128->i32 conversion.
Surprisingly complicated.
Adds getTargetNode for 2 outputs, no inputs (missing).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42822 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
3d8578b72446ca42809bbeb67be3e2126ecb3583 10-Oct-2007 Dale Johannesen <dalej@apple.com> Next PPC long double bits: ppcf128->i32 conversion.
Surprisingly complicated.
Adds getTargetNode for 2 outputs, no inputs (missing).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42822 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
be8db245f5cac73877bb2695992e6e47af3faa99 10-Oct-2007 Evan Cheng <evan.cheng@apple.com> Bad choice of variable name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42821 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
59a2a9b1d0463fc8afbe9cebab4d68d328660a8c 10-Oct-2007 Evan Cheng <evan.cheng@apple.com> Bad choice of variable name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42821 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
5edc57fa426837fd745bcf7265f008f98b2c5393 10-Oct-2007 Evan Cheng <evan.cheng@apple.com> Fix an extremely stupid bug that prevented first round of coalescing (physical registers only) from happening.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42820 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
83ca67b3bc7744ad2f5d41be239f6750f936d3d2 10-Oct-2007 Evan Cheng <evan.cheng@apple.com> Fix an extremely stupid bug that prevented first round of coalescing (physical registers only) from happening.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42820 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
30d4254536e8471323ebca05acecf8237a1e7dee 08-Oct-2007 Dan Gohman <gohman@apple.com> Call getFunctionNumber() instead of referencing FunctionNumber directly,
for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42769 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
789c8ebd3115533ca127977a89cf40c30821da65 08-Oct-2007 Dan Gohman <djg@cray.com> Call getFunctionNumber() instead of referencing FunctionNumber directly,
for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42769 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
525178cdbf00720ea8bce297a7d65b0cca0ab439 08-Oct-2007 Dan Gohman <gohman@apple.com> Migrate X86 and ARM from using X86ISD::{,I}DIV and ARMISD::MULHILO{U,S} to
use ISD::{S,U}DIVREM and ISD::{S,U}MUL_HIO. Move the lowering code
associated with these operators into target-independent in LegalizeDAG.cpp
and TargetLowering.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42762 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
5a199558c23d400e3dd83a9c7cab754c77778956 08-Oct-2007 Dan Gohman <djg@cray.com> Migrate X86 and ARM from using X86ISD::{,I}DIV and ARMISD::MULHILO{U,S} to
use ISD::{S,U}DIVREM and ISD::{S,U}MUL_HIO. Move the lowering code
associated with these operators into target-independent in LegalizeDAG.cpp
and TargetLowering.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42762 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
389079b59f6fc1283eeed407df36959a3fbc0e48 08-Oct-2007 Dan Gohman <gohman@apple.com> DAGCombiner support for UDIVREM/SDIVREM and UMUL_LOHI/SMUL_LOHI.
Check if one of the two results unneeded so see if a simpler operator
could bs used. Also check to see if each of the two computations could be
simplified if they were split into separate operators. Factor out the code
that calls visit() so that it can be used for this purpose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42759 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6c89ea78bcceb54fdf347bb2df19d42e0c98d9bd 08-Oct-2007 Dan Gohman <djg@cray.com> DAGCombiner support for UDIVREM/SDIVREM and UMUL_LOHI/SMUL_LOHI.
Check if one of the two results unneeded so see if a simpler operator
could bs used. Also check to see if each of the two computations could be
simplified if they were split into separate operators. Factor out the code
that calls visit() so that it can be used for this purpose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42759 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
08ce9769718354e6767d3815e4c255e7c9fc0a46 08-Oct-2007 Dan Gohman <gohman@apple.com> Add convenience overloads of SelectionDAG::getNode that take a SDVTList
and individual SDOperand operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42753 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
798d127ff6a22d89609e852678dc3c272bb8034d 08-Oct-2007 Dan Gohman <djg@cray.com> Add convenience overloads of SelectionDAG::getNode that take a SDVTList
and individual SDOperand operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42753 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
417e11b9bf625b3626f8765d44248927fb200906 08-Oct-2007 Dan Gohman <gohman@apple.com> In -debug mode, dump SelectionDAGs both before and after the
optimization passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
eebf44e7264e1caf85b96e166373e5be6994cad2 08-Oct-2007 Dan Gohman <djg@cray.com> In -debug mode, dump SelectionDAGs both before and after the
optimization passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42749 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
537d5c27ff64b021ba14e2dc9589bf321dd2327a 08-Oct-2007 Evan Cheng <evan.cheng@apple.com> Kill cycle of an live range is always the last use index + 1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42742 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
fa451ed258e7958ec862a98701204b30a7f87aeb 08-Oct-2007 Evan Cheng <evan.cheng@apple.com> Kill cycle of an live range is always the last use index + 1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42742 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ccf596a53e16ea221a9bf8b3874a7d6afa71f1f4 07-Oct-2007 Neil Booth <neil@daikokuya.co.uk> convertFromInteger, as originally written, expected sign-extended
input. APInt unfortunately zero-extends signed integers, so Dale
modified the function to expect zero-extended input. Make this
assumption explicit in the function name.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42732 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
4bdd45a1cdc1f329ce090b3dfd288b99db6c7fc6 07-Oct-2007 Neil Booth <neil@daikokuya.co.uk> convertFromInteger, as originally written, expected sign-extended
input. APInt unfortunately zero-extends signed integers, so Dale
modified the function to expect zero-extended input. Make this
assumption explicit in the function name.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42732 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
513da43c9c290094e3f12c0d1ba07c18f062d13c 06-Oct-2007 Evan Cheng <evan.cheng@apple.com> Reapply 42677.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d7ba7edc40d8b10972b4480e8e5db54e13edcb14 06-Oct-2007 Evan Cheng <evan.cheng@apple.com> Reapply 42677.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5349de1372dabab40691d348f2404da1e1478ef7 06-Oct-2007 Chris Lattner <sabre@nondot.org> revert evan's patch until the header is committed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42686 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5a98f096c33623a15e8d91bbb653b4e6fb60f8a1 06-Oct-2007 Chris Lattner <sabre@nondot.org> revert evan's patch until the header is committed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42686 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c231e8c8a5af35bbecf7eca34a23e519083b1422 06-Oct-2007 Evan Cheng <evan.cheng@apple.com> Added DAG xforms. e.g.
(vextract (v4f32 s2v (f32 load $addr)), 0) -> (f32 load $addr)
(vextract (v4i32 bc (v4f32 s2v (f32 load $addr))), 0) -> (i32 load $addr)
Remove x86 specific patterns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5c57c7cef75d9d06bd51dba10a0c2f74467b0626 06-Oct-2007 Evan Cheng <evan.cheng@apple.com> Added DAG xforms. e.g.
(vextract (v4f32 s2v (f32 load $addr)), 0) -> (f32 load $addr)
(vextract (v4i32 bc (v4f32 s2v (f32 load $addr))), 0) -> (i32 load $addr)
Remove x86 specific patterns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
638ccd52b9fa2d1d03a1e85992c09e2bf6800fc6 06-Oct-2007 Dale Johannesen <dalej@apple.com> Next powerpc long double bits. Comparisons work,
although not well, and shortening FP converts.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
472d15dc983079b244cb98c054120815bb32fffe 06-Oct-2007 Dale Johannesen <dalej@apple.com> Next powerpc long double bits. Comparisons work,
although not well, and shortening FP converts.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
161e897b0fb35d156b2fe720fadabd975b0d6723 05-Oct-2007 Dale Johannesen <dalej@apple.com> First round of ppc long double. call/return and
basic arithmetic works.
Rename RTLIB long double functions to distinguish
different flavors of long double; the lib functions
have different names, alas.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42644 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
ac77b2705767f57f2916a8ddf13f321aab8ca886 05-Oct-2007 Dale Johannesen <dalej@apple.com> First round of ppc long double. call/return and
basic arithmetic works.
Rename RTLIB long double functions to distinguish
different flavors of long double; the lib functions
have different names, alas.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42644 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
e14ea867449cffa9a5835bc62c9c557ab0bc6618 05-Oct-2007 Dan Gohman <gohman@apple.com> Legalize support for MUL_LOHI and DIVREM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
475cd73517e6a3b80bec936cbafcf7a53cdb9d7d 05-Oct-2007 Dan Gohman <djg@cray.com> Legalize support for MUL_LOHI and DIVREM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2eb4ebd953314d7c7f96cfb5897d8ded94f6c9d4 05-Oct-2007 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
54ab4ec68e3d026457524f1d8f8c08b6643d1944 05-Oct-2007 Dan Gohman <djg@cray.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
ccd60799cdc9b75ddc971c02f0a1bf3bd7f48aba 05-Oct-2007 Dan Gohman <gohman@apple.com> Provide names for MUL_LOHI and DIVREM operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b945cee576f2d3470e2f2fcc5d3e0b4c5217287e 05-Oct-2007 Dan Gohman <djg@cray.com> Provide names for MUL_LOHI and DIVREM operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d5cb5a462b6fd91bf54116c3eefc3b046489c414 05-Oct-2007 Evan Cheng <evan.cheng@apple.com> Chain producing nodes cannot be moved, not chain reading nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42627 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
da5a9699449c304922708f71e91c0078ca258531 05-Oct-2007 Evan Cheng <evan.cheng@apple.com> Chain producing nodes cannot be moved, not chain reading nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42627 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
117c3662192bb8590255b0f4435d8e31e5656a57 05-Oct-2007 Evan Cheng <evan.cheng@apple.com> Oops. Didn't mean to leave this in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42626 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
01b2b8170e832653706931b7c80ec86751daccce 05-Oct-2007 Evan Cheng <evan.cheng@apple.com> Oops. Didn't mean to leave this in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42626 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f10c973797cf79da802f9b0118543cbd50954c9c 05-Oct-2007 Evan Cheng <evan.cheng@apple.com> If a node that defines a physical register that is expensive to copy. The
scheduler will try a number of tricks in order to avoid generating the
copies. This may not be possible in case the node produces a chain value
that prevent movement. Try unfolding the load from the node before to allow
it to be moved / cloned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42625 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
dd3f8b94fd690a11357cdafb95db4f1be97777ac 05-Oct-2007 Evan Cheng <evan.cheng@apple.com> If a node that defines a physical register that is expensive to copy. The
scheduler will try a number of tricks in order to avoid generating the
copies. This may not be possible in case the node produces a chain value
that prevent movement. Try unfolding the load from the node before to allow
it to be moved / cloned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42625 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
39305cf55363046162c5a992f96f26d607a204e5 05-Oct-2007 Evan Cheng <evan.cheng@apple.com> Add a variant of getTargetNode() that takes a vector of MVT::ValueType.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e3940911eb8f592cb319fb279890c4b08d6204a4 05-Oct-2007 Evan Cheng <evan.cheng@apple.com> Add a variant of getTargetNode() that takes a vector of MVT::ValueType.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
daccea18ca8357b4193ac3ba42a168e650b807e0 05-Oct-2007 Evan Cheng <evan.cheng@apple.com> Silence a warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42619 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9bdaeaaadd3442ab27c6a60c412a7cbf0db92978 05-Oct-2007 Evan Cheng <evan.cheng@apple.com> Silence a warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42619 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cb406c25973b4e88a6c10ad839ef1beeb3664715 03-Oct-2007 Dan Gohman <gohman@apple.com> Use empty() member functions when that's what's being tested for instead
of comparing begin() and end().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42585 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
electionDAG/ScheduleDAG.cpp
3f7d94b6cd40a3653c000f4b2e166c82dc3e3715 03-Oct-2007 Dan Gohman <djg@cray.com> Use empty() member functions when that's what's being tested for instead
of comparing begin() and end().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42585 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineFunction.cpp
electionDAG/ScheduleDAG.cpp
9ab7fb3ba47442d521a5bed09a27a5e8e7a786ed 02-Oct-2007 Dale Johannesen <dalej@apple.com> Rewrite sqrt and powi to use anyfloat. By popular demand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42537 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
c339d8efc813edf9c933b27478100191d949ac26 02-Oct-2007 Dale Johannesen <dalej@apple.com> Rewrite sqrt and powi to use anyfloat. By popular demand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42537 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
a7ac2bd4076096bb3a9986dd5a44f20c7f715518 02-Oct-2007 Dale Johannesen <dalej@apple.com> Fix stride computations for long double arrays.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42508 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/SelectionDAGISel.cpp
5ec2e73dd166caacc6d746b148d8fbbc5f3006cf 02-Oct-2007 Dale Johannesen <dalej@apple.com> Fix stride computations for long double arrays.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42508 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/SelectionDAGISel.cpp
d57c3884af90f992bc9033a61bc2d394fb8ca19a 02-Oct-2007 Dan Gohman <gohman@apple.com> Move the code that emits the .file directives so that it runs after the
SourceFiles list is fully filled in so that it sees all of the files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42506 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
6d6c2402979e13fbe0d1b3864f089cdc4a30e15e 02-Oct-2007 Dan Gohman <djg@cray.com> Move the code that emits the .file directives so that it runs after the
SourceFiles list is fully filled in so that it sees all of the files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42506 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
450ff01faf47b48d9f0aea68b7676a20644fd0fc 01-Oct-2007 Evan Cheng <evan.cheng@apple.com> Remove simple scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42499 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
71a090cd77014898ac532bf9b0bdf0289c7e445b 01-Oct-2007 Evan Cheng <evan.cheng@apple.com> Remove simple scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42499 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
d89b117850d1ebcc1390f23891b6ac0b64c99045 30-Sep-2007 Dale Johannesen <dalej@apple.com> remove dup comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42486 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f37b54b475394ed08f4c1edb42dc765df9189688 30-Sep-2007 Dale Johannesen <dalej@apple.com> remove dup comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42486 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
88216af3ea4bb1c68a8793ed1d3b30308b64ab0e 30-Sep-2007 Dale Johannesen <dalej@apple.com> Constant fold int-to-long-double conversions;
use APFloat for int-to-float/double; use
round-to-nearest for these (implementation-defined,
seems to match gcc).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
87fa68f68eb00accc7cd87ef0e8df0a53f3d6ee9 30-Sep-2007 Dale Johannesen <dalej@apple.com> Constant fold int-to-long-double conversions;
use APFloat for int-to-float/double; use
round-to-nearest for these (implementation-defined,
seems to match gcc).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
078f5e1875deb4fa25961d579bc6ef511887ad57 29-Sep-2007 Gordon Henriksen <gordonhenriksen@mac.com> This is done already.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42467 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
57ac79b26918cdb065e40ee5132c998759906194 29-Sep-2007 Gordon Henriksen <gordonhenriksen@mac.com> This is done already.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42467 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
364caf0e19e570d00cfd03d9dd3fcda21fb2e459 29-Sep-2007 Gordon Henriksen <gordonhenriksen@mac.com> Collector is the base class for garbage collection code generators.
This version enhances the previous patch to add root initialization
as discussed here:

http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070910/053455.html

Collector gives its subclasses control over generic algorithms:

unsigned NeededSafePoints; //< Bitmask of required safe points.
bool CustomReadBarriers; //< Default is to insert loads.
bool CustomWriteBarriers; //< Default is to insert stores.
bool CustomRoots; //< Default is to pass through to backend.
bool InitRoots; //< If set, roots are nulled during lowering.

It also has callbacks which collectors can hook:

/// If any of the actions are set to Custom, this is expected to
/// be overriden to create a transform to lower those actions to
/// LLVM IR.
virtual Pass *createCustomLoweringPass() const;

/// beginAssembly/finishAssembly - Emit module metadata as
/// assembly code.
virtual void beginAssembly(Module &M, std::ostream &OS,
AsmPrinter &AP,
const TargetAsmInfo &TAI) const;
virtual void finishAssembly(Module &M,
CollectorModuleMetadata &CMM,
std::ostream &OS, AsmPrinter &AP,
const TargetAsmInfo &TAI) const;

Various other independent algorithms could be implemented, but were
not necessary for the initial two collectors. Some examples are
listed here:

http://llvm.org/docs/GarbageCollection.html#collector-algos


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42466 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
EADME.txt
c5ff226cdcd7e362e400f4ae93f77dfdbcd4ec98 29-Sep-2007 Gordon Henriksen <gordonhenriksen@mac.com> Collector is the base class for garbage collection code generators.
This version enhances the previous patch to add root initialization
as discussed here:

http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070910/053455.html

Collector gives its subclasses control over generic algorithms:

unsigned NeededSafePoints; //< Bitmask of required safe points.
bool CustomReadBarriers; //< Default is to insert loads.
bool CustomWriteBarriers; //< Default is to insert stores.
bool CustomRoots; //< Default is to pass through to backend.
bool InitRoots; //< If set, roots are nulled during lowering.

It also has callbacks which collectors can hook:

/// If any of the actions are set to Custom, this is expected to
/// be overriden to create a transform to lower those actions to
/// LLVM IR.
virtual Pass *createCustomLoweringPass() const;

/// beginAssembly/finishAssembly - Emit module metadata as
/// assembly code.
virtual void beginAssembly(Module &M, std::ostream &OS,
AsmPrinter &AP,
const TargetAsmInfo &TAI) const;
virtual void finishAssembly(Module &M,
CollectorModuleMetadata &CMM,
std::ostream &OS, AsmPrinter &AP,
const TargetAsmInfo &TAI) const;

Various other independent algorithms could be implemented, but were
not necessary for the initial two collectors. Some examples are
listed here:

http://llvm.org/docs/GarbageCollection.html#collector-algos


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42466 91177308-0d34-0410-b5e6-96231b3b80d8
ollector.cpp
EADME.txt
9fe4662d9a9e5b346dc053b6a53bc3d096adb77b 29-Sep-2007 Dan Gohman <gohman@apple.com> Teach SplitVectorOp how to split INSERT_VECTOR_ELT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42457 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b3228dcf956c576a195e0be2d1bb833617a3e7cc 29-Sep-2007 Dan Gohman <djg@cray.com> Teach SplitVectorOp how to split INSERT_VECTOR_ELT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42457 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
22a529990bb4bb86bdb2ae1cfce7340320a6ca7f 29-Sep-2007 Evan Cheng <evan.cheng@apple.com> If two instructions are both two-address code, favors (schedule closer to
terminator) the one that has a CopyToReg use. This fixes
2006-05-11-InstrSched.ll with -new-cc-modeling-scheme.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42453 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
ba597da943f93db7849837368d79476518db4333 29-Sep-2007 Evan Cheng <evan.cheng@apple.com> If two instructions are both two-address code, favors (schedule closer to
terminator) the one that has a CopyToReg use. This fixes
2006-05-11-InstrSched.ll with -new-cc-modeling-scheme.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42453 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
ddde335cb79d67c46c04b2a0ffd18750b6f70e28 28-Sep-2007 Evan Cheng <evan.cheng@apple.com> Remove a poor scheduling heuristic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
3a88e370517e6400b1eb7a159e872140f0658002 28-Sep-2007 Evan Cheng <evan.cheng@apple.com> Remove a poor scheduling heuristic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
74d2fd8dd847e0ebccef30e2c5907ff09495d518 28-Sep-2007 Evan Cheng <evan.cheng@apple.com> Trim some unneeded fields.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42442 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
6a64235d9037213c1a276391c4e7481e67f14b6c 28-Sep-2007 Evan Cheng <evan.cheng@apple.com> Trim some unneeded fields.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42442 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
72292f07122de9c8bd41b85e94cb2d3235eca0c9 28-Sep-2007 Dale Johannesen <dalej@apple.com> Fix long double -> uint64 conversion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42440 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4e1cf5d4340f11e2d4175437482bc84178336e8f 28-Sep-2007 Dale Johannesen <dalej@apple.com> Fix long double -> uint64 conversion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42440 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4292d1c02a6f10eca22aa6e27d57ea8bf15b3140 28-Sep-2007 Dale Johannesen <dalej@apple.com> minor long double related changes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42439 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ntrinsicLowering.cpp
3b5303b49c6643f0556976ef9ce26d30d30c8991 28-Sep-2007 Dale Johannesen <dalej@apple.com> minor long double related changes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42439 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ntrinsicLowering.cpp
9fda5be36bf5554c93f0dba8cfaed0b27369ae71 28-Sep-2007 Dan Gohman <gohman@apple.com> Make the checks for DW_FORM_data4 consistent with the others, and
add more such code for DIEDwarfLabel::SizeOf and DIEObjectLabel::SizeOf.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42435 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
597b484387db527450edcce0f704132e635f4e29 28-Sep-2007 Dan Gohman <djg@cray.com> Make the checks for DW_FORM_data4 consistent with the others, and
add more such code for DIEDwarfLabel::SizeOf and DIEObjectLabel::SizeOf.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42435 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
06ff4e67c454fbe32c1697dda2d27ec1ae22e32a 28-Sep-2007 Dan Gohman <gohman@apple.com> Use 32-bit data directives for DW_FORM_data4 format data, even on
targets with 64-bit addresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42434 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
4fd77740ade9b50d4164b27c9b7d3bb41fa614f4 28-Sep-2007 Dan Gohman <djg@cray.com> Use 32-bit data directives for DW_FORM_data4 format data, even on
targets with 64-bit addresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42434 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
317096ab3710fda0960be58804e9f80c800340f6 28-Sep-2007 Dale Johannesen <dalej@apple.com> Add sqrt and powi intrinsics for long double.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42423 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
0c81a52b0e13160103f3da0303f5d23a1551ee26 28-Sep-2007 Dale Johannesen <dalej@apple.com> Add sqrt and powi intrinsics for long double.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42423 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
82482944edd810c7a1803d6694d435adf341e611 28-Sep-2007 Dan Gohman <gohman@apple.com> TargetAsmInfo::getAddressSize() was incorrect for x86-64 and 64-bit targets
other than PPC64. Instead of fixing it, just remove it and fix all the
places that use it to use TargetData::getPointerSize() instead, as there
aren't very many. Most of the references were in DwarfWriter.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42419 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
cfb72b2a46291fe57409ccf91166924a0e33fb8f 28-Sep-2007 Dan Gohman <djg@cray.com> TargetAsmInfo::getAddressSize() was incorrect for x86-64 and 64-bit targets
other than PPC64. Instead of fixing it, just remove it and fix all the
places that use it to use TargetData::getPointerSize() instead, as there
aren't very many. Most of the references were in DwarfWriter.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42419 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
fc3282221f90c626d80292327213e2badc3de86b 28-Sep-2007 Gordon Henriksen <gordonhenriksen@mac.com> CollectorMetadata abstractly describes stack maps for a function.
It includes:

- location and of each safe point in machine code (identified by a
label)
- location of each root within the stack frame (identified by an
offset), including the metadata tag provided to llvm.gcroot in
the user program
- size of the stack frame (for collectors which want to cheat on
stack crawling :)
- and eventually will include liveness

It is to be populated by back-ends during code-generation.

CollectorModuleMetadata aggregates this information across the
entire module.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42418 91177308-0d34-0410-b5e6-96231b3b80d8
ollectorMetadata.cpp
17995b61251c19534d4c33e23cdea93cca0603fd 28-Sep-2007 Gordon Henriksen <gordonhenriksen@mac.com> CollectorMetadata abstractly describes stack maps for a function.
It includes:

- location and of each safe point in machine code (identified by a
label)
- location of each root within the stack frame (identified by an
offset), including the metadata tag provided to llvm.gcroot in
the user program
- size of the stack frame (for collectors which want to cheat on
stack crawling :)
- and eventually will include liveness

It is to be populated by back-ends during code-generation.

CollectorModuleMetadata aggregates this information across the
entire module.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42418 91177308-0d34-0410-b5e6-96231b3b80d8
ollectorMetadata.cpp
d9900c9442d48b73bc5bb6132abcb9bc0257c714 27-Sep-2007 Gordon Henriksen <gordonhenriksen@mac.com> My previous Registry.h header, as well as Collectors.h, which is the
registry for dynamically-loaded garbage collection compiler plugins.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42415 91177308-0d34-0410-b5e6-96231b3b80d8
ollectors.cpp
3271e5aea340b1beb0953ce04cfc90791fc26dbf 27-Sep-2007 Gordon Henriksen <gordonhenriksen@mac.com> My previous Registry.h header, as well as Collectors.h, which is the
registry for dynamically-loaded garbage collection compiler plugins.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42415 91177308-0d34-0410-b5e6-96231b3b80d8
ollectors.cpp
cd1c00cc6521c265784ffc7a1b5baf4ef64d80bc 27-Sep-2007 Evan Cheng <evan.cheng@apple.com> Avoid inserting a live register more than once.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42410 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
bbb220dd6ff7da605c924f87cbe3aa2c1994a524 27-Sep-2007 Evan Cheng <evan.cheng@apple.com> Avoid inserting a live register more than once.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42410 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
64f638df568f2849b485cc50836efc734e367fc7 27-Sep-2007 Evan Cheng <evan.cheng@apple.com> Silence a compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42389 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2018681e1d5ee5b47cbfeea88bf7f41259069e39 27-Sep-2007 Evan Cheng <evan.cheng@apple.com> Silence a compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42389 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2dc7a0e075f619ecd657acdb19c4be8af051e35c 27-Sep-2007 Evan Cheng <evan.cheng@apple.com> Boogs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42388 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
dc07d96051f41a0b30c911e32ff67f8a53a5bdf8 27-Sep-2007 Evan Cheng <evan.cheng@apple.com> Boogs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42388 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
a2ee2756f7f80d24312d6ac41b4f2ae548441cac 27-Sep-2007 Evan Cheng <evan.cheng@apple.com> Be smarter about which node to force schedule. Reduce # of duplications + copies; Added statistics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42387 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
01f82cade49881cf4e294ede4fe688c07650b487 27-Sep-2007 Evan Cheng <evan.cheng@apple.com> Be smarter about which node to force schedule. Reduce # of duplications + copies; Added statistics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42387 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
6e4c46cea5daef8bc807a36ce2ab9bb7f9855b67 27-Sep-2007 Evan Cheng <evan.cheng@apple.com> Backtracking only when it won't create a cycle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
75425623ecec7a0532c2600aa7a2a9c613c6faa5 27-Sep-2007 Evan Cheng <evan.cheng@apple.com> Backtracking only when it won't create a cycle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
693717fbe6d4e0f63bb9927229e26851e4744530 27-Sep-2007 Dale Johannesen <dalej@apple.com> Make temporaries explicit to avoid premature
destruction of compiler-created ones.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42383 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
693aa823259fb40d9e7b699015a15b20e9c9c024 27-Sep-2007 Dale Johannesen <dalej@apple.com> Make temporaries explicit to avoid premature
destruction of compiler-created ones.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42383 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
42d60274eaa70f8cdbed76d04d25d7a8fc1237cb 26-Sep-2007 Evan Cheng <evan.cheng@apple.com> - Move getPhysicalRegisterRegClass() from ScheduleDAG to MRegisterInfo.
- Added ability to emit cross class register copies to the BBRU scheduler.
- More aggressive backtracking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42375 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
5ec4b76e12cfff33a4b3ac504e75d7d119845d6a 26-Sep-2007 Evan Cheng <evan.cheng@apple.com> - Move getPhysicalRegisterRegClass() from ScheduleDAG to MRegisterInfo.
- Added ability to emit cross class register copies to the BBRU scheduler.
- More aggressive backtracking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42375 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
2f42901dff5d0b4a9bb571a2f57157c296584557 26-Sep-2007 Dale Johannesen <dalej@apple.com> Enable codegen for long double abs, sin, cos



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42368 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7f1076becdf8b689d869472f3dd14dbc24d4cc75 26-Sep-2007 Dale Johannesen <dalej@apple.com> Enable codegen for long double abs, sin, cos



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42368 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f41db2136fe50e1a92aabfcb3ba1ec1f70f5f0d5 26-Sep-2007 Dale Johannesen <dalej@apple.com> Fix f80 UNDEF.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
20b7635470aefc0e5d62a1b5d9109c247b664460 26-Sep-2007 Dale Johannesen <dalej@apple.com> Fix f80 UNDEF.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9efce638d307b2c71bd7f0258d47501661434c27 26-Sep-2007 Evan Cheng <evan.cheng@apple.com> Allow copyRegToReg to emit cross register classes copies.
Tested with "make check"!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42346 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
HIElimination.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGSimple.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
b3d91cfa10387517c305f75a8220d192f7d133cb 26-Sep-2007 Evan Cheng <evan.cheng@apple.com> Allow copyRegToReg to emit cross register classes copies.
Tested with "make check"!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42346 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
HIElimination.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGSimple.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
c3b0b5ca1d5772cf90c0c66e03412da33a0d7cdb 25-Sep-2007 Dan Gohman <gohman@apple.com> Move the setOperationAction(ISD::DEBUG_LOC, MVT::Other, Expand) and
the check to see if the assembler supports .loc from X86TargetLowering
into the superclass TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42297 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
21442858f8a084d4e27afe754863feed57bdebf8 25-Sep-2007 Dan Gohman <djg@cray.com> Move the setOperationAction(ISD::DEBUG_LOC, MVT::Other, Expand) and
the check to see if the assembler supports .loc from X86TargetLowering
into the superclass TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42297 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
a6fb1b6743ee1411accf2d6e636f73f2ee0a7f5b 25-Sep-2007 Evan Cheng <evan.cheng@apple.com> Added major new capabilities to scheduler (only BURR for now) to support physical register dependency. The BURR scheduler can now backtrace and duplicate instructions in order to avoid "expensive / impossible to copy" values (e.g. status flag EFLAGS for x86) from being clobbered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42284 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAGPrinter.cpp
93f143e286acad609336954b78a87cf19091c53c 25-Sep-2007 Evan Cheng <evan.cheng@apple.com> Added major new capabilities to scheduler (only BURR for now) to support physical register dependency. The BURR scheduler can now backtrace and duplicate instructions in order to avoid "expensive / impossible to copy" values (e.g. status flag EFLAGS for x86) from being clobbered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42284 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAGPrinter.cpp
81a148bd567f528baacb33b62c1b1c28dcc6a544 24-Sep-2007 Dan Gohman <gohman@apple.com> Don't emit .debug_line header data if there aren't any lines to put in it,
such as will happen when .loc directives are used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42277 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
c55b34aa47482c0a83970b26a8363d16fb84b18c 24-Sep-2007 Dan Gohman <djg@cray.com> Don't emit .debug_line header data if there aren't any lines to put in it,
such as will happen when .loc directives are used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42277 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
44de9267c30e9ad393391aa7fbcefddc8a5a803b 24-Sep-2007 Dan Gohman <gohman@apple.com> Move the Asm->EOL() call for EmitDebugARanges outside the #ifdef for
consistency with the other currently empty sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42276 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
111540b8a110d125d21a800ae1b5f9a104d9a88b 24-Sep-2007 Dan Gohman <djg@cray.com> Move the Asm->EOL() call for EmitDebugARanges outside the #ifdef for
consistency with the other currently empty sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42276 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
8549636fcfa8e91b654a3bd677a1475f7f014023 24-Sep-2007 Dan Gohman <gohman@apple.com> Add support for emitting .file directives to set up file numbers for
use with .loc directives.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42275 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
80bbde7a1a06be37406f808172e9ace3be8d625a 24-Sep-2007 Dan Gohman <djg@cray.com> Add support for emitting .file directives to set up file numbers for
use with .loc directives.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42275 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
189f80dc253664627253b2d2cb07d0714feb12ba 24-Sep-2007 Dan Gohman <gohman@apple.com> Add a routine for emitting .file directives, for setting up
file numbers to use with .loc directives.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42272 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
e7ba1beb28280d8b51b2484bd6166c482bc58193 24-Sep-2007 Dan Gohman <djg@cray.com> Add a routine for emitting .file directives, for setting up
file numbers to use with .loc directives.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42272 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
e40c7b097354974ebd42c7e5d54440b07b57cc33 24-Sep-2007 Dan Gohman <gohman@apple.com> Use the correct result value type instead of using getValueType(0)
in ExpandEXTRACT_VECTOR_ELT and SplitVectorOp. This fixes an abort
in the included testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42264 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a0763d94f9a02f3a40f09e3abe92d34dea848fef 24-Sep-2007 Dan Gohman <djg@cray.com> Use the correct result value type instead of using getValueType(0)
in ExpandEXTRACT_VECTOR_ELT and SplitVectorOp. This fixes an abort
in the included testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42264 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9251f13b551f2b2c589220f4c238fbe878d0bdef 24-Sep-2007 Chris Lattner <sabre@nondot.org> When emitting .set directives, make sure the EH and Debug labels can't conflict.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42257 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
b3876c7446db98320b97310e61259b92267f5d82 24-Sep-2007 Chris Lattner <sabre@nondot.org> When emitting .set directives, make sure the EH and Debug labels can't conflict.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42257 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
b690a005c10b521e294b95b35c1503b7b34671f4 22-Sep-2007 Chris Lattner <sabre@nondot.org> initialize isstore/isload fields in ctor, fixing PR1695


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42222 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
696d2b491412490bffc044eee1c668ea8c306683 22-Sep-2007 Chris Lattner <sabre@nondot.org> initialize isstore/isload fields in ctor, fixing PR1695


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42222 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
910993e8dc49a25d9da3b53de4a82568c14e91cc 22-Sep-2007 Dale Johannesen <dalej@apple.com> Change APFloat::convertFromInteger to take the incoming
bit width instead of number of words allocated, which
makes it actually work for int->APF conversions.
Adjust callers. Add const to one of the APInt constructors
to prevent surprising match when called with const
argument.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42210 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
a6f7974e97825e9575b5c5cf9f6665aef86cbe03 22-Sep-2007 Dale Johannesen <dalej@apple.com> Change APFloat::convertFromInteger to take the incoming
bit width instead of number of words allocated, which
makes it actually work for int->APF conversions.
Adjust callers. Add const to one of the APInt constructors
to prevent surprising match when called with const
argument.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42210 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
c369bd7c503dd748ae1697858f13291bfda6ed80 21-Sep-2007 Chris Lattner <sabre@nondot.org> don't read Block after it is freed. This fixes PR1684


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42204 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
3de66897eaec18b71475d2c47de815e3c98ebae9 21-Sep-2007 Chris Lattner <sabre@nondot.org> don't read Block after it is freed. This fixes PR1684


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42204 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
dfe8934258086ca901122d6ce48c64f297a10404 21-Sep-2007 Chris Lattner <sabre@nondot.org> initialize SetCCResultContents, fixing PR1693


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42193 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e3f5e8295b32b3eda84afa7e52e36ec5f621e935 21-Sep-2007 Chris Lattner <sabre@nondot.org> initialize SetCCResultContents, fixing PR1693


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42193 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
73328d14acba0144f121b557ce0e1539c6a21a18 20-Sep-2007 Dale Johannesen <dalej@apple.com> More long double fixes. x86_64 should build now.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42155 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
958b08bf53f17d2b007eef74c39610bc0010fe3d 20-Sep-2007 Dale Johannesen <dalej@apple.com> More long double fixes. x86_64 should build now.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42155 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
f4d4832724eb45f94d63e6a7ab932b8f77279587 19-Sep-2007 Dale Johannesen <dalej@apple.com> Fix longdouble -> uint conversion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42143 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
280620d227a39d1f1b2fd916e1dd0cb4b045443b 19-Sep-2007 Dale Johannesen <dalej@apple.com> Fix longdouble -> uint conversion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42143 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
713a98dee8ab07a3066d1707a07648d27dd0c19c 19-Sep-2007 Evan Cheng <evan.cheng@apple.com> Use struct SDep instead of std::pair for SUnit pred and succ lists. First step
in tracking physical register output dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42125 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGPrinter.cpp
e795947c884a4b47ed678c2c1e371141cae76ef7 19-Sep-2007 Evan Cheng <evan.cheng@apple.com> Use struct SDep instead of std::pair for SUnit pred and succ lists. First step
in tracking physical register output dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42125 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGPrinter.cpp
e0480d2ec271bb0043f18feaf4131f6b6cf50757 18-Sep-2007 Evan Cheng <evan.cheng@apple.com> Fix a bogus splat xform:
shuffle <undef, undef, x, undef>, <undef, undef, undef, undef>, <2, 2, 2, 2>
!=
<undef, undef, x, undef>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42111 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8d68c2b521af0070408257c4ef586ee1679f498d 18-Sep-2007 Evan Cheng <evan.cheng@apple.com> Fix a bogus splat xform:
shuffle <undef, undef, x, undef>, <undef, undef, undef, undef>, <2, 2, 2, 2>
!=
<undef, undef, x, undef>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42111 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c7b21d520ac0400c5661dca2fb67a17ef65c6ac4 18-Sep-2007 Dale Johannesen <dalej@apple.com> Prevent crash on long double.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42103 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1b4181da0342cb73321cfcffd629ceb472518b7e 18-Sep-2007 Dale Johannesen <dalej@apple.com> Prevent crash on long double.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42103 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ce613280f987584df15ada06c5cf4809b203da46 18-Sep-2007 Bill Wendling <isanbard@gmail.com> Don't pass back a reference to a temporary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42086 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
e9ecdcfe0a818c27fd1767301c8d8e988d96be87 18-Sep-2007 Bill Wendling <isanbard@gmail.com> Don't pass back a reference to a temporary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42086 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
5f19cf5df86bb47a4572bd5a5245798c3ec6d7e7 18-Sep-2007 Bill Wendling <isanbard@gmail.com> The exception handling function info should be reset for each new
function. The information isn't used heavily -- it's only used at the end
of exception handling emission -- so there's no need to cache it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42078 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
d2144aa7163a9f041f63523d32a1102e00868ac8 18-Sep-2007 Bill Wendling <isanbard@gmail.com> The exception handling function info should be reset for each new
function. The information isn't used heavily -- it's only used at the end
of exception handling emission -- so there's no need to cache it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42078 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
6e19896999f9297db38e1a1a66d9bef0e2f09776 18-Sep-2007 Bill Wendling <isanbard@gmail.com> Objective-C was generating EH frame info like this:

"_-[NSString(local) isNullOrNil]".eh = 0
.no_dead_strip "_-[NSString(local) isNullOrNil]".eh

The ".eh" should be inside the quotes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42074 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
ef9211a831a5e63fc462c7a16a1a379882723893 18-Sep-2007 Bill Wendling <isanbard@gmail.com> Objective-C was generating EH frame info like this:

"_-[NSString(local) isNullOrNil]".eh = 0
.no_dead_strip "_-[NSString(local) isNullOrNil]".eh

The ".eh" should be inside the quotes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42074 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
8feb1f4467425d23ed74cce61e49f18a51a63421 18-Sep-2007 Devang Patel <dpatel@apple.com> Do not hide APInt::dump() inside #ifndef NDEBUG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42068 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
26efc6e035d2c31dad215db3c492be0193a4adc9 18-Sep-2007 Devang Patel <dpatel@apple.com> Do not hide APInt::dump() inside #ifndef NDEBUG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42068 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ffe3612af4ba03269f9affd3d2552bdb78ed6824 17-Sep-2007 Devang Patel <dpatel@apple.com> This is not ideal but unbreaks build failure.
APInt::dump() is inside #ifndef NDEBUG, however SelectionDAG dump() routines are not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42047 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
57c2feb59e8ed830d429964ee534b42ce21b0670 17-Sep-2007 Devang Patel <dpatel@apple.com> This is not ideal but unbreaks build failure.
APInt::dump() is inside #ifndef NDEBUG, however SelectionDAG dump() routines are not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42047 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
76c1b97e4020faace8c95a127f1eab66c278fb58 17-Sep-2007 Chris Lattner <sabre@nondot.org> Merge DenseMapKeyInfo & DenseMapValueInfo into DenseMapInfo

Add a new DenseMapInfo::isEqual method to allow clients to redefine
the equality predicate used when probing the hash table.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42042 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
egAllocBigBlock.cpp
92eea075fddb6aa222991cd6e2483c5a10d97348 17-Sep-2007 Chris Lattner <sabre@nondot.org> Merge DenseMapKeyInfo & DenseMapValueInfo into DenseMapInfo

Add a new DenseMapInfo::isEqual method to allow clients to redefine
the equality predicate used when probing the hash table.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42042 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
egAllocBigBlock.cpp
118cd9dbbad3a47f37dc1b1529ef920e4d5e13f6 16-Sep-2007 Dale Johannesen <dalej@apple.com> Adjust per revew comments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42002 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b17a7a2a959a354241ddf6f8e744078b3f75a347 16-Sep-2007 Dale Johannesen <dalej@apple.com> Adjust per revew comments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42002 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9e3d3abd937c9bb79d56d25ec0e0724c7cbba67c 15-Sep-2007 Dale Johannesen <dalej@apple.com> Remove the assumption that FP's are either float or
double from some of the many places in the optimizers
it appears, and do something reasonable with x86
long double.
Make APInt::dump() public, remove newline, use it to
dump ConstantSDNode's.
Allow APFloats in FoldingSet.
Expand X86 backend handling of long doubles (conversions
to/from int, mostly).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
2fc20789bb7336202950f2804abf313d612f44c1 15-Sep-2007 Dale Johannesen <dalej@apple.com> Remove the assumption that FP's are either float or
double from some of the many places in the optimizers
it appears, and do something reasonable with x86
long double.
Make APInt::dump() public, remove newline, use it to
dump ConstantSDNode's.
Allow APFloats in FoldingSet.
Expand X86 backend handling of long doubles (conversions
to/from int, mostly).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41967 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
92dfe2001e96f6e2b6d327e8816f38033f88b295 14-Sep-2007 Dan Gohman <gohman@apple.com> Remove isReg, isImm, and isMBB, and change all their users to use
isRegister, isImmediate, and isMachineBasicBlock, which are equivalent,
and more popular.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41958 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achineInstr.cpp
egisterScavenging.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
38a9a9f8be9243cc958662832067ac17f7bd4558 14-Sep-2007 Dan Gohman <djg@cray.com> Remove isReg, isImm, and isMBB, and change all their users to use
isRegister, isImmediate, and isMachineBasicBlock, which are equivalent,
and more popular.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41958 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
owerSubregs.cpp
achineInstr.cpp
egisterScavenging.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
cb648f90a26eb05ae8d508d500ca12881df50824 14-Sep-2007 Dan Gohman <gohman@apple.com> Remove spurious consts. This fixes warnings with compilers that
are strict about such things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41956 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
5f222be33b97130f9a858851ced893df2ee11586 14-Sep-2007 Dan Gohman <djg@cray.com> Remove spurious consts. This fixes warnings with compilers that
are strict about such things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41956 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
3d6992fc7bfbd77e912044e7f15e324329d9b4eb 13-Sep-2007 Chris Lattner <sabre@nondot.org> Fix build problems on Cygwin (PR1652), patch by Patrick Walton.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4a22a676203f31c318e82ce816cd0766f75db2a8 13-Sep-2007 Chris Lattner <sabre@nondot.org> Fix build problems on Cygwin (PR1652), patch by Patrick Walton.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
66003775464ad01fc828ba3bfaae75759b3f18e8 13-Sep-2007 Evan Cheng <evan.cheng@apple.com> Bug fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
83e890395f87b5046fc3b83a518eda80e01477ac 13-Sep-2007 Evan Cheng <evan.cheng@apple.com> Bug fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
690013281313284d0ab78f5b6a0ce15a35442c6b 13-Sep-2007 Evan Cheng <evan.cheng@apple.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41899 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
9668960b2fa0d00d7e16d6b3a5e93c41843ecff0 13-Sep-2007 Evan Cheng <evan.cheng@apple.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41899 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
05e69c1f23f1097530fcbc7be97f99d696c019a2 13-Sep-2007 Evan Cheng <evan.cheng@apple.com> Yet another getTargetNode variant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41898 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e1d067ec05cf080937c2f21f5d1b9a5c59bfd4da 13-Sep-2007 Evan Cheng <evan.cheng@apple.com> Yet another getTargetNode variant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41898 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0d8d31674f3cc95f5bba1174a0e8d54d5b9c210a 13-Sep-2007 Evan Cheng <evan.cheng@apple.com> Fixed a typo that's causing a missing kill marker.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41893 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
18ee3327b0601b37e55f8742aed374e77e415132 13-Sep-2007 Evan Cheng <evan.cheng@apple.com> Fixed a typo that's causing a missing kill marker.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41893 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
9d5f45607793052bf5b4436d1b43013fab9999ac 12-Sep-2007 Dale Johannesen <dalej@apple.com> Revise previous patch per review comments.
Next round of x87 long double stuff.
Getting close now, basically works.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41875 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achOWriter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
fbd9cdafa9a1e124a0866470dc1d8f514d5db30e 12-Sep-2007 Dale Johannesen <dalej@apple.com> Revise previous patch per review comments.
Next round of x87 long double stuff.
Getting close now, basically works.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41875 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achOWriter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
6d6d352ed9bf69f06d8084b76042d7e9b3980cb5 12-Sep-2007 Evan Cheng <evan.cheng@apple.com> Sometimes a MI can define a register as well as defining a super-register at the
same time. Do not mark the "smaller" def as dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41871 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
e993ca21319b90ed73d5bcf17ee6c55f061bc296 12-Sep-2007 Evan Cheng <evan.cheng@apple.com> Sometimes a MI can define a register as well as defining a super-register at the
same time. Do not mark the "smaller" def as dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41871 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
3f6eb7419de437436265831fce92f62498556e08 11-Sep-2007 Dale Johannesen <dalej@apple.com> Add APInt interfaces to APFloat (allows directly
access to bits). Use them in place of float and
double interfaces where appropriate.
First bits of x86 long double constants handling
(untested, probably does not work).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41858 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achOWriter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
1616e90a14e8df92adb026ceb047141056862de9 11-Sep-2007 Dale Johannesen <dalej@apple.com> Add APInt interfaces to APFloat (allows directly
access to bits). Use them in place of float and
double interfaces where appropriate.
First bits of x86 long double constants handling
(untested, probably does not work).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41858 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achOWriter.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
ef4a661725716c60b49c40eed5225cac52f877e9 11-Sep-2007 Bill Wendling <isanbard@gmail.com> Add a bool to indicate if we should set the "indirect encoding" bit in the Dwarf
information for EH.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41852 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
2d36992694fc05b6d4cfd85cb2884fa462fce6dc 11-Sep-2007 Bill Wendling <isanbard@gmail.com> Add a bool to indicate if we should set the "indirect encoding" bit in the Dwarf
information for EH.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41852 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
f7331b3dd72409e644833ecaf62a0f6db03c97ee 11-Sep-2007 Duncan Sands <baldrick@free.fr> Fold the adjust_trampoline intrinsic into
init_trampoline. There is now only one
trampoline intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41841 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
7407a9f0ce838891356c1faf3d52e1dacf4e5365 11-Sep-2007 Duncan Sands <baldrick@free.fr> Fold the adjust_trampoline intrinsic into
init_trampoline. There is now only one
trampoline intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41841 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
d60da495cd5c6bc119b3489e6b3147158735bb99 11-Sep-2007 Bill Wendling <isanbard@gmail.com> The personality function on Darwin needs a global stub. We then refer to
that global stub instead of doing the ".set" thingy we were doing before.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41838 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
d1bda4f70ae19dcc4ac3b0ba063c6f3a9af0a580 11-Sep-2007 Bill Wendling <isanbard@gmail.com> The personality function on Darwin needs a global stub. We then refer to
that global stub instead of doing the ".set" thingy we were doing before.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41838 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
2d9823875ab678cdbbc4cea920fb686f8fd6030f 11-Sep-2007 Evan Cheng <evan.cheng@apple.com> Observation of rematerialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41809 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
3bdb3afb70bc1603ebe1cd60a80c8ad5818412be 11-Sep-2007 Evan Cheng <evan.cheng@apple.com> Observation of rematerialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41809 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
61c5ff460b18b970aa651115c4ac78dfc0d602d7 10-Sep-2007 Chris Lattner <sabre@nondot.org> Emit:

cmpl %eax, %ecx
setae %al
movzbl %al, %eax

instead of:

cmpl %eax, %ecx
setb %al
xorb $1, %al
movzbl %al, %eax

when using logical not of a C comparison.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e27cd509e5e95972be1f152ec63d1b11b495d37c 10-Sep-2007 Chris Lattner <sabre@nondot.org> Emit:

cmpl %eax, %ecx
setae %al
movzbl %al, %eax

instead of:

cmpl %eax, %ecx
setb %al
xorb $1, %al
movzbl %al, %eax

when using logical not of a C comparison.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
87b51bc2b0e9bced27d6fd95573a3f21691a261c 10-Sep-2007 Chris Lattner <sabre@nondot.org> 1. Don't call Value::getName(), which is slow.
2. Lower calls to fabs and friends to FABS nodes etc unless the function has
internal linkage. Before we wouldn't lower if it had a definition, which
is incorrect. This allows us to compile:

define double @fabs(double %f) {
%tmp2 = tail call double @fabs( double %f )
ret double %tmp2
}

into:

_fabs:
fabs f1, f1
blr



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41805 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3687e34c2cc7ce435bc29e9cacdb4d7320890b91 10-Sep-2007 Chris Lattner <sabre@nondot.org> 1. Don't call Value::getName(), which is slow.
2. Lower calls to fabs and friends to FABS nodes etc unless the function has
internal linkage. Before we wouldn't lower if it had a definition, which
is incorrect. This allows us to compile:

define double @fabs(double %f) {
%tmp2 = tail call double @fabs( double %f )
ret double %tmp2
}

into:

_fabs:
fabs f1, f1
blr



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41805 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
907f28ce3032e67c02a50095659e901de867dd3c 08-Sep-2007 Dale Johannesen <dalej@apple.com> Implement misaligned FP loads and stores.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
082753802dc328e81d1b3f286a855ad39c533a4e 08-Sep-2007 Dale Johannesen <dalej@apple.com> Implement misaligned FP loads and stores.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41786 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
588af2fb99bf255c350fcfc582e475cf4840c606 07-Sep-2007 Rafael Espindola <rafael.espindola@gmail.com> Add support for having different alignment for objects on call frames.
The x86-64 ABI states that objects passed on the stack have
8 byte alignment. Implement that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b5c5df48b2dd9773149374d32fb40d12471269d4 07-Sep-2007 Rafael Espindola <rafael.espindola@gmail.com> Add support for having different alignment for objects on call frames.
The x86-64 ABI states that objects passed on the stack have
8 byte alignment. Implement that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8806c7b1f5317a9679a5779ffc08c552f2091bce 07-Sep-2007 Anton Korobeynikov <asl@math.spbu.ru> Split eh.select / eh.typeid.for intrinsics into i32/i64 versions. This is needed, because they just "mark" register
liveins and we let frontend solve type issue, not lowering code :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41763 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
94c46a0e5fae77e8e68c6d1abf442a1327bf1fb6 07-Sep-2007 Anton Korobeynikov <asl@math.spbu.ru> Split eh.select / eh.typeid.for intrinsics into i32/i64 versions. This is needed, because they just "mark" register
liveins and we let frontend solve type issue, not lowering code :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41763 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
718cb665ca6ce2bc4d8e8479f46a45db91b49f86 07-Sep-2007 Owen Anderson <resistor@mac.com> Add lengthof and endof templates that hide a lot of sizeof computations.
Patch by Sterling Stein!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41758 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/TargetLowering.cpp
1636de94069d492185da2dd36859d4a1962a2eed 07-Sep-2007 Owen Anderson <resistor@mac.com> Add lengthof and endof templates that hide a lot of sizeof computations.
Patch by Sterling Stein!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41758 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/TargetLowering.cpp
af992f782fb2cac8d00b352c3dd73f6e782b5758 06-Sep-2007 David Greene <greened@obbligato.org> Constify to catch bugs.







git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41751 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
e97f07714219e0407f908428c157ba7ec0cbf2dd 06-Sep-2007 David Greene <greened@obbligato.org> Constify to catch bugs.







git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41751 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
43421b3dd70af5b70e71816521f37502c397cc65 06-Sep-2007 Dale Johannesen <dalej@apple.com> Next round of APFloat changes.
Use APFloat in UpgradeParser and AsmParser.
Change all references to ConstantFP to use the
APFloat interface rather than double. Remove
the ConstantFP double interfaces.
Use APFloat functions for constant folding arithmetic
and comparisons.
(There are still way too many places APFloat is
just a wrapper around host float/double, but we're
getting there.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41747 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achOWriter.cpp
electionDAG/SelectionDAGISel.cpp
b9de9f07d611823ea3371b65f87035f482ace2ad 06-Sep-2007 Dale Johannesen <dalej@apple.com> Next round of APFloat changes.
Use APFloat in UpgradeParser and AsmParser.
Change all references to ConstantFP to use the
APFloat interface rather than double. Remove
the ConstantFP double interfaces.
Use APFloat functions for constant folding arithmetic
and comparisons.
(There are still way too many places APFloat is
just a wrapper around host float/double, but we're
getting there.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41747 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achOWriter.cpp
electionDAG/SelectionDAGISel.cpp
325be7c608a37d87e4f3d731e11fa3dd34f529b5 06-Sep-2007 Anton Korobeynikov <asl@math.spbu.ru> Proper handle case, when aliasee is external weak symbol referenced only by alias itself.
Also, fix a case, when target doesn't have weak symbols supported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41746 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
6d2c506cce46d4edcc314ca363b5e4ec4584cc38 06-Sep-2007 Anton Korobeynikov <asl@math.spbu.ru> Proper handle case, when aliasee is external weak symbol referenced only by alias itself.
Also, fix a case, when target doesn't have weak symbols supported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41746 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
04fa32f9aa19bae12e7fd5b5564cebc345de3c58 06-Sep-2007 David Greene <greened@obbligato.org> Add instruction dump output. This helps find bugs.






git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41744 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
a1c1e78ab8e0bf30d31fd76e4088af2b8638fe90 06-Sep-2007 David Greene <greened@obbligato.org> Add instruction dump output. This helps find bugs.






git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41744 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
2c17c4d8d9f232f0329786ad9abee976bc0f3d27 06-Sep-2007 David Greene <greened@obbligato.org> Pluggable coalescers inplementation.





git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41743 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
1d80f1b12ee3aa198ae1bfd5dd33ae7e8aeb4e57 06-Sep-2007 David Greene <greened@obbligato.org> Pluggable coalescers inplementation.





git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41743 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
egisterCoalescer.cpp
impleRegisterCoalescing.cpp
dd199d29b781bc713462f1255b63d3f153bfd9e9 06-Sep-2007 Evan Cheng <evan.cheng@apple.com> Fix a memory leak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41739 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
27344d4cb30a4f71ff4b924d99474e747cdb65dd 06-Sep-2007 Evan Cheng <evan.cheng@apple.com> Fix a memory leak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41739 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
f3bb2e65d12857f83b273f4ecab013680310bbbc 05-Sep-2007 Evan Cheng <evan.cheng@apple.com> Use pool allocator for all the VNInfo's to improve memory access locality. This reduces coalescing time on siod Mac OS X PPC by 35%. Also remove the back ptr from VNInfo to LiveInterval and other tweaks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41729 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
319802c33f401392c61756aaf97d94292fd829b4 05-Sep-2007 Evan Cheng <evan.cheng@apple.com> Use pool allocator for all the VNInfo's to improve memory access locality. This reduces coalescing time on siod Mac OS X PPC by 35%. Also remove the back ptr from VNInfo to LiveInterval and other tweaks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41729 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
988650438440e5aedbcf13adf8bc2ae4fda3bd4f 05-Sep-2007 Duncan Sands <baldrick@free.fr> Due to label merging, the last label for an invoke
may be the same as the first label for the following
invoke. Remove a micro-optimization which was wrong
in this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41720 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
89372f6000d42dd4219c900dbda491dbb5ca7e01 05-Sep-2007 Duncan Sands <baldrick@free.fr> Due to label merging, the last label for an invoke
may be the same as the first label for the following
invoke. Remove a micro-optimization which was wrong
in this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41720 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
57810cdac4c842b4b395d2a0b2fae406aacb3ee4 05-Sep-2007 Duncan Sands <baldrick@free.fr> Fix PR1628. When exception handling is turned on,
labels are generated bracketing each call (not just
invokes). This is used to generate entries in
the exception table required by the C++ personality.
However it gets in the way of tail-merging. This
patch solves the problem by no longer placing labels
around ordinary calls. Instead we generate entries
in the exception table that cover every instruction
in the function that wasn't covered by an invoke
range (the range given by the labels around the invoke).
As an optimization, such entries are only generated for
parts of the function that contain a call, since for
the moment those are the only instructions that can
throw an exception [1]. As a happy consequence, we
now get a smaller exception table, since the same
region can cover many calls. While there, I also
implemented folding of invoke ranges - successive
ranges are merged when safe to do so. Finally, if
a selector contains only a cleanup, there's a special
shorthand for it - place a 0 in the call-site entry.
I implemented this while there. As a result, the
exception table output (excluding filters) is now
optimal - it cannot be made smaller [2]. The
problem with throw filters is that folding them
optimally is hard, and the benefit of folding them is
minimal.

[1] I tested that having trapping instructions (eg
divide by zero) in such a region doesn't cause trouble.
[2] It could be made smaller with the help of higher
layers, eg by having branch folding reorder basic blocks
ending in invokes with the same landing pad so they
follow each other. I don't know if this is worth doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41718 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
241a0c904da8c32d56b058873f602790c09c07c4 05-Sep-2007 Duncan Sands <baldrick@free.fr> Fix PR1628. When exception handling is turned on,
labels are generated bracketing each call (not just
invokes). This is used to generate entries in
the exception table required by the C++ personality.
However it gets in the way of tail-merging. This
patch solves the problem by no longer placing labels
around ordinary calls. Instead we generate entries
in the exception table that cover every instruction
in the function that wasn't covered by an invoke
range (the range given by the labels around the invoke).
As an optimization, such entries are only generated for
parts of the function that contain a call, since for
the moment those are the only instructions that can
throw an exception [1]. As a happy consequence, we
now get a smaller exception table, since the same
region can cover many calls. While there, I also
implemented folding of invoke ranges - successive
ranges are merged when safe to do so. Finally, if
a selector contains only a cleanup, there's a special
shorthand for it - place a 0 in the call-site entry.
I implemented this while there. As a result, the
exception table output (excluding filters) is now
optimal - it cannot be made smaller [2]. The
problem with throw filters is that folding them
optimally is hard, and the benefit of folding them is
minimal.

[1] I tested that having trapping instructions (eg
divide by zero) in such a region doesn't cause trouble.
[2] It could be made smaller with the help of higher
layers, eg by having branch folding reorder basic blocks
ending in invokes with the same landing pad so they
follow each other. I don't know if this is worth doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41718 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
a34d395358ea8aa039566926650a12d0962ded38 04-Sep-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1632. EHSELECTION always produces a i32 value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e8d1e2aaa0148b78cfa96348bef99b51bb0c67de 04-Sep-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1632. EHSELECTION always produces a i32 value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
406452dce3af47bc2ee55d9ff72338dcb78f6c3d 03-Sep-2007 Anton Korobeynikov <asl@math.spbu.ru> Silence warning while compiling with gcc 4.2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41676 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
a55c9f25aece1546aafb5092b520974397cd25f4 03-Sep-2007 Anton Korobeynikov <asl@math.spbu.ru> Silence warning while compiling with gcc 4.2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41676 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
9cc54f586786572f6c2b1b353b7cf3f98503c59e 03-Sep-2007 Anton Korobeynikov <asl@math.spbu.ru> Emit proper "secrel" directive, where possible. This fixes invalid asm syntax of debug info on mingw32. Also, cleanup
some stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41675 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
5ef8670c228668fe8ff65702b15e8323cb44c7b8 03-Sep-2007 Anton Korobeynikov <asl@math.spbu.ru> Emit proper "secrel" directive, where possible. This fixes invalid asm syntax of debug info on mingw32. Also, cleanup
some stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41675 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
343013538f72f2202338f57161c0bd92344ca407 01-Sep-2007 Evan Cheng <evan.cheng@apple.com> More tweaks to improve compile time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41669 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
8b7533e8e478c8705e229ce1b77be23025a2d4cb 01-Sep-2007 Evan Cheng <evan.cheng@apple.com> More tweaks to improve compile time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41669 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
c4dd3c3b519aa2c2ed26ce03a4b1fbb992efeaca 01-Sep-2007 Dale Johannesen <dalej@apple.com> Add mod, copysign, abs operations to APFloat.
Implement some constant folding in SelectionDAG and
DAGCombiner using APFloat. Remove double versions
of constructor and getValue from ConstantFPSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41664 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
7604c1b5a616eccc909ae58daa6e7afd54fa2d71 01-Sep-2007 Dale Johannesen <dalej@apple.com> Add mod, copysign, abs operations to APFloat.
Implement some constant folding in SelectionDAG and
DAGCombiner using APFloat. Remove double versions
of constructor and getValue from ConstantFPSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41664 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
fadfb5b102a3b8619ada0c53091c3b0acbde432b 31-Aug-2007 Evan Cheng <evan.cheng@apple.com> std::map -> DenseMap for slight compile time benefit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41650 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
ce77c41ada8d0ebe75d6e45d520314b72f4be260 31-Aug-2007 Evan Cheng <evan.cheng@apple.com> std::map -> DenseMap for slight compile time benefit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41650 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
ee8476847da85e1ac44744f7f64de0675b89dc15 31-Aug-2007 Dale Johannesen <dalej@apple.com> Revise per review of previous patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41645 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7684447199028b572f60fd76e043cf32ec7caa3f 31-Aug-2007 Dale Johannesen <dalej@apple.com> Revise per review of previous patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41645 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d4e4937b79a7da789379a09117cc74f20cd60623 31-Aug-2007 Evan Cheng <evan.cheng@apple.com> Remove an unnecessary element, saving 4 bytes per LiveInterval.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41641 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
e4b5dad91fc585cc7bdc6a4827f5497a6fbda605 31-Aug-2007 Evan Cheng <evan.cheng@apple.com> Remove an unnecessary element, saving 4 bytes per LiveInterval.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41641 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
c14b144ec30424bda7386dec83848188227660ed 31-Aug-2007 Evan Cheng <evan.cheng@apple.com> Use std::map instead of a (potentially very sparse) array to track val# defined by copy from the other live range. Minor compile time win when number of val# is large.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41640 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
814050b796b8492428d5c777b4696f9f38c99552 31-Aug-2007 Evan Cheng <evan.cheng@apple.com> Use std::map instead of a (potentially very sparse) array to track val# defined by copy from the other live range. Minor compile time win when number of val# is large.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41640 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
eaf089430e7681fcddc3465c3b33b9645273ab02 31-Aug-2007 Dale Johannesen <dalej@apple.com> Enhance APFloat to retain bits of NaNs (fixes oggenc).
Use APFloat interfaces for more references, mostly
of ConstantFPSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
df8a831eb0f35fad163b2e45212f8154a17bbd36 31-Aug-2007 Dale Johannesen <dalej@apple.com> Enhance APFloat to retain bits of NaNs (fixes oggenc).
Use APFloat interfaces for more references, mostly
of ConstantFPSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
34c2a9f57ccf57f341ad27cef59e4c5eb2253e1d 30-Aug-2007 Evan Cheng <evan.cheng@apple.com> Try fold re-materialized load instructions into its uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41598 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
03225435be9dcdfb38223e3bce8eaa0489f7fbad 30-Aug-2007 Evan Cheng <evan.cheng@apple.com> Try fold re-materialized load instructions into its uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41598 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f04afdbb48568ef09f11fd10ac03426101f2dbf8 30-Aug-2007 Dale Johannesen <dalej@apple.com> Change LegalFPImmediates to use APFloat.
Add APFloat interfaces to ConstantFP, SelectionDAG.
Fix integer bit in double->APFloat conversion.
Convert LegalizeDAG to use APFloat interface in
ConstantFPSDNode uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41587 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
bbe2b709480f1b89d9ac4d42c2c29e7c29dca3bc 30-Aug-2007 Dale Johannesen <dalej@apple.com> Change LegalFPImmediates to use APFloat.
Add APFloat interfaces to ConstantFP, SelectionDAG.
Fix integer bit in double->APFloat conversion.
Convert LegalizeDAG to use APFloat interface in
ConstantFPSDNode uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41587 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
055c5449a4046a5e1a5210d2f91aee4e3901cccf 30-Aug-2007 Anton Korobeynikov <asl@math.spbu.ru> Fix use of declaration inside case block


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e3d7f93f9f90611f886deb045b5aaf4ca9e99bb2 30-Aug-2007 Anton Korobeynikov <asl@math.spbu.ru> Fix use of declaration inside case block


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7ecb38be0a533e7b9c7d3b8e9b5c8a6fa5f6b349 29-Aug-2007 Evan Cheng <evan.cheng@apple.com> Change LiveRange so it keeps a pointer to the VNInfo rather than an index.
Changes related modules so VNInfo's are not copied. This decrease
copy coalescing time by 45% and overall compilation time by 10% on siod.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41579 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
983b81d6041282ffb6e1dd65b2edb2def76f82fc 29-Aug-2007 Evan Cheng <evan.cheng@apple.com> Change LiveRange so it keeps a pointer to the VNInfo rather than an index.
Changes related modules so VNInfo's are not copied. This decrease
copy coalescing time by 45% and overall compilation time by 10% on siod.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41579 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
066f7b40f8c442dfd52cdbc371a5f6c623d5ba90 29-Aug-2007 Anton Korobeynikov <asl@math.spbu.ru> Lower FRAME_TO_ADDR_OFFSET to zero by default (if not custom lowered)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41578 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
09386bd850e89f0cabae20944ad76bd806d4741d 29-Aug-2007 Anton Korobeynikov <asl@math.spbu.ru> Lower FRAME_TO_ADDR_OFFSET to zero by default (if not custom lowered)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41578 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3e1a7aef17575d9c7058a035449d57e3c7295ed0 28-Aug-2007 Dan Gohman <gohman@apple.com> Add an option, -view-sunit-dags, for viewing the actual SUnit DAGs used by
scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41556 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
134c5b61b7335d90dad114e2abb91f2a0f1e913f 28-Aug-2007 Dan Gohman <djg@cray.com> Add an option, -view-sunit-dags, for viewing the actual SUnit DAGs used by
scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41556 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
1a66f0a4f2348473263fab757d96588bc1e93554 28-Aug-2007 Evan Cheng <evan.cheng@apple.com> Recover most of the compile time regression due to recent live interval changes.
1. Eliminate the costly live interval "swapping".
2. Change ValueNumberInfo container from SmallVector to std::vector. The former
performs slowly when the vector size is very large.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41536 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
ba9905235e860f0f59931777678a52d3b54287f2 28-Aug-2007 Evan Cheng <evan.cheng@apple.com> Recover most of the compile time regression due to recent live interval changes.
1. Eliminate the costly live interval "swapping".
2. Change ValueNumberInfo container from SmallVector to std::vector. The former
performs slowly when the vector size is very large.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41536 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
e9c8fa095e503933840fa1ea41b4583817db5680 27-Aug-2007 Dan Gohman <gohman@apple.com> Make DAGCombiner's global alias analysis query more precise in the case
where both pointers have non-zero offsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41491 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e142c2e6b8b3a61c9282fd0f1202f380b23df251 27-Aug-2007 Dan Gohman <djg@cray.com> Make DAGCombiner's global alias analysis query more precise in the case
where both pointers have non-zero offsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41491 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5f43f92c69aae9837064cf08291db1b36a82789f 27-Aug-2007 Dan Gohman <gohman@apple.com> If the source and destination pointers in an llvm.memmove are known
to not alias each other, it can be translated as an llvm.memcpy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cc863aa72c83309f15f9175f97cad1dffb8d689b 27-Aug-2007 Dan Gohman <djg@cray.com> If the source and destination pointers in an llvm.memmove are known
to not alias each other, it can be translated as an llvm.memcpy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6590b0457c5e28a7336ae31de194953d8127217a 27-Aug-2007 Duncan Sands <baldrick@free.fr> There is an impedance matching problem between LLVM and
gcc exception handling: if an exception unwinds through
an invoke, then execution must branch to the invoke's
unwind target. We previously tried to enforce this by
appending a cleanup action to every selector, however
this does not always work correctly due to an optimization
in the C++ unwinding runtime: if only cleanups would be
run while unwinding an exception, then the program just
terminates without actually executing the cleanups, as
invoke semantics would require. I was hoping this
wouldn't be a problem, but in fact it turns out to be the
cause of all the remaining failures in the LLVM testsuite
(these also fail with -enable-correct-eh-support, so turning
on -enable-eh didn't make things worse!). Instead we need
to append a full-blown catch-all to the end of each
selector. The correct way of doing this depends on the
personality function, i.e. it is language dependent, so
can only be done by gcc. Thus this patch which generalizes
the eh.selector intrinsic so that it can handle all possible
kinds of action table entries (before it didn't accomodate
cleanups): now 0 indicates a cleanup, and filters have to be
specified using the number of type infos plus one rather than
the number of type infos. Related gcc patches will cause
Ada to pass a cleanup (0) to force the selector to always
fire, while C++ will use a C++ catch-all (null).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41484 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
923fdb10d27aede037ce7aacda78f69f5e29bb00 27-Aug-2007 Duncan Sands <baldrick@free.fr> There is an impedance matching problem between LLVM and
gcc exception handling: if an exception unwinds through
an invoke, then execution must branch to the invoke's
unwind target. We previously tried to enforce this by
appending a cleanup action to every selector, however
this does not always work correctly due to an optimization
in the C++ unwinding runtime: if only cleanups would be
run while unwinding an exception, then the program just
terminates without actually executing the cleanups, as
invoke semantics would require. I was hoping this
wouldn't be a problem, but in fact it turns out to be the
cause of all the remaining failures in the LLVM testsuite
(these also fail with -enable-correct-eh-support, so turning
on -enable-eh didn't make things worse!). Instead we need
to append a full-blown catch-all to the end of each
selector. The correct way of doing this depends on the
personality function, i.e. it is language dependent, so
can only be done by gcc. Thus this patch which generalizes
the eh.selector intrinsic so that it can handle all possible
kinds of action table entries (before it didn't accomodate
cleanups): now 0 indicates a cleanup, and filters have to be
specified using the number of type infos plus one rather than
the number of type infos. Related gcc patches will cause
Ada to pass a cleanup (0) to force the selector to always
fire, while C++ will use a C++ catch-all (null).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41484 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
81975f6dfd9d306d0ea7ce3ef22561c949de9af9 27-Aug-2007 Dan Gohman <gohman@apple.com> Add explicit keywords and remove spurious trailing semicolons.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41482 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
hysRegTracker.h
9ba5d4d7fcdb4f9326645c18535a82d80fea8e49 27-Aug-2007 Dan Gohman <djg@cray.com> Add explicit keywords and remove spurious trailing semicolons.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41482 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
hysRegTracker.h
e6c1742914149d44360fbf05a653041a672282af 26-Aug-2007 Dale Johannesen <dalej@apple.com> Revise per review comments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41409 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
c53301c671d7a24e060ffd7e9f95c22b5d29ae77 26-Aug-2007 Dale Johannesen <dalej@apple.com> Revise per review comments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41409 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
87503a63d5756f1836f66f4c9723ec0ea30ec3ca 26-Aug-2007 Dale Johannesen <dalej@apple.com> Add APFloat interface to ConstantFPSDNode. Change
over uses in DAGCombiner. Fix interfaces to work
with APFloats.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41407 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
7f2c1d1a4f0703cfedd3808f0ec695724f99144d 26-Aug-2007 Dale Johannesen <dalej@apple.com> Add APFloat interface to ConstantFPSDNode. Change
over uses in DAGCombiner. Fix interfaces to work
with APFloats.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41407 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
09ec1b058331aadb29a348091611d23892b5c492 25-Aug-2007 Chris Lattner <sabre@nondot.org> Allow target constants to be illegal types. The target should
know how to handle them. This fixes
test/CodeGen/Generic/asm-large-immediate.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41388 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
dad577b42d1c678d0181fbd831d51c8a4f547bd3 25-Aug-2007 Chris Lattner <sabre@nondot.org> Allow target constants to be illegal types. The target should
know how to handle them. This fixes
test/CodeGen/Generic/asm-large-immediate.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41388 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7df31dc89b0323bca5fd6aa0a72db4d663c9b8f3 25-Aug-2007 Chris Lattner <sabre@nondot.org> Teach the dag scheduler to handle inline asm nodes with multi-value immediate operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41386 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
23544c1a464db6d5ef3a0ca174316038de701701 25-Aug-2007 Chris Lattner <sabre@nondot.org> Teach the dag scheduler to handle inline asm nodes with multi-value immediate operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41386 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
cf4bb317efb48db2b68aebece255b71624dd5bce 25-Aug-2007 Bill Wendling <isanbard@gmail.com> The personality function might need to be declared as:

.set Lset0,___gxx_personality_v0-.
.long Lset0

on some targets. Make it so!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41385 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
38cb7c9aab50cf1104b775ed31b4b94e722c9f9c 25-Aug-2007 Bill Wendling <isanbard@gmail.com> The personality function might need to be declared as:

.set Lset0,___gxx_personality_v0-.
.long Lset0

on some targets. Make it so!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41385 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
48884cd80b52be1528618f2e9b3425ac24e7b5ca 25-Aug-2007 Chris Lattner <sabre@nondot.org> rename isOperandValidForConstraint to LowerAsmOperandForConstraint,
changing the interface to allow for future changes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
a531abc62282978e331f9abc078ffa16ab1abbb4 25-Aug-2007 Chris Lattner <sabre@nondot.org> rename isOperandValidForConstraint to LowerAsmOperandForConstraint,
changing the interface to allow for future changes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
12595d7b165bf460b18f4ddd395dd29e6e6e68bc 25-Aug-2007 Dale Johannesen <dalej@apple.com> Poison APFloat::operator==. Replace existing uses with bitwiseIsEqual.
This means backing out the preceding change to Constants.cpp, alas.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0210fe8a151fe417c70ba5402f5ce9a4f94f3e3e 25-Aug-2007 Dale Johannesen <dalej@apple.com> Poison APFloat::operator==. Replace existing uses with bitwiseIsEqual.
This means backing out the preceding change to Constants.cpp, alas.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41378 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8bb369b8072c919ef5802f639a52b17620201190 24-Aug-2007 Dale Johannesen <dalej@apple.com> Use APFloat internally for ConstantFPSDNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
70aa12595d0387e2421e1adc4ec960705092bed4 24-Aug-2007 Dale Johannesen <dalej@apple.com> Use APFloat internally for ConstantFPSDNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41372 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2f597bd09ec0a55689c9fd6d8999bde4fdf8688e 23-Aug-2007 Anton Korobeynikov <asl@math.spbu.ru> Perform correct codegen for eh_dwarf_cfa intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41316 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b5641a0ffcdabb890443f18c8c26b3552d56c378 23-Aug-2007 Anton Korobeynikov <asl@math.spbu.ru> Perform correct codegen for eh_dwarf_cfa intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41316 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b753a9bb6277cd34ffc55f8674087ff8c3097a11 22-Aug-2007 Andrew Lenharth <andrewl@lenharth.org> move this check. ppc outputs .no_dead_strip properly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41286 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
61d35f5f357074af0ec3cdc2f96362a401cc3ee0 22-Aug-2007 Andrew Lenharth <alenhar2@cs.uiuc.edu> move this check. ppc outputs .no_dead_strip properly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41286 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
8d1bfad00b1ebff5b140b6e1bd7e26bad697d6e1 20-Aug-2007 Dan Gohman <gohman@apple.com> Minor cleanups to reduce some spurious differences between different
scheduler implementations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41191 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
cbc5fdda1070d3638f494d3fc0700f983c1fe6f4 20-Aug-2007 Dan Gohman <djg@cray.com> Minor cleanups to reduce some spurious differences between different
scheduler implementations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41191 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
21485be444bd132941faf4e5653ac34b3ec74040 20-Aug-2007 Rafael Espindola <rafael.espindola@gmail.com> Partial implementation of calling functions with byval arguments:
*) The needed information is propagated to the DAG
*) The X86-64 backend detects it and aborts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41179 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b8bcfcdde33ce3a5812cd2133701dd6222bc40eb 20-Aug-2007 Rafael Espindola <rafael.espindola@gmail.com> Partial implementation of calling functions with byval arguments:
*) The needed information is propagated to the DAG
*) The X86-64 backend detects it and aborts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41179 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
571c4788d5d1527af39f9904e14983d9229c2443 18-Aug-2007 Evan Cheng <evan.cheng@apple.com> Fold C ? 0 : 1 to ~C or zext(~C) or trunc(~C) depending the types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41163 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ff601dc5ddab82677b266e7547398bc3165f8bfa 18-Aug-2007 Evan Cheng <evan.cheng@apple.com> Fold C ? 0 : 1 to ~C or zext(~C) or trunc(~C) depending the types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41163 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3e20bba5eb5df2fdd3e6655c8470084cf05032d4 17-Aug-2007 Evan Cheng <evan.cheng@apple.com> Avoid issue on 64-bit hosts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41143 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
51ce038ef93efb5ddb3f5b51552212ab8d1470b2 17-Aug-2007 Evan Cheng <evan.cheng@apple.com> Avoid issue on 64-bit hosts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41143 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fd273b6ed51494a99b585a92e60cdc68102fe371 17-Aug-2007 David Greene <greened@obbligato.org> Fix GLIBCXX_DEBUG error of comparing two singular iterators



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41139 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
aa5912d071250c1fe8166072d0b177f2a6738d4c 17-Aug-2007 David Greene <greened@obbligato.org> Fix GLIBCXX_DEBUG error of comparing two singular iterators



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41139 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
61bbbabe3da27479cc9a3a36e49091a1141ba7a3 17-Aug-2007 Evan Cheng <evan.cheng@apple.com> If dynamic_stackalloc alignment is > stack alignment, first issue an instruction to align the stack ptr before the decrement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41133 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a448bc405f5ade615e4076ed2540ef03ec24304d 17-Aug-2007 Evan Cheng <evan.cheng@apple.com> If dynamic_stackalloc alignment is > stack alignment, first issue an instruction to align the stack ptr before the decrement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41133 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4515779fa39481649780bdd24fc966e89ec76edf 17-Aug-2007 Evan Cheng <evan.cheng@apple.com> - If a dynamic_stackalloc alignment requirement is <= stack alignment, then the alignment argument is ignored.
- *Always* round up the size of the allocation to multiples of stack
alignment to ensure the stack ptr is never left in an invalid state after a dynamic_stackalloc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41132 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a31dc756af85ebe58b402d4ed71238a3ed669c45 17-Aug-2007 Evan Cheng <evan.cheng@apple.com> - If a dynamic_stackalloc alignment requirement is <= stack alignment, then the alignment argument is ignored.
- *Always* round up the size of the allocation to multiples of stack
alignment to ensure the stack ptr is never left in an invalid state after a dynamic_stackalloc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41132 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
bc165e436beb02443abea9736c1b77e2dd7828b6 16-Aug-2007 Evan Cheng <evan.cheng@apple.com> Fix some kill info update bugs; add hidden option -disable-rematerialization to turn off remat for debugging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41118 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
afc07f85919deb1d73aa2716d46a6edd8cbc8e42 16-Aug-2007 Evan Cheng <evan.cheng@apple.com> Fix some kill info update bugs; add hidden option -disable-rematerialization to turn off remat for debugging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41118 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
c90f08936d717ac6aa767c28cee7af4366eb6921 16-Aug-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Implement FPOWI ExpandOp.
Fix PR1287.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41112 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ccd0d7b44ec0fe140fe20b7269aeaa7b55aa1682 16-Aug-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Implement FPOWI ExpandOp.
Fix PR1287.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41112 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
90a43c3ae385d98d19f9c858b51920552fb9ceaa 15-Aug-2007 Evan Cheng <evan.cheng@apple.com> If the source of a move is in spill slot, the reload may be folded to essentially a load from stack slot. It's ok to mark the stack slot value as available for reuse. But it should not be clobbered since the destination of the move is live.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41109 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
7efc9422a5683d41ae54d937754998501923612d 15-Aug-2007 Evan Cheng <evan.cheng@apple.com> If the source of a move is in spill slot, the reload may be folded to essentially a load from stack slot. It's ok to mark the stack slot value as available for reuse. But it should not be clobbered since the destination of the move is live.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41109 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
b6ca4b370e1313b5d6bda19e86be370a3e00a38f 15-Aug-2007 Evan Cheng <evan.cheng@apple.com> - If a def is dead, do not spill it.
- If the defs of a spilled rematerializable MI are dead after the spill store is deleted, delete
the def MI as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41086 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
498949b19db2f158ef967358811a64b94a3da400 15-Aug-2007 Evan Cheng <evan.cheng@apple.com> - If a def is dead, do not spill it.
- If the defs of a spilled rematerializable MI are dead after the spill store is deleted, delete
the def MI as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41086 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
dc5294fd83147ebbea9390a3aeb78fe398c05308 15-Aug-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1596: AdjustCopiesBackFrom() should conservatively check if any of its sub-registers may overlap with the interval of the copy that's being coalesced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41084 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
66858a68be8bed119b1394acc535f9853accc747 15-Aug-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1596: AdjustCopiesBackFrom() should conservatively check if any of its sub-registers may overlap with the interval of the copy that's being coalesced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41084 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
c91f0b80687f0a6fafa5a5e6cd87498e2de6fc3e 14-Aug-2007 Evan Cheng <evan.cheng@apple.com> If a MI's def is remat as well as spilled, and the store is later deemed dead, mark the def operand as isDead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41083 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
eec85c54e649b2134e2b78cdde724b0997299d1e 14-Aug-2007 Evan Cheng <evan.cheng@apple.com> If a MI's def is remat as well as spilled, and the store is later deemed dead, mark the def operand as isDead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41083 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
fff3e191b959bfc00e266b47f5c142464bb50ebf 14-Aug-2007 Evan Cheng <evan.cheng@apple.com> If a spilled value is being reused and the use is a kill, that means there are
no more uses within the MBB and the spilled value isn't live out of the MBB.
Then it's safe to delete the spill store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41069 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
d368d827d9bc9db13bc2000c6290d19cd343bad3 14-Aug-2007 Evan Cheng <evan.cheng@apple.com> If a spilled value is being reused and the use is a kill, that means there are
no more uses within the MBB and the spilled value isn't live out of the MBB.
Then it's safe to delete the spill store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41069 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
dc6be1985944716a0fb4a2706dcea9e1296e3d6a 14-Aug-2007 Evan Cheng <evan.cheng@apple.com> If a rematerializable def is not deleted, i.e. it is also spilled, check if the
spilled value is available for reuse.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41067 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
67cf11cdc1b014a2efea53510babeb8ac078c5de 14-Aug-2007 Evan Cheng <evan.cheng@apple.com> If a rematerializable def is not deleted, i.e. it is also spilled, check if the
spilled value is available for reuse.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41067 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
430a7b0c94bf9b505aedd9c7d977b43010d6c8f1 14-Aug-2007 Evan Cheng <evan.cheng@apple.com> Kill info update bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41064 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
2d88a7bdd84044a39611c50a8ea01d8e3c4040e5 14-Aug-2007 Evan Cheng <evan.cheng@apple.com> Kill info update bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41064 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
impleRegisterCoalescing.cpp
549f27d3070195d6647b796841a5291b4549e8e0 14-Aug-2007 Evan Cheng <evan.cheng@apple.com> Re-implement trivial rematerialization. This allows def MIs whose live intervals that are coalesced to be rematerialized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41060 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
irtRegMap.h
1204d1790c811342e4930b37d3e6edf905fe9780 14-Aug-2007 Evan Cheng <evan.cheng@apple.com> Re-implement trivial rematerialization. This allows def MIs whose live intervals that are coalesced to be rematerialized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41060 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
irtRegMap.cpp
irtRegMap.h
6047dd928067c9e2127c74152d22517ef3940d87 13-Aug-2007 Evan Cheng <evan.cheng@apple.com> Kill info update bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41043 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
afc1c2c26aeaf84cbca8b4718605e1b83e62d397 13-Aug-2007 Evan Cheng <evan.cheng@apple.com> Kill info update bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41043 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
ccb36a4f1bcafdf0de8514e396a5d2acf29d3947 12-Aug-2007 Evan Cheng <evan.cheng@apple.com> No need to remove dead range from soon-to-be-dead live interval. Its val# may be out of whack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41024 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
8ffaebdf5e19c590da91492f4ae27fe899127d47 12-Aug-2007 Evan Cheng <evan.cheng@apple.com> No need to remove dead range from soon-to-be-dead live interval. Its val# may be out of whack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41024 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
4f8ff168de12eabdeb4b9437bf9402489ecf85cb 11-Aug-2007 Evan Cheng <evan.cheng@apple.com> Code to maintain kill information during register coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41016 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
816a7f3e2a714c781ded198ce9374cb983fdebfd 11-Aug-2007 Evan Cheng <evan.cheng@apple.com> Code to maintain kill information during register coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41016 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
8b165731bcb9de313e3cc724e9f1b741d7fa4b05 10-Aug-2007 Christopher Lamb <christopher.lamb@gmail.com> Move isSubRegOf into MRegisterInfo. Fix a missed move elimination in LowerSubregs and add more debugging output there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41005 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
eaf093213b6b4753d9c57c11cb459cbc92ac138c 10-Aug-2007 Christopher Lamb <christopher.lamb@gmail.com> Move isSubRegOf into MRegisterInfo. Fix a missed move elimination in LowerSubregs and add more debugging output there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41005 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
25ac7e8364f475597e2a6f3628fce839583e1f45 10-Aug-2007 Dan Gohman <gohman@apple.com> Fix EXTRACT_ELEMENT, EXTRACT_SUBVECTOR, and EXTRACT_VECTOR_ELT to
use an intptr ValueType instead of i32 for the index operand in
getCopyToParts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40987 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f7b05137e4a49f6e41fcf12c910106cc1ea32e6b 10-Aug-2007 Dan Gohman <djg@cray.com> Fix EXTRACT_ELEMENT, EXTRACT_SUBVECTOR, and EXTRACT_VECTOR_ELT to
use an intptr ValueType instead of i32 for the index operand in
getCopyToParts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40987 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
594d37e21aea4ef841d9ee5d9c328c4bf1c6bed7 10-Aug-2007 Rafael Espindola <rafael.espindola@gmail.com> propagate struct size and alignment of byval arguments to the DAG

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40986 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/SelectionDAGISel.cpp
e4e4d3eaa6f62a7f04abd2291e4e7a99a1d3b0ad 10-Aug-2007 Rafael Espindola <rafael.espindola@gmail.com> propagate struct size and alignment of byval arguments to the DAG

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40986 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
electionDAG/SelectionDAGISel.cpp
b31e91cb16885922efd6baca751c0991960dd817 10-Aug-2007 Chris Lattner <sabre@nondot.org> unbreak the build


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40976 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
87c44fb89546e28a568672e7579e46f13a426dee 10-Aug-2007 Chris Lattner <sabre@nondot.org> unbreak the build


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40976 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
a86e347f020eaab943546635972be3ed5009cd10 10-Aug-2007 Evan Cheng <evan.cheng@apple.com> Bug fix. ~1U marks the val# dead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40975 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
ea884cb720ba386392f9820267b3247869bcda3e 10-Aug-2007 Evan Cheng <evan.cheng@apple.com> Bug fix. ~1U marks the val# dead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40975 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
ab081c7195ad0b2bc9a13fa718f2bbffe54ac61c 09-Aug-2007 Dale Johannesen <dalej@apple.com> Update per review comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40965 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6089237a5c9aa481d5bf1e90f8b4ea986b334d34 09-Aug-2007 Dale Johannesen <dalej@apple.com> Update per review comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40965 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5411a3937f4303f9c3fc50be92f985a4532d95e6 09-Aug-2007 Dale Johannesen <dalej@apple.com> long double 9 of N. This finishes up the X86-32 bits
(constants are still not handled). Adds ConvertActions
to control fp-to-fp conversions (these are currently
defaulted for all other targets, so no changes there).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40958 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
8f83a6b48b5b5d87f157d6af4bda360471106f2e 09-Aug-2007 Dale Johannesen <dalej@apple.com> long double 9 of N. This finishes up the X86-32 bits
(constants are still not handled). Adds ConvertActions
to control fp-to-fp conversions (these are currently
defaulted for all other targets, so no changes there).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40958 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
c1513d24eab4b193c951f3cad450ef344e88e0a6 09-Aug-2007 Scott Michel <scottm@aero.org> If a target really needs to custom lower constants, it should be allowed
to do so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40955 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f2e2b70a5ed3e807c590a61e4f2c9ac46f790ae1 09-Aug-2007 Scott Michel <scottm@aero.org> If a target really needs to custom lower constants, it should be allowed
to do so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40955 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
24c2e5cf7e926452ea5875d027ec0d24d9c19e39 08-Aug-2007 Evan Cheng <evan.cheng@apple.com> Adding kill info to val#.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40925 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
0f72734915832161eac3a110c31116dd588e875b 08-Aug-2007 Evan Cheng <evan.cheng@apple.com> Adding kill info to val#.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40925 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a141cfe5b2beb16599b5bab8c73333b31cc7a548 08-Aug-2007 Evan Cheng <evan.cheng@apple.com> Clean up and bug fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40921 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
fdaff35b428c8a9b93e3ddc6bf457e3b7f17528b 08-Aug-2007 Evan Cheng <evan.cheng@apple.com> Clean up and bug fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40921 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
8df786012dc6b875f31ba4152e09c6e0098082ee 08-Aug-2007 Evan Cheng <evan.cheng@apple.com> - Each val# can have multiple kills.
- Fix some minor bugs related to special markers on val# def. ~0U means
undefined, ~1U means dead val#.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40916 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
58c2b767dfa5f5231db966d1a4a1e3f9c408283c 08-Aug-2007 Evan Cheng <evan.cheng@apple.com> - Each val# can have multiple kills.
- Fix some minor bugs related to special markers on val# def. ~0U means
undefined, ~1U means dead val#.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40916 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
51cbf3c980e921a2950766282dfd6d9b2288eadd 08-Aug-2007 Evan Cheng <evan.cheng@apple.com> Remove a dead assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40914 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
acbff0e9ecfc3e325eafb7b544ebf0d3c8234aaf 08-Aug-2007 Evan Cheng <evan.cheng@apple.com> Remove a dead assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40914 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
a8d94f1315f722de056af03763664b77a5baac26 08-Aug-2007 Evan Cheng <evan.cheng@apple.com> - LiveInterval value#'s now have 3 components: def instruction #,
kill instruction #, and source register number (iff the value# is defined by a
copy).
- Now def instruction # is set for every value#, not just for copy defined ones.
- Update some outdated code related inactive live ranges.
- Kill info not yet set. That's next patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40913 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
4151fde810668888a258896b44e75b6eb876695d 08-Aug-2007 Evan Cheng <evan.cheng@apple.com> - LiveInterval value#'s now have 3 components: def instruction #,
kill instruction #, and source register number (iff the value# is defined by a
copy).
- Now def instruction # is set for every value#, not just for copy defined ones.
- Update some outdated code related inactive live ranges.
- Kill info not yet set. That's next patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40913 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
impleRegisterCoalescing.cpp
7e23146ab9dd6c2d8849bacce841a2e4660305dc 07-Aug-2007 David Greene <greened@obbligato.org> Add a missing forward declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40896 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.h
44a3bfb4643d0e2cd3483ac60f48b72a2141de86 07-Aug-2007 David Greene <greened@obbligato.org> Add a missing forward declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40896 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.h
914ce4508d46bdc5db0eec1aff8051ccd94c3d5f 06-Aug-2007 Chris Lattner <sabre@nondot.org> Fix a regression compiling 2005-05-11-Popcount-ffs-fls with the CBE,
introduced by chandler's patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40864 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
f2cf7f0f5b456e2c6248e6c5521a9a369a75dd79 06-Aug-2007 Chris Lattner <sabre@nondot.org> Fix a regression compiling 2005-05-11-Popcount-ffs-fls with the CBE,
introduced by chandler's patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40864 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
98363225a3badb3cfbe539b0a000ef108b0fea87 06-Aug-2007 Christopher Lamb <christopher.lamb@gmail.com> Implement review feedback. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40863 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
a5bb7e44686795426cee68f94589a272584c8267 06-Aug-2007 Christopher Lamb <christopher.lamb@gmail.com> Implement review feedback. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40863 91177308-0d34-0410-b5e6-96231b3b80d8
owerSubregs.cpp
181b6c9cb5def44658d15848e34c5c45d973f065 05-Aug-2007 Reid Spencer <rspencer@reidspencer.com> Fix minor doxygen nits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40854 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
37c7cea4847c32beb300b32e46db4805dfe716fa 05-Aug-2007 Reid Spencer <reid@x10sys.com> Fix minor doxygen nits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40854 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
e76fad2ceb19f975f29cd1fb110866a6d802d8a6 05-Aug-2007 Chris Lattner <sabre@nondot.org> shorten this name


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40843 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d78c639086eb0770a37eae8cf820aa1bc28ca8d4 05-Aug-2007 Chris Lattner <sabre@nondot.org> shorten this name


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40843 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
6994040a952e5fb27605eb3cf29ed86c4e59cf62 04-Aug-2007 Chandler Carruth <chandlerc@gmail.com> This is the patch to provide clean intrinsic function overloading support in LLVM. It cleans up the intrinsic definitions and generally smooths the process for more complicated intrinsic writing. It will be used by the upcoming atomic intrinsics as well as vector and float intrinsics in the future.

This also changes the syntax for llvm.bswap, llvm.part.set, llvm.part.select, and llvm.ct* intrinsics. They are automatically upgraded by both the LLVM ASM reader and the bitcode reader. The test cases have been updated, with special tests added to ensure the automatic upgrading is supported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a228e39a1540baceadc27acb2f1af0f2563381e5 04-Aug-2007 Chandler Carruth <chandlerc@gmail.com> This is the patch to provide clean intrinsic function overloading support in LLVM. It cleans up the intrinsic definitions and generally smooths the process for more complicated intrinsic writing. It will be used by the upcoming atomic intrinsics as well as vector and float intrinsics in the future.

This also changes the syntax for llvm.bswap, llvm.part.set, llvm.part.select, and llvm.ct* intrinsics. They are automatically upgraded by both the LLVM ASM reader and the bitcode reader. The test cases have been updated, with special tests added to ensure the automatic upgrading is supported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40807 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
61e729e2e9517ab2d8887bab86fb377900fa1081 02-Aug-2007 Dan Gohman <gohman@apple.com> More explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40757 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
irtRegMap.h
3a78bbfeacce9988ff60210fd472cef9789abcc2 02-Aug-2007 Dan Gohman <djg@cray.com> More explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40757 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
irtRegMap.h
b15e49597f031fdd41fdec2887a3c24c0ea430d8 02-Aug-2007 Chris Lattner <sabre@nondot.org> don't redefine a parameter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40748 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
bc1200c45389e2ec5a20f0f457b33d83ef10f961 02-Aug-2007 Chris Lattner <sabre@nondot.org> don't redefine a parameter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40748 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
33d5595d667ba4a880bd7fe785724e8197bef70c 02-Aug-2007 Evan Cheng <evan.cheng@apple.com> Do not emit copies for physical register output if it's not used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40722 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
0af04f7046e06eb43e7c979651f5d7529be79805 02-Aug-2007 Evan Cheng <evan.cheng@apple.com> Do not emit copies for physical register output if it's not used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40722 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
335f4f77882ace48bcdfb7a6019367bf9f4857cd 02-Aug-2007 Scott Michel <scottm@aero.org> Style police: Expand the tabs to spaces!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bc62b41039d4838a09a57e3b4b6eaed98020cf67 02-Aug-2007 Scott Michel <scottm@aero.org> Style police: Expand the tabs to spaces!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8409747efadda025aa3cce626b1a2c33429fd5e5 02-Aug-2007 Evan Cheng <evan.cheng@apple.com> Instead of adding copyfromreg's to handle physical definitions. Now isel can
simply specify them as results and let scheduledag handle them. That
is, instead of
SDOperand Flag = DAG.getTargetNode(Opc, MVT::i32, MVT::Flag, ...)
SDOperand Result = DAG.getCopyFromReg(Chain, X86::EAX, MVT::i32, Flag)

Just write:
SDOperand Result = DAG.getTargetNode(Opc, MVT::i32, MVT::i32, ...)

And let scheduledag emit the move from X86::EAX to a virtual register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40710 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
2663978e4ab3d1c8be986f66d359be0474e9ea5b 02-Aug-2007 Evan Cheng <evan.cheng@apple.com> Instead of adding copyfromreg's to handle physical definitions. Now isel can
simply specify them as results and let scheduledag handle them. That
is, instead of
SDOperand Flag = DAG.getTargetNode(Opc, MVT::i32, MVT::Flag, ...)
SDOperand Result = DAG.getCopyFromReg(Chain, X86::EAX, MVT::i32, Flag)

Just write:
SDOperand Result = DAG.getTargetNode(Opc, MVT::i32, MVT::i32, ...)

And let scheduledag emit the move from X86::EAX to a virtual register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40710 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
21b3bf06508e8a9af86276099e6845961c883a62 01-Aug-2007 Evan Cheng <evan.cheng@apple.com> Bugs: missing partial uses and redundant partial defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40688 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
e4ec619b25074a0460067644b844c84aecbcb207 01-Aug-2007 Evan Cheng <evan.cheng@apple.com> Bugs: missing partial uses and redundant partial defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40688 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
f3c13c82e34b8e90f1080cfe06c6f1328a2d44e1 01-Aug-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Expand unaligned loads/stores when the target doesn't support them. (PR1548)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40682 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
578434fda9905776efe2f3176daf5ca72efd1594 01-Aug-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Expand unaligned loads/stores when the target doesn't support them. (PR1548)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40682 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
52eec548206d0b135b55ba52dd0e82e978f15ae5 01-Aug-2007 David Greene <greened@obbligato.org> New CallInst interface to address GLIBCXX_DEBUG errors caused by
indexing an empty std::vector.

Updates to all clients.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40660 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
b1c4a7b210b9a8aa98fcffae8a84a0a20860ec7a 01-Aug-2007 David Greene <greened@obbligato.org> New CallInst interface to address GLIBCXX_DEBUG errors caused by
indexing an empty std::vector.

Updates to all clients.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40660 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
3b1f55ea2412e381e6bf2002066f6ef1f4e24c13 01-Aug-2007 Evan Cheng <evan.cheng@apple.com> simpleregistercoalescing -> regcoalescing. It's too long for me to handle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40654 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
6e9f623df05d40beff1f8b3743d2907802a1d097 01-Aug-2007 Evan Cheng <evan.cheng@apple.com> simpleregistercoalescing -> regcoalescing. It's too long for me to handle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40654 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
910b66d8d6fd8a27dcdea74431e3ea20c69b7db5 30-Jul-2007 Scott Michel <scottm@aero.org> - Allow custom lowering for CTPOP, CTTZ, CTLZ.
- Fixed an existing unexpanded tab.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
48b63e605d097245fa3f4fd7f1e386d21fdc37d6 30-Jul-2007 Scott Michel <scottm@aero.org> - Allow custom lowering for CTPOP, CTTZ, CTLZ.
- Fixed an existing unexpanded tab.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
be444ed6dbc2a6f36feab84b527a21aa0df9f808 30-Jul-2007 Dan Gohman <gohman@apple.com> Fix a bug in getCopyFromParts turned up in the testcase for PR1132.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40598 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
90cfc9d25c9ef0f48729fc5ec230b40b5ec17a6d 30-Jul-2007 Dan Gohman <djg@cray.com> Fix a bug in getCopyFromParts turned up in the testcase for PR1132.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40598 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
286d56935c671a7d3fbf109828768618b97c5673 30-Jul-2007 Dan Gohman <gohman@apple.com> Print a space between the comment character and the basic block name,
for prettiness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40593 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
0912cdad24812750a59d31f5e421fd359a5998e5 30-Jul-2007 Dan Gohman <djg@cray.com> Print a space between the comment character and the basic block name,
for prettiness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40593 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
36397f50343639ce9a25996f2d790c656791ab92 27-Jul-2007 Duncan Sands <baldrick@free.fr> Support for trampolines, except for X86 codegen which is
still under discussion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40549 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
38947cd9adc03b30ff6d50d97279421c63b6f2f2 27-Jul-2007 Duncan Sands <baldrick@free.fr> Support for trampolines, except for X86 codegen which is
still under discussion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40549 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
ada779fb11eb411536aa8219a176ca0ce4d58fd1 27-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Move subreg lowering pass to be right after regalloc, per feedback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40548 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ed37973fd1a1c3ec69d3d99dccbc594c9039b08b 27-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Move subreg lowering pass to be right after regalloc, per feedback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40548 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
559742c0eae0a7368eb5f67cde7a3599eaf82ade 26-Jul-2007 Dan Gohman <gohman@apple.com> Fix the alias analysis query in DAGCombiner to not add in two
offsets. The SrcValueOffset values are the real offsets from the
SrcValue base pointers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40534 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
45ee6d6dc54904f50e242cf9e32bee92f15a8f46 26-Jul-2007 Dan Gohman <djg@cray.com> Fix the alias analysis query in DAGCombiner to not add in two
offsets. The SrcValueOffset values are the real offsets from the
SrcValue base pointers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40534 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bab2474b64e81be0ed4fc35d16cdfac65f283361 26-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Add a MachineFunction pass, which runs post register allocation, that turns subreg insert/extract instruction into register copies. This ensures correct code gen if the coalescer isn't able to remove all subreg instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40521 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
owerSubregs.cpp
10a95baae33a8b37820bf3bb73046769daff6ee6 26-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Add a MachineFunction pass, which runs post register allocation, that turns subreg insert/extract instruction into register copies. This ensures correct code gen if the coalescer isn't able to remove all subreg instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40521 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
owerSubregs.cpp
e24f8f1ec9277dc80ebf38f0d914053f8c31caf1 26-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Teach DAG scheduling how to properly emit subreg insert/extract machine instructions. PR1350


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40520 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
e95328d8af0c38590c675b703ecab1b940903b76 26-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Teach DAG scheduling how to properly emit subreg insert/extract machine instructions. PR1350


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40520 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
557c3631d320c5731e55b6f818a1c7b2d4d97176 26-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Add selection DAG nodes for subreg insert/extract. PR1350


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40516 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
b768c2edff5a647884e01ba70f2a940053ba49c8 26-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Add selection DAG nodes for subreg insert/extract. PR1350


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40516 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
6f95014158208ad6cd6f6d1996c821fca61d7915 26-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Remove subreg index from MachineInstr's and also keep vregs as unsigned when adding operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40514 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
960a9fc5892b1f4b5e8f1bca84f742e66e2285a2 26-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Remove subreg index from MachineInstr's and also keep vregs as unsigned when adding operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40514 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
844228a631f47bb39f71f617063831fb83c3843b 26-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Fix infinite recursion for when extract_vector_elt is legal. Unfortunately no public targets use this code-path, so no test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40510 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cc021a04f97e93777f8323dd564f2976de285f14 26-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Fix infinite recursion for when extract_vector_elt is legal. Unfortunately no public targets use this code-path, so no test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40510 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
73a259a9d1814912255aee6c185c5aeb7bb581ba 26-Jul-2007 Evan Cheng <evan.cheng@apple.com> EmitAlignment() also emits optional fill value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40500 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
c1f41aa81b256cbcde0e266d5011825fd0832350 26-Jul-2007 Evan Cheng <evan.cheng@apple.com> EmitAlignment() also emits optional fill value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40500 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
59db3ec9353ec5d122e08c5d56eae1310ca137a1 25-Jul-2007 Anton Korobeynikov <asl@math.spbu.ru> Minor cleanup:
- Split EH and debug infiormation
- Make DwarfWriter more verbose in some cases


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40481 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
c6449f1e1fb40372dae12cae4ca8284ae5b8d8fb 25-Jul-2007 Anton Korobeynikov <asl@math.spbu.ru> Minor cleanup:
- Split EH and debug infiormation
- Make DwarfWriter more verbose in some cases


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40481 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
dc9b3d0bb5ed3a3f59cad61e264f0ec43c946459 25-Jul-2007 Dan Gohman <gohman@apple.com> Add const to CanBeFoldedBy, CheckAndMask, and CheckOrMask.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40480 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d609827e167ad05b2a312bad23136fd67b09f7f7 25-Jul-2007 Dan Gohman <djg@cray.com> Add const to CanBeFoldedBy, CheckAndMask, and CheckOrMask.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40480 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
275769a77acd8f0dadbf9ca03384b31c9f1c3e01 23-Jul-2007 Dan Gohman <gohman@apple.com> Fix some uses of dyn_cast to be uses of cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40443 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
electionDAG/SelectionDAG.cpp
53491e97731df5cbdd571484a43a1637c78073a4 23-Jul-2007 Dan Gohman <djg@cray.com> Fix some uses of dyn_cast to be uses of cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40443 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
electionDAG/SelectionDAG.cpp
c674a924d4ed62e857bf788d7e0c76c89239b903 21-Jul-2007 Dan Gohman <gohman@apple.com> Don't assume that only Uses can be kills. Defs are marked as kills initially
when there are no uses. This fixes a dangling-pointer bug, where pointers to
deleted instructions were not removed from kills lists. More info here:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2007-July/009749.html


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40131 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
impleRegisterCoalescing.cpp
2c6a6420d071315104cf3858ce5409b0a45e974b 21-Jul-2007 Dan Gohman <djg@cray.com> Don't assume that only Uses can be kills. Defs are marked as kills initially
when there are no uses. This fixes a dangling-pointer bug, where pointers to
deleted instructions were not removed from kills lists. More info here:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2007-July/009749.html


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40131 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
impleRegisterCoalescing.cpp
8bd6035750f1b290832a3b1c90766d9b45ed8d6b 20-Jul-2007 Evan Cheng <evan.cheng@apple.com> Added -print-emitted-asm to print out JIT generated asm to cerr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40123 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
775472112da257a6558fb583d71aa850860dd8a1 20-Jul-2007 Evan Cheng <evan.cheng@apple.com> Added -print-emitted-asm to print out JIT generated asm to cerr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40123 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
70d0bd16243e1e8b59e2689760cb2e5c1e521290 19-Jul-2007 Duncan Sands <baldrick@free.fr> As pointed out by g++-4.2, the original code didn't do
what it thought it was doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40044 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f9a4497ff16f0b12f6160830889a3d6e98717516 19-Jul-2007 Duncan Sands <baldrick@free.fr> As pointed out by g++-4.2, the original code didn't do
what it thought it was doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40044 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
273288c888027c64a0c0ba25a58fbf1f871b5311 19-Jul-2007 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40022 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
60cc087089be0fa39183f9f4737cadb84a6ed007 19-Jul-2007 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40022 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
48613b930a34d6f98e7d3dd86aa49cc3dbd61c85 18-Jul-2007 Dan Gohman <gohman@apple.com> It's not necessary to do rounding for alloca operations when the requested
alignment is equal to the stack alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40004 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cc 18-Jul-2007 Dan Gohman <djg@cray.com> It's not necessary to do rounding for alloca operations when the requested
alignment is equal to the stack alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40004 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
warfWriter.cpp
LFWriter.cpp
LFWriter.h
fConversion.cpp
ntrinsicLowering.cpp
LVMTargetMachine.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achOWriter.cpp
achOWriter.h
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
achineModuleInfo.cpp
achinePassRegistry.cpp
akefile
HIElimination.cpp
asses.cpp
hysRegTracker.h
ostRASchedulerList.cpp
rologEpilogInserter.cpp
EADME.txt
egAllocBigBlock.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
egisterScavenging.cpp
electionDAG/CallingConvLower.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/Makefile
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
impleRegisterCoalescing.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
irtRegMap.h
f99002c14303fe3f58f854bb77f9bcfbe7656b64 17-Jul-2007 Evan Cheng <evan.cheng@apple.com> Dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39979 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
07a96765daedf180a7102d39fe56c499878312b7 16-Jul-2007 Dan Gohman <gohman@apple.com> Fix comments about vectors to use the current wording.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39921 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
6d4b711e7f2e27d94d3c49dc9e7575dbe0f242e0 14-Jul-2007 Nick Lewycky <nicholas@mxc.ca> Fix the build. Patch from Holger Schurig.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39856 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2365f51ed03afe6993bae962fdc2e5a956a64cd5 14-Jul-2007 Anton Korobeynikov <asl@math.spbu.ru> Long live the exception handling!

This patch fills the last necessary bits to enable exceptions
handling in LLVM. Currently only on x86-32/linux.

In fact, this patch adds necessary intrinsics (and their lowering) which
represent really weird target-specific gcc builtins used inside unwinder.

After corresponding llvm-gcc patch will land (easy) exceptions should be
more or less workable. However, exceptions handling support should not be
thought as 'finished': I expect many small and not so small glitches
everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39855 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
rologEpilogInserter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
a346615d11f0a560c6e7280c1e614301d9f93051 13-Jul-2007 Dan Gohman <gohman@apple.com> Fix the comment for LegalizeOp to more accurately reflect what it does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39827 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
05d92fe7c4310340335512a3a7de97d3cf07d68d 13-Jul-2007 Dan Gohman <gohman@apple.com> Don't call SimplifyVBinOp for non-vector operations, following earlier review
feedback. This theoretically makes the common (scalar) case more efficient.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39823 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
72f159640382a16e036b63dcb9c0b427e6d5dc0a 13-Jul-2007 Dale Johannesen <dalej@apple.com> Modify previous patch per review comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39817 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ostRASchedulerList.cpp
e7e7d0d7e39d0c7c659d26b97e8081fce0fcd749 13-Jul-2007 Dale Johannesen <dalej@apple.com> Skeleton of post-RA scheduler; doesn't do anything yet.
Change name of -sched option and DEBUG_TYPE to
pre-RA-sched; adjust testcases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39816 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
ostRASchedulerList.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAGISel.cpp
bb821dd79bf13c5137760c8fe0fa721912c4276d 12-Jul-2007 Duncan Sands <baldrick@free.fr> The type ids making up a filter are unsigned, and
should be output as unsigned values. Checked against
gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39775 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
28bb462d4cfb8c849a0d9a1b1f3c643b77b8efc6 11-Jul-2007 Evan Cheng <evan.cheng@apple.com> Missed a couple of places where new instructions are added due to spill / restore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39748 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
c3751600b7a5dee550c5e50cb83065630759467f 11-Jul-2007 Duncan Sands <baldrick@free.fr> Exception handling has been implemented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39732 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
97b4ac8c844e08ce1c4f4a73b85ba56775a2a6c5 11-Jul-2007 Duncan Sands <baldrick@free.fr> If assertions are not enabled, we should return False here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38535 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
b9591c667d956d0607f7388665649fb0852a988c 11-Jul-2007 Evan Cheng <evan.cheng@apple.com> No longer need to track last def / use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38534 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
0c40d72b014e8c0f54552d38288a29182effba58 11-Jul-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1545: Revamp code that update kill information due to register reuse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38525 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
67fcdf7f6579fcc070f019096cedf80d5a834554 11-Jul-2007 David Greene <greened@obbligato.org> Make this work with GLIBCXX_DEBUG.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38516 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
743d3a754820e64eb779335a2cb2688fd0dd58d5 10-Jul-2007 Dan Gohman <gohman@apple.com> Change the peep for EXTRACT_VECTOR_ELT of BUILD_PAIR to look for
the new CONCAT_VECTORS node type instead, as that's what legalize
uses now. And add a peep for EXTRACT_VECTOR_ELT of INSERT_VECTOR_ELT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38503 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5e2456c95996338ad7ed461b8ce4d21cb9d70a0b 10-Jul-2007 Evan Cheng <evan.cheng@apple.com> If the operand is marked M_OPTIONAL_DEF_OPERAND, then it's a def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38496 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
11ce02dbddf4b6629b8537f89d742c98c3c2bce2 10-Jul-2007 Evan Cheng <evan.cheng@apple.com> Somehow this wasn't committed last time. M_CLOBBERS_PRED is gone.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38495 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
70fb1aefd58eb78404a2bc86b6960b7b64574082 10-Jul-2007 Dan Gohman <gohman@apple.com> Fix a bug in the folding of binary operators to undef.
Thanks to Lauro for spotting this!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38491 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d595b5f1f051d79764ac8469f02efaae398f115c 10-Jul-2007 Dan Gohman <gohman@apple.com> Fix the folding of undef in several binary operators to recognize
undef in either the left or right operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38489 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
af825c840ebc4ca5248c62325b2371091c9fb4b4 10-Jul-2007 Evan Cheng <evan.cheng@apple.com> When a node value is only used by a CopyToReg, use the user's dest. This should not be restricted to nodes that produce only a single value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38485 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGSimple.cpp
c63d391c9a886d58c6a53a7f565fbd544b076d9f 10-Jul-2007 Evan Cheng <evan.cheng@apple.com> Move DenseMapKeyInfo<SDOperand> from LegalizeDAG.cpp to SelectionDAGNodes.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d6fd1bc122ba791c698255d8be158b8ec424e248 10-Jul-2007 Dan Gohman <gohman@apple.com> Preserve volatililty and alignment information when lowering or
simplifying loads and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38473 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
532dc2e1f2473b16b48566c1cbc9eefe94a4e58e 09-Jul-2007 Dan Gohman <gohman@apple.com> Change getCopyToParts and getCopyFromParts to always use target-endian
register ordering, for both physical and virtual registers. Update the PPC
target lowering for calls to expect registers for the call result to
already be in target order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38471 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
93f81e2822aa67337f629398c81bc2844ef9400a 09-Jul-2007 Dan Gohman <gohman@apple.com> Initialize the IndexedModeActions array with memset before
updating it with calls to setIndexedLoadAction/setIndexedStoreAction,
which only update a few bits at a time. This avoids ostensible
undefined behavior of operationg on values which may be
trap-representations, and as a practical matter fixes errors from
valgrind, which doesn't track uninitialized memory with bit
granularity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38468 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e094f54f4cb6cb899252b66d328aa167013c982d 09-Jul-2007 Chris Lattner <sabre@nondot.org> Fix this warning:

DAGCombiner.cpp: In member function 'llvm::SDOperand<unnamed>::DAGCombiner::visitOR(llvm::SDNode*)':
DAGCombiner.cpp:1608: warning: passing negative value '-0x00000000000000001' for argument 1 to 'llvm::SDOperand llvm::SelectionDAG::getConstant(uint64_t, llvm::MVT::ValueType, bool)'

oiy.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38458 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e510b3af3a76cd557bb958293f859e4861060fc2 09-Jul-2007 Gabor Greif <ggreif@gmail.com> fix typos

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38453 91177308-0d34-0410-b5e6-96231b3b80d8
impleRegisterCoalescing.cpp
d2c5eb864fc80665ca57038793f2f4a296a87eb3 07-Jul-2007 Evan Cheng <evan.cheng@apple.com> Teach if-conversion about instructions that were already predicated, e.g. conditional move.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37964 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
f664e41b201bad27ed3661bf50cd71f54242c114 06-Jul-2007 Duncan Sands <baldrick@free.fr> The exception handling intrinsics return values,
so must be lowered to a value, not nothing at all.
Subtle point: I made eh_selector return 0 and
eh_typeid_for return 1. This means that only
cleanups (destructors) will be run as the exception
unwinds [if eh_typeid_for returned 0 then it would
be as if the first catch always matched, and the
corresponding handler would be run], which is
probably want you want in the CBE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37947 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
fccf0a2b25da833b115648e1dc10119444a924d5 06-Jul-2007 Duncan Sands <baldrick@free.fr> Indexes into the list of filter ids cannot be output
directly: they need to be turned into byte offsets
(often the same, but may not be if there are many
type infos).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37942 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
1aa7efbd2c98e761f50992197473304b99257ca9 06-Jul-2007 Rafael Espindola <rafael.espindola@gmail.com> Add the byval attribute


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37940 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
902919541fc2eb0e914390d9696088cfec3733df 06-Jul-2007 Duncan Sands <baldrick@free.fr> Remove propagateEHRegister in favour of a more limited
fix, that is adequate while PR1508 remains unresolved.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37938 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b4fd45e2fc4973214227fbaa96975d9fcc19ba42 06-Jul-2007 Duncan Sands <baldrick@free.fr> Remove ExtractGlobalVariable - use StripPointerCasts
instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37937 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
86da6600aec9b8f1c3fbae157414bf1648eb639c 06-Jul-2007 Evan Cheng <evan.cheng@apple.com> Workaround of getCopyToRegs and getCopyFromRegs bugs for big-endian machines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37935 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
991262834d688c02e279017335dac34579848b99 06-Jul-2007 Evan Cheng <evan.cheng@apple.com> Change CalculateHeights and CalculateDepths to be non-recursive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
50b153335d2943a95acf37d7ee84095f8e8af53c 05-Jul-2007 Dan Gohman <gohman@apple.com> Make the debug string for ISD::MERGE_VALUES consistent with the others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6183f78cf8c6f56cc436f19120acf2a7856cb9db 05-Jul-2007 Dan Gohman <gohman@apple.com> Add a parameter to getCopyToParts and getCopyFromParts to specify whether
endian swapping should be done, and update the code to use it. This fixes
some register ordering issues on big-endian systems, such as PowerPC,
introduced by the recent illegal by-val arguments changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37921 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a99be51bf5cdac1438069d4b01766c47704961c8 05-Jul-2007 Gabor Greif <ggreif@gmail.com> Here is the bulk of the sanitizing.
Almost all occurrences of "bytecode" in the sources have been eliminated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37913 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.h
14da32a486f31ba695de9080830e6fadf4942d5b 05-Jul-2007 Duncan Sands <baldrick@free.fr> Make sure only one copy of a filter is placed in the
exception handling table if we encounter it multiple
times. Filters could be folded harder than this, but
that would mean a lot more work for not much gain.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37908 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
5db322acefc3089c133b8f3a33fa0a3ce90e2001 05-Jul-2007 Evan Cheng <evan.cheng@apple.com> Better assertion messages.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37890 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
cf26d7ccac1ad052b750edec36b13bc9ea8f70d7 04-Jul-2007 Duncan Sands <baldrick@free.fr> Extend eh.selector to support both catches and filters.
Drop the eh.filter intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37875 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
613e0d8008b97550ca08c3e816d74c2af2c4fe29 03-Jul-2007 Dan Gohman <gohman@apple.com> Fix several over-aggressive folds for undef nodes in dagcombine, to
follow the rules for undef used in instcombine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37851 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
849f214a4e3676e41168b0c5398165c4d4fb99f8 03-Jul-2007 Dale Johannesen <dalej@apple.com> Fix for PR 1505 (and 1489). Rewrite X87 register
model to include f32 variants. Some factoring
improvments forthcoming.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37847 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
27a70be55f8b63181598d144d034b396402be66e 02-Jul-2007 Dan Gohman <gohman@apple.com> Replace ExpandScalarFormalArgs and ExpandScalarCallArgs with the newly
refactored getCopyFromParts and getCopyToParts, which are more general.
This effectively adds support for lowering illegal by-val vector call
arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
23ff1826b9c848c0627747f3de976b6c99c94b4b 02-Jul-2007 Dan Gohman <gohman@apple.com> Teach GetNegatedExpression to negate 0-B to B in UnsafeFPMath mode, and
visitFSUB to fold 0-B to -B in UnsafeFPMath mode. Also change visitFNEG
to use isNegatibleForFree/GetNegatedExpression instead of doing a subset
of the same thing manually.

This fixes test/CodeGen/X86/negative-sin.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37842 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c45453fa1db7a5c520208fb6ffbc9fdb823b0526 29-Jun-2007 Evan Cheng <evan.cheng@apple.com> Only do FNEG xform when the vector type is a floating point type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37818 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
821262953af418649e49e52009f9d3ddae5736c2 29-Jun-2007 David Greene <greened@obbligato.org> Remove unused variables.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37816 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
c908dcde45c6d7ddff0443cbc174a7cbfec21d1b 29-Jun-2007 Evan Cheng <evan.cheng@apple.com> Fix a vector FP constant CSE bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37814 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a2a488594df335efa17bc253436465c2ae984f91 29-Jun-2007 David Greene <greened@obbligato.org> Remove unnecessary attributions in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37799 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
cfacc8f5d25f38112eee836530004f7816439765 29-Jun-2007 David Greene <greened@obbligato.org> Fix reference to cached end iterator invalidated by an erase operation.
Uncovered by _GLIBCXX_DEBUG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37795 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a4ab2e8c726e1702d74eb207536bf953bd3d5c81 29-Jun-2007 David Greene <greened@obbligato.org> Remove the "special tie breaker" because it resulted in inconsistent
ordering and thus violated the strict weak ordering requirement of
priority_queue. Uncovered by _GLIBCXX_DEBUG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37794 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
8a46d342d8cbca7c9c7be6c66007d41329babad0 29-Jun-2007 David Greene <greened@obbligato.org> Fix misue of iterator pointing to erased object. Uncovered by
_GLIBCXX_DEBUG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37793 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineBasicBlock.cpp
10a7aa6dea8d862feda05098d82a7630c80c30d8 29-Jun-2007 Dan Gohman <gohman@apple.com> Fix an assertion failure in legalizing bitcast operators on targets where
vectors are split down to single elements as part of legalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37785 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b6f5b00c3bad3415d3f2ee1a6d5ee5a6f66a4540 29-Jun-2007 Dan Gohman <gohman@apple.com> Add new TargetLowering code to provide the final register type that an
illegal value type will be transformed to, for code that needs the
register type after all transformations instead of just after the first
transformation.

Factor out the code that uses this information to do copy-from-regs and
copy-to-regs for various purposes into separate functions so that they
are done consistently.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37781 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
292da949f6c87d6499425d64d37d7c5870ec57ad 27-Jun-2007 Evan Cheng <evan.cheng@apple.com> If a livein is not used in the block. It's live through.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37764 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e47c333a12094296e54571ed1ac511a04d74840d 27-Jun-2007 Evan Cheng <evan.cheng@apple.com> Partial fix for PR1502: If a EH register is needed in a successor of landing pad, add it as livein to all the blocks in the paths between the landing pad and the specified block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37763 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6595cb3000d7f5f8e9a76d556aa8609db91b7887 27-Jun-2007 Dan Gohman <gohman@apple.com> Rename ("shrinkify") MVT::isExtendedValueType to MVT::isExtendedVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37758 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
8c8c5fcbd757b5c44fa7ad9af038a2f2d950b624 27-Jun-2007 Dan Gohman <gohman@apple.com> Use getVectorTypeBreakdown in FunctionLoweringInfo::CreateRegForValue
to compute the number and type of registers needed for vector values
instead of computing it manually. This fixes PR1529.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37755 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
89b20c07e9f9539b141c5251ac67cc38afa637d5 27-Jun-2007 Dan Gohman <gohman@apple.com> Make the comment for ScalarizeVectorOp mention that it is only for use
with single-element vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37752 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
df82c93f2a37f9f52c8210eef9404b4a265a415f 27-Jun-2007 Duraid Madina <duraid@octopus.com.au> ok, this is something of a dirty hack, but it seems to work. (fixes e.g.
the SPASS miscompilation)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37750 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
b2efabd5716dbeccf9ffc0632e76aa378302e2a2 27-Jun-2007 Duraid Madina <duraid@octopus.com.au> ok, this much doesn't seem to bork anything


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37749 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
4e378c6504958edb0f1a2f979248b2b09755066a 27-Jun-2007 Duraid Madina <duraid@octopus.com.au> revert evan's fixes (and my doofusness) since they had a huge code
quality hit. will look at this soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37748 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
669f7382be6a45d619873dcc46094c7b23fe89f3 27-Jun-2007 Duraid Madina <duraid@octopus.com.au> pull evan's fixes - should help the nightly tester (but there are still
some issues)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37747 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
041040717db7dafe31155615fcb43d214ac88aa4 27-Jun-2007 Evan Cheng <evan.cheng@apple.com> Replace std::set with SmallPtrSet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37746 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
75611fb4e6ab253be30ac29a2b15e9bf8c1d146e 27-Jun-2007 Evan Cheng <evan.cheng@apple.com> Fix an obvious bug. Old code only worked for the entry block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37743 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7ac19afbb14dcaabad98a428541b61391a62626e 26-Jun-2007 Evan Cheng <evan.cheng@apple.com> Correctly handle implcit def / use operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37740 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
4efe74129f7483bc8c48d68f095d632b974c353d 26-Jun-2007 Evan Cheng <evan.cheng@apple.com> Properly handle kills of a physical register which has sub-registers that are read by later instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37739 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
837a600a90f77e010b2f7866fc7c3ba993fc9694 26-Jun-2007 Duraid Madina <duraid@octopus.com.au> tidy this file up a bit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37725 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
2e0930cf37a528a8c1d3911940287084dfccbc70 26-Jun-2007 Duraid Madina <duraid@octopus.com.au> A bunch of fixes to the BigBlock allocator improve compile-time by ~20%
and code quality by ~2% on my tests.

A big thank you to Roman Levenstein for this patch! See
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070618/050717.html
for more details.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37724 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
7f32156bb9c017b71971c52fac892fa7b9b06dd2 25-Jun-2007 Dan Gohman <gohman@apple.com> Generalize MVT::ValueType and associated functions to be able to represent
extended vector types. Remove the special SDNode opcodes used for pre-legalize
vector operations, and the special MVT::Vector type used with them. Adjust
lowering and legalize to work with the normal SDNode kinds instead, and to
use the normal MVT functions to work with vector types instead of using the
two special operands that the pre-legalize nodes held.

This allows pre-legalize and post-legalize DAGs, and the code that operates
on them, to be more consistent. Pre-legalize vector operators can be handled
more consistently with scalar operators. And, -view-dag-combine1-dags and
-view-legalize-dags now look prettier for vector code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37719 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
ea859be53ca13a1547c4675549946b74dc3c6f41 22-Jun-2007 Dan Gohman <gohman@apple.com> Move ComputeMaskedBits, MaskedValueIsZero, and ComputeNumSignBits from
TargetLowering to SelectionDAG so that they have more convenient
access to the current DAG, in preparation for the ValueType routines
being changed from standalone functions to members of SelectionDAG for
the pre-legalize vector type changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37704 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
a8c768293966822840199b496a9b020b6b460e8d 22-Jun-2007 Duraid Madina <duraid@octopus.com.au> check in the BigBlock local register allocator


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37703 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocBigBlock.cpp
0b2ce1fc19c5f8742051cf022ac119a3d4d9a3ad 22-Jun-2007 Evan Cheng <evan.cheng@apple.com> std::set is really really terrible. Switch to SmallPtrSet to reduce compile time. For Duraid's example. The overall isel time is reduced from 0.6255 sec to 0.1876 sec.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
2d74a318deed2b7957250cdcc04dc8e01924258b 21-Jun-2007 Dan Gohman <gohman@apple.com> Tidy up ValueType names in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37688 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
b9f10196961ebe5b5573a5705048a5a8a6b56bb3 21-Jun-2007 Dan Gohman <gohman@apple.com> Rename TargetLowering::getNumElements and friends to
TargetLowering::getNumRegisters and similar, to avoid confusion with
the actual number of elements for vector types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37687 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
b13cdbd8658635e33fc7c5b84dd3f8a053cd907d 21-Jun-2007 Evan Cheng <evan.cheng@apple.com> Xforms:
(add (select cc, 0, c), x) -> (select cc, x, (add, x, c))
(sub x, (select cc, 0, c)) -> (select cc, x, (sub, x, c))


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37685 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9ffd340daf00fb6e2bbfe6dafd5b7130070b1578 19-Jun-2007 Evan Cheng <evan.cheng@apple.com> Avoid if-converting simple block that ends with unconditional branch or fallthrough unless it branches / falls to the 'false' block. Not profitable, may end up increasing code size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37660 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
b5bec2b6f6f4a4da96170d1c258ad424112ad2c5 19-Jun-2007 Dan Gohman <gohman@apple.com> Pass a SelectionDAG into SDNode::dump everywhere it's used, in prepration
for needing the DAG node to print pre-legalize extended value types, and
to get better debug messages with target-specific nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37656 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
85ef2546303fabe32de3f2519a978fa2a7fd5958 19-Jun-2007 Chris Lattner <sabre@nondot.org> document and hide two options.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37651 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
82a87a01723c095176c6940bcc63d3a7c8007b4b 19-Jun-2007 Dan Gohman <gohman@apple.com> Replace M_REMATERIALIZIBLE and the newly-added isOtherReMaterializableLoad
with a general target hook to identify rematerializable instructions. Some
instructions are only rematerializable with specific operands, such as loads
from constant pools, while others are always rematerializable. This hook
allows both to be identified as being rematerializable with the same
mechanism.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37644 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
eaa91b0a1fc68984aae51f3c4b0cf29b38f89dac 19-Jun-2007 Evan Cheng <evan.cheng@apple.com> Replace TargetInstrInfo::CanBeDuplicated() with a M_NOT_DUPLICABLE bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37643 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
aeeccfc5b240d6ac87e507188f152bb0278b6472 19-Jun-2007 Chris Lattner <sabre@nondot.org> add isVarArg to CCState


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37640 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
c4047a8e96408a6149c2b64c953774fa578769fd 19-Jun-2007 Evan Cheng <evan.cheng@apple.com> Fix some fragile code wrt CFG edge updating.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37634 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
2bdb7d0cc88881857073b36f4a09ebe2f2008c24 19-Jun-2007 Evan Cheng <evan.cheng@apple.com> Move CorrectExtraCFGEdges() from BranchFolding.cpp to a MachineBasicBlock method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37633 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineBasicBlock.cpp
e10e6f7a36f6f60d1889465a4df51ac8cdb34365 18-Jun-2007 Chris Lattner <sabre@nondot.org> make ComputeTopDownOrdering significantly faster and use less stack space
by making it non-recursive


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37629 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7a0a4fc9127039cc7c55d74994fe7790ac30de43 18-Jun-2007 Dan Gohman <gohman@apple.com> Make chain dependencies blue, in addition to being dashed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37626 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
a1a878791b305880c976038b8fcd2697b7799ec1 18-Jun-2007 Evan Cheng <evan.cheng@apple.com> Properly remove duplicate instructions as result of diamond if-conversion. Other bug fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37623 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
e882fca902ba6b1a9e0c361c5781084f79eb6216 16-Jun-2007 Evan Cheng <evan.cheng@apple.com> Really turn if-converter loose:
1. Consider all possible ifcvt cases at once. No longer restricted to bottom
up iterative approach.
2. Sort all possible cases based on a cost function. Perform the most profitable
ones first invalidate others that target the same blocks.
3. Fixed a number of bugs related to block duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37613 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
24e5aada7d112447c41c12008f7daf1fc15a24bc 16-Jun-2007 Tanya Lattner <tonic@nondot.org> Codegen support (stripped out) for the annotate attribute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37608 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
a2acf840a70c273a03ffb5752221350b4949fc0e 15-Jun-2007 Evan Cheng <evan.cheng@apple.com> Not every predicable block can be safely duplicated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37607 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
c2c28fc24cc0c7886da93939b0279d3f444b35dc 15-Jun-2007 Chris Lattner <sabre@nondot.org> Fix CodeGen/X86/inline-asm-x-scalar.ll:test4, by retaining regclass info
for tied register constraints.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37601 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
bf9d02eaf6378c3d35d6202ad803b0374132fc61 15-Jun-2007 Evan Cheng <evan.cheng@apple.com> MachineInstr::isPredicable() is no longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37599 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
achineInstr.cpp
f40708223e409a152834b1553c6883ff2035b957 15-Jun-2007 Duncan Sands <baldrick@free.fr> Workaround for PR1508.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37597 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
93335459802fbbe61d5ca52831a636989b838094 15-Jun-2007 Evan Cheng <evan.cheng@apple.com> Extra edges are deleted later if needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37593 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
2c8c3a4a0df00eee39c28d827d43a1d5462b0671 15-Jun-2007 Evan Cheng <evan.cheng@apple.com> Allow small blocks to be duplicated to enable if-conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37590 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
bc198eeba6d6850639c9ed6449b01aec95d7d205 15-Jun-2007 Evan Cheng <evan.cheng@apple.com> No really, clear predcessors states.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37581 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
e37e24331c6fb3e83d5fb0c9ce31be619359a52a 15-Jun-2007 Evan Cheng <evan.cheng@apple.com> If BB is predicated, invalidate its predecessor(s) which would if-convert it. It needs to be re-analyzed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37580 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
51eaa86758338d5935c0eff0469c418b1256aba7 15-Jun-2007 Dan Gohman <gohman@apple.com> Rename MVT::getVectorBaseType to MVT::getVectorElementType.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37579 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
b7c908bb81fe4336f60c03802dade7c24a02e619 14-Jun-2007 Evan Cheng <evan.cheng@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37577 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
c101e95cb6aae1fd6a0727ba4b518a7894ae3089 14-Jun-2007 Dan Gohman <gohman@apple.com> Add a target hook to allow loads from constant pools to be rematerialized, and an
implementation for x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37576 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
86ff296e63cd9d4c28a7b73d3d6ec05e4011a0e5 14-Jun-2007 Evan Cheng <evan.cheng@apple.com> Fix some stupid bugs that have effectively disabled if-conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37575 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
ea632439d4259254670dc4a27b13d6f9370216a8 13-Jun-2007 Duncan Sands <baldrick@free.fr> Only correctly lower exception handing intrinsics if exception handling is
turned on. Likewise for scanning of invokes to mark landing pads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37570 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6595635175764f402e7a5e53216c8d46bdce8c28 13-Jun-2007 Dan Gohman <gohman@apple.com> Introduce new SelectionDAG node opcodes VEXTRACT_SUBVECTOR and
VCONCAT_VECTORS. Use these for CopyToReg and CopyFromReg legalizing in
the case that the full register is to be split into subvectors instead
of scalars. This replaces uses of VBIT_CONVERT to present values as
vector-of-vector types in order to make whole subvectors accessible via
BUILD_VECTOR and EXTRACT_VECTOR_ELT.

This is in preparation for adding extended ValueType values, where
having vector-of-vector types is undesirable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37569 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
2046e12f022ad098fe84776d55f4ea1a5e342c85 13-Jun-2007 Dan Gohman <gohman@apple.com> When creating CopyFromReg nodes, always use legal types. And use the
correct types for the result vector, even though it is currently bitcasted
to a different type immediately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37568 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f19f6bb31e45c5fc34b17d89d80ed938f61ff047 13-Jun-2007 Duncan Sands <baldrick@free.fr> The fix that was applied for PR1224 stops the compiler
crashing but breaks exception handling. The problem
described in PR1224 is that invoke is a terminator that
can produce a value. The value may be needed in other
blocks. The code that writes to registers values needed
in other blocks runs before terminators are lowered (in
this case invoke) so asserted because the value was not
yet available. The fix that was applied was to do invoke
lowering earlier, before writing values to registers.

The problem this causes is that the code to copy values
to registers can be output after the invoke call. If
an exception is raised and control is passed to the
landing pad then this copy-code will never execute. If
the value is needed in some code path reached via the
landing pad then that code will get something bogus.

So revert the original fix and simply skip invoke values
in the general copying to registers code. Instead copy
the invoke value to a register in the invoke lowering code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37567 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
93a8e5ea0ccb6fab5cd1a155e62ae73e7dca7d47 13-Jun-2007 Evan Cheng <evan.cheng@apple.com> Typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37566 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
cc8fb46cdc47cac1d4b3b92ffcca75f3216a8698 13-Jun-2007 Evan Cheng <evan.cheng@apple.com> Now if-converting all 4 variants of triangles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37565 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
976e2da081519d3438da6bf8e5ae7b25cc3433e4 12-Jun-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix a typo in bswap lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37544 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
9618bcaf7d3e6fd4a26fab47efb0bd2409b69e0f 12-Jun-2007 Evan Cheng <evan.cheng@apple.com> Restructure code to reduce ifcvt compile time cost.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37543 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
a9bf49c7e321b789088779a608f3aa9287343982 10-Jun-2007 Reid Spencer <rspencer@reidspencer.com> Fix the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37537 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
1c9f91d7b2653dc730a80f49ac3b6e2b9d6ca236 09-Jun-2007 Evan Cheng <evan.cheng@apple.com> Don't change CFG during analysis stage. Do so during ifcvt and invalidate predecessors accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37531 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
7e75ba802e4e5df9fe8f0d38a85e05adc05ea7f3 09-Jun-2007 Evan Cheng <evan.cheng@apple.com> Carefully remove extraneous CFG edges after each ifcvt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37529 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
2acdbcccd8043d3a91430fdfcef6ba0760c1cc05 08-Jun-2007 Evan Cheng <evan.cheng@apple.com> Correct transfer predicate information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37524 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
edf4896a1461fe43081aab3ab7dda16f9dac8590 08-Jun-2007 Evan Cheng <evan.cheng@apple.com> Hidden options to help debugging ifcvt issues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37523 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
2513330de8f8020d15d5bc96640a0957b7c733b9 08-Jun-2007 David Greene <greened@obbligato.org> Factor live variable analysis so it does not do register coalescing
simultaneously. Move that pass to SimpleRegisterCoalescing.

This makes it easier to implement alternative register allocation and
coalescing strategies while maintaining reuse of the existing live
interval analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37520 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
impleRegisterCoalescing.cpp
ac5f142b9f80797a294b42ef65d5c4bfbdc168da 08-Jun-2007 Evan Cheng <evan.cheng@apple.com> Allow more cmp / bcc to be predicated; clean up triangle ifcvt checking code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37518 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
6cc7608213cc69ddeb0a25df360bbbe13a5c069d 08-Jun-2007 Duncan Sands <baldrick@free.fr> Use more realistically sized vectors. Reserve capacity if we know in advance
how much will be used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37515 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
1a90a5aebe3488dc3feaab60ba16bed1659ba27b 08-Jun-2007 Dale Johannesen <dalej@apple.com> Make throttle a hidden parameter, per review.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37511 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
53af4c01a87b8a60bce2cc19e5249aaed52d6523 08-Jun-2007 Dale Johannesen <dalej@apple.com> Throttle tail merging; handling blocks with large numbers of predecessors
is too slow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37509 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
27af5c414b44315676b4625dc22e29a507ca9dca 08-Jun-2007 Evan Cheng <evan.cheng@apple.com> Only remove the edge from entry to false if false block is merged.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37503 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
62000eee7de696cad5e3a307de395c77a61350ee 07-Jun-2007 Dale Johannesen <dalej@apple.com> Do not change the size of function arguments. PR 1489.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37496 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f476961ae6839496b715339cc9c2e28d5c1afbf5 07-Jun-2007 Evan Cheng <evan.cheng@apple.com> ifcvt a triangle: don't merge ifcvt block with rejoin block if it can fall through to it. If merged, the resulting block is not a candidate for iterative ifcvting since it contains both predicated and non-predicated code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37487 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
d4de6d91b2fd855ff533661dc29c6a879aaa6456 07-Jun-2007 Evan Cheng <evan.cheng@apple.com> Lots of bug fixes. Now finally in a reasonable state.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37485 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
96dd9a8b1b969ece5504559ec240930bcb1dddd9 06-Jun-2007 Owen Anderson <resistor@mac.com> Quick patch to fix the build, based on what it appears Evan meant to write.

Evan, please check that this is in fact correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37471 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
b32edb4b2289e7e7bf842e41a9ff169925956c87 06-Jun-2007 Duncan Sands <baldrick@free.fr> Fold the exception actions table harder: if two typeid lists start the
same, only output one copy of the common part.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37470 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
7a655479ae56f8b71ea266f3fde3f25a7bc7e8d4 06-Jun-2007 Evan Cheng <evan.cheng@apple.com> Lots of bug fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37467 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
9fac0b5ff24e733072bdde68c7f34590c1892922 06-Jun-2007 Duncan Sands <baldrick@free.fr> Additional fix for PR1422: make sure the landing pad label is placed in the
correct machine basic block - do not rely on the eh.exception intrinsic
being in the landing pad: the loop optimizers can move it out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37463 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3d6f60ec19e8c29d2b06eadb992c3b8380d60585 06-Jun-2007 Evan Cheng <evan.cheng@apple.com> If a unconditional branch is added to branch to the false path during ifcvt, the predicated block cannot be iteratively ifcvted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37456 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
cb78d67a1a4e3b17d5801099940901740c67f526 06-Jun-2007 Evan Cheng <evan.cheng@apple.com> Minor statistics counting bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37451 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
e705213b679fdfc27b74b12adf7f40c94b97f9b9 06-Jun-2007 Evan Cheng <evan.cheng@apple.com> Fix a couple of typos and be smarter about order of blocks when ifcvt a diamond.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37449 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
993fc9594eca60ef5294b4c90cb2e36dd2503163 06-Jun-2007 Evan Cheng <evan.cheng@apple.com> Fix diamond shape ifcvt bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37444 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
a1a9f408dadefb157d1204f72200936f013521fd 06-Jun-2007 Evan Cheng <evan.cheng@apple.com> ReplaceUsesOfBlockWith() can modify the predecessors list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37441 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
e004317c66651a7bf8cdea7c15060c1f357c0e3e 05-Jun-2007 Evan Cheng <evan.cheng@apple.com> Do not ifcvt if either true / false path is a backedge. Not profitable in almost all cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37440 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
c53ef58a3549131e5307f10417406e8fd8aea6d4 05-Jun-2007 Evan Cheng <evan.cheng@apple.com> I had a senior moment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37433 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
8ed680cce3d0cff361f352abce75a917093f0656 05-Jun-2007 Evan Cheng <evan.cheng@apple.com> If the predicated block requires an early exit, end the block there and add a unconditional branch to false block. AnalyzeBranch() does not understand early exits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37430 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
f5305f9cc767ac18c258b03425c2c26345003acc 05-Jun-2007 Evan Cheng <evan.cheng@apple.com> Fix some subtle bugs: bug during succeessor copying; incorrectly updating states of ifcvted blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37429 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
fe7e397100edd4f2d618a1ff938dfa8624670ec1 05-Jun-2007 Dale Johannesen <dalej@apple.com> Tail merging wasn't working for predecessors of landing pads. PR 1496.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37427 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
916d07cdfa89e77118043ec6e14575512ae1bf85 04-Jun-2007 Evan Cheng <evan.cheng@apple.com> Global ctors / dtors alignment shouldn't be hard-coded at 4. e.g. It could be 8 for 64-bit targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37421 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
3ec425470ff42da6b4c075cf6a46d4c002106487 04-Jun-2007 Evan Cheng <evan.cheng@apple.com> Forgot to check for if iterator reached the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37420 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
39833585556a69de12053ca1e104fe7edfd86cbd 04-Jun-2007 Dan Gohman <gohman@apple.com> Pass the DAG to SDNode::dump to let it do more detailed dumps in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37413 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
575e2f4ea874deae3af8a940f30df5348d272190 04-Jun-2007 Dan Gohman <gohman@apple.com> Resolve implicit alignment before computing the FoldingSet information so
that the CSE map always contains explicit alignment information. This allows
more loads to be CSE'd when there is a mix of explicit-alignment loads and
implicit-alignment loads.

Also, in SelectionDAG::FindModifiedNodeSlot, add the operands to the
FoldingSetNodeID before the load/store information instead of after, so
that it matches what is done elsewhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37411 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b6665f62c5cb19a04c4bb0eecbc498d406ec85b3 04-Jun-2007 Evan Cheng <evan.cheng@apple.com> Let IfConverter loose. Allow more aggressive subsumptions; reorder basic blocks to expose more ifcvt opportunities; code clean up and fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37409 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
0370fad74b48388412c52d1325512f2c218487fa 04-Jun-2007 Evan Cheng <evan.cheng@apple.com> Move ReplaceUsesOfBlockWith() out of BranchFolding into a MachineBasicBlock general facility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37408 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
achineBasicBlock.cpp
09085fe63d470e2a5dae8d7ef47251261d99a6a8 02-Jun-2007 Duncan Sands <baldrick@free.fr> The semantics of invoke require that we always jump to the unwind block
(landing pad) when an exception unwinds through the call. This doesn't
quite match the way the dwarf unwinder works: by default it only jumps to
the landing pad if the catch or filter specification matches, and otherwise
it keeps on unwinding. There are two ways of specifying to the unwinder
that it should "always" (more on why there are quotes here later) jump to
the landing pad: follow the specification by a 0 typeid, or follow it by
the typeid for the NULL typeinfo. GCC does the first, and this patch makes
LLVM do the same as gcc. However there is a problem: the unwinder performs
optimizations based on C++ semantics (it only expects destructors to be
run if the 0 typeid fires - known as "cleanups"), meaning it assumes that no
exceptions will be raised and that the raised exception will be reraised
at the end of the cleanup code. So if someone writes their own LLVM code
using the exception intrinsics they will get a nasty surprise if they don't
follow these rules. The other possibility of using the typeid corresponding
to NULL (catch-all) causes the unwinder to make no assumptions, so this is
probably what we should use in the long-run. However since we are still
having trouble getting exception handling working properly, for the moment
it seems best to closely imitate GCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37399 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
73ef58ab92d5cd23b119b7f206e5f8a8c529098d 02-Jun-2007 Duncan Sands <baldrick@free.fr> Integrate exception filter support and exception catch support. This
simplifies the code in DwarfWriter, allows for multiple filters and
makes it trivial to specify filters accompanied by cleanups or catch-all
specifications (see next patch). What a deal! Patch blessed by Anton.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37398 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
02031c0ff8ad48acdb8c4a4058c4fafe600423e1 02-Jun-2007 Zhou Sheng <zhousheng00@gmail.com> Make LowerCTPOP() support arbitrary bitwidth integer type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37397 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
8e63bf375d18118f46f43910c6a093c824eb4a7d 02-Jun-2007 Dale Johannesen <dalej@apple.com> Fix CorrectExtraCFGEdges to allow for multiple LandingPad targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37394 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
b4681638695e2e778ee6f1dd6448251ba3fde504 02-Jun-2007 Dale Johannesen <dalej@apple.com> Fancier algorithm in tail-merge comment implemented, so remove comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37393 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
a5a2117a4659ecadbec9476f2e537bcb7501b509 02-Jun-2007 Dale Johannesen <dalej@apple.com> Implement smarter algorithm for choosing which blocks to tail-merge.
See test/CodeGen/X86/test-pic-jtbl.ll for a case where it works well;
shaves another 10K off our favorite benchmark. I was hesitant about
this because of compile speed, but seems to do OK on a bootstrap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37392 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
b5a06907881751a2f16e8b5bc049684ba1532dee 01-Jun-2007 Evan Cheng <evan.cheng@apple.com> Correctly mark early-exit on the false path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37387 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
398898cc6a4cba85d908444a2bb42b1a9fc3df2a 01-Jun-2007 Duncan Sands <baldrick@free.fr> Since TypeInfos are passed as i8 pointers, a NULL TypeInfo should be passed
as a null i8 pointer not as a 0 i32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37383 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8c52938e44c6eacfee5faf7103e567f79fa5ebef 01-Jun-2007 Evan Cheng <evan.cheng@apple.com> Ifcvt triangle: don't ifcvt 'true' BB if it has other predecessors; don't merge 'false' BB if it has other predecessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37382 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
fe57a7e4df512f3a40b8ff463f5362a59908becc 01-Jun-2007 Evan Cheng <evan.cheng@apple.com> Remove a bogus check. Even terminators in a ifcvt need to be predicated. Unconditional branches can usually be converted to conditional ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37380 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
5f70218c7534d7214cc23b7151ab25771bd3151b 01-Jun-2007 Evan Cheng <evan.cheng@apple.com> Allow multiple ifcvt candidates to share children blocks; add some debugging code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37379 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
a52dd151378eeaad1369829b1dc3164874774e04 31-May-2007 Dale Johannesen <dalej@apple.com> Arrange for only 1 of multiple branches to landing pad to be kept.
Do not remove empty landing pads (EH table needs to be updated)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37375 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
f15d44cc108a1ce8139b3c80fff7b99cbd651333 31-May-2007 Evan Cheng <evan.cheng@apple.com> Fix a typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37374 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
3a4205367dc845d4cd804b47e061f8281777c9da 31-May-2007 Chris Lattner <sabre@nondot.org> Fix the asmprinter so that a globalvalue can specify an explicit alignment
smaller than the preferred alignment, but so that the target can actually
specify a minimum alignment if needed. This fixes some objc protocol
failures Devang tracked down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37373 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
8d410b69384ae4e178b3b522ef3357290a714de5 31-May-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix PR1424.
When a function has FP, the register scavenging spill slot offset already
was calculated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37371 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
8258210ed4ab819fd064be2616a4041afd761d79 30-May-2007 Evan Cheng <evan.cheng@apple.com> Change traversal order to bottom up in preparation for more aggressive if-conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37365 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
4e7e6cd13ab8cab410ad11375101878865579325 30-May-2007 Chris Lattner <sabre@nondot.org> Fix CodeGen/PowerPC/2007-05-30-dagcombine-miscomp.ll, and PR1473.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37362 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
44008c59188ba61aeacfd8be049e3be548ffcea4 30-May-2007 Dale Johannesen <dalej@apple.com> Changed per review comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37355 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
95ef406e0f2da0197f8b46849319c07e9bea1e55 30-May-2007 Dale Johannesen <dalej@apple.com> Make stable_sort in tail merging actually be stable (it never was, but didn't
matter until my last change). Reenable tail merging by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37354 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
58fbb9f5babf00bd0a0e5b0f39bb718275972ec6 30-May-2007 Evan Cheng <evan.cheng@apple.com> Don't merge in tail block of a diamond if it has more than one predecessors after if-conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37353 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
c8ed9badfabf8933acf5fcf8a58248c93f401076 30-May-2007 Evan Cheng <evan.cheng@apple.com> If there is an empty block between a source and its successor block, it still requires a unconditional branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37344 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
f277ee4be7edabb759a7f78138b693d72d0c263f 29-May-2007 Evan Cheng <evan.cheng@apple.com> Add missing const qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37341 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
924361aef931a8f0c366b1090021d5be13c37c6b 26-May-2007 Zhou Sheng <zhousheng00@gmail.com> Correct the logic in LowerPartSet which cleared the bits from 0 to low-1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37331 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
3adf951364c30d30b528133df1d4cedf2c2b7046 25-May-2007 Chris Lattner <sabre@nondot.org> tighten up recursion depth again


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4bec8ae694be9db7505f5589b018a84334730875 25-May-2007 Evan Cheng <evan.cheng@apple.com> Silly boog.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37328 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
035fdeb37048bae2f49d3c3b8c246cfc26d9a80d 24-May-2007 Dale Johannesen <dalej@apple.com> Blocks that cond-br and uncond-br/fallthrough to same block should have
only one successor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37324 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
de0963df420f408b2d813bd16f3c040c2d189f63 24-May-2007 Dale Johannesen <dalej@apple.com> Fix for PR1444: do not create two successors to the same block.
Temporarily, this breaks CodeGen/Generic/2006-02-12-InsertLibraryCall.ll
by exposing an unrelated latent problem; working on that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37323 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
fa73ea2d9fd785a214256ca44488407b26c5a3db 24-May-2007 Dan Gohman <gohman@apple.com> Minor comment cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37321 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
237898ac1f6f6d1915282cc3afaa3c36435e76c0 24-May-2007 Dan Gohman <gohman@apple.com> Add explicit qualification for namespace MVT members.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c843abe868be76bb18d77ca6bda53dd4d2cf12f7 24-May-2007 Evan Cheng <evan.cheng@apple.com> Fix a typo that caused combiner to create mal-formed pre-indexed store where value store is the same as the base pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37318 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7aea8320340ce867eb4328aeec52cb02c88ef0b3 23-May-2007 Dale Johannesen <dalej@apple.com> Two tail merging improvements:
When considering blocks with more than 2 predecessors, merge the block with
the largest number of matching insns, rather than the first block found.
Considering that 1 matching insn is enough to show a win for candidates that
already end with a branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37315 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
070280e97f801ae809ddcc7930c153929f253997 23-May-2007 Anton Korobeynikov <asl@math.spbu.ru> Mark all calls as "could throw", when exceptions are enabled. Emit necessary LP info too. This fixes PR1439


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37311 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
electionDAG/SelectionDAGISel.cpp
501fee71e077aad705ab2ab86741aec15b779174 23-May-2007 Chris Lattner <sabre@nondot.org> prevent exponential recursion in isNegatibleForFree


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a13aa95bc8d1f0838b46a456c607a7bddab6412a 23-May-2007 Evan Cheng <evan.cheng@apple.com> Preliminary iterative if-conversion support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37309 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
e6e435498c0e35d98644f868886d39c4665bb83a 22-May-2007 Dale Johannesen <dalej@apple.com> name change requested by review of previous patch


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37289 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
2b77d3b09138cb1081f003042be55503d243d323 22-May-2007 Owen Anderson <resistor@mac.com> Silence a warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37288 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
81da02b553b86868637f27b89c6e919c31ed5b51 22-May-2007 Dale Johannesen <dalej@apple.com> Make tail merging the default, except on powerPC. There was no prior art
for a target-dependent default with a command-line override; this way
should be generally usable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37285 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
LVMTargetMachine.cpp
a6b4f43eaa5a59d6624fbbfcd8d339365129fafd 22-May-2007 Evan Cheng <evan.cheng@apple.com> If-convert early exit blocks (returns, etc.); bug fixes, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37270 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
7bf7a446a5173b60a88b588a053dec374df07df1 21-May-2007 Duncan Sands <baldrick@free.fr> Only emit one entry in the exception action table for each action, even if
it occurs for multiple landing pads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37267 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
7667c0bac3cb46249fc14bb2f76111fb1625cdd6 19-May-2007 Chris Lattner <sabre@nondot.org> same patch as the previous one, but the symmetric case


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
2ad913b3428b634f46d6606a150c5d180b528197 19-May-2007 Chris Lattner <sabre@nondot.org> Disable the (A == (B-A)) -> 2*A == B xform when the sub has multiple uses (in
this case, the xform introduces an extra operation). This compiles
PowerPC/compare-duplicate.ll into:

_test:
subf r2, r3, r4
cmplw cr0, r2, r3
bne cr0, LBB1_2 ;F

instead of:

_test:
slwi r2, r3, 1
subf r3, r3, r4
cmplw cr0, r4, r2
bne cr0, LBB1_2 ;F

This is target independent of course.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37246 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7f8ff8af1a4372189f22136eb95fe67e3dcfae41 18-May-2007 Evan Cheng <evan.cheng@apple.com> Clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37237 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
36489bbbacb2adf0d639faa2d1bc2bbde9936396 18-May-2007 Evan Cheng <evan.cheng@apple.com> Change to depth-first traversal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37236 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
a469b69ddae4665aec02fd75a51c31ad1cff043d 18-May-2007 Dale Johannesen <dalej@apple.com> Document an inefficiency in tail merging.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37235 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
fcc4dd91e5d4ba2f8fb8bd9ff24ee0ca0e08ab30 18-May-2007 Dan Gohman <gohman@apple.com> Qualify calls to getTypeForValueType with MVT:: too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37233 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cf6cc112d5d8eee8e4cff04615e6ecf8946e17e8 18-May-2007 Evan Cheng <evan.cheng@apple.com> Some restructuring in preparation for most aggressive if-conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37231 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
b55757ec5f6f0218342a8910e1bbd9f018adc7d7 18-May-2007 Dan Gohman <gohman@apple.com> Qualify several calls to functions in the MVT namespace, for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37230 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
6092ca155610b6c4cb16f21a1dad1f990758730a 18-May-2007 Evan Cheng <evan.cheng@apple.com> Watch out for blocks that end with a return.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37227 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
47d25020728d23ca62a805963e3b0885a4df1bc6 18-May-2007 Evan Cheng <evan.cheng@apple.com> If true / false blocks fallthrough before ifcvt, add unconditional branches to ifcvt'd block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37200 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
1cf08c1d6d59cbeead241f44d898eaa2a3bf1717 18-May-2007 Dale Johannesen <dalej@apple.com> Remove some unneeded branches. (spotted by Evan, thanks)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37198 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
86cbfea33bc736482cbf6c4ed9a01aefa704d097 18-May-2007 Evan Cheng <evan.cheng@apple.com> Make use of target specific block size limits; bug fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37195 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
4f098788d303bed05da6000f3ff24177aad56623 18-May-2007 Evan Cheng <evan.cheng@apple.com> Move isSuccessor() offline, change it to use std::find.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37190 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
3fc5b01d38ddccbe53ff0b32cc0100351d698c66 17-May-2007 Chris Lattner <sabre@nondot.org> disable MaskedValueIsZero, ComputeMaskedBits, and SimplifyDemandedBits for
i128 integers. The 64-bit masks are not wide enough to represent the results.
These should be converted to APInt someday.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b429f7303eecc6fe0218d86e2f1321f70473deb4 17-May-2007 Chris Lattner <sabre@nondot.org> add expand support for ADDC/SUBC/ADDE/SUBE so we can codegen 128-bit add/sub on 32-bit (or less) targets


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37168 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d60483ef99a15630abba934001b1ff7d16a33b18 17-May-2007 Evan Cheng <evan.cheng@apple.com> Add target hook to specify block size limit for if-conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37134 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
98a6c62aff7393683571b05f73f6f22701569c09 17-May-2007 Dale Johannesen <dalej@apple.com> Don't fold bitconvert(load) for preinc/postdec loads. Likewise stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37130 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d6ddc308f0320f1c35618cca29edcbf9418d65de 16-May-2007 Evan Cheng <evan.cheng@apple.com> isBlockPredicable() always ignore terminal instructions; add comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37126 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
c3a289c4b5a60a204363ba4ae9f017ba87b714f9 16-May-2007 Evan Cheng <evan.cheng@apple.com> Rename M_PREDICATED to M_PREDICABLE; Moved isPredicable() to MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37121 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
achineInstr.cpp
53c3a333a470dafd0160e64da2f196e7121cdf3f 16-May-2007 Duncan Sands <baldrick@free.fr> Output exception call-sites in address order, as required by the unwinding
runtime.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37104 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
c76d4410ab31723ea1a44821f2daa01a5cfef8eb 16-May-2007 Chris Lattner <sabre@nondot.org> Use a ptr set instead of a linear search to unique TokenFactor operands.
This fixes PR1423


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37102 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c5d05ef35780bf822765c5a3e2c13201450591ba 16-May-2007 Evan Cheng <evan.cheng@apple.com> Devang points out that we need an assertion here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37097 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
93003b8cf221f084e71e2b4033c41ff2cae6c36d 16-May-2007 Evan Cheng <evan.cheng@apple.com> Bug fix: should check ABI alignment, not pref. alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37094 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4e654852f1bee3813dcc1d207710f041cdd22717 16-May-2007 Evan Cheng <evan.cheng@apple.com> Initial commit of (very basic) if converter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37092 91177308-0d34-0410-b5e6-96231b3b80d8
fConversion.cpp
14ba0cc42959a3fcc9b6781aea614b01877fb55f 15-May-2007 Dale Johannesen <dalej@apple.com> Remove extra CFG edges before doing these passes; it makes them happier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37089 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
b5bb7ffa9c40d13b21d1a04aec53a4428a6c02a8 15-May-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix an infinite recursion in GetNegatedExpression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37086 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
49b5c27baa5a7ee0bb5eb8b6b439c30837011fcf 15-May-2007 Duncan Sands <baldrick@free.fr> The index into the actions table is a ULEB128 not a SLEB128.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37084 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
76c94b616924b19b850e274df0c6485b9395fcb9 15-May-2007 Reid Spencer <rspencer@reidspencer.com> Un-brain-dead-ify the lowering of part set for the reverse case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37071 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
c90233b836c5d00045bbe7ca3d5d92df4825f5a1 15-May-2007 Chris Lattner <sabre@nondot.org> Fix some subtle issues handling immediate values. This fixes
test/CodeGen/ARM/2007-05-14-InlineAsmCstCrash.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37069 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
19e3f31f6acd9f5ce3cdd8372d4cb598ed921f95 15-May-2007 Evan Cheng <evan.cheng@apple.com> Added getNumExplicitOperands and findFirstPredOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37064 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
2944652569d1beb538f5a72ab1a4bb581ea5cf91 15-May-2007 Chris Lattner <sabre@nondot.org> implement a simple fneg optimization/propagation thing. This compiles:
CodeGen/PowerPC/fneg.ll into:

_t4:
fmul f0, f3, f4
fmadd f1, f1, f2, f0
blr

instead of:

_t4:
fneg f0, f3
fmul f0, f0, f4
fmsub f1, f1, f2, f0
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37054 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8dfffd5a079c35e317b843f9f249d2fa36bcd944 14-May-2007 Evan Cheng <evan.cheng@apple.com> Only worry about intervening kill if there are more than one live ranges in the interval.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37052 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
2f6cb2b14c5811b154b06163355b3c8bc8b73231 14-May-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1406:

v1 =
r2 = move v1
= op r2<kill>
...
r2 = move v1
= op r2<kill>

Clear the first r2 kill if v1 and r2 are joined.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37050 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8b966d9fd0995fbc897ca06ff3b15e8178c0d0a3 14-May-2007 Evan Cheng <evan.cheng@apple.com> When marking a register as being implicitly defined, make sure to clear its partial use info as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37046 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
9bd57b6561abd7701bff5d46bb88fed6b9a8dbb9 14-May-2007 Reid Spencer <rspencer@reidspencer.com> Give names to the final result values of the part_set computations. This
just aids in readability and debugability of the output. No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37037 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
185bc8905a8aa14f3bc674801bb5c6b11662cf8d 13-May-2007 Anton Korobeynikov <asl@math.spbu.ru> Emit function debug frames in one atom. This will prevent us from generating incorrect assembler in case of both
debug information & exception information presented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37019 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
8c7c17354c7d954de95a064ee89f8c82cccdb819 13-May-2007 Anton Korobeynikov <asl@math.spbu.ru> Emit multiple common EH frames for multiple (including blank) personality
functions. This partly fixes PR1414: now we're restricted only to one
personality function per eh frame, not per module. Further work on
"multiple personalities" topic needs representative example.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37018 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
0ff3ca4f9240048462d4cf8e708b519177acf1b4 13-May-2007 Anton Korobeynikov <asl@math.spbu.ru> More DWARF-related things cleanup:
1. Fix PR1380
2. Apply Duncan's patch from PR1410
3. Insert workaround for "one personality function per module" as noted in PR1414
4. Emit correct debug frames for x86/linux. This partly fixes DebugInfo/2006-11-06-StackTrace.cpp: stack trace is
shown correctly, but arguments for function on top of stack are displayed incorrectly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37015 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
5156f5b214bafc24e20ed49114b35ffbd55dc623 12-May-2007 Reid Spencer <rspencer@reidspencer.com> Get the size of auto arrays right, regardless of its changing size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37006 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
1e4c23a2d192479d264e2028843f204de2658cda 12-May-2007 Devang Patel <dpatel@apple.com> Fix http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070507/049516.html


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36998 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
22d5c37f328950127981b389389abb985d99da28 11-May-2007 Anton Korobeynikov <asl@math.spbu.ru> Perform correct actions numbers/sizes computation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36988 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
29c9cafe4698cf045bf0edb042afa24335eeed97 11-May-2007 Anton Korobeynikov <asl@math.spbu.ru> Fix action No calculation in multiple-invoke-one-LP mode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36987 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
54f4a6780a33043031af97571dfffdac5a4aa35c 11-May-2007 Dale Johannesen <dalej@apple.com> Do not generate branches to entry block. This fixes several test suite
failures on PPC (can happen only when prologue code is null)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36979 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
432a7faf033b2d23162efd892b723f9b8481941a 11-May-2007 Anton Korobeynikov <asl@math.spbu.ru> Ooops. Some debugging stuff :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36978 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
eeb37e0b80f6f71b7620099083e7c10a9978ef86 11-May-2007 Anton Korobeynikov <asl@math.spbu.ru> Allow multiple invokes per landing pad. This (probably) fixes PR1410.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36977 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
c1fe16610ade320bade1a970fa2721b0558321b8 10-May-2007 Duncan Sands <baldrick@free.fr> Later computations assume we are aligned at this point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36975 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
e25514d0a599c4256509b8512da71f5ae6090aa6 10-May-2007 Anton Korobeynikov <asl@math.spbu.ru> TypeIds are indexed by j, not i


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36974 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
76b38fcabeba725e166a2ff72c56fe31d784b229 10-May-2007 Dale Johannesen <dalej@apple.com> Make tail merging handle many more cases (all it can, I think).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36966 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
2c4f94363a02f482ddcfccc343978595a8a79438 09-May-2007 Evan Cheng <evan.cheng@apple.com> Can't fold the bit_convert is the store is a truncating store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36962 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7294b58ecdb430d1473d0a9220a234e62a710d54 09-May-2007 Anton Korobeynikov <asl@math.spbu.ru> Do not assert, when case range split metric is zero and JTs are not allowed: just emit binary tree in this case. This
fixes PR1403.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36959 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e23e00ddeac6d45158a725492740f3a405c07717 08-May-2007 Bill Wendling <isanbard@gmail.com> Change names from RA to something unique to get rid of naming conflicts with
certain linkers...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36944 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
egAllocLocal.cpp
56184904cd9a348920de0c3b391d42b691091137 08-May-2007 Evan Cheng <evan.cheng@apple.com> Eliminate MarkVirtRegAliveInBlock recursion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36943 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
c2cd2b29f5b8e2eda88a1edadcd4bc7478a2439c 07-May-2007 Evan Cheng <evan.cheng@apple.com> Forgot a check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36910 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
59d5b68dffc4b25290ab21416cd33a7956269389 07-May-2007 Evan Cheng <evan.cheng@apple.com> Enable a couple of xforms:
- (store (bitconvert v)) -> (store v) if resultant store does not require
higher alignment
- (bitconvert (load v)) -> (load (bitconvert*)v) if resultant load does not
require higher alignment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36908 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7d33b4c59b56afb96feea71073c1d9e70c457e28 07-May-2007 Dale Johannesen <dalej@apple.com> Handle some non-exit blocks in tail merging.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36907 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
4fee7034d5a9dae46e78ff300fd6dbf2cdfcb8f9 07-May-2007 Duncan Sands <baldrick@free.fr> Parameter attributes on invoke calls were being lost due to the wrong
attribute index being used. Fix proposed by Anton Korobeynikov, who
asked me to implement and commit it for him. This is PR1398.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36906 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b682448ebd8074dd63b40d41204fc69a417e0eac 06-May-2007 Anton Korobeynikov <asl@math.spbu.ru> Detabify


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36891 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ecd94c804a563f2a86572dcf1d2e81f397e19daa 06-May-2007 Nick Lewycky <nicholas@mxc.ca> Fix typo in comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36873 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
3194f575413613d3653a483859724fe63aba4b66 05-May-2007 Duncan Sands <baldrick@free.fr> Use the personality function that was registered with MMI rather than
hardwiring in the C++ one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36789 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
b464c446791f03cd8abc0b55bab4d472de534218 05-May-2007 Chris Lattner <sabre@nondot.org> Propagate alignment/volatility in two places.

Implement support for expanding a bitcast from an illegal vector type to
a legal one (e.g. 4xi32 -> 4xf32 in SSE1). This fixes PR1371 and
CodeGen/X86/2007-05-05-VecCastExpand.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36787 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
01dfdcd84b604063d739b92ee12c119cc18d799f 05-May-2007 Duncan Sands <baldrick@free.fr> Spelling fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36781 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
2a07e2f4df8010bbb07591a097b5e55101ed4a96 05-May-2007 Anton Korobeynikov <asl@math.spbu.ru> Emit sections/directives in the proper order. This fixes PR1376. Also,
some small cleanup was made.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36780 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
3b346368deddbe3cb853b29472de46bc9b58d6b8 04-May-2007 Duncan Sands <baldrick@free.fr> A bitcast of a global variable may have been constant folded to a GEP -
handle this case too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36745 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a7d4a04d244c5a8c6364af2e39a512ec6b9600a2 04-May-2007 Evan Cheng <evan.cheng@apple.com> Don't create indexed load / store with zero offset!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36716 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
75c7d2bd551acd1ad4f0f58b763ec8840f1d9c34 03-May-2007 Chris Lattner <sabre@nondot.org> Allow i/s to match (gv+c). This fixes CodeGen/PowerPC/2007-05-03-InlineAsm-S-Constraint.ll

and PR1382


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
1997473cf72957d0e70322e2fe6fe2ab141c58a6 03-May-2007 Devang Patel <dpatel@apple.com> Drop 'const'


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36662 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
LFWriter.cpp
LFWriter.h
iveIntervalAnalysis.cpp
iveVariables.cpp
achOWriter.cpp
achOWriter.h
achineFunction.cpp
achineModuleInfo.cpp
HIElimination.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/SelectionDAGISel.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
6ad8256d769f352103b6101c7090e4bfc0389330 03-May-2007 Anton Korobeynikov <asl@math.spbu.ru> Properly set arguments bitwidth of EHSELECT node


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36654 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3e15bf33e024b9df9e89351a165acfdb1dde51ed 02-May-2007 Devang Patel <dpatel@apple.com> Use 'static const char' instead of 'static const int'.
Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36652 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
LFWriter.cpp
LFWriter.h
iveIntervalAnalysis.cpp
iveVariables.cpp
achOWriter.cpp
achOWriter.h
achineFunction.cpp
achineModuleInfo.cpp
HIElimination.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/SelectionDAGISel.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
c718288f4939258a51ec5ae0c5be7b1a05eb6898 02-May-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix build error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36648 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineModuleInfo.cpp
79dda2b0486dd90e2a1b1a1e4be74650a8258ce9 02-May-2007 Anton Korobeynikov <asl@math.spbu.ru> Fix couple of bugs connected with eh info:
1. Correct output offsets on Linux
2. Fix "style" of personality function. It shouldn't be indirect.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36633 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
794fd75c67a2cdc128d67342c6d88a504d186896 01-May-2007 Devang Patel <dpatel@apple.com> Do not use typeinfo to identify pass in pass manager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36632 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
LFWriter.cpp
LFWriter.h
iveIntervalAnalysis.cpp
iveVariables.cpp
achOWriter.cpp
achOWriter.h
achineFunction.cpp
achineModuleInfo.cpp
HIElimination.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/SelectionDAGISel.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
8e3347332120956538a6d882b02719e34b57f0cd 01-May-2007 Evan Cheng <evan.cheng@apple.com> If call frame is not part of stack frame and no dynamic alloc, eliminateFrameIndex() must adjust SP offset with size of call frames.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36625 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
498f55989a0ef437c098452ff83ccfe7ace2d802 01-May-2007 Evan Cheng <evan.cheng@apple.com> Forgot about chain result; also UNDEF cannot have multiple values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36622 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7bf1c272ab27297a7bbab329de3f17ddb26e02a3 01-May-2007 Nate Begeman <natebegeman@mac.com> llvm bug #1350, parts 1, 2, and 3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36618 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
5c3885ce8e6a3dc69913b50fe6bdc0c89c5432d5 01-May-2007 Evan Cheng <evan.cheng@apple.com> Under normal circumstances, when a frame pointer is not required, we reserve
argument space for call sites in the function immediately on entry to the
current function. This eliminates the need for add/sub sp brackets around call
sites. However, this is not always a good idea. If the "call frame" is large and
the target load / store instructions have small immediate field to encode sp
offset, this can cause poor codegen. In the worst case, this can make it
impossible to scavenge a register if the reserved spill slot is pushed too far
apart from sp / fp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36607 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
45a7ca9b23e7e3447465cdf97788d137aa98cb47 01-May-2007 Evan Cheng <evan.cheng@apple.com> * Only turn a load to UNDEF if all of its outputs have no uses (indexed loads
produce two results.)
* Do not touch volatile loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
77edc4b1b004726d96c932356750b9f3c96d74dd 01-May-2007 Chris Lattner <sabre@nondot.org> Fix PR1228 and CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36602 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
c11ce86943847a95ee20b65b4d1fc4611b59ddc6 01-May-2007 Chris Lattner <sabre@nondot.org> print isLandingPad() for MBBs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36600 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
e7cf56aeeebed7423402fdf84c5b1aaf6830316e 30-Apr-2007 Chris Lattner <sabre@nondot.org> Continue refactoring inline asm code. If there is an earlyclobber output
register, preallocate all input registers and the early clobbered output.

This fixes PR1357 and CodeGen/PowerPC/2007-04-30-InlineAsmEarlyClobber.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36599 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e47e75b46185aaa4927ea1da94ff8574bcc3458a 30-Apr-2007 Evan Cheng <evan.cheng@apple.com> Updates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36594 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
bf996f1d5e441c7504ff155d818190f593d54672 30-Apr-2007 Chris Lattner <sabre@nondot.org> refactor GetRegistersForValue to take OpInfo as an argument instead of various
pieces of it. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36592 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3ff90dc1c8aaa5d9be94cdca8c4a7e71f45da8fd 30-Apr-2007 Chris Lattner <sabre@nondot.org> refactor some code, no functionality change


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36590 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1f6f4c7346b6d78f097f25777211fdd4e4267086 30-Apr-2007 Chris Lattner <sabre@nondot.org> Clean up multi-line asam string printing. Instead of printing:

# InlineAsm Start
subfc r3,r5,r4
subfze r4,r3
# InlineAsm End

print:

# InlineAsm Start
subfc r3,r5,r4
subfze r4,r3
# InlineAsm End


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36589 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
6995cf6015580eeab07a1c671fca180084a1325e 29-Apr-2007 Chris Lattner <sabre@nondot.org> generalize aggregate handling


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36568 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c6c98af9e5814e8066c82f20ca11cf646a5fc289 29-Apr-2007 Anton Korobeynikov <asl@math.spbu.ru> Implement review feedback


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36564 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
09e4b7e1b7d624a3010ace2c23783e77b366fa7e 28-Apr-2007 Chris Lattner <sabre@nondot.org> memory operands that have a direct operand should have their stores created
before the copies into physregs are done. This avoids having flag operands
skip the store, causing cycles in the dag at sched time. This fixes infinite
loops on these tests:

test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll for PR1308
test/CodeGen/PowerPC/2007-01-29-lbrx-asm.ll
test/CodeGen/PowerPC/2007-01-31-InlineAsmAddrMode.ll
test/CodeGen/X86/2006-07-12-InlineAsmQConstraint.ll for PR828


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36547 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c83994e5d4c75b4dc3d0e2ac52972a4fff816eb6 28-Apr-2007 Chris Lattner <sabre@nondot.org> eliminate more redundant constraint type analysis


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2a600be22618b09165f3fe2a88bbe2fb71bc478d 28-Apr-2007 Chris Lattner <sabre@nondot.org> merge constraint type analysis stuff together.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0c58340aead6880876076ee4e3abf3aca92a2647 28-Apr-2007 Chris Lattner <sabre@nondot.org> Significant refactoring of the inline asm stuff, to support future changes.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36544 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a80e1181b78183dc36ec6568559d38faa86981f0 28-Apr-2007 Anton Korobeynikov <asl@math.spbu.ru> Implement review feedback. Aliasees can be either GlobalValue's or
bitcasts of them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36537 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
44b2c5098f5cf766b4eff43d9eb0d8a9a143e7d8 28-Apr-2007 Chris Lattner <sabre@nondot.org> memory inputs to an inline asm are required to have an address available.
If the operand is not already an indirect operand, spill it to a constant
pool entry or a stack slot.

This fixes PR1356 and CodeGen/X86/2007-04-27-InlineAsm-IntMemInput.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36536 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
f2f3cd5129a1eef6034ce09314b10f3a1e1abaf6 28-Apr-2007 Chris Lattner <sabre@nondot.org> Fix CodeGen/Generic/2007-04-27-LargeMemObject.ll and
CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36534 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b01731812284e5396dcb6dd3b0eae769fcaed6d1 28-Apr-2007 Chris Lattner <sabre@nondot.org> Fix this to match change to InlineAsm class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36524 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
eb7f34f2cb1584f155b9cefdb246b300fb2fc9c4 27-Apr-2007 Chris Lattner <sabre@nondot.org> Fix incorrect legalization of EHSELECTOR. This fixes
CodeGen/Generic/2007-04-14-EHSelectorCrash.ll and PR1326


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36510 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4c6cfad85e63e2dbe273431bdf20533b495c955d 27-Apr-2007 Evan Cheng <evan.cheng@apple.com> Expand UINT_TO_FP in turns of SINT_TO_FP when UINTTOFP_* libcalls are not available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36501 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
99f9a77c496e8dc65fa7d9f693de9bec9aa574e5 27-Apr-2007 Chris Lattner <sabre@nondot.org> improve EH global handling, patch by Duncan Sands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36499 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
64c0f84c725a5a21c4753575347f24ce0e250088 26-Apr-2007 Chris Lattner <sabre@nondot.org> enable Anton's shift/and switch lowering stuff! It now passes ppc bootstrap
successfully! woohoo...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36496 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ab8fd404034439ba23230df512a8a2779e5d48a3 26-Apr-2007 Anton Korobeynikov <asl@math.spbu.ru> Fixx off-by-one bug, which prevents llvm-gcc bootstrap on ppc32


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36490 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
edc1d159841fd279d58177bfd6ac4bc1f616d91a 26-Apr-2007 Dan Gohman <gohman@apple.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36485 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
faa510726f4b40aa4495e60e4d341c6467e3fb01 26-Apr-2007 Evan Cheng <evan.cheng@apple.com> Rename findRegisterUseOperand to findRegisterUseOperandIdx to avoid confusion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36483 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
egisterScavenging.cpp
irtRegMap.cpp
8e29b2192b498342682f9d79881c00248e3a5c0a 26-Apr-2007 Evan Cheng <evan.cheng@apple.com> Minor bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36473 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
05350288a6bc22a294ff7625f244731ef7125f8a 26-Apr-2007 Evan Cheng <evan.cheng@apple.com> Be careful when to add implicit kill / dead operands. Don't add them during / post reg-allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36458 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
6c087e5585b227f3c1d8278304c7cfbc7cd4f6e8 26-Apr-2007 Evan Cheng <evan.cheng@apple.com> Match MachineFunction::UsedPhysRegs changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36452 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
irtRegMap.cpp
505e5510a258699d1fb267142c247079a4b3d796 26-Apr-2007 Evan Cheng <evan.cheng@apple.com> Change UsedPhysRegs from array bool to BitVector to save some space. Setting / getting its states now go through MachineFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36451 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
ade31f9f07537502f68850d771678bfbef003c7e 25-Apr-2007 Evan Cheng <evan.cheng@apple.com> Clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36449 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
e96f50142e8d12a2e12c3329bffb372e09731dd2 25-Apr-2007 Evan Cheng <evan.cheng@apple.com> Data structure change to improve compile time (especially in debug mode).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36447 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
c1a3520580c11f5d3430d5dab1e8006f8a0c7dc2 25-Apr-2007 Evan Cheng <evan.cheng@apple.com> This was lefted out. Fixed sumarray-dbl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36445 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8b0a8c84da2030ee8f4440d5b60a8033de691222 25-Apr-2007 Anton Korobeynikov <asl@math.spbu.ru> Implement aliases. This fixes PR1017 and it's dependent bugs. CFE part
will follow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36435 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
24a3cc4c83e5edb25fadf7b8979a26b4451795c6 25-Apr-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1306.
- A register def / use now implicitly affects sub-register liveness but does
not affect liveness information of super-registers.
- Def of a larger register (if followed by a use later) is treated as
read/mod/write of a smaller register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36434 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
92efbfcd2d2309aedbab4a1269763c3de96219d4 25-Apr-2007 Evan Cheng <evan.cheng@apple.com> Clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36431 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
ea84c5ee952c62dd0c703c9852d7a60715e4a435 25-Apr-2007 Chris Lattner <sabre@nondot.org> support for >4G stack frames


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36425 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
a401b1e1c5eb9563617db8a2477b4c5f8b239521 25-Apr-2007 Chris Lattner <sabre@nondot.org> support > 4G stack objects


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36422 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
6266c18ea12b42bd9b262a1f4f8c3d7a85130118 25-Apr-2007 Chris Lattner <sabre@nondot.org> allow support for 64-bit stack objects


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36420 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
964dd860542aa12bea93474dc159b4a7e3a6a9c1 25-Apr-2007 Chris Lattner <sabre@nondot.org> Be more careful about folding op(x, undef) when we have vector operands.
This fixes CodeGen/X86/2007-04-24-VectorCrash.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36413 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
95b39550344bad0d15d1ffa7afc300eb1533ed19 24-Apr-2007 Bill Wendling <isanbard@gmail.com> Assertion when using a 1-element vector for an add operation. Get the
real vector type in this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36402 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f147a8d56e0811525916f4d8cd5dd1777f834a85 24-Apr-2007 Scott Michel <scottm@aero.org> Use '-1U' where '-1UL' is obvious overkill, eliminating gcc warnings about
tests always being true in the process.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36387 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
00d56b96e599acbc4f895e86e17029ae7c45f142 24-Apr-2007 Dale Johannesen <dalej@apple.com> modify per review commentary


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36383 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
19f5469be4af517aa7953988a6d2e92cc05d4c62 23-Apr-2007 Dale Johannesen <dalej@apple.com> make EmitAlignment work the way Chris says it should


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36368 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
95c218a83ecf77590b9dc40c636720772d2b5cd7 23-Apr-2007 Christopher Lamb <christopher.lamb@gmail.com> PR400 phase 2. Propagate attributed load/store information through DAGs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
2c5c111b6c144b05718404c85b9dfcc76b1619e7 21-Apr-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> X86 TLS: Implement review feedback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36318 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c67bdc288aac130d88630f7fa95ceca6bcf95077 21-Apr-2007 Reid Spencer <rspencer@reidspencer.com> Revert Christopher Lamb's load/store alignment changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36309 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
2330e4d4c4f8008d17f5a38ac0d7b04e139d4131 21-Apr-2007 Christopher Lamb <christopher.lamb@gmail.com> add support for alignment attributes on load/store instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36301 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
0d3b67809ccab229a03db8c1bede852fb89eb081 21-Apr-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Allow the lowering of ISD::GLOBAL_OFFSET_TABLE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36290 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b3a0417cad8b625acc3033bd5e24afb9ffd0b084 20-Apr-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Implement "general dynamic", "initial exec" and "local exec" TLS models for
X86 32 bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36283 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
f44c72817e3a7f517ad796705effb8d59e6a6dfa 18-Apr-2007 Evan Cheng <evan.cheng@apple.com> VarInfo::UsedBlocks is no longer used. Remove.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36250 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
HIElimination.cpp
woAddressInstructionPass.cpp
61a4c072b9407983df1a6c965ada57474766b282 18-Apr-2007 Chris Lattner <sabre@nondot.org> allow SRL to simplify its operands, as it doesn't demand all bits as input.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36245 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ec06e9a6707b9b00889e34ebad7cd3f20cb70bb6 18-Apr-2007 Chris Lattner <sabre@nondot.org> When replacing a node in SimplifyDemandedBits, if the old node used any
single-use nodes, they will be dead soon. Make sure to remove them before
processing other nodes. This implements CodeGen/X86/shl_elim.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36244 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0a16a1f73816f7bdd420212feb72467707d5ac02 18-Apr-2007 Chris Lattner <sabre@nondot.org> fix a pasto


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36242 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
faf05bbaea5893488dac4eee58700912ddfe28cc 18-Apr-2007 Evan Cheng <evan.cheng@apple.com> Don't populate TryAgainList when coalescing only physical registers with virtual registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36240 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3fefc182a00663bfadbcbe17711b6d08469c9727 18-Apr-2007 Evan Cheng <evan.cheng@apple.com> Increment use count of new virtuals created during PHI elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36233 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
8c7d2d56bf5aa2186e2d08ed1dc37c2f392b4aae 18-Apr-2007 Chris Lattner <sabre@nondot.org> Fix a bug in my previous patch, grabbing the shift amount width from the
wrong operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36223 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
895c4ab564c145d16a585201ea49b91541d806b6 17-Apr-2007 Chris Lattner <sabre@nondot.org> Fold (x << c1)>> c2 into a single shift if the bits shifted out aren't used.

This compiles:
int baz(long long a) { return (short)(((int)(a >>24)) >> 9); }

into:
_baz:
srwi r2, r3, 1
extsh r3, r2
blr

on PPC, instead of:
_baz:
slwi r2, r3, 8
srwi r2, r2, 9
extsh r3, r2
blr

GCC produces:
_baz:
srwi r10,r4,24
insrwi r10,r3,24,0
srawi r9,r3,24
srawi r3,r10,9
extsh r3,r3
blr

This implements CodeGen/PowerPC/shl_elim.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36221 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
20b0abc24fb3fa15098b7cb12c7762fb0770e133 17-Apr-2007 Evan Cheng <evan.cheng@apple.com> Copy coalescing change to prevent a physical register from being pin to a
long live interval that has low usage density.
1. Change order of coalescing to join physical registers with virtual
registers first before virtual register intervals become too long.
2. Check size and usage density to determine if it's worthwhile to join.
3. If joining is aborted, assign virtual register live interval allocation
preference field to the physical register.
4. Register allocator should try to allocate to the preferred register
first (if available) to create identify moves that can be eliminated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36218 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
e52eef8e9a10ada9efc1fed115e5b6eefb22b1da 17-Apr-2007 Evan Cheng <evan.cheng@apple.com> Add a register allocation preference field; add a method to compute size of a live interval.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36216 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
38b7ca6651643f1f98e1f7b0e7f8a3499883804b 17-Apr-2007 Evan Cheng <evan.cheng@apple.com> Keep track of number of uses within the function per virtual register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36214 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
95a5e0507e07fa3ef7c61aade9eb0efd1d716a25 17-Apr-2007 Chris Lattner <sabre@nondot.org> SIGN_EXTEND_INREG does not demand its top bits. Give SimplifyDemandedBits
a chance to hack on it. This compiles:

int baz(long long a) { return (short)(((int)(a >>24)) >> 9); }

into:
_baz:
slwi r2, r3, 8
srwi r2, r2, 9
extsh r3, r2
blr

instead of:

_baz:
srwi r2, r4, 24
rlwimi r2, r3, 8, 0, 23
srwi r2, r2, 9
extsh r3, r2
blr

This implements CodeGen/PowerPC/sign_ext_inreg1.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36212 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9a9203b8948cc4ab275ca21d34821589e272c47c 17-Apr-2007 Reid Spencer <rspencer@reidspencer.com> Fix problems in the PartSet lowering having to do with incorrect bit width.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36180 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
bed2946a96ecb15b0b636fa74cb26ce61b1c648e 16-Apr-2007 Anton Korobeynikov <asl@math.spbu.ru> Removed tabs everywhere except autogenerated & external files. Add make
target for tabs checking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36146 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.h
EADME.txt
electionDAG/ScheduleDAGSimple.cpp
electionDAG/TargetLowering.cpp
1c35968d4d622c30b82698506a6fa128f012a504 14-Apr-2007 Chris Lattner <sabre@nondot.org> disable switch lowering using shift/and. It still breaks ppc bootstrap for
some reason. :( Will investigate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e01017bba4f44ab65eba11fd065c9cd16b5edb33 14-Apr-2007 Anton Korobeynikov <asl@math.spbu.ru> Fix PR1325: Case range optimization was performed in the case it
shouldn't. Also fix some "latent" bug on 64-bit platforms


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3ff981749bed4347dfe7196ac066be1d4f51ea1f 14-Apr-2007 Chris Lattner <sabre@nondot.org> disable shift/and lowering to work around PR1325 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35985 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8085bcfdca515a359c746ea475a3b8e9cac1c077 13-Apr-2007 Anton Korobeynikov <asl@math.spbu.ru> Fix PR1323 : we haven't updated phi nodes in good manner :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35963 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
df41353497b7b561649303a6a8bf23a7cb995f5a 12-Apr-2007 Reid Spencer <rspencer@reidspencer.com> Make sure intrinsics that are lowered to functions make the function weak
linkage so we only end up with one of them in a program. These are, after
all overloaded and templatish in nature.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35956 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
eeedcb6905febe0d3b68be2ce55347a211843da6 12-Apr-2007 Reid Spencer <rspencer@reidspencer.com> Fix bugs in generated code for part_select and part_set so that llc doesn't
barf when CBE is run with a program that contains these intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35946 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
37958093c6462a1226f9cfaeebf4d736aaf3606e 12-Apr-2007 Reid Spencer <rspencer@reidspencer.com> Fix a bug in PartSet. The replacement value needs to be zext or trunc to
the size of the value, not just zext. Also, give better names to two BBs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35945 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
3a508c94a6c6f124e8b0549358ce76deb92ab662 12-Apr-2007 Chris Lattner <sabre@nondot.org> the result of an inline asm copy can be an arbitrary VT that the register
class supports. In the case of vectors, this means we often get the wrong
type (e.g. we get v4f32 instead of v8i16). Make sure to convert the vector
result to the right type. This fixes CodeGen/X86/2007-04-11-InlineAsmVectorResult.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35944 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4829b1c6ab810ee274a104985915988b4f92aa7a 12-Apr-2007 Chris Lattner <sabre@nondot.org> fold noop vbitconvert instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35943 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c2941779c3ed1ffbe66716c6f6b2a9fc38a5ea7b 12-Apr-2007 Chris Lattner <sabre@nondot.org> Fix weirdness handling single element vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
f75b874957aa61e81804e266daf671aa9dcc75b9 12-Apr-2007 Reid Spencer <rspencer@reidspencer.com> For PR1284:
Implement the "part_set" intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35938 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
c24bbaddf869aa904300fcb0e8174070bde5c5a2 11-Apr-2007 Chris Lattner <sabre@nondot.org> fix an infinite loop compiling ldecod, notice by JeffC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35910 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1eba01e9a04f4a59ddc1cb66dc049a333f256112 11-Apr-2007 Chris Lattner <sabre@nondot.org> Fix this harder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35888 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c56a81dff1553536efee17445ef5eab276f22380 11-Apr-2007 Chris Lattner <sabre@nondot.org> don't create shifts by zero, fix some problems with my previous patch


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35887 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
20a35c3fa57ba9c3184d8848541d9a89b6c2b338 11-Apr-2007 Chris Lattner <sabre@nondot.org> Teach the codegen to turn [aez]ext (setcc) -> selectcc of 1/0, which often
allows other simplifications. For example, this compiles:
int isnegative(unsigned int X) {
return !(X < 2147483648U);
}

Into this code:

x86:
movl 4(%esp), %eax
shrl $31, %eax
ret
arm:
mov r0, r0, lsr #31
bx lr
thumb:
lsr r0, r0, #31
bx lr

instead of:

x86:
cmpl $0, 4(%esp)
sets %al
movzbl %al, %eax
ret

arm:
mov r3, #0
cmp r0, #0
movlt r3, #1
mov r0, r3
bx lr

thumb:
mov r2, #1
mov r1, #0
cmp r0, #0
blt LBB1_2 @entry
LBB1_1: @entry
cpy r2, r1
LBB1_2: @entry
cpy r0, r2
bx lr

Testcase here: test/CodeGen/Generic/ispositive.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35883 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1982ef20c44d85386a239a1b24eb2bb72cea29ec 11-Apr-2007 Chris Lattner <sabre@nondot.org> Codegen integer abs more efficiently using the trick from the PPC CWG. This
improves codegen on many architectures. Tests committed as CodeGen/*/iabs.ll

X86 Old: X86 New:
_test: _test:
movl 4(%esp), %ecx movl 4(%esp), %eax
movl %ecx, %eax movl %eax, %ecx
negl %eax sarl $31, %ecx
testl %ecx, %ecx addl %ecx, %eax
cmovns %ecx, %eax xorl %ecx, %eax
ret ret

PPC Old: PPC New:
_test: _test:
cmpwi cr0, r3, -1 srawi r2, r3, 31
neg r2, r3 add r3, r3, r2
bgt cr0, LBB1_2 ; xor r3, r3, r2
LBB1_1: ; blr
mr r3, r2
LBB1_2: ;
blr

ARM Old: ARM New:
_test: _test:
rsb r3, r0, #0 add r3, r0, r0, asr #31
cmp r0, #0 eor r0, r3, r0, asr #31
movge r3, r0 bx lr
mov r0, r3
bx lr

Thumb Old: Thumb New:
_test: _test:
neg r2, r0 asr r2, r0, #31
cmp r0, #0 add r0, r0, r2
bge LBB1_2 eor r0, r2
LBB1_1: @ bx lr
cpy r0, r2
LBB1_2: @
bx lr


Sparc Old: Sparc New:
test: test:
save -96, %o6, %o6 save -96, %o6, %o6
sethi 0, %l0 sra %i0, 31, %l0
sub %l0, %i0, %l0 add %i0, %l0, %l1
subcc %i0, -1, %l1 xor %l1, %l0, %i0
bg .BB1_2 restore %g0, %g0, %g0
nop retl
.BB1_1: nop
or %g0, %l0, %i0
.BB1_2:
restore %g0, %g0, %g0
retl
nop

It also helps alpha/ia64 :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35881 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
18da0720887527ed570e9703ae5f290beb491ee1 11-Apr-2007 Reid Spencer <rspencer@reidspencer.com> For PR1146:
Put the parameter attributes in their own ParamAttr name space. Adjust the
rest of llvm as a result.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35877 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c6eb6d72550aa3f7241141e3e28520dfef738c81 10-Apr-2007 Chris Lattner <sabre@nondot.org> apparently some people commit without building the tree, or they forget to
commit a LOT of files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35858 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
2da8da46ba48b857a2e3e71a97c18ebb23c14af5 10-Apr-2007 Jeff Cohen <jeffc@jolt-lang.org> No longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35850 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2b95fd67da204c6f608cc280ea91230ff781d998 10-Apr-2007 Chris Lattner <sabre@nondot.org> remove dead target hooks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35847 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b445d0cbb9b299ba8ec7be2494e35c501b6d3a93 10-Apr-2007 Chris Lattner <sabre@nondot.org> remove some dead target hooks, subsumed by isLegalAddressingMode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35840 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
54e2b142be6ac759e87dde8a643a7beaff0365df 09-Apr-2007 Anton Korobeynikov <asl@math.spbu.ru> Use integer log for metric calculation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
efc366263659db05ddc5e14532946cb9213bcdd6 09-Apr-2007 Jeff Cohen <jeffc@jolt-lang.org> Unbreak VC++ build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35817 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4198c58c716cbe4516ac3a1a407a3cd52548bc3b 09-Apr-2007 Anton Korobeynikov <asl@math.spbu.ru> Next stage into switch lowering refactoring
1. Fix some bugs in the jump table lowering threshold
2. Implement much better metric for optimal pivot selection
3. Tune thresholds for different lowering methods
4. Implement shift-and trick for lowering small (<machine word
length) cases with few destinations. Good testcase will follow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35816 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5694b6e90eaf94fa7a21f101a8e4424d813a85ce 09-Apr-2007 Reid Spencer <rspencer@reidspencer.com> For PR1146:
Adapt handling of parameter attributes to use the new ParamAttrsList class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35814 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1a6acc214dc066ea08365b605e109203e9164068 09-Apr-2007 Chris Lattner <sabre@nondot.org> implement CodeGen/X86/inline-asm-x-scalar.ll:test3


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35802 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ff33cc4d08a115e40b8ad0caabfe971cd9a8351a 09-Apr-2007 Chris Lattner <sabre@nondot.org> add some assertions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35800 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0ebe9c132c6b9c74b334f0c7503e702b499575d5 09-Apr-2007 Chris Lattner <sabre@nondot.org> Fix a bug introduced with my previous patch, where it didn't correctly handle
instructions which replace themselves when FI's are rewritten (common on ppc).
This fixes CodeGen/PowerPC/2006-10-17-ppc64-alloca.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35789 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
d2eae62e93fc6e398263a952609b6ea60a204802 09-Apr-2007 Chris Lattner <sabre@nondot.org> Fix CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll and PR1308:
some instructions can have multiple frame indices in them. If this happens,
rewrite all of them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35785 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
4b993b19f9837fdf2db55a3e042e8adab3d63c26 09-Apr-2007 Chris Lattner <sabre@nondot.org> Fix PR1316


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35783 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
921169b103497001e1d22927f4fd1682d43eba57 09-Apr-2007 Chris Lattner <sabre@nondot.org> Fix for CodeGen/X86/2007-04-08-InlineAsmCrash.ll and PR1314


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e303ac9052b9d03eff236469eb560e5b5da7fae2 06-Apr-2007 Chris Lattner <sabre@nondot.org> minor comment fix


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3f108cb5558a80a63711114d819358f19773c057 05-Apr-2007 Reid Spencer <rspencer@reidspencer.com> Change the bit_part_select (non)implementation from "return 0" to abort.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35679 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
addd11d98ee3a3013c66d3fd25ee2cfb09b3c7bd 05-Apr-2007 Reid Spencer <rspencer@reidspencer.com> Implement the llvm.bit.part_select.iN.iN.iN overloaded intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35678 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
5502bf67cd49221583c15472150905ce13184d36 04-Apr-2007 Anton Korobeynikov <asl@math.spbu.ru> Properly emit range comparisons for switch cases, where neighbour cases
go to the same destination. Now we're producing really good code for
switch-lower-feature.ll testcase


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35672 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9193514e2e3e599e241220b72bc9add25a80a8fd 04-Apr-2007 Evan Cheng <evan.cheng@apple.com> Re-materialize all loads from fixed stack slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35660 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
710216275b93b332bc69f41a1d4553197b64edf8 04-Apr-2007 Evan Cheng <evan.cheng@apple.com> Trivially re-materializable instructions have spill weights that are half of what it would be otherwise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35658 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
595b6d121cbbae3f58e508ae928b4ed917e686b6 03-Apr-2007 Evan Cheng <evan.cheng@apple.com> Bad bad bug. findRegisterUseOperand() returns -1 if a use if not found.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35618 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
c9dc11457809b6641de853af2261721a97ad1f26 02-Apr-2007 Scott Michel <scottm@aero.org> 1. Insert custom lowering hooks for ISD::ROTR and ISD::ROTL.

2. Help DAGCombiner recognize zero/sign/any-extended versions of ROTR and ROTL
patterns. This was motivated by the X86/rotate.ll testcase, which should now
generate code for other platforms (and soon-to-come platforms.) Rewrote code
slightly to make it easier to read.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
bcfd4665b5597ed1ba679584a69080396d68bcf9 02-Apr-2007 Evan Cheng <evan.cheng@apple.com> Ugh. Copy coalescer does not update register numbers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35600 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
dc1966e6bac9d323e18db2e18d955885e0edd702 02-Apr-2007 Reid Spencer <rspencer@reidspencer.com> For PR1297:
Make sure that the CTPOP result is casted to i32 as the bit counting
intrinsics all return i32 now (this affects CTLZ and CTTZ as well).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35567 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
e9391fd9b52e93717b365bdd05c471101323a4df 01-Apr-2007 Reid Spencer <rspencer@reidspencer.com> For PR1297:
Support overloaded intrinsics bswap, ctpop, cttz, ctlz.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35547 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
a4f9c4d29affaae0b4a3315ffff20e9130ecd17f 01-Apr-2007 Reid Spencer <rspencer@reidspencer.com> For PR1297:
Adjust for changes in the bit counting intrinsics. They all return i32
now so we have to trunc/zext the DAG node accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
577cc32d9a1af6ad3f6adf8b6de072b9ee1c9a8b 01-Apr-2007 Reid Spencer <rspencer@reidspencer.com> For PR1297:
Change getOperationName to return std::string instead of const char*


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c8d288f8fa9e46199a29e1954550c980f184bd1c 31-Mar-2007 Chris Lattner <sabre@nondot.org> move a bunch of code out of the sdisel pass into its own opt pass "codegenprepare".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35529 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
electionDAG/SelectionDAGISel.cpp
d2f340b746e54fca27b654fd6740973fdf6b85f1 31-Mar-2007 Chris Lattner <sabre@nondot.org> switch TL::getValueType to use MVT::getValueType.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35527 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
31442f9dc5512b6a29cdb332b12ae09a1c9e8176 31-Mar-2007 Chris Lattner <sabre@nondot.org> Add a -print-lsr-output option to LLC, to print the output of the LSR pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35522 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
1436bb657d22b01fd9a526ee7f9b2cb880c064a7 31-Mar-2007 Chris Lattner <sabre@nondot.org> add one addressing mode description hook to rule them all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35520 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
2041a0ef7544ec5ceece9cabd3963cc887861c1d 30-Mar-2007 Dale Johannesen <dalej@apple.com> Fix incorrect combination of different loads. Reenable zext-over-truncate
combination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35517 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
7cb33c86522d05a5b10757e7b1593488e28a2431 30-Mar-2007 Evan Cheng <evan.cheng@apple.com> Don't add the same MI to register reuse "last def/use" twice if it reads the
register more than once.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35513 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
2f524575396b740b8bdae076b5711e602e82f834 30-Mar-2007 Evan Cheng <evan.cheng@apple.com> Bug fix for PR1279. When isDead is propagate by copy coalescing, we keep length
of dead def live interval at 1 to avoid multiple def's targeting the same
register. The previous patch missed a case where the source operand is live-in.
In that case, remove the whole interval.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35512 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b0b6c76ffe71fc5d16a38b831ef0eddec02ddbe3 29-Mar-2007 Evan Cheng <evan.cheng@apple.com> Disable load width reduction xform of variant (zext (truncate load x)) for
big endian targets until llvm-gcc build issue has been resolved.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35449 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
974777868cfaaac6655ce00fae8bae0a000dd4a2 29-Mar-2007 Evan Cheng <evan.cheng@apple.com> New entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35445 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
197d19d11c949743c29d3996e391ba0caeae040d 28-Mar-2007 Evan Cheng <evan.cheng@apple.com> Notes on re-materialization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35420 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
2005a02f321c315c1d6dcbe482024999b48b1c10 28-Mar-2007 Evan Cheng <evan.cheng@apple.com> Move rematerialization out of beta.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35419 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7aff11a1eddcebe9936e14836cd527c46acde651 28-Mar-2007 Evan Cheng <evan.cheng@apple.com> Scale 1 is always ok.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35407 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
caaf69107ece8bd9864fed4d64e2a84fa5f8cd4b 28-Mar-2007 Evan Cheng <evan.cheng@apple.com> Remove isLegalAddressImmediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35406 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
baeccc8741958c0d27f1ba1d162468f615b565ac 28-Mar-2007 Evan Cheng <evan.cheng@apple.com> GEP index sinking fixes:
1) Take address scale into consideration. e.g. i32* -> scale 4.
2) Examine all the users of GEP.
3) Generalize to inter-block GEP's (no longer uses loopinfo).
4) Don't do xform if GEP has other variable index(es).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35403 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d592a28ca1506f2ccd6384679d87cce4b4fd874a 28-Mar-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1279. Dead def has a live interval of length 1. Copy coalescing should
not violate that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35396 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
dd433210797bc13513989a033e488d4e19442723 27-Mar-2007 Anton Korobeynikov <asl@math.spbu.ru> Remove dead code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35380 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b17b08d1f2cdbc3aba28e31755d7a5c3c55e4c3a 27-Mar-2007 Anton Korobeynikov <asl@math.spbu.ru> Split big monster into small helpers. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35379 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d0083bc5eccd2f776788cb67e589edb456e59a7e 27-Mar-2007 Evan Cheng <evan.cheng@apple.com> SDISel does not preserve all, it changes CFG and other info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35376 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
018d6e153768b382ac663164d91e2ea539e7cb0e 27-Mar-2007 Evan Cheng <evan.cheng@apple.com> Don't call getOperandConstraint() if operand index is greater than
TID->numOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35375 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
ad7ccf34b5de14bd2b9ddc8072d14582a2ce29d9 27-Mar-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1266. Don't mark a two address operand IsKill.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35365 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
32eb1f1ca4220d2f24916e587ad7e8574d7d82a1 27-Mar-2007 Evan Cheng <evan.cheng@apple.com> Change findRegisterUseOperand() to return operand index instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35363 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
c6b9ef80a890fcf75f18cabc3fe2d5f9ef2faaf5 27-Mar-2007 Dale Johannesen <dalej@apple.com> Fix reversed logic in getRegsUsed. Rename RegStates to RegsAvailable to
hopefully forestall similar errors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35362 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
15213b77cfb1f725ebe199b4d68b79407d9e3a84 26-Mar-2007 Evan Cheng <evan.cheng@apple.com> SIGN_EXTEND_INREG requires one extra operand, a ValueType node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3a84b9baf67c938454840d10d9e53269c755cd3e 25-Mar-2007 Anton Korobeynikov <asl@math.spbu.ru> First step of switch lowering refactoring: perform worklist-driven
strategy, emit JT's where possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35338 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5df99b376f38a2a0aaa2fc63254cf0306eef3c1b 25-Mar-2007 Chris Lattner <sabre@nondot.org> Implement support for vector operands to inline asm, implementing
CodeGen/X86/2007-03-24-InlineAsmVectorOp.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35332 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c13dd1cf4c0d83ac3ed2a6b0c36fab72e9d6c6e5 25-Mar-2007 Chris Lattner <sabre@nondot.org> implement initial support for the silly X constraint. Testcase here: CodeGen/X86/2007-03-24-InlineAsmXConstraint.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35327 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
065421f99fc155c3910a77c3a47de99f3f6af4d0 25-Mar-2007 Chris Lattner <sabre@nondot.org> Implement CodeGen/X86/2007-03-24-InlineAsmMultiRegConstraint.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35324 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
4234f57fa02b1f04a9f52a7b3c2aa22d32ac521c 25-Mar-2007 Chris Lattner <sabre@nondot.org> switch TargetLowering::getConstraintType to take the entire constraint,
not just the first letter. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35322 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
82dcb4fe23686784a5ad6379860970f1146db50d 24-Mar-2007 Chris Lattner <sabre@nondot.org> don't rely on ADL


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35299 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
dae54ce7fc96be8d8d5d3a5afff856bbdf1e81a9 24-Mar-2007 Evan Cheng <evan.cheng@apple.com> Adjust offset to compensate for big endian machines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35293 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e177e307fce9cf543b8f0b7a7963cc0328c5f362 23-Mar-2007 Evan Cheng <evan.cheng@apple.com> Make sure SEXTLOAD of the specific type is supported on the target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35289 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b37b80ce4669c41dcebaeb227b15f552b2c24210 23-Mar-2007 Evan Cheng <evan.cheng@apple.com> Also replace uses of SRL if that's also folded during ReduceLoadWidth().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35286 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0b063def9809ed59797fd40a616665ac3e675657 23-Mar-2007 Evan Cheng <evan.cheng@apple.com> A couple of bug fixes for reducing load width xform:
1. Address offset is in bytes.
2. Make sure truncate node uses are replaced with new load.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35274 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ecb7a77885b174cf4d001a9b48533b3979e7810d 22-Mar-2007 Dan Gohman <gohman@apple.com> Change uses of Function::front to Function::getEntryBlock for readability.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35265 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c88138fb5e0aa0bcbc95d6c3352e08cfdfcfecef 22-Mar-2007 Evan Cheng <evan.cheng@apple.com> More opportunities to reduce load size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2c3535d2a6738d154914a59f272fac45e50b706b 22-Mar-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1257. Bug in live range shortening as a result of copy coalescing
where the destination is dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35252 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
fa4bce2b76c8557cfd0794beef86efe5fb0087fa 21-Mar-2007 Dale Johannesen <dalej@apple.com> repair x86 performance, dejagnu problems from previous change


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35245 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
007b69eeaa59fef76acdf38726cec13862f9dd0c 21-Mar-2007 Evan Cheng <evan.cheng@apple.com> fold (truncate (srl (load x), c)) -> (smaller load (x+c/vt bits))


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35239 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c3c70881cf7457535182add96d0ea96a3a12e9f2 20-Mar-2007 Evan Cheng <evan.cheng@apple.com> Potential spiller improvement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35228 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
8e59e163db8cd3e7b4c96e438fbedf78bff06707 20-Mar-2007 Dale Johannesen <dalej@apple.com> do not share old induction variables when this would result in invalid
instructions (that would have to be split later)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35227 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
69cb9b78f11d505f4351a269fc90e7b77fcda437 20-Mar-2007 Dale Johannesen <dalej@apple.com> maintain LiveIn when splitting blocks (register scavenging needs it)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35226 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
egisterScavenging.cpp
c01a53007a4f4f9a601f1cc83ff4e2935405b905 20-Mar-2007 Jeff Cohen <jeffc@jolt-lang.org> Fix some VC++ warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35224 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
a0a26b7454ae6e7a729b4a47ee1b1e37c7c71858 20-Mar-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Code clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35220 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
29a68fb5b733119dd8295a4f7c7d069b9f78f0a3 20-Mar-2007 Evan Cheng <evan.cheng@apple.com> Minor bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35219 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8334b9fa3bdfca1cc3c85b4156b165ed3f5f8c99 20-Mar-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> CopyToReg source operand can be a physical register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35213 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
2638e1a6b9e3c0e22b398987e1db99bee81db4fb 20-Mar-2007 Evan Cheng <evan.cheng@apple.com> First cut trivial re-materialization support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35208 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
irtRegMap.cpp
irtRegMap.h
757072d954937514585b5c213f01f851d31826a1 19-Mar-2007 Evan Cheng <evan.cheng@apple.com> Remove -reduce-joining-phys-regs options. Make it on by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35165 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
79b098445b93e551dba79aeb9584ee24be0d3dae 19-Mar-2007 Evan Cheng <evan.cheng@apple.com> Minor bug fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35153 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cf596c54d4089ef23ce00be04bbb674d3ae2e0a6 18-Mar-2007 Evan Cheng <evan.cheng@apple.com> - Merge UsedBlocks info after two virtual registers are coalesced.
- Use distance to closest use to determine whether to abort coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35141 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e951cd1647834c1c6877ca9a699ef6b00a2d0ce9 18-Mar-2007 Evan Cheng <evan.cheng@apple.com> Keep UsedBlocks info accurate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35140 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
woAddressInstructionPass.cpp
c6a2410d58916b8a8a1b26f2448b903d12e77f2f 17-Mar-2007 Evan Cheng <evan.cheng@apple.com> Track the BB's where each virtual register is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35135 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
ba1a3df608a14ca37ca944f4c942c202e919ea80 17-Mar-2007 Evan Cheng <evan.cheng@apple.com> Joining a live interval of a physical register with a virtual one can turn out
to be really bad. Once they are joined they are not broken apart. Also, physical
intervals cannot be spilled!

Added a heuristic as a workaround for this. Be careful coalescing with a
physical register if the virtual register uses are "far". Check if there are
uses in the same loop as the source (copy instruction). Check if it is in the
loop preheader, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35134 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
db264ae07f451cbd5bb33d528ae00e4910ce386b 17-Mar-2007 Evan Cheng <evan.cheng@apple.com> Use SmallSet instead of std::set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35133 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2edd5638255dbbcdad55ca724953e155ab13b5d1 17-Mar-2007 Evan Cheng <evan.cheng@apple.com> If sdisel has decided to sink GEP index expression into any BB. Replace all uses
in that BB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35132 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9e2d86add8ae62026d2f07ea1b33d6e1ae418449 16-Mar-2007 Evan Cheng <evan.cheng@apple.com> Turn on GEP index sinking by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35127 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9f5ead9601e110b2e67123d73647cbd88308c379 16-Mar-2007 Evan Cheng <evan.cheng@apple.com> Stupid bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35126 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3cd4e5095b06b2be94a0cab3060272aae3460167 16-Mar-2007 Evan Cheng <evan.cheng@apple.com> Sink a binary expression into its use blocks if it is a loop invariant
computation used as GEP indexes and if the expression can be folded into
target addressing mode of GEP load / store use types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35123 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
14245a9d62d9a785a5d6590516380b300bab4957 16-Mar-2007 Evan Cheng <evan.cheng@apple.com> Added isLegalAddressExpression hook to test if the given expression can be
folded into target addressing mode for the given type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35121 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
56fdd7af884a35673fb6dd3e01333960922c3ac2 15-Mar-2007 Evan Cheng <evan.cheng@apple.com> Debugging output stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35117 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c6deb3d44707de57e82e16642ab845bc8b9e9e01 14-Mar-2007 Evan Cheng <evan.cheng@apple.com> Estimate a cost using the possible number of scratch registers required and use
it as a late BURR scheduling tie-breaker.
Intuitively, it's good to push down instructions whose results are liveout so
their long live ranges won't conflict with other values which are needed inside
the BB. Further prioritize liveout instructions by the number of operands which
are calculated within the BB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35109 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
61230d18d21a5dca1378e994f43934e4b314e595 14-Mar-2007 Evan Cheng <evan.cheng@apple.com> Try schedule def + use closer whne Sethi-Ullman numbers are the same.
e.g.
t1 = op t2, c1
t3 = op t4, c2
and the following instructions are both ready.
t2 = op c3
t4 = op c4

Then schedule t2 = op first.
i.e.
t4 = op c4
t2 = op c3
t1 = op t2, c1
t3 = op t4, c2

This creates more short live intervals which work better with the register
allocator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35089 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
c289faf01559584be1ead2574631d54940a4dd4f 13-Mar-2007 Evan Cheng <evan.cheng@apple.com> More flexible TargetLowering LSR hooks for testing whether an immediate is a legal target address immediate or scale.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35076 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e2ee99620fa6e428292737349d8e28bbcdcdaa0b 09-Mar-2007 Evan Cheng <evan.cheng@apple.com> If a virtual register is already marked alive in this block, that means it is
alive in one of the successor block. Do not add it to the kill list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35041 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
219705131d5f6911d4b40fcfdcc614a7f3a5e035 09-Mar-2007 Evan Cheng <evan.cheng@apple.com> Print preds / succs BB numbers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35040 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
f0e3bb13337f59c7f158e4af5aa9a11a2e76fa9d 09-Mar-2007 Evan Cheng <evan.cheng@apple.com> Avoid variable shadowing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35039 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
6dfc6806bf4091cc736312a3ceca6225f81ef63e 08-Mar-2007 Chris Lattner <sabre@nondot.org> implement support for floating point constants used as inline asm memory operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35033 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b4ddac9bf7b9d4aa7267702f375647b370ad32f4 08-Mar-2007 Chris Lattner <sabre@nondot.org> make this fail even in non-assert builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35025 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d0b82b301d700217a716526f9329bb031e0d6578 07-Mar-2007 Anton Korobeynikov <asl@math.spbu.ru> Refactoring of formal parameter flags. Enable properly use of
zext/sext/aext stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35008 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
6a143590b3e283321af981abc4336f35efea2fed 07-Mar-2007 Anton Korobeynikov <asl@math.spbu.ru> Cleanup: make SetCounter an instance variable


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35007 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
83060c544bde0e2e9798829516040c76c5dd5013 07-Mar-2007 Evan Cheng <evan.cheng@apple.com> Avoid combining indexed load further.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35005 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a6199c87c293d937b1e57549864345e64e6c6e8b 07-Mar-2007 Anton Korobeynikov <asl@math.spbu.ru> Fix DWARF debugging information on x86/Linux and (hopefully)
Mingw32/Cygwin targets. This fixes PR978


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35000 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
caddd590f72376aaac531c1004be0535b460992a 06-Mar-2007 Evan Cheng <evan.cheng@apple.com> Minor bug fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34985 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
0f54dcbf07c69e41ecaa6b4fbf0d94956d8e9ff5 06-Mar-2007 Devang Patel <dpatel@apple.com> Now LoopStrengthReduce is a LoopPass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34984 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
edf2e8da256496c19390cfd46da80746373e9989 06-Mar-2007 Chris Lattner <sabre@nondot.org> big endian 32-bit systems (e.g. ppc32) want to return the high reg first, not
the lo-reg first. This is fallout from my ppc calling conv change yesterday,
it fixes test/ExecutionEngine/2003-05-06-LivenessClobber.llx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34983 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fb269cf3e7893e1e5265db818e7ce78b6b2f75b5 06-Mar-2007 Anton Korobeynikov <asl@math.spbu.ru> Small eye-candy: use asciz directive everywhere, where possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34981 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
87f8bf65dd869348dd4d2884a417e2e22ae4f981 06-Mar-2007 Evan Cheng <evan.cheng@apple.com> If target decides to create an emergency spill slot, make sure it's closest to SP or frame pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34965 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
b74a3e6fda768eb6160559e025f8b65c46db46d9 06-Mar-2007 Evan Cheng <evan.cheng@apple.com> Register scavenger is now capable of scavenging. It spills a register whose use of furthest away to make it available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34964 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
0db79d86de74c315813d60f51ed842c0ba0f34dd 06-Mar-2007 Anton Korobeynikov <asl@math.spbu.ru> Enumerate SDISel formal parameter attributes. Make use of new
enumeration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34960 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ca5183d445954a9b2a570d6bbba1bc2b00ad6442 05-Mar-2007 Jeff Cohen <jeffc@jolt-lang.org> Unbreak VC++ build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b654176cb4d58c8784043fbedd4584f3f0eedc07 04-Mar-2007 Chris Lattner <sabre@nondot.org> fold away addc nodes when we know there cannot be a carry-out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34913 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
bcf24844508a6acdc6d3078cc4d24978fcd0cca5 04-Mar-2007 Chris Lattner <sabre@nondot.org> generalize


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34910 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
91153686f04bafe3b10c99edb1735444953f7517 04-Mar-2007 Chris Lattner <sabre@nondot.org> canonicalize constants to the RHS of addc/adde. If nothing uses the carry out of
addc, turn it into add.

This allows us to compile:

long long test(long long A, unsigned B) {
return (A + ((long long)B << 32)) & 123;
}

into:

_test:
movl $123, %eax
andl 4(%esp), %eax
xorl %edx, %edx
ret

instead of:
_test:
xorl %edx, %edx
movl %edx, %eax
addl 4(%esp), %eax ;; add of zero
andl $123, %eax
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34909 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
175415e116feef0def0f7c084cca3646a403412b 04-Mar-2007 Chris Lattner <sabre@nondot.org> eliminate some ops if they have an undef RHS


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34908 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d7f3de655b205a0551991ecbd0ce9000568b389e 04-Mar-2007 Reid Spencer <rspencer@reidspencer.com> Remove unneeded header file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34903 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
8b2d42c9494a42c8b5b9e5c2e46c8001b89e75b5 04-Mar-2007 Chris Lattner <sabre@nondot.org> Fix CodeGen/Generic/fpowi-promote.ll and PR1239


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34893 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a9569f10de686119ff34b89e102b5a3cbafdf195 03-Mar-2007 Chris Lattner <sabre@nondot.org> Add an expand action for ISD label which just deletes the label.
This "fixes" PR1238.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34890 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a7288df62db835ba4958d6e7c7fca237682840db 03-Mar-2007 Evan Cheng <evan.cheng@apple.com> Only propagate IsKill if the last use is a kill.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34878 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
af8063886966fd1f59d170335902d6da4e3fe1aa 03-Mar-2007 Nate Begeman <natebegeman@mac.com> http://llvm.org/bugs/show_bug.cgi?id=1237


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34875 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
a16d4429e49b5406c0af905953b5eae13b9cf47c 03-Mar-2007 Evan Cheng <evan.cheng@apple.com> Watch out for cases like this:

entry (0x8b056f0, LLVM BB @0x8b01b30, ID#0):
Live Ins: %r0 %r1 %r2 %r3
%reg1032 = tMOVrr %r3<kill>
%reg1033 = tMOVri8 1
%reg1034 = tMOVri8 0
tCMPi8 %reg1029<kill>, 0
tBcc mbb<entry,0x8b06a10>, 0
Successors according to CFG: 0x8b06980 0x8b06a10

entry (0x8b06980, LLVM BB @0x8b01b30, ID#12):
Predecessors according to CFG: 0x8b056f0
%reg1036 = tMOVrr %reg1034<kill>
Successors according to CFG: 0x8b06a10

entry (0x8b06a10, LLVM BB @0x8b01b30, ID#13):
Predecessors according to CFG: 0x8b056f0 0x8b06980
%reg1024<dead> = tMOVrr %reg1030<kill>
...

reg1030 and r1 have already been joined. When reg1024 and reg1030 are joined,
r1 live range from function entry to the tMOVrr instruction are dead. Eliminate
r1 from the livein set of the entry BB, not the BB where the copy is.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34866 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5de3b7f35131b3c17e0b3c711d47ab3fb2c1e9be 02-Mar-2007 Evan Cheng <evan.cheng@apple.com> Mark dead def as unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34844 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
7b466d048110ec149446bfb9856f79b7b17cf5d3 02-Mar-2007 Evan Cheng <evan.cheng@apple.com> Dead live-in detection bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34843 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6b448092bff8d149769becaa14415bc1a3857e33 02-Mar-2007 Evan Cheng <evan.cheng@apple.com> - Keep track all def and uses of stack slot available in register.
- Available value use may be deleted (e.g. noop move).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34841 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
c3dd314b78c22007243c98f3f3521c7fdaa67c1b 02-Mar-2007 Evan Cheng <evan.cheng@apple.com> Invalidate last use of a reused register if the use is a deleted noop copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34839 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
0102ca8f5a79def51018675048172822113e352f 01-Mar-2007 Jim Laskey <jlaskey@mac.com> Emit eh filter info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34805 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
59e8434a855737ce3324e4b1acf5e9f12b57a2fc 01-Mar-2007 Jim Laskey <jlaskey@mac.com> Collect eh filter info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34804 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
0b4711bd94e0723735848ad999bccfb1fb61eeb9 01-Mar-2007 Jim Laskey <jlaskey@mac.com> Lower eh filter intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34802 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
a81a5ab35793a4c46235367d73bf3e7569535a4c 01-Mar-2007 Evan Cheng <evan.cheng@apple.com> Delete register scavenger when done with it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34786 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
5196b3680cf8df32b6c763e3d97e963e45150e5a 01-Mar-2007 Evan Cheng <evan.cheng@apple.com> Add a version of FindUnusedReg that restrict search to a specific set of registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34784 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
c0ba1bc49b2b544159425e3c4769a8bbf1635a3e 01-Mar-2007 Evan Cheng <evan.cheng@apple.com> A restore is promoted to copy (or deleted entirely), remove the kill from the last use of the targetted register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34773 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
23322d1427e319089f5098d02cefbc7d8446d746 01-Mar-2007 Evan Cheng <evan.cheng@apple.com> Interface clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34772 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
a3756ee7fe384210eddcfd66e2934439960b13a1 01-Mar-2007 Evan Cheng <evan.cheng@apple.com> Interface clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34770 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
8e92b4bae298d079e28f4166d335cc662a50d6cc 01-Mar-2007 Evan Cheng <evan.cheng@apple.com> Oops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34768 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
88d1f587d2205b4275dc4c0319a5f2d4d1e6fd42 01-Mar-2007 Evan Cheng <evan.cheng@apple.com> Track all joined registers and eliminate unneeded kills after all joining are done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34767 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8782d481a3c720304540254a7b71d25bbe7cbf49 28-Feb-2007 Jim Laskey <jlaskey@mac.com> Chain is on second operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34759 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3f09fc2ff8d010b39f9b5315e4b89307991cc636 28-Feb-2007 Jim Laskey <jlaskey@mac.com> Handle mix of personalities.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34752 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
63f3e3fa1d67f7696298373d43a2e064b7a0d1c2 28-Feb-2007 Jim Laskey <jlaskey@mac.com> Provide a more meaningful name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34751 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
64ce0ca90d358da4984a089404dc2dabe45d05f1 28-Feb-2007 Jim Laskey <jlaskey@mac.com> MERGE_VALUES unnecessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34750 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a0a6278c7cf6dc7338e38d36e6ab4a96b688e46e 28-Feb-2007 Nate Begeman <natebegeman@mac.com> Fix a typo, thanks Bill!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34741 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
fec910c3b9ba5790e5a627e1801fce25fbdddbaa 28-Feb-2007 Nate Begeman <natebegeman@mac.com> More Mach-O writer improvements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34740 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
achOWriter.h
66baf26fe0c229142d483030e1633f656822c5ee 28-Feb-2007 Chris Lattner <sabre@nondot.org> add methods for analysis of call results and return nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34738 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
fb39f99fa4cdeab24c1b462cdd954a7d792323b7 28-Feb-2007 Chris Lattner <sabre@nondot.org> add methods to analyze calls and formals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34736 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
e5876ce21a23aeef913b25ffc09ad3829e6ade1e 28-Feb-2007 Chris Lattner <sabre@nondot.org> add a newline at end of file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34735 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
36230cdda48edf6c634f2dcf69f9d78ac5a17377 28-Feb-2007 Evan Cheng <evan.cheng@apple.com> Make requiresRegisterScavenging determination on a per MachineFunction basis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34711 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
37f15a6d488d256d371f6c39ab83837bc9c0772d 28-Feb-2007 Evan Cheng <evan.cheng@apple.com> MRegisterInfo disowns RegScavenger. It's immutable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34706 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
898218cc5edecea1275ee266b2cd13313ea6b67b 27-Feb-2007 Evan Cheng <evan.cheng@apple.com> Some more code clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34700 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
8cab162e03d7ae0638a3ab51e92ac228abe17d55 27-Feb-2007 Evan Cheng <evan.cheng@apple.com> Oops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34698 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
3f6fd87473c3fc7d2e99a43b17140d70daa7148c 27-Feb-2007 Evan Cheng <evan.cheng@apple.com> Let MRegisterInfo now owns RegScavenger.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34691 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
bb6fb3357d6c1e9ffb15de4893e59e3bbdd600a3 27-Feb-2007 Evan Cheng <evan.cheng@apple.com> RegScavenger interface change to make it more flexible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34690 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
13513b7a50f5b4497c276796e00ef9bae730d8e0 27-Feb-2007 Chris Lattner <sabre@nondot.org> Minor refactoring of CC Lowering interfaces


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34656 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
362e98a5f5cf1919ac6435ff5b630b58ecd95fc5 27-Feb-2007 Chris Lattner <sabre@nondot.org> move CC Lowering stuff to its own public interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34655 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/CallingConvLower.cpp
ed570dedad945e1fe9a4bfeaa47276d875f1feed 27-Feb-2007 Evan Cheng <evan.cheng@apple.com> forward() should not increment internal iterator. Its client may insert instruction between now and next forward() call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34649 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egisterScavenging.cpp
edeffb37dc41591b3d3943a5c02c04e55d348524 26-Feb-2007 Evan Cheng <evan.cheng@apple.com> Joining an interval with a dead copy instruction. Shorten the live range to the last use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34645 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
2255887574250bb0bc577fcfc0c65b3f617e8c3c 26-Feb-2007 Chris Lattner <sabre@nondot.org> Fold (sext (truncate x)) more aggressively, by avoiding creation of a
sextinreg if not needed. This is useful in two cases: before legalize,
it avoids creating a sextinreg that will be trivially removed. After legalize
if the target doesn't support sextinreg, the trunc/sext would not have been
removed before.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34621 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ddf53e45b29087c57e0c864c93f86d5e99182d55 26-Feb-2007 Chris Lattner <sabre@nondot.org> track signedness of formal argument, though we have a fixme here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
183f47fb1aa30ba9a56e645c35a7d798cf7e467c 25-Feb-2007 Jim Laskey <jlaskey@mac.com> Fix for PR1224.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
251db1890c1fe03d02ee878ada8129537844d031 25-Feb-2007 Chris Lattner <sabre@nondot.org> optimize duplicate ValueMap lookups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34599 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
de4e942faa12a52242915e3334c25f19687f36e2 25-Feb-2007 Evan Cheng <evan.cheng@apple.com> A couple of more places where a register liveness has been extended and its last kill should be updated accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34597 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
0badfea274f9612780caccbad6e1870f39ed9f40 25-Feb-2007 Evan Cheng <evan.cheng@apple.com> Add an assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34596 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
48ef398ebd2f2b992c81bebd5159de119ce62c80 25-Feb-2007 Evan Cheng <evan.cheng@apple.com> Fix a couple of bugs related IsDead back propagation during coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34595 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
16191f03337645dc1638b7489d71d685e6c07cdd 25-Feb-2007 Evan Cheng <evan.cheng@apple.com> If the liveinterval of the source instruction has been extended, remove the IsKill marker.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34594 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
bc025fbb64038b9f2c6615dd2d090c1c2ba0a91c 25-Feb-2007 Evan Cheng <evan.cheng@apple.com> Only add liveinterval to livein set if it isn't assigned a stack slot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34593 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
753d9cb50e1d2e78b9a82185dc64f0e672560775 25-Feb-2007 Chris Lattner <sabre@nondot.org> fold trivial token factor nodes. This allows us to compile
test/CodeGen/X86/fp-stack-ret.ll into:

movl 4(%esp), %eax
fldl (%eax)
ret

instead of:

subl $12, %esp
movl 16(%esp), %eax
movsd (%eax), %xmm0
movsd %xmm0, (%esp)
fldl (%esp)
addl $12, %esp
ret

by eliminating a token factor that blocked a check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6618039f9f1f2e41fe2742d83007c68bdebc3656 25-Feb-2007 Chris Lattner <sabre@nondot.org> initialize a instance variable


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34567 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7a1de987a69a059ba67779ee8fca3b391e8aa253 24-Feb-2007 Jim Laskey <jlaskey@mac.com> Deal with cases when MMI is not requested.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34556 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e80873ee75a96916176c505aa0e3242edf1204d3 24-Feb-2007 Jim Laskey <jlaskey@mac.com> Drop unused operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34555 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
01ca65b23e31a1dfac702cef9a2fc963347a3f71 24-Feb-2007 Chris Lattner <sabre@nondot.org> Fix CodeGen/Generic/2007-02-23-DAGCombine-Miscompile.ll and PR1219


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34551 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
50d25d7ff7326adef7c76ba79be3dd1d7240a81f 23-Feb-2007 Evan Cheng <evan.cheng@apple.com> Reuse extends the liveness of a register. Transfer the kill to the operand that reuse it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34536 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
1da20a71d1bbabc472f281208be77475550be751 23-Feb-2007 Jim Laskey <jlaskey@mac.com> Handle improper cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34535 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
da2295e631ae07788f7db53efa3bea6367e7656c 23-Feb-2007 Evan Cheng <evan.cheng@apple.com> Handle cases when joining live intervals of two virtual registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34534 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
403c45dfcc74585b02339b5f55f739672e3d141a 23-Feb-2007 Evan Cheng <evan.cheng@apple.com> Mark livein registers as being in used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34525 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
91e2390818080ae2b059e3ff850a9455858e4f7b 23-Feb-2007 Evan Cheng <evan.cheng@apple.com> A spill kills the register being stored. But it is later being reused by spiller, its live range has to be extended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34517 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
49dd06461a7e027a6c938f0570297d46f2f34218 23-Feb-2007 Evan Cheng <evan.cheng@apple.com> First potential client of register scavenger.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34516 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
76d7e76c15c258ec4a71fd75a2a32bca3a5e5e27 23-Feb-2007 Evan Cheng <evan.cheng@apple.com> Use findRegisterUseOperand to find a kill of particular register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34512 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
96fa612373e258120d351ed14361f964ad22f99d 23-Feb-2007 Evan Cheng <evan.cheng@apple.com> Initial check in of register scavenger. Its only current functionality is tracking live registers per MBB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34511 91177308-0d34-0410-b5e6-96231b3b80d8
egisterScavenging.cpp
30cac02a925c9d56613711b0e77099cb7252bc9b 23-Feb-2007 Evan Cheng <evan.cheng@apple.com> Remove unnecessary isKill properties if a live range has been lengthened due to coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34503 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
774b864f0e7f3812e7daddf8553649e995ce040a 22-Feb-2007 Jim Laskey <jlaskey@mac.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34502 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
5df3ad8b7ac9d676d357ed015946f6756d9181f4 22-Feb-2007 Jim Laskey <jlaskey@mac.com> Missing end of abbreviations - correction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34501 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
7b1b39d9bc6116e23a13668e0e38105e110fd383 22-Feb-2007 Jim Laskey <jlaskey@mac.com> Missing end of abbreviations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34500 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
9bb3c93af271449dcbfce9f7fb7442dd11d93813 22-Feb-2007 Jim Laskey <jlaskey@mac.com> Need to init.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34499 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
033c9715d9bf7ce59ad2e466bf0720811b34da08 22-Feb-2007 Jim Laskey <jlaskey@mac.com> Remove isAccessable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34497 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
a4e7cd947e378aa3ffe633be227138d8f859c9e3 22-Feb-2007 Jim Laskey <jlaskey@mac.com> Use exception flag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34496 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
f9b1cbc80d89b9a03d73b8b3c1703b344e1d9b70 22-Feb-2007 Jim Laskey <jlaskey@mac.com> Remove assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34494 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
cbfdb7b871ddb383c9b323d4b9fba112ad500214 22-Feb-2007 Jim Laskey <jlaskey@mac.com> Tighten up error checking of args.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34493 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
735b6f8cc3abe3d6939d44a39d2e512c32716538 22-Feb-2007 Jim Laskey <jlaskey@mac.com> Handle lowering invoke to call correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34492 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2bc210d99f5a7322a1ae84775eba351d9ab6ea85 22-Feb-2007 Jim Laskey <jlaskey@mac.com> Simplify lowering and selection of exception ops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34491 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b180aa17539e14a5430d020bbc7de83c79b7fc4b 21-Feb-2007 Jim Laskey <jlaskey@mac.com> Selection and lowering for exception handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34481 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
bacd30446332b55de93e8beda0154e3fbe254110 21-Feb-2007 Jim Laskey <jlaskey@mac.com> Exception handling support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34479 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
bda9b0ec7bd6974cebf751ecd23c5434b34054e9 21-Feb-2007 Jim Laskey <jlaskey@mac.com> Add support for changes in DwarfWriter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34478 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
02b3f5ec4ac120d14a63f7fd4f4388b7d0ab6c22 21-Feb-2007 Jim Laskey <jlaskey@mac.com> Make branch folding behave in the presence of landing pads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34476 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
9b25b8ca24d6df2e097741dcc15016772ee4eda7 21-Feb-2007 Jim Laskey <jlaskey@mac.com> Allow for live in registers for eh landing pads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34475 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
59667fe20379d65129ef5f3665e9f87e654c8623 21-Feb-2007 Jim Laskey <jlaskey@mac.com> Add structures used for collecting eh information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34473 91177308-0d34-0410-b5e6-96231b3b80d8
achineModuleInfo.cpp
788fb1c103f1d1b8ec7e7f96df01fbfc1a5005d9 21-Feb-2007 Evan Cheng <evan.cheng@apple.com> Out of bound reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34461 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
957840b3e14938fc86c306fda99ac039d1777a4c 21-Feb-2007 Evan Cheng <evan.cheng@apple.com> Use BitVector instead. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34460 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
667089de045cf8aee785ea57e49b8ebb0942b442 20-Feb-2007 Evan Cheng <evan.cheng@apple.com> Dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34435 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
b371f457b0ea4a652a9f526ba4375c80ae542252 19-Feb-2007 Evan Cheng <evan.cheng@apple.com> Re-apply my liveintervalanalysis changes. Now with PR1207 fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34428 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineInstr.cpp
egAllocLinearScan.cpp
a284cbf667e11660840dc7bae3ee9eeaa3c7cbd2 19-Feb-2007 Reid Spencer <rspencer@reidspencer.com> For PR1207:
Revert patches that caused the problem. Evan, please investigate and reapply
when you've discovered the problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34399 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineInstr.cpp
egAllocLinearScan.cpp
aa7976199c0dfe45f52f327b74fc547ad2c5fffd 17-Feb-2007 Evan Cheng <evan.cheng@apple.com> - Changes how function livein's are handled, they now have a start index of 0.
- When coalescing a copy MI, if its destination is "dead", propagate the
property to the source MI's destination if there are no intervening uses.
- Detect dead function live-in's and remove them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34383 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e1fd6828afee1cb3df1e1206aeb10cbb5021547f 17-Feb-2007 Evan Cheng <evan.cheng@apple.com> Do not add livein's to entry MBB twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34382 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
795d9509d5e11dcbbb355260d993b4a15c2be073 17-Feb-2007 Evan Cheng <evan.cheng@apple.com> Added removeLiveIn.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34381 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
094e3e553f57b877153828e420cd2dacfb2b364c 17-Feb-2007 Evan Cheng <evan.cheng@apple.com> Added findRegisterDefOperand().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34380 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e15764f28f10f86ad88c4391bb5619191609f6b4 17-Feb-2007 Evan Cheng <evan.cheng@apple.com> - Use MRegister::regsOverlap().
- Allow LiveVariables to track liveness of more registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34379 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
95ad943ed5b2212652b40ebcbb675fde67dc474a 17-Feb-2007 Chris Lattner <sabre@nondot.org> print target nodes nicely


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34369 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
9ff6ee85fe281c5686e0885eaa0c37ad5378ed52 17-Feb-2007 Chris Lattner <sabre@nondot.org> Implement i/n/s constraints correctly. This fixes
test/CodeGen/PowerPC/2007-02-16-InlineAsmNConstraint.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34368 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6b896cec8b703e08e5f3d809e086a39b6ebe6589 17-Feb-2007 Dale Johannesen <dalej@apple.com> Fixes PR 1200


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34359 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
bdf44b929f6bd0983b0f0df0d2ae66610e81e149 16-Feb-2007 Evan Cheng <evan.cheng@apple.com> Print <dead> def operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34343 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9fc508fdc482789c8f81da99a13c63b822c1a99d 16-Feb-2007 Evan Cheng <evan.cheng@apple.com> Add live-ins to every BB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34342 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
4c3a5f8ccba6680b948a1a234f123b4505e43529 16-Feb-2007 Dale Johannesen <dalej@apple.com> test commit (blank line)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34337 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
5d4a9f77314952af0638e7339bcd3f4f236c6098 15-Feb-2007 Chris Lattner <sabre@nondot.org> fix indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34307 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
0152829e89427a6c6cb22ff54dd580ccc4f4cc2a 15-Feb-2007 Chris Lattner <sabre@nondot.org> Apply B Scott Michel's patch for PR1184, which improves diagnostics in an
abort case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34306 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
61de82d8853a02fe39c47302432abb70a586704f 15-Feb-2007 Evan Cheng <evan.cheng@apple.com> Use BitVector instead of vector<bool> which can be extremely slow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34302 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLocal.cpp
ac9dcb94dde5f166ee29372385c0e3b695227ab4 15-Feb-2007 Reid Spencer <rspencer@reidspencer.com> For PR1195:
Change use of "packed" term to "vector" in comments, strings, variable
names, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
9d6565a5b1fbc4286d6ee638d8f47a3171a9ed7e 15-Feb-2007 Reid Spencer <rspencer@reidspencer.com> For PR1195:
Rename PackedType -> VectorType, ConstantPacked -> ConstantVector, and
PackedTyID -> VectorTyID. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34293 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achOWriter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
c661d61d82b2b512ad9670b248bbacb4eda5d293 14-Feb-2007 Chris Lattner <sabre@nondot.org> fix a warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34272 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
21840b1c5c8e0fcedf236f0c2b95e9e147859a8e 14-Feb-2007 Chris Lattner <sabre@nondot.org> Refix CodeGen/Generic/switch-lower.ll. In contrast to my previous patch,
this doesn't miscompile lots of programs :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34268 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d2b7cec527a0efa552628378ebca7a8ca63bb45d 14-Feb-2007 Chris Lattner <sabre@nondot.org> Generalize TargetData strings, to support more interesting forms of data.
Patch by Scott Michel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34266 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
achineFunction.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
4c948eb373779718e5be36d7674382b52114bf65 14-Feb-2007 Chris Lattner <sabre@nondot.org> implement expand of truncate. This allows truncates from i128 to i64 to
be supported on 32-bit hosts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34257 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f839ce7d03ce3ec6c7e36b71267f43a6b6aefeaa 14-Feb-2007 Chris Lattner <sabre@nondot.org> Fix PR1198, by adding initial i128 support. Patch by Dan Gohman.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34256 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
ae4f99d8430f06cfbc316f231e404201d288ef94 13-Feb-2007 Chris Lattner <sabre@nondot.org> revert my previous switch lowering change, which miscompiles a few programs.
This will break a dj test until I have time to investigate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34247 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cf8270a9941e697243bb9c91d5d8b2e1fc01a35c 13-Feb-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Add a space between // and the comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34244 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7aa47b69ca5f4feb6b106a50959e37822bd25b4f 13-Feb-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Add "original alignment" to function arguments flags.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34240 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
990b849abc9481b8c7a482019cd0d95fe2f2a3ea 13-Feb-2007 Chris Lattner <sabre@nondot.org> eliminate vector-related allocations


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34223 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
0c9f92e1ff64ee56724eae444a0442b02f83d0a8 13-Feb-2007 Evan Cheng <evan.cheng@apple.com> Allow any MachineBasicBlock (not just the entry block) to have live-in physical
registers. Make sure liveinterval analysis is correctly creating live ranges
for them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34217 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
818d42f1e81db75300223fedb75227c17ec0ef83 13-Feb-2007 Chris Lattner <sabre@nondot.org> Fix switch lowering to order cases in zext order, which is how we emit the
comparisons. This fixes an infinite loop on CodeGen/Generic/switch-lower.ll
and PR1197


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34216 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7f6b9d2f1a7d55f6a84a1e8078b895ce4ff66dae 10-Feb-2007 Chris Lattner <sabre@nondot.org> eliminate temporary vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34161 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achOWriter.cpp
b0c39a3b4d1daa93d339493751976944b6422fd5 10-Feb-2007 Chris Lattner <sabre@nondot.org> encapsulate the rest of the StructLayout members.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34157 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
b1919e2f08ecb37140af676fd2916f8d5ed7df3d 10-Feb-2007 Chris Lattner <sabre@nondot.org> Privatize StructLayout::MemberOffsets, adding an accessor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34156 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achOWriter.cpp
electionDAG/SelectionDAGISel.cpp
ad2070c667ebabf1650be63e6b3e0b411da86918 10-Feb-2007 Evan Cheng <evan.cheng@apple.com> Add function live-ins to entry block live-in set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34112 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
13d828567812041c1ca1817f4b66fce840903a1f 10-Feb-2007 Evan Cheng <evan.cheng@apple.com> Add live-ins to MachineBasicBlock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34111 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
15699fc5ed0378205f9705d35d019d9ff0cf200d 10-Feb-2007 Evan Cheng <evan.cheng@apple.com> Rename some variables to avoid confusion with SelectionDAGISel::BB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34110 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2e67781ef571f5daffd7e6c2f71750be122e0ac9 08-Feb-2007 Evan Cheng <evan.cheng@apple.com> Make use of TLI.SimplifySetCC() in LegalizeSetCCOperands().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34066 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fa1eb27b76ab1e0f78574bf52a432c84a4c1a520 08-Feb-2007 Evan Cheng <evan.cheng@apple.com> Move SimplifySetCC to TargetLowering and allow it to be shared with legalizer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34065 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
f50d09ad21dbb16e35460d63d23d331a2cac7a91 08-Feb-2007 Evan Cheng <evan.cheng@apple.com> Fixed a long standing spiller bug that's exposed by Thumb:

The code sequence before the spiller is something like:
= tMOVrr
%reg1117 = tMOVrr
%reg1078 = tLSLri %reg1117, 2

The it starts spilling:
%r0 = tRestore <fi#5>, 0
%r1 = tRestore <fi#7>, 0
%r1 = tMOVrr %r1<kill>
tSpill %r1, <fi#5>, 0
%reg1078 = tLSLri %reg1117, 2

It restores the value while processing the first tMOVrr. At this point, the
spiller remembers fi#5 is available in %r0. Next it processes the second move.
It restores the source before the move and spills the result afterwards. The
move becomes a noop and is deleted. However, a spill has been inserted and that
should invalidate reuse of %r0 for fi#5 and add reuse of %r1 for fi#5.
Therefore, %reg1117 (which is also assigned fi#5) should get %r1, not %r0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34039 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
04523eab6bbc5d55a6e3f3296ddd583c8ad5ebb1 08-Feb-2007 Bill Wendling <isanbard@gmail.com> Split the addPassesToEmitFile method up into two. This is so that we can
do some common stuff, then on our own add an object file writer (by calling
a concrete function), and then do some finishing stuff, if need be.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34032 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
8f84f1f30197dbaf87fd32b7de05dd91ae435cdb 08-Feb-2007 Bill Wendling <isanbard@gmail.com> Add function to create a file writer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34031 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
4b2ca1a3c4231cd05366565e91ce09ec9fc3d3c9 08-Feb-2007 Bill Wendling <isanbard@gmail.com> Moved from include/llvm/CodeGen to lib/CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34027 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.h
achOWriter.h
c2b2d6a7c9c76693a45f316ca1f167dd185b33e4 07-Feb-2007 Nate Begeman <natebegeman@mac.com> Fix a fixme by correctly calculating preferred alignments for functions,
based on the alignment of the symbol and the target data's preferred align
for that type.

Also, rename some arguments for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33984 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
c67da0cf13e2d671061449e8da4ffe102e5fc848 06-Feb-2007 Chris Lattner <sabre@nondot.org> Two fixes:
1. Memset takes an i32 for the value to set, not i8. This was causing GCC to
ICE all over the place (PR1183).
2. memcpy/memmove were not properly zext/trunc'ing the size in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33970 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
7d6f77db284913a1dd4b5f362fd62ba65b76784b 06-Feb-2007 Chris Lattner <sabre@nondot.org> Fix PR1181 and CodeGen/CBackend/2007-02-05-memset.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33957 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
4b09252e4b9af6f90f2bd2c1b4283c058e9b4e95 06-Feb-2007 Chris Lattner <sabre@nondot.org> Oops, swap this. This fixes a regression I introduced in the ARM backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33946 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
b6a24bfa9550e5561da3091f7e5132575bf5a19e 05-Feb-2007 Chris Lattner <sabre@nondot.org> Fix PR1178


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33924 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
13b7d3d499ec63c5f417f7a7246afb77adb63b2e 05-Feb-2007 Anton Korobeynikov <asl@math.spbu.ru> Fixing silly "not-implemented" bug in AsmPrinter. This fixes PR1169.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33888 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
831e0374a7da654071279f2b1f93f52f7eeb5eae 04-Feb-2007 Chris Lattner <sabre@nondot.org> switch the VRBaseMap in the scheduler from an std::map to a DenseMap. This
speeds up the isel pass from 2.5570s to 2.4722s on kc++ (3.4%).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGSimple.cpp
3f97eb449b08069e3370d4ba7566c60bdbf0babd 04-Feb-2007 Chris Lattner <sabre@nondot.org> Introduce new UnarySDNode/BinarySDNode/TernarySDNode nodes, which coallocate
their operands with the node itself. This reduces malloc traffic for operand
lists. This reduces isel time on kc++ from 2.6164 to 2.5570s, about 2.3%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33878 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ab4ed595385d0b9421c0d45c809ec6324cf11f11 04-Feb-2007 Chris Lattner <sabre@nondot.org> eliminate the SDNode::setValueTypes method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33876 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
63e3f14df6cf76f1a12de1153e1114f4b20b15a9 04-Feb-2007 Chris Lattner <sabre@nondot.org> eliminate a bunch of duplicate ctors and helper functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33875 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d429bcd4ac734540ebbc15a0ee37d154ae1daf73 04-Feb-2007 Chris Lattner <sabre@nondot.org> move MorphNode to out of line and merge setNodeOperands into it. There is
no behavior or performance change here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33869 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
48b85926524f9d29ae600123c90194cd73fd629e 04-Feb-2007 Chris Lattner <sabre@nondot.org> simplify MorphNodeTo to take a VTList operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33868 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
67612a1188980d92a4bdd84c34a5aa89a4b9d929 04-Feb-2007 Chris Lattner <sabre@nondot.org> eliminate some extraneous methods in SDNode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33867 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c76e3c86026b9fa44bfbb0888881b52955078011 04-Feb-2007 Chris Lattner <sabre@nondot.org> Give each selectiondag node class a home for it's vtable and rtti info


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9f24ad79ce32200b06499ef638b502fc1c36ed04 04-Feb-2007 Chris Lattner <sabre@nondot.org> Switch VAlueMap from std::map to DenseMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33863 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0da331fe0bff24e6c90c706ef8f1f1c3a8d90c2a 04-Feb-2007 Chris Lattner <sabre@nondot.org> Switch NodeMap from std::map to DenseMap, this speeds up isel by 2.3%


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33862 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0ed44170752b85c3dd3bbf95459dd2668864f5ec 04-Feb-2007 Chris Lattner <sabre@nondot.org> swtich vector-> smallvector, speeding up selectiondag stuff 1%


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33861 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
40030bfa75ae6d72702bc60e964ae2fce8c0f3ed 04-Feb-2007 Chris Lattner <sabre@nondot.org> Switch promoted/expanded ops over to using a DenseMap. Vector related maps
aren't worth it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33860 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
718071c476014cb0aaff9c7d018120d5a8930217 04-Feb-2007 Chris Lattner <sabre@nondot.org> switch LegalizedNodes from std::map to a DenseMap. This speeds up isel
time as a whole on kc++ by 11%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33857 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
00755df36c1448ac4728a74d907aa09e3d8b2d49 04-Feb-2007 Chris Lattner <sabre@nondot.org> Eliminate some malloc traffic from LegalizeAllNodesNotLeadingTo, speeding
up isel on kimwitu by 0.7%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33853 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d48c5e871a0f3386e536e0987ca06dbc4e274acf 04-Feb-2007 Chris Lattner <sabre@nondot.org> Eliminate some std::sets. This speeds up isel of kimwitu by about 0.9%


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33852 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
cf5640bd52e919b6fbb06f231122e718f48dbb12 04-Feb-2007 Chris Lattner <sabre@nondot.org> Switch SelectionDAG::ReplaceAllUsesOfValueWith to use a SmallSetVector for
the users set (most nodes have 1 or 2 users). This speeds up the isel pass
3.2% on kimwitu.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33849 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
886b412fb0baa3c2fab36fc1f2a46f53bc453f62 03-Feb-2007 Bill Wendling <isanbard@gmail.com> Pass in non-Mach-O-specific parameters to the GetTargetRelocation method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33816 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
2ba528b3a75955c960347e5b5b28ae74d5a81909 03-Feb-2007 Chris Lattner <sabre@nondot.org> switch the sched unit map over to use a DenseMap instead of std::map. This
speeds up isel as a whole time by 2.6%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33810 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
7971514755a08ec156a1b9c0f7f05d67919c56b7 03-Feb-2007 Chris Lattner <sabre@nondot.org> Switch ComputeTopDownOrdering over to using a densemap. This speeds up
isel as a whole by 3.3%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33809 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5efdecc030f1a71cdb5b49d97c6c1c45e68ff731 03-Feb-2007 Evan Cheng <evan.cheng@apple.com> Pasto


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33806 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1b19cd35fe86810c9f3c56e5dd577bd3c8520231 02-Feb-2007 Reid Spencer <rspencer@reidspencer.com> Use short form of BinaryOperator create function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33784 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
832254e1c2387c0cbeb0a820b8315fbe85cb003a 02-Feb-2007 Reid Spencer <rspencer@reidspencer.com> Changes to support making the shift instructions be true BinaryOperators.
This feature is needed in order to support shifts of more than 255 bits
on large integer types. This changes the syntax for llvm assembly to
make shl, ashr and lshr instructions look like a binary operator:
shl i32 %X, 1
instead of
shl i32 %X, i8 1
Additionally, this should help a few passes perform additional optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33776 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
b47f32e0e932a0da11e6deae81dc0481dea4d80b 01-Feb-2007 Jim Laskey <jlaskey@mac.com> Slip up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33758 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
29bf16a0bd7483abc99102cee40c266ceacc8b3b 01-Feb-2007 Jim Laskey <jlaskey@mac.com> Emit labels as label_n and not as debug_n


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33757 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
b82313fdc21e8190768addf0f16710b94f0e1441 01-Feb-2007 Jim Laskey <jlaskey@mac.com> Support for non-landing pad exception handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33755 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
achineModuleInfo.cpp
b25fe8267182662750dcb76a70a20f4b14a5568d 01-Feb-2007 Anton Korobeynikov <asl@math.spbu.ru> Fixed uninitialized stuff inside LegalizeDAG. Fortunately, the only
affected part is codegen of "memove" inside x86 backend. This fixes
PR1144


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33752 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
94c002a190cd2e3a52b1510bc997e53d63af0b3b 01-Feb-2007 Chris Lattner <sabre@nondot.org> rename DenseMap to IndexedMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33749 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
egAllocLocal.cpp
irtRegMap.h
fea997aac5773e936754de5436029c2a4fa1e930 01-Feb-2007 Chris Lattner <sabre@nondot.org> Fit in 80 columns


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33745 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
527fae12c3b58d6151aa1c534c10b55d603b8da1 01-Feb-2007 Chris Lattner <sabre@nondot.org> Emit a better assertion message for PR1133


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33736 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d385fd62cb43435b3ad70d789198d34bf148e579 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> Allow the target to override the ISD::CondCode that's to be used to test the
result of the comparison libcall against zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
5cbf985dcbc89fba3208e7baf8b6f488b06d3ec9 30-Jan-2007 Reid Spencer <rspencer@reidspencer.com> For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoid
confusion with external linkage types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33663 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
367f109ba954239a348c624a3331422bfdb31d03 30-Jan-2007 Chris Lattner <sabre@nondot.org> add initial support for handling inline asms with multiple constraints.
This doesn't do the "right thing" but will probably work in most cases.

This implements CodeGen/PowerPC/2007-01-29-lbrx-asm.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33643 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c1c47c3fa4d6d21b65924c02ab2f228e6285152d 30-Jan-2007 Jim Laskey <jlaskey@mac.com> Out of line function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33641 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineModuleInfo.cpp
e078d1a14a2633d5fe5b5b9d9dec90669f5c7082 30-Jan-2007 Jim Laskey <jlaskey@mac.com> Only gather frame info if debug or eh.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33639 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
bcc5f36765e8111c13873a0c0dc874c92385d808 29-Jan-2007 Nate Begeman <natebegeman@mac.com> Finish off bug 680, allowing targets to custom lower frame and return
address nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
1257c855d7546afc2705463d9ca913d405724738 29-Jan-2007 Nate Begeman <natebegeman@mac.com> Properly support cstrings


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33629 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
1b340dc8e20dc1ce204ebdcc2ff11c3dd36888f1 29-Jan-2007 Jim Laskey <jlaskey@mac.com> Flag to control exception handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33628 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
d683ef6655f255170ac460f20963320a19f6d2cd 29-Jan-2007 Jim Laskey <jlaskey@mac.com> Disable zero landing pads for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33625 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
072200c36dd96b94e772029fd72edf9fa120c467 29-Jan-2007 Jim Laskey <jlaskey@mac.com> Landing pad-less eh for PPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33622 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
6addf2ceeb7b231e32308b7b15c77bc8992868a7 29-Jan-2007 Reid Spencer <rspencer@reidspencer.com> Use TargetData to obtain the correct size of the "size_t" argument for
functions like memcpy, memmove and memset. Ensure only one prototype is
used for these functions and that it matches the system definition by
using the appropriate type for the size argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33618 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
1e9126b3c47d5ecee98fd7384628a4f098857a6b 28-Jan-2007 Reid Spencer <rspencer@reidspencer.com> For PR1138:
Force memcpy to be the 32-bit variant. Since this is only used with
CBE and lli which both target 32-bit machines, this should be okay.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33608 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
6aa279dc8b5a05499b2cd158f8187d7225adc4f4 28-Jan-2007 Anton Korobeynikov <asl@math.spbu.ru> Arguments are counting from 1. not from 0. Maybe we should change
numbering somehow? E.g. make return argument the last?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33606 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ac2b2cf88c9331bf44e802f6d31805c40a56af0f 28-Jan-2007 Anton Korobeynikov <asl@math.spbu.ru> More cleanup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
b10308e440c80dd6ffb4b478f741ff7e5f30cb48 28-Jan-2007 Anton Korobeynikov <asl@math.spbu.ru> Propagate changes from my local tree. This patch includes:
1. New parameter attribute called 'inreg'. It has meaning "place this
parameter in registers, if possible". This is some generalization of
gcc's regparm(n) attribute. It's currently used only in X86-32 backend.
2. Completely rewritten CC handling/lowering code inside X86 backend.
Merged stdcall + c CCs and fastcall + fast CC.
3. Dropped CSRET CC. We cannot add struct return variant for each
target-specific CC (e.g. stdcall + csretcc and so on).
4. Instead of CSRET CC introduced 'sret' parameter attribute. Setting in
on first attribute has meaning 'This is hidden pointer to structure
return. Handle it gently'.
5. Fixed small bug in llvm-extract + add new feature to
FunctionExtraction pass, which relinks all internal-linkaged callees
from deleted function to external linkage. This will allow further
linking everything together.

NOTEs: 1. Documentation will be updated soon.
2. llvm-upgrade should be improved to translate csret => sret.
Before this, there will be some unexpected test fails.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33597 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
5d73a2a156d9b232cf31150b3aff17fb07230c82 27-Jan-2007 Bill Wendling <isanbard@gmail.com> Use TargetELFWriterInfo class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33573 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
6635f35cae9d5a5d363d3ba425d4b1f323fc689d 26-Jan-2007 Nate Begeman <natebegeman@mac.com> Handle multiple functions, properly mangle symbols, and fix support for
scattered relocations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33555 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
6da186480b55c10b96a255ce0a4ab731155da907 26-Jan-2007 Jim Laskey <jlaskey@mac.com> rename files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33552 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
achineModuleInfo.cpp
44c3b9fdd416c79f4b67cde1aecfced5921efd81 26-Jan-2007 Jim Laskey <jlaskey@mac.com> Change the MachineDebugInfo to MachineModuleInfo to better reflect usage
for debugging and exception handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33550 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
warfWriter.cpp
rologEpilogInserter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
1ee29257428960fede862fcfdbe80d5d007927e9 26-Jan-2007 Jim Laskey <jlaskey@mac.com> Make LABEL a builtin opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33537 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
achineDebugInfo.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
2b935d55b04b8dfeedc67c3b376efd523344c44d 26-Jan-2007 Jim Laskey <jlaskey@mac.com> Clarify some constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33536 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
02a20291410a6814c657b69901a57103d4861a07 25-Jan-2007 Evan Cheng <evan.cheng@apple.com> Added a MRegisterInfo hook that tells PEI the target is responsible for
rounding the stack frame to a multiple of stack alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33504 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
1a4a83ca394868b57ad884fc5ddd38d05a66092a 25-Jan-2007 Jim Laskey <jlaskey@mac.com> 1. Remove dwarf-verbose option (now asm-verbose.)
2. Clean up end of lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33499 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
f1cdea1d021068f5c9e118d68321ce28fcea63fa 25-Jan-2007 Jim Laskey <jlaskey@mac.com> Migrate print routines to asm to be shared by exception handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33498 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
5e73d5bd2e98afda12fa69a7ea83050c69be0d34 24-Jan-2007 Jim Laskey <jlaskey@mac.com> Repair debug frames as a prelude to eh_frames. Switched to using MachineMoves
by value so that clean up is less confusing (these vectors tend to be small.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33488 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
f9e56198a39a08272c072211722b3c97ef88853c 24-Jan-2007 Jim Laskey <jlaskey@mac.com> Use asm printer to emit alignment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33485 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
2b7218218faa02d9ece90f2ae6e009d7c55534df 24-Jan-2007 Bill Wendling <isanbard@gmail.com> Make ivars private and use getters. Have the MachOWriter return "Mach-O
Writer" for the pass name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33483 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
de268f7dcf8a650afde162b84608ed434fb10613 24-Jan-2007 Evan Cheng <evan.cheng@apple.com> Renamed getTypeAlignmentShift() to getPreferredTypeAlignmentShift().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
a4b7324fa0c77e50863a0e5ccd43285b64c2f1bf 24-Jan-2007 Bill Wendling <isanbard@gmail.com> Use the TargetMachOWriterInfo class to get this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33478 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
367372a30c36776e31958f0dc38306f32b80aa7c 23-Jan-2007 Evan Cheng <evan.cheng@apple.com> PEI is now responsible for adding MaxCallFrameSize to frame size and align the stack. Each target can further adjust the frame size if necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33460 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
08a4d5a343e886816b31a78d9b7e70240d9c67be 23-Jan-2007 Chris Lattner <sabre@nondot.org> Switch this to use SmallSet to avoid mallocs in the common case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33457 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
fad2912522a4c97128d8afcc2f40ca0e39287ddb 23-Jan-2007 Chris Lattner <sabre@nondot.org> Fix a bunch of inline asm failures


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33454 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
f6d039a039ca35f9f0ee835c40cfced946915d5b 23-Jan-2007 Evan Cheng <evan.cheng@apple.com> Remove the DoubleTy special case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33449 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
24d6da5fedcf39891f7d8c5b031c01324b3db545 21-Jan-2007 Reid Spencer <rspencer@reidspencer.com> For PR970:
Clean up handling of isFloatingPoint() and dealing with PackedType.
Patch by Gordon Henriksen!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
58092e35a3368e130438cbc793c8f9dce2e4fe0f 20-Jan-2007 Chris Lattner <sabre@nondot.org> Teach TargetData to handle 'preferred' alignment for each target, and use
these alignment amounts to align scalars when we can. Patch by Scott Michel!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33409 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
achineFunction.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
597a3bde3578f33dc2a038186275b021c79c00b9 20-Jan-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1108: type of insert_vector_elt index operand is PtrVT, not MVT::i32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33398 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
70cfa8894443281c77df5d3790e014647d1ccd05 20-Jan-2007 Evan Cheng <evan.cheng@apple.com> Remove an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33396 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
57a2306074989dfd6e1c0d9ddd2b5084f664e2a9 20-Jan-2007 Evan Cheng <evan.cheng@apple.com> We not align the final stack slot but instead let the target do so in emitPrologue(). Each target can make adjustments to the stack frame and re-align the stack as it deem appropriate. Do not align it twice which can end up wasting stack space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33387 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
3c82cab9aad8bd1ae7a9dd03548f721522db79f3 19-Jan-2007 Evan Cheng <evan.cheng@apple.com> GetRegForReload() now keeps track which registers have been considered and rejected during its quest to find a suitable reload register. This avoids an infinite loop in case like this:
t1 := op t2, t3
t2 <- assigned r0 for use by the reload but ended up reuse r1
t3 <- assigned r1 for use by the reload but ended up reuse r0
t1 <- desires r1
sees r1 is taken by t2, tries t2's reload register r0
sees r0 is taken by t3, tries t3's reload register r1
sees r1 is taken by t2, tries t2's reload register r0 ...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33382 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
c10305743c313558405079452138f03124e87581 19-Jan-2007 Reid Spencer <rspencer@reidspencer.com> For PR1043:
This is the final patch for this PR. It implements some minor cleanup
in the use of IntegerType, to wit:
1. Type::getIntegerTypeMask -> IntegerType::getBitMask
2. Type::Int*Ty changed to IntegerType* from Type*
3. ConstantInt::getType() returns IntegerType* now, not Type*

This also fixes PR1120.

Patch by Sheng Zhou.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33370 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
42d7ccfd8e672bf3a5d42052f8da50f0d610afb2 19-Jan-2007 Evan Cheng <evan.cheng@apple.com> Remove this xform:
(shl (add x, c1), c2) -> (add (shl x, c2), c1<<c2)
Replace it with:
(add (shl (add x, c1), c2), ) -> (add (add (shl x, c2), c1<<c2), )

This fixes test/CodeGen/ARM/smul.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c904a5b925ce9981ad7501b14ee39cbc8795e23c 18-Jan-2007 Bill Wendling <isanbard@gmail.com> Have the OutputBuffer take the is64Bit and isLittleEndian booleans.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33316 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
393a8eea3c15de08eaf6953aa8a65a3961b76153 18-Jan-2007 Chris Lattner <sabre@nondot.org> add new JumpTableSpecialLabelPrefix hook to asmprinter for jumptable emission.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33314 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
203d3e4386ff2b8e66378bf7cfb12ec25869b866 17-Jan-2007 Bill Wendling <isanbard@gmail.com> Changed to use the OutputBuffer instead of the methods in MachO and ELF
writers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33311 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
e911615c4769d793588087b5321d303ecb9661c7 17-Jan-2007 Bill Wendling <isanbard@gmail.com> Revert patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33298 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
157c4eeb4d81140ce8c4dbff630828546d62d599 17-Jan-2007 Bill Wendling <isanbard@gmail.com> Use the methods in the TargetObjInfo object instead of internal methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33289 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
c4e664bb9d640e7b04f6fce23830dfb808895b31 16-Jan-2007 Chris Lattner <sabre@nondot.org> Fix PR1114 and CodeGen/Generic/2007-01-15-LoadSelectCycle.ll by being
careful when folding "c ? load p : load q" that C doesn't reach either load.
If so, folding this into load (c ? p : q) will induce a cycle in the graph.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33251 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
938ab02256289a688b1d4f992349f35d44afe4a0 16-Jan-2007 Chris Lattner <sabre@nondot.org> add options to view the dags before the first or second pass of dag combine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
eb9a42c90bf7e21ad8544315a65f86b668cc0277 16-Jan-2007 Bill Wendling <isanbard@gmail.com> Fix for PR1095:
LLVM would miscompile ASM dialects when compiling for PPC. Added dialects for
the X86 and PPC backends. It defaults to "0", the first variant of a compound
inline asm expression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33246 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
42a75517250017a52afb03a0ade03cbd49559fe5 15-Jan-2007 Chris Lattner <sabre@nondot.org> rename Type::isIntegral to Type::isInteger, eliminating the old Type::isInteger.
rename Type::getIntegralTypeMask to Type::getIntegerTypeMask.

This makes naming much more consistent. For example, there are now no longer any
instances of IntegerType that are not considered isInteger! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33225 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ntrinsicLowering.cpp
0ee69bbd333c22198344e7336ae74767ca9381cc 15-Jan-2007 Chris Lattner <sabre@nondot.org> eliminate calls to Type::isInteger, preferring isIntegral instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33222 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
e5530da20895a49ddef3201de0d5f8587d007977 13-Jan-2007 Reid Spencer <rspencer@reidspencer.com> Compensate for loss of DerivedTypes.h in TargetLowering.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33159 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
02114aa0e507a10b18989ff6f4542d8572a07da0 13-Jan-2007 Reid Spencer <rspencer@reidspencer.com> Move a function out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33158 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
79cca507fe51aa8af7a9006b380977c61b6f3fea 12-Jan-2007 Evan Cheng <evan.cheng@apple.com> Minor fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33149 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
a875df3aaac9548dc78466bb2a9d6e85feddade7 12-Jan-2007 Chris Lattner <sabre@nondot.org> Simplify code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33123 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
a54b7cbd452b3adb2f51346140d996b29c2cdb30 12-Jan-2007 Reid Spencer <rspencer@reidspencer.com> For PR1064:
Implement the arbitrary bit-width integer feature. The feature allows
integers of any bitwidth (up to 64) to be defined instead of just 1, 8,
16, 32, and 64 bit integers.

This change does several things:
1. Introduces a new Derived Type, IntegerType, to represent the number of
bits in an integer. The Type classes SubclassData field is used to
store the number of bits. This allows 2^23 bits in an integer type.
2. Removes the five integer Type::TypeID values for the 1, 8, 16, 32 and
64-bit integers. These are replaced with just IntegerType which is not
a primitive any more.
3. Adjust the rest of LLVM to account for this change.

Note that while this incremental change lays the foundation for arbitrary
bit-width integers, LLVM has not yet been converted to actually deal with
them in any significant way. Most optimization passes, for example, will
still only deal with the byte-width integer types. Future increments
will rectify this situation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33113 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achOWriter.cpp
579dca12c2cfd60bc18aaadbd5331897d48fec29 12-Jan-2007 Reid Spencer <rspencer@reidspencer.com> Implement review feedback for the ConstantBool->ConstantInt merge. Chris
recommended that getBoolValue be replaced with getZExtValue and that
get(bool) be replaced by get(const Type*, uint64_t). This implements
those changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33110 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achineDebugInfo.cpp
56966225d1eed9f9a6951d2167bfbbec9628c8d6 12-Jan-2007 Evan Cheng <evan.cheng@apple.com> Store default libgcc routine names and allow them to be redefined by target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33105 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
4fe16d607d11e29d742208894909733f5ad01f8f 11-Jan-2007 Reid Spencer <rspencer@reidspencer.com> Rename BoolTy as Int1Ty. Patch by Sheng Zhou.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33076 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achOWriter.cpp
achineDebugInfo.cpp
6b6b6ef1677fa71b1072c2911b4c1f9524a558c9 11-Jan-2007 Zhou Sheng <zhousheng00@gmail.com> For PR1043:
Merge ConstantIntegral and ConstantBool into ConstantInt.
Remove ConstantIntegral and ConstantBool from LLVM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33073 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achineDebugInfo.cpp
electionDAG/SelectionDAGISel.cpp
c8edc64188399437f5476d7fa45f714a92f2cb93 09-Jan-2007 Evan Cheng <evan.cheng@apple.com> Naming consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
c62d4bb6952a1459f10aa93579e1b881d42a33ea 09-Jan-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1075: bottom-up register-reduction scheduling actually increases register pressure.
- Fixed bugs in sethi-ullman number computation and priority queue comparison
functions.
- Separate code that handles priority computation special cases from SU number computation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33025 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
ddae4bd68358df7415d532e6930c0ba9c60f6cb5 09-Jan-2007 Chris Lattner <sabre@nondot.org> Implement some trivial FP foldings when -enable-unsafe-fp-math is specified.
This implements CodeGen/PowerPC/unsafe-math.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33024 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6488a078baefe7e638a8c0a12396173d32092f1e 08-Jan-2007 Jim Laskey <jlaskey@mac.com> Need to handle static declarations properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33022 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
f01da5939d1f62e3c2b69beecd184001a5dfc983 07-Jan-2007 Chris Lattner <sabre@nondot.org> llvm 2.0 doesn't support llvm.isunordered.*


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32994 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
a4810b52d024ec4dcf638c906db9589338c05117 07-Jan-2007 Chris Lattner <sabre@nondot.org> remove support for llvm.isunordered


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b76efb71d41dc1ae33e47d5d9ef79df25cde0b5d 07-Jan-2007 Chris Lattner <sabre@nondot.org> Change the interface to Module::getOrInsertFunction to be easier to use,to resolve PR1088, and to help PR411.
This simplifies many clients also


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32989 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
636c753b6ba2418ed707ef0efb31444ec70a46f2 06-Jan-2007 Evan Cheng <evan.cheng@apple.com> Expand fcopysign to the bitwise sequence if select is marked as expensive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32940 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
068c5f47ea9243b353a49ca7eb07fac0cb32f1ee 05-Jan-2007 Evan Cheng <evan.cheng@apple.com> Bug in ExpandFCOPYSIGNToBitwiseOps(). Clear the old sign bit of operand 0
before or'ing in the sign bit of operand 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32930 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
489a87ca091ff4208ce0a972480e41ba1f78a2bf 05-Jan-2007 Evan Cheng <evan.cheng@apple.com> CopyToReg source operand can be a register as well. e.g. Copy from GlobalBaseReg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32929 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
0d630d220414b02fed6873555bb46795a682174b 05-Jan-2007 Evan Cheng <evan.cheng@apple.com> GEP subscript is interpreted as a signed value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32888 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f8e7a219121b7d6f8bcf1e22828648a243384fbb 04-Jan-2007 Chris Lattner <sabre@nondot.org> fix PowerPC/2007-01-04-ArgExtension.ll, a bug handling K&R prototypes with
the recent signless changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
912095becac923ff614d7b07728eb345ada67765 04-Jan-2007 Evan Cheng <evan.cheng@apple.com> Expand fcopysign to a series of bitwise of operations when it's profitable to
do so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32881 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bcca3405bd6698af82eeed20e24744d0625aa1b3 03-Jan-2007 Reid Spencer <rspencer@reidspencer.com> Legalizer doesn't do an ANY_EXTEND if we don't ask for one so make sure
that we default to an ANY_EXTEND if no parameter attribute is set on the
result value of a function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32836 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
26a3687d53b7381dd2b6abdd2e4e38271c8da37e 03-Jan-2007 Jim Laskey <jlaskey@mac.com> NULL names should pass validation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32835 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
1e3a5772d8efa207aa6f03888164ba57236ed705 03-Jan-2007 Jim Laskey <jlaskey@mac.com> Silence warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32834 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
376dd212f9142cd0f0b03e0b6296b2df7208bb9a 03-Jan-2007 Reid Spencer <rspencer@reidspencer.com> Restore previous behavior of defaulting to ZEXT. This works around two
things: (1) preventing PR1071 and (2) working around missing parameter
attributes for bool type. (2) will be fixed shortly. When PR1071 is fixed,
this patch should be undone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32831 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8c57dfb1aea24132bd5b58c4ed4893ea967ba131 03-Jan-2007 Reid Spencer <rspencer@reidspencer.com> Two changes:
1. Switch expression and cases are compared signed and are sign extended.
2. For function results needing extended, do SIGN_EXTEND if the SExtAttribute
is set and ZERO_EXTEND if the ZExtAttribute is set, otherwise just let
the Legalizer do ANY_EXTEND.
This fixes the recent regression in kimwitu++ and probably the llvm-gcc
bootstrap issue we had today.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32830 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b47b25cfda5aee910e128c89d08c630722eb480b 03-Jan-2007 Reid Spencer <rspencer@reidspencer.com> Clean up from recent changes. Comment the new parameter to ExpandLibCall.
Consolidate some lines of code and remove duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32829 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ad93d7fda53d92d07a3b3a2087e46de7cd695752 02-Jan-2007 Evan Cheng <evan.cheng@apple.com> - Fixing naming inconsistency: calleesave -> calleesaved.
- Make use of spillCalleeSavedRegisters() and restoreCalleeSavedRegisters().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32822 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
47857812e29324a9d1560796a05b53d3a9217fd9 31-Dec-2006 Reid Spencer <rspencer@reidspencer.com> For PR950:
Three changes:
1. Convert signed integer types to signless versions.
2. Implement the @sext and @zext parameter attributes. Previously the
type of an function parameter was used to determine whether it should
be sign extended or zero extended before the call. This information is
now communicated via the function type's parameter attributes.
3. The interface to LowerCallTo had to be changed in order to accommodate
the parameter attribute information. Although it would have been
convenient to pass in the FunctionType itself, there isn't always one
present in the caller. Consequently, a signedness indication for the
result type and for each parameter was provided for in the interface
to this method. All implementations were changed to make the adjustment
necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32788 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ntrinsicLowering.cpp
achOWriter.cpp
achineDebugInfo.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
e4d87aa2de6e52952dca73716386db09aad5a8fd 23-Dec-2006 Reid Spencer <rspencer@reidspencer.com> For PR950:
This patch removes the SetCC instructions and replaces them with the ICmp
and FCmp instructions. The SetCondInst instruction has been removed and
been replaced with ICmpInst and FCmpInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32751 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
ee5f9274b925c59082e7ed7f5506bbb5af0d854b 22-Dec-2006 Jim Laskey <jlaskey@mac.com> Need to walk the derived chain of typedefs to get actual size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32744 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
d472ad7c7cb9378367bdc105dd208f80c7cd5998 22-Dec-2006 Evan Cheng <evan.cheng@apple.com> Debug dump error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32743 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
246dd65a13111f0288d14ff6b765688e3e5edaa7 21-Dec-2006 Reid Spencer <rspencer@reidspencer.com> Just print integer constants as signed values. The actual signedness
doesn't matter as it is determined in the way the constant is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32733 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
eefef64e591a851a47cd0525d96616ba99f73c75 21-Dec-2006 Reid Spencer <rspencer@reidspencer.com> Simplify all the casting business and get rid of isSigned().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32731 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
0b4f80ee898c1e85242482e4cb363e6bfe0a133b 20-Dec-2006 Evan Cheng <evan.cheng@apple.com> getLoad() and getStore() calls missed SVOffset operand. Thanks to Dan Gohman
for pointing it out!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cd3245ac45c595da96bb768a55cddc356dff55fe 19-Dec-2006 Chris Lattner <sabre@nondot.org> Eliminate static ctors from Statistics


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32698 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
iveIntervalAnalysis.cpp
HIElimination.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGList.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
24287ddb81aca5d2579dc30ebd3528d2521529d7 19-Dec-2006 Anton Korobeynikov <asl@math.spbu.ru> Fix for PR1059: http://llvm.org/PR1059


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32685 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
7df28dc9d7160772c3c0aabd72c32830c1bb5e57 19-Dec-2006 Evan Cheng <evan.cheng@apple.com> May need to promote the operand (either sign_extend_inreg or and) before
expanding a {s|u}int_to_fp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32665 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
722cb360690e5d7742b01a9f497fdb65bf8079d5 18-Dec-2006 Evan Cheng <evan.cheng@apple.com> LegalizeSetCCOperands() may end up inserting libcalls. They need to be
properly serialized. Do not clear LastCallSEQ_END until that is done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32659 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8a903db4990d57aadea5cdad601ff26e92899103 18-Dec-2006 Reid Spencer <rspencer@reidspencer.com> Convert the last uses of CastInst::createInferredCast to a normal cast
creation. These changes are still temporary but at least this pushes
knowledge of signedness out closer to where it can be determined properly
and allows signedness to be removed from VMCore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32654 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
15404d060ba8b604c03b9223a0f2e2abcd0fdded 18-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> move ExtWeakSymbols to AsmPrinter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32648 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
f2174da7132b1a3ce81d8a154a20c1285b5b15dd 17-Dec-2006 Bill Wendling <isanbard@gmail.com> Fixed so that it dereferences the ostream pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32640 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
5c7e326585f3a543388ba871c3425f7664cd9143 17-Dec-2006 Bill Wendling <isanbard@gmail.com> Added an automatic cast to "std::ostream*" etc. from OStream. We then can
rework the hacks that had us passing OStream in. We pass in std::ostream*
instead, check for null, and then dispatch to the correct print() method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32636 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
iveInterval.cpp
electionDAG/ScheduleDAGSimple.cpp
irtRegMap.cpp
irtRegMap.h
36d439666c9f9f781d57dc2fd6d3cc80602fe095 16-Dec-2006 Chris Lattner <sabre@nondot.org> Fix PR1049 and CodeGen/Generic/2006-12-16-InlineAsmCrash.ll
by producing target constants instead of constants. Constants can get
selected to li/movri instructions, which causes the scheduler to explode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32633 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e90460ee9ae9844d4dba9a29c39161ece61e8094 16-Dec-2006 Evan Cheng <evan.cheng@apple.com> Cannot combine an indexed load / store any further.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32629 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
aa975c1c4785a1d7930f2cd1026cb40ce54d21e4 16-Dec-2006 Evan Cheng <evan.cheng@apple.com> Expand FP undef


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32623 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4b607748d86b44cc59e5cf3eee194dfd9b0fcd86 16-Dec-2006 Jeff Cohen <jeffc@jolt-lang.org> The best unbreakage yet, addressing Bill's concerns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32622 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
achineBasicBlock.cpp
achineInstr.cpp
0b1b9dcf22745b533562134c2f0472098fe085fd 16-Dec-2006 Evan Cheng <evan.cheng@apple.com> Allow promoted FP_TO_UINT / FP_TO_SINT to expand operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32621 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
966bf24491f7e53238fc4127bb9fcf43e6739586 16-Dec-2006 Evan Cheng <evan.cheng@apple.com> Expand fabs / fneg to and / xor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32619 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c21c5eeb4f56f160e79522df2d3aab5cfe73c05d 15-Dec-2006 Jeff Cohen <jeffc@jolt-lang.org> An even better unbreakage...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32617 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
achineBasicBlock.cpp
achineInstr.cpp
19103b11ecbd5153537a1c64ffefa922fe591add 15-Dec-2006 Evan Cheng <evan.cheng@apple.com> Fix select_cc, select expansion to soft-fp bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32616 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f6c4ccfaab372081e021c9b02415f3db4190b37d 15-Dec-2006 Jim Laskey <jlaskey@mac.com> This code was usurping the sextload expand in teh legalizer. Just make
sure the right conditions are checked.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32611 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2d53a320b4dbcd4af54b17458ed81c3963b544fd 15-Dec-2006 Chris Lattner <sabre@nondot.org> silence a bogus warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32597 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
86facc282850f99479584596058a5625b53caa69 15-Dec-2006 Evan Cheng <evan.cheng@apple.com> Minor clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32593 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
2b49c500838666dd0186d021389d4dd70ffda240 15-Dec-2006 Evan Cheng <evan.cheng@apple.com> Expand FP compares to soft-fp call(s)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32590 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
acd80ac7bb19f8bdfa55336d567c9ecbe695c8b8 14-Dec-2006 Jim Laskey <jlaskey@mac.com> 1. Tidy up jump table info.
2. Allow the jit to handle PIC relocable jump tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32581 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achineFunction.cpp
electionDAG/LegalizeDAG.cpp
7a0d51c8e3d6cdc6d961f6525f97f8926fb76c83 14-Dec-2006 Evan Cheng <evan.cheng@apple.com> Fix a long-standing spiller bug:
If a spillslot value is available in a register, and there is a noop copy that
targets that register, the spiller correctly decide not to invalidate the
spillslot register.

However, even though the noop copy does not clobbers the value. It does start a
new intersecting live range. That means the spillslot register is available for
use but should not be reused for a two-address instruction modref operand which
would clobber the new live range.

When we remove the noop copy, update the available information by clearing the
canClobber bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32576 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
9f87788040786b1bc6530763e4cf7e105bfb2924 13-Dec-2006 Evan Cheng <evan.cheng@apple.com> More soft-fp work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
548f611baeb53e821e7e80f97722b048ab6b09b2 13-Dec-2006 Evan Cheng <evan.cheng@apple.com> Expand (f64 extload f32) to (f64 fp_ext (load f32)) if f64 type action is expand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32527 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
98ff3b979af4916ba8a82eda7d77a66cdad31842 13-Dec-2006 Evan Cheng <evan.cheng@apple.com> Expand fsqrt, fsin, and fcos to libcalls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32526 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6af00d588c1b353d9d7a3dd8f58927056eccd6c1 13-Dec-2006 Evan Cheng <evan.cheng@apple.com> Expand f32 / f64 to i32 / i64 conversion to soft-fp library calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32523 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7b06bd532d3324a2f76bbc856ae20ff89d8e0e92 13-Dec-2006 Reid Spencer <rspencer@reidspencer.com> Replace CastInst::createInferredCast calls with more accurate cast
creation calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32521 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
279101eb1ac61e2d5b83d5bdcc5be56e710d2cd7 12-Dec-2006 Evan Cheng <evan.cheng@apple.com> Expand FP constant to integers if FP types are not legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32497 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5c9ce1893a4bee65bc05c7c48f11734f55405692 12-Dec-2006 Evan Cheng <evan.cheng@apple.com> Soft fp FNEG, SINT_TO_FP, UINT_TO_FP libcall expansion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32495 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
004952140f3cf92ee098c2c5b8cdee1449bdc2ed 12-Dec-2006 Evan Cheng <evan.cheng@apple.com> Expand ConstantFP to load from CP if float types are being expanded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32494 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0ca67332fa4eaed35e8e85b2c935500798ea6c2a 12-Dec-2006 Evan Cheng <evan.cheng@apple.com> Expand i32/i64 CopyToReg f32/f64 to BIT_CONVERT + CopyToReg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32493 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7b2b5c846c371f58db73f453a007e52eda62da89 12-Dec-2006 Evan Cheng <evan.cheng@apple.com> - When expanding a bit_convert whose src operand is also to be expanded and
its expansion result type is equal to the result type of the bit_convert,
e.g. (i64 bit_convert (f64 op)) if FP is not legal
returns the result of the expanded source operand.
- Store f32 / f64 may be expanded to a single store i32/i64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32490 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b15974a65ce3c5d5cdde8d5e524055d3f1d59a77 12-Dec-2006 Evan Cheng <evan.cheng@apple.com> Expand formal arguments and call arguments recursively: e.g. f64 -> i64 -> 2 x i32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32476 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f0094839f058f56983f674ca575fcfda23d495ca 12-Dec-2006 Chris Lattner <sabre@nondot.org> fit in 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32474 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d9e06a5d031ca370e3137c93f4bd1b97c719633d 12-Dec-2006 Chris Lattner <sabre@nondot.org> this can only be fptrunc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32473 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3bb7e3f3bae7f5004e82b9af0a6d713ddef4be8f 12-Dec-2006 Chris Lattner <sabre@nondot.org> This case isn't needed with recent changes to ConstantInt::get


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32472 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
ddc94019916fbe4d3fff915e6002c39c63488a44 12-Dec-2006 Chris Lattner <sabre@nondot.org> split up inttoptr from ptrtoint handling, the cases aren't similar at all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32471 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
cb0a6819895bf5e357a205b72f0a6fce90025f21 12-Dec-2006 Chris Lattner <sabre@nondot.org> the operand of a bitcast is always the right size, just emit it in place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32470 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
d93d46ee7e0a0e539d42139b85c71b2b8c3968fe 12-Dec-2006 Chris Lattner <sabre@nondot.org> Revert Nate's patch to fix X86/store-fp-constant.ll. With the dag combiner
and legalizer separated like they currently are, I don't see a way to handle
this xform.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32466 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
62be1a71f41813c99f24a136cc31c20fecd9bfb1 12-Dec-2006 Chris Lattner <sabre@nondot.org> make this code more aggressive about turning store fpimm into store int imm.
This is not sufficient to fix X86/store-fp-constant.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
86b89e55290e2245dc3fe72c4e084cc74179ac08 12-Dec-2006 Reid Spencer <rspencer@reidspencer.com> Tidy up a bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32462 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
15f46d6c280cc91be70c60ed181931fbe0088652 12-Dec-2006 Reid Spencer <rspencer@reidspencer.com> Change inferred cast creation calls to more specific cast creations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32460 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ntrinsicLowering.cpp
achineDebugInfo.cpp
electionDAG/LegalizeDAG.cpp
13acce3ef03d29679c2b241bdba6ca015644e8b6 11-Dec-2006 Evan Cheng <evan.cheng@apple.com> Re-apply changes that were backed out and fix a naughty typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32442 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2381f6f6c6ab62724caaded8268b425564d61aca 11-Dec-2006 John Criswell <criswell@uiuc.edu> It seems the llvm::OStream class does not handle stream manipulators.
For now, just grab the stream and perform the output on it directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32441 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
70a24b3141c098d67321dda4d6f615a9153d7d9b 11-Dec-2006 Chris Lattner <sabre@nondot.org> Revert changes that broke oggenc on ppc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32440 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
25ece66ff39e9f136a8b48e0fea7aff2332848dc 11-Dec-2006 Evan Cheng <evan.cheng@apple.com> Don't convert store double C, Ptr to store long C, Ptr if i64 is not a legal type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32434 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bbf1e5e2e9608d6077bc4ac03e884c1972148fe0 11-Dec-2006 Evan Cheng <evan.cheng@apple.com> f32 / f64 node is expanded to one i32 / i64 node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32433 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b618230231273e9e609b9a39b8eb4684820b7149 11-Dec-2006 Evan Cheng <evan.cheng@apple.com> Clean up some bad code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32432 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2cbba8934745fe30662f2d5a59d03545ad5212c5 11-Dec-2006 Nate Begeman <natebegeman@mac.com> Move something that should be in the dag combiner from the legalizer to the
dag combiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32431 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
bfaaaa6e0f105cc57933afa9a380763fe87a5ff3 11-Dec-2006 Nate Begeman <natebegeman@mac.com> Properly mangles symbol table names
Supports constant pools
Supports relocations to jump tables
Supports relocations within the data segment (global = address of global)
Allocates memory in a non-hacky for all non-code objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32430 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
d27a258d2d7691db3731135a448b7654d260cc07 11-Dec-2006 Anton Korobeynikov <asl@math.spbu.ru> Cleaned setjmp/longjmp lowering interfaces. Now we're producing right
code (both asm & cbe) for Mingw32 target.
Removed autoconf checks for underscored versions of setjmp/longjmp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
1a8f1fe676f1d83e0da7336e744ebcdcc14a88c4 09-Dec-2006 Evan Cheng <evan.cheng@apple.com> Preliminary soft float support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32394 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
cc22a7a2adfea3fc318a6d8ca0c692a8e892105b 08-Dec-2006 Evan Cheng <evan.cheng@apple.com> Move findTiedToSrcOperand to TargetInstrDescriptor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32366 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
irtRegMap.cpp
5c2a46052b3fa69dbdae483870ebe1b9e50386b5 08-Dec-2006 Evan Cheng <evan.cheng@apple.com> Proper fix for PR1037: to determine is a VR is a modref, check 1) whether it is
tied to another oeprand, 2) whether is is being tied to by another operand. So
the destination operand of a two-address MI can be correctly identified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32354 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
7814ad0bf38047628eb3165e1b73e44da7e8b825 08-Dec-2006 Evan Cheng <evan.cheng@apple.com> findTiedToSrcOperand() changed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32353 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
555d8d6f4b0693309cd70efbf51b7abf804df5e4 07-Dec-2006 Chris Lattner <sabre@nondot.org> Fix CodeGen/PowerPC/2006-12-07-SelectCrash.ll on PPC64


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32336 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bcd2498f4f1682dbdc41452add5b9bc72cbd6b3f 07-Dec-2006 Bill Wendling <isanbard@gmail.com> Removed more <iostream> includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32321 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
iveVariables.cpp
achOWriter.cpp
achineBasicBlock.cpp
achineFunction.cpp
egAllocSimple.cpp
electionDAG/SelectionDAG.cpp
woAddressInstructionPass.cpp
832171cb9724d2d31c8dfb73172e2be8f6dd13ee 07-Dec-2006 Bill Wendling <isanbard@gmail.com> Removing even more <iostream> includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32320 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
egAllocLocal.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
fe46361719e86c75c9f7470c7f8ed0e3c3611bdf 07-Dec-2006 Reid Spencer <rspencer@reidspencer.com> Revision 1.83 causes PR1037.
Reverted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32305 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
7d3223eef2982d7acdfb24facde6605fd9a8b5e8 07-Dec-2006 Evan Cheng <evan.cheng@apple.com> Initialize {Min|Max}CSFrameIndex properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32299 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
e81561909d128c6e2d8033cb5465a49b2596b26a 07-Dec-2006 Bill Wendling <isanbard@gmail.com> Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are
now cerr, cout, and NullStream resp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
LFWriter.cpp
ntrinsicLowering.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
achineInstr.cpp
irtRegMap.cpp
irtRegMap.h
51cdcd197268a7abf19b2698fc824e0da3d98049 07-Dec-2006 Evan Cheng <evan.cheng@apple.com> MI keeps a ptr of TargetInstrDescriptor, use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32296 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
6065f66e7c3fbde299a387d8a42c2d3a57d13c38 07-Dec-2006 Evan Cheng <evan.cheng@apple.com> getOperandConstraint returns -1 if the operand does have the specific constraint. This bug was causing excessive spills.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32295 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
ac0b6ae358944ae8b2b5a11dc08f52c3ed89f2da 06-Dec-2006 Chris Lattner <sabre@nondot.org> Detemplatize the Statistic class. The only type it is instantiated with
is 'unsigned'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32279 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
iveIntervalAnalysis.cpp
HIElimination.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGList.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
2b4e98cb20c9391399b2601a793b6ea689da3cee 06-Dec-2006 Jim Laskey <jlaskey@mac.com> Some addresssed should be 64-bit and some shouldn't.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32278 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
576d123e130a8291669dd2384a3735cc4933fd00 06-Dec-2006 Evan Cheng <evan.cheng@apple.com> Move copyKillDeadInfo out-of-line. Add findRegisterUseOperand().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32273 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
4c7e227973132deb49f2feb7293e080b55c377e0 06-Dec-2006 Chris Lattner <sabre@nondot.org> eliminate fp statistic


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32251 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
97af751deb9b26fd42fbcee082da9ccc4ded5b45 02-Dec-2006 Jeff Cohen <jeffc@jolt-lang.org> Unbreak VC++ build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32113 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
electionDAG/SelectionDAG.cpp
ba59a1e453e110f7b84233f07613f9c5d9a39b87 01-Dec-2006 Evan Cheng <evan.cheng@apple.com> Match TargetInstrInfo changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32098 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
2bbff6d17350edae5d9ae48b3f0735386d69cccf 30-Nov-2006 Jim Laskey <jlaskey@mac.com> better check for version


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32045 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
2172f966ca6ddd805d914498851243099c778b54 30-Nov-2006 Jim Laskey <jlaskey@mac.com> Change global descriptor names to provide name, full name and linkage name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32036 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
749b01d5ff44e34018254d1653982efa94642a26 30-Nov-2006 Jim Laskey <jlaskey@mac.com> Temp fix to deal gdb issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32035 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
67f660cb080965ea93ed6d7265a67100f2fe38e4 30-Nov-2006 Evan Cheng <evan.cheng@apple.com> - MachineInstr now keeps a ptr to TargetInstrDescriptor instead of Opcode.
- Remove the ugly TargetInstrDescriptors hack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32032 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
6a16c5ab2d7786583d3c9a79646dc85fbda6cd41 29-Nov-2006 Evan Cheng <evan.cheng@apple.com> Avoid inifinite looping if READCYCLECOUNTER isn't custom lowered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32022 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
36729ddd23fe51e10eabfc7e8ac4d4635a0b7935 29-Nov-2006 Jim Laskey <jlaskey@mac.com> Eliminate unnecessary scopes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32020 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
f0b3ba6752a49a8868d423ddc2704a52b7101571 29-Nov-2006 Evan Cheng <evan.cheng@apple.com> Allow target to custom lower READCYCLECOUNTER (when it doesn't have to be expanded).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32016 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f3e486e069011c70abb771958dc1218912b98eea 29-Nov-2006 Evan Cheng <evan.cheng@apple.com> Fix for PR1023 by Dan Gohman.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32003 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a5a57d66f5717873dbf3c48b174c0b0ce54b6612 29-Nov-2006 Evan Cheng <evan.cheng@apple.com> Fix for PR1022 (folding loads of static initializers) by Dan Gohman.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32000 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3f7927c84c1b8c449378eaaf67eb9c563eb78949 29-Nov-2006 Chris Lattner <sabre@nondot.org> add a hook to allow targets to hack on inline asms to lower them to llvm
when they want to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31997 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
bdc679d564e67a81792e463f6614b0088f975025 29-Nov-2006 Bill Wendling <isanbard@gmail.com> Converted to using llvm streams instead of <iostream>s


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31992 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
LFWriter.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
a09362eb975730ac624c0bd210a95655ee105296 28-Nov-2006 Bill Wendling <isanbard@gmail.com> Use llvm streams instead of <iostream>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31985 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
egAllocSimple.cpp
woAddressInstructionPass.cpp
38b0e7bbf2590f99122a2535d16f34bd12c3bb24 28-Nov-2006 Bill Wendling <isanbard@gmail.com> Put the #include for a module first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31958 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
8bcb042f22f06d034f18aee8cb5dd0a04745fd97 28-Nov-2006 Evan Cheng <evan.cheng@apple.com> Clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31957 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
d9fd2acc1f172e4b8c33c3562667102f9af4d28d 28-Nov-2006 Bill Wendling <isanbard@gmail.com> Changed to using llvm streams.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31954 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
iveInterval.cpp
b6c806045bbd4a650f90f613a96cee01a1584412 28-Nov-2006 Chris Lattner <sabre@nondot.org> Fix PR1016


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31950 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c0f64ffab93d11fb27a3b8a0707b77400918a20e 28-Nov-2006 Evan Cheng <evan.cheng@apple.com> Change MachineInstr ctor's to take a TargetInstrDescriptor reference instead
of opcode and number of operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31947 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
3687c1a4d3ecbe6709fddd77d79dc6b128d31431 27-Nov-2006 Chris Lattner <sabre@nondot.org> Fix the dag combiner bug corresponding to PR1014.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31943 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
bc4cf8d5b137d43a1d6fde8238184e47efe162be 27-Nov-2006 Chris Lattner <sabre@nondot.org> For better or worse, load from i1 is assumed to be zero extended. Do not
form a load from i1 from larger loads that may not be zext'd.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31933 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f9908172e980aab15a36bd110ccdbc5f7afa44f6 27-Nov-2006 Chris Lattner <sabre@nondot.org> If a brcond condition is promoted, make sure to zero extend it, even if not
expanded into BR_CC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31932 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3da59db637a887474c1b1346c1f3ccf53b6c4663 27-Nov-2006 Reid Spencer <rspencer@reidspencer.com> For PR950:
The long awaited CAST patch. This introduces 12 new instructions into LLVM
to replace the cast instruction. Corresponding changes throughout LLVM are
provided. This passes llvm-test, llvm/test, and SPEC CPUINT2000 with the
exception of 175.vpr which fails only on a slight floating point output
difference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31931 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ntrinsicLowering.cpp
achineDebugInfo.cpp
electionDAG/SelectionDAGISel.cpp
0374248e86f66231ff5f07e6bce14e3dd67abd14 20-Nov-2006 Jim Laskey <jlaskey@mac.com> Global label not handled correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31883 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
32ba1aa20468a1906ee69315bda47da6b1b2dc5e 20-Nov-2006 Chris Lattner <sabre@nondot.org> Fix PR1011 and CodeGen/Generic/2006-11-20-DAGCombineCrash.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31878 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a138c6c73a9e594d82958af6b9ee01108e05e7ac 20-Nov-2006 Chris Lattner <sabre@nondot.org> setOperand should not zap the operand list or add implicit operands to an
instruction. Doing so breaks the FP stackifier, the alpha branch selector
the sparc fpmover.

This fixes PR1012 and CodeGen/X86/fp-stack-compare.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31876 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
45fb3f3cb2b8efc01d9bbe42a64194f35b92c759 20-Nov-2006 Reid Spencer <rspencer@reidspencer.com> For PR950:
First in a series of patches to convert SetCondInst into ICmpInst and
FCmpInst using only two opcodes and having the instructions contain their
predicate value. Nothing uses these classes yet. More patches to follow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31867 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4b105912657c0472dc4f6f7244ce20bf7cf9a7dc 18-Nov-2006 Chris Lattner <sabre@nondot.org> Don't transform in another bad case: if the block is empty, it should be
simplified before we do this xform so that our cost model is accurate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31864 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
f10a56a86f8ae32d0493c7de770493d55519b073 18-Nov-2006 Chris Lattner <sabre@nondot.org> Fix another case we *don't* want to do this xform.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31861 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
1ccc4684f3413d1f176a2c7a867545ce03b6414c 18-Nov-2006 Chris Lattner <sabre@nondot.org> Implement operator<< for machine basic blocks to make it easier to dump them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31857 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
154e1047184384afd0a701a9f8816459cf0b3490 18-Nov-2006 Chris Lattner <sabre@nondot.org> make the previous change more aggressive, moving any block with no fallthrough.
This speeds up yacr2 by 7% on a core2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31856 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
a7bef4a4e49f461984c04ef6be6eef3f1c023558 18-Nov-2006 Chris Lattner <sabre@nondot.org> Minor code layout tweak: if we have something like this:

if (cond) goto BB2
BB1:
...
return;
BB2:
...

Move BB1 to the end of the function so that the code falls through in the
non-return case. This has the effect of moving assert (and other no-return
call) bodies and return blocks out of loops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31855 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
5f64a16869ea8982146fccbc2f94011d550392f5 17-Nov-2006 Jim Laskey <jlaskey@mac.com> Fixing the ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1 build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31822 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
b2b9c20b6121a54a41ee1c583a4bff4389622da2 17-Nov-2006 Bill Wendling <isanbard@gmail.com> More removal of std::cerr and DEBUG, replacing with DOUT instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31806 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
irtRegMap.cpp
irtRegMap.h
54fcc7f70405646a386c7718896fe8f28d5f5308 17-Nov-2006 Bill Wendling <isanbard@gmail.com> Replace std::cerr uses of the "DEBUG" macro with "DOUT" instead. Removes
a #include of iostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31800 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
00e533043d37e4a5b6783da7e3e29e8e6b240ad5 16-Nov-2006 Bill Wendling <isanbard@gmail.com> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31789 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
ce9a576f298b2159c5f9f39275214870e38ffbef 16-Nov-2006 Evan Cheng <evan.cheng@apple.com> Match MachineCodeEmitter changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31787 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achOWriter.cpp
beeb77f3ae9e784f45ede2e38f51b9b25eb65913 16-Nov-2006 Bill Wendling <isanbard@gmail.com> Don't recompute getNumOperands for each iteration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31783 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
01352aa1875ee08ae847cce398322042830d92ed 16-Nov-2006 Bill Wendling <isanbard@gmail.com> Added a new method "CreateNewLiveInterval" which, given a list of
LiveRanges, creates a new LiveInterval from them. The LiveRanges should
have existed already in another LiveInterval, but removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31780 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e01eaa09c6be30497fde9bc4a8776752f27f74b6 16-Nov-2006 Chris Lattner <sabre@nondot.org> enable the branch folding pass for the JIT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31777 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
cc47021f49851a1b5344b7a0530f7ac50a395216 16-Nov-2006 Evan Cheng <evan.cheng@apple.com> Fix an incorrectly inverted condition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31773 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
ddee8420622db50f7714c7a17188449c395a4392 15-Nov-2006 Evan Cheng <evan.cheng@apple.com> Match live variable changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31762 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
6b2c05f3d3c7b44183c629485ade10c18b86828d 15-Nov-2006 Evan Cheng <evan.cheng@apple.com> Minor updates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31761 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9a1956ae6ad2d4892afbc9f1b97d645d220b6d4a 15-Nov-2006 Evan Cheng <evan.cheng@apple.com> A register def can be partially dead when the whole register has use(s) but a subreg does not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31760 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a6c4c1eb90413986519c46f70222539dee39ffe9 15-Nov-2006 Evan Cheng <evan.cheng@apple.com> Do away with kill / dead maps. Move kill / dead info onto MI's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31759 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
b71fd7897f6b4500cdbe602c5a9907316750cf5a 15-Nov-2006 Chris Lattner <sabre@nondot.org> Simplify IntrinsicLowering and clarify that it is only for use by the
CBE and interpreter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31755 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
43193d60e9c512fbb7ac8e682b4c807ba3e8408e 15-Nov-2006 Chris Lattner <sabre@nondot.org> remove dead #include


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31753 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7ce45783531cfa81bfd7be561ea7e4738e8c6ca8 14-Nov-2006 Evan Cheng <evan.cheng@apple.com> Matches MachineInstr changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
d7de496b23fca8145f777a56281457bf64e8bbad 14-Nov-2006 Evan Cheng <evan.cheng@apple.com> - Let MachineInstr ctors add implicit def and use operands. Other operands
will be inserted before these operands. If the opcode changes (by
setOpcode), the implicit operands are updated as well.
- Added IsKill, IsDead fields to MachineOperand in preparation for changes
that move kill / dead info to MachineInstr's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31711 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a07d5b91644eedadf768f91d3959224357fafbc9 11-Nov-2006 Reid Spencer <rspencer@reidspencer.com> Make an assert comment match the tested assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31686 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3ba433a7e85c4f5b943ae6585a0327f4ccd461a0 11-Nov-2006 Evan Cheng <evan.cheng@apple.com> Add methods to add implicit def use operands to a MI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31675 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
41e53fd39b453be9266e832d7534ae0edeaf334c 11-Nov-2006 Chris Lattner <sabre@nondot.org> disallow preinc of a frameindex. This is not profitable and causes 2-addr
pass to explode. This fixes a bunch of llc-beta failures on ppc last night.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31661 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9f1794ea58fd2acd10b6f39a01ff0fb5a29466cc 11-Nov-2006 Chris Lattner <sabre@nondot.org> reduce indentation by using early exits. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31660 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
448f219fedf4f2d119599952b6229f11ed11b035 11-Nov-2006 Chris Lattner <sabre@nondot.org> move big chunks of code out-of-line, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31658 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
734c91d2506233d6e5d6531abcfbf6302bff3c8d 10-Nov-2006 Chris Lattner <sabre@nondot.org> Fix a dag combiner bug exposed by my recent instcombine patch. This fixes
CodeGen/Generic/2006-11-10-DAGCombineMiscompile.ll and PPC gsm/toast


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31644 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
438f7bc67cf235ccee7e6f7ac7f4ae2186eb8020 10-Nov-2006 Evan Cheng <evan.cheng@apple.com> Add implicit def / use operands to MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31633 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
egAllocLocal.cpp
electionDAG/ScheduleDAG.cpp
a7ff64d6080ed2b4bd08b6ee75920e8ad5302143 10-Nov-2006 Evan Cheng <evan.cheng@apple.com> When forming a pre-indexed store, make sure ptr isn't the same or is a pred of value being stored. It would cause a cycle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31631 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1e7aa5c209109d07af30c8a2e9bfd82cf3824246 10-Nov-2006 Chris Lattner <sabre@nondot.org> commentate


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31627 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8dc5cad8a255caa4d12d4eba20ad66f3959d161c 09-Nov-2006 Evan Cheng <evan.cheng@apple.com> Don't attempt expensive pre-/post- indexed dag combine if target does not support them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31598 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5ff839fbabe8b1d26cf4db5c541eb5d7942c25d6 09-Nov-2006 Evan Cheng <evan.cheng@apple.com> Add a mechanism to specify whether a target supports a particular indexed load / store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31597 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
00305822396b34bce1b48231b0aaefaadd08e099 09-Nov-2006 Evan Cheng <evan.cheng@apple.com> Rename ISD::MemOpAddrMode to ISD::MemIndexedMode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31596 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
144d8f09e139f691cafadbc17873943ba4c465f3 09-Nov-2006 Evan Cheng <evan.cheng@apple.com> Rename ISD::MemOpAddrMode to ISD::MemIndexedMode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31595 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
85f419b36c5bd9802476721eb4ceeec953a21e29 09-Nov-2006 Jim Laskey <jlaskey@mac.com> Allows debugging llc self hosted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31594 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
5496f01465b671c95556edfb6433aa0098a12356 09-Nov-2006 Jim Laskey <jlaskey@mac.com> Merging dwarf info to a single compile unit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31593 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
d258efaf6eeb63792ba630edc50405fb559337fb 09-Nov-2006 Evan Cheng <evan.cheng@apple.com> getPostIndexedAddressParts change: passes in load/store instead of its loaded / stored VT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a1fd6504aaf62b87530e8230517957bad3facc96 09-Nov-2006 Evan Cheng <evan.cheng@apple.com> Remove M_2_ADDR_FLAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31583 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b00dddd1643f207f09de382dd67675f375327bb7 08-Nov-2006 Evan Cheng <evan.cheng@apple.com> Match more post-indexed ops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31569 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d6c3422e3126927840683574a658a0deada903f0 08-Nov-2006 Jim Laskey <jlaskey@mac.com> Remove redundant <cmath>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31561 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
6ea0f6bce837a0133f9f0bc0ee0f1f7eb1e91644 08-Nov-2006 Jim Laskey <jlaskey@mac.com> Now can re-enable debug label folding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31549 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
03fa6ea4025d9c658badc5670413e02e4eefc2f2 08-Nov-2006 Evan Cheng <evan.cheng@apple.com> - When performing pre-/post- indexed load/store transformation, do not worry
about whether the new base ptr would be live below the load/store. Let two
address pass split it back to non-indexed ops.
- Minor tweaks / fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31544 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a4f53ef527e20310555f73e624e7343cda3496cd 08-Nov-2006 Evan Cheng <evan.cheng@apple.com> Fixed a minor bug preventing some pre-indexed load / store transformation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31543 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3822ff5c71478c7c90a50ca57045fb676fcb5005 08-Nov-2006 Reid Spencer <rspencer@reidspencer.com> For PR950:
This patch converts the old SHR instruction into two instructions,
AShr (Arithmetic) and LShr (Logical). The Shr instructions now are not
dependent on the sign of their operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31542 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
6c1491dd0610ca826d460ad469af9ade62290708 08-Nov-2006 Evan Cheng <evan.cheng@apple.com> Fix a obscure post-indexed load / store dag combine bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31537 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5d056952ba2f97729c5db69a3f14250595fa1ee8 08-Nov-2006 Chris Lattner <sabre@nondot.org> optimize single MBB loops better. In particular, produce:

LBB1_57: #bb207.i
movl 72(%esp), %ecx
movb (%ecx,%eax), %cl
movl 80(%esp), %edx
movb %cl, 1(%edx,%eax)
incl %eax
cmpl $143, %eax
jne LBB1_57 #bb207.i
jmp LBB1_64 #cond_next255.i

intead of:

LBB1_57: #bb207.i
movl 72(%esp), %ecx
movb (%ecx,%eax), %cl
movl 80(%esp), %edx
movb %cl, 1(%edx,%eax)
incl %eax
cmpl $143, %eax
je LBB1_64 #cond_next255.i
jmp LBB1_57 #bb207.i

This eliminates a branch per iteration of the loop. This hurted PPC
particularly, because the extra branch meant another dispatch group for each
iteration of the loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31530 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
4d0c1a04bca539e1c6dd5541c25880e7fe7b69c3 07-Nov-2006 Jim Laskey <jlaskey@mac.com> Accidently reran commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31516 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
5e213ea69796f695d5c33f18c25c82dad4c87a24 07-Nov-2006 Jim Laskey <jlaskey@mac.com> Missed a label map, reverting till covered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31514 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
fffcd69709142c1afef256fff21585ba642734a8 07-Nov-2006 Jim Laskey <jlaskey@mac.com> Missed a label map, reverting till covered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31512 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
9d4209fb82cab74bae76511e3f21ef1c24ec948a 07-Nov-2006 Jim Laskey <jlaskey@mac.com> 1. Add a pass to fold debug label instructions so a debug info client can detect
empty ranges.

2. Reorg how MachineDebugInfo maintains changes to debug labels.

3. Have dwarf writer use debug label info to simplify scopes and source line
coorespondence.

4. Revert the merging of compile units until I can get the bugs ironed out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31507 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
LVMTargetMachine.cpp
achineDebugInfo.cpp
393ebae0ef7fa72d133bf901a02fcce3b5554ab7 07-Nov-2006 Chris Lattner <sabre@nondot.org> Enable improved spilling costs by default. This speeds up viterbi on x86
by 40%, FreeBench/fourinarow by 20%, and many other programs 10-25%.

On PPC, this speeds up fourinarow by 18%, and probably other things as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31504 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7902c75331fa8f38fc8380f5573d935c0d149ef5 07-Nov-2006 Jim Laskey <jlaskey@mac.com> Use correct value for float HUGH_VAL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31500 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
bbd6f6ec1a79c1624fb9cd0a3a1d26155de7c090 07-Nov-2006 Evan Cheng <evan.cheng@apple.com> Add post-indexed load / store transformations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31498 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b75a663707e40a6b72bf404e7fbf08f7d9e1eb90 07-Nov-2006 Chris Lattner <sabre@nondot.org> Add a new llcbeta option. This speeds up viterbi from 12.34 to 8.76s on
X86. If happy, I'll enable this by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31493 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5a4951e93622118eaf345d6c7599eccb6d4cfb65 07-Nov-2006 Reid Spencer <rspencer@reidspencer.com> Unbreak X86/ELF Debugging. Somehow this line got lost in Jim's cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31492 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
fa9aa2b424d0a7d9f7201f8fdcf5ccfa05db3a80 07-Nov-2006 Chris Lattner <sabre@nondot.org> Fix PR988 and CodeGen/Generic/2006-11-06-MemIntrinsicExpand.ll.
The low part goes in the first operand of expandop, not the second one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31487 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d5ad440f4371448e2c926b4f6613cc7107dd5c5c 06-Nov-2006 Evan Cheng <evan.cheng@apple.com> Remove dead code; added a missing null ptr check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31478 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f910a3ff0f63143f44536db38e5975aec01c01d8 06-Nov-2006 Jim Laskey <jlaskey@mac.com> Tab interferes with uniqueness.
NOTE: There doesn't seem to be consistency for whether a leading tab
is present in a section heading.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31475 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
84ca10f47b2f9951e2156e430a800ce8d98e2000 06-Nov-2006 Jim Laskey <jlaskey@mac.com> D'oh - reversed logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31474 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
3ef554d2b12af4ed0a25161fa02222d8f14026e5 06-Nov-2006 Evan Cheng <evan.cheng@apple.com> Add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31473 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d41b30def3181bce4bf87e8bde664d15663165d0 05-Nov-2006 Jeff Cohen <jeffc@jolt-lang.org> Unbreak VC++ build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31464 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
33dbedcdcb6d4d647b013b1c57ad30bf53b15e1f 05-Nov-2006 Evan Cheng <evan.cheng@apple.com> Added pre-indexed store support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31459 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9109fb1eb7d3341727353777c2a4282aa1a0c39a 05-Nov-2006 Evan Cheng <evan.cheng@apple.com> Added getIndexedStore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31458 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5cd496e72773985590a7dfc003279459951c81d7 04-Nov-2006 Jim Laskey <jlaskey@mac.com> Live local variables are being dropped because the begin or end labels marking
their scope are being deleted. Workaround is to widen scope to full function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31454 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
95f6edeff5ab6de9cf5589f662c8e7a6ba119c2c 04-Nov-2006 Evan Cheng <evan.cheng@apple.com> Changes to use operand constraints to process two-address instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31453 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
e077ef6e85fe0c18f135e6c2c78572a44f689b14 04-Nov-2006 Evan Cheng <evan.cheng@apple.com> Fixed some spiller bugs exposed by the recent two-address code changes. Now
there may be other def(s) apart from the use&def two-address operand. We need
to check if the register reuse for a use&def operand may conflicts with another
def. Provide a mean to recover from the conflict if it is detected when the
defs are processed later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31439 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
033b107e10c6b859ad45a126edbe54746547c0c4 03-Nov-2006 Chris Lattner <sabre@nondot.org> this will work better


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31419 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
070971866586bb0f45c7e5001b63ced0a1b64387 03-Nov-2006 Chris Lattner <sabre@nondot.org> Fix the build on xcode < 2.4


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31417 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
e6e97e66a366cc7d2d103ac58db56e4bfd700b10 03-Nov-2006 Evan Cheng <evan.cheng@apple.com> Fix comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31414 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1a854be35295fd1c9c4d0d0f8894e720e22b5e4f 03-Nov-2006 Evan Cheng <evan.cheng@apple.com> Rename


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31413 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b8f4e0aa1719c1d5b93b096a8723ec7f68b4929a 03-Nov-2006 Reid Spencer <rspencer@reidspencer.com> Remove dead variable. Fix 80 column violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31412 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7fc033a24d5e82674212379ef4d4d67373a03990 03-Nov-2006 Evan Cheng <evan.cheng@apple.com> Added DAG combiner transformation to generate pre-indexed loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31410 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c5fc57dcaeac6b479fb15b9e1f4aca0845141006 03-Nov-2006 Evan Cheng <evan.cheng@apple.com> Added isPredecessor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31409 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bf105c842450d3308d024be203ddd533f37051ec 03-Nov-2006 Evan Cheng <evan.cheng@apple.com> Proper check for two-addressness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31408 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
02cb49ee679f60662220fca4e26df4f9f16db5e0 03-Nov-2006 Chris Lattner <sabre@nondot.org> silence warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31397 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAG.cpp
97821311a32b5ca11b5f843f90a85875feb7d142 03-Nov-2006 Reid Spencer <rspencer@reidspencer.com> Make CodeGen libs -pedantic clean.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31387 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
akefile
f673388351b7156e384bbcd45401fcab400be356 02-Nov-2006 Jim Laskey <jlaskey@mac.com> 1. Hash not quite right for DIEValues.

2. Not going to use Usage (no significant benefit.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31384 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
9bd6d65e299ee3937c29904821b2b6d8bb87ae4a 02-Nov-2006 Reid Spencer <rspencer@reidspencer.com> Remove unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31382 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
3ed469ccd7b028a030b550d84b7336d146f5d8fa 02-Nov-2006 Reid Spencer <rspencer@reidspencer.com> For PR786:
Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
fall out by removing unused variables. Remaining warnings have to do with
unused functions (I didn't want to delete code without review) and unused
variables in generated code. Maintainers should clean up the remaining
issues when they see them. All changes pass DejaGnu tests and Olden.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31380 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
warfWriter.cpp
LFWriter.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
ef42a01113a1ee8ef0f2c803ec05a5f20eca2854 02-Nov-2006 Jim Laskey <jlaskey@mac.com> General clean up of teh dwarf writer.

1. Most significant is the folding of debug information entries. This
reduced self hosted -g SelectionDAGISel.s from 120M to 13M and pretty
close to matching .o file sizes with gcc.

2. Debug information entry printing for debugging the dwarf code.

3. Bring all the code closer to llvm standards.

4. Misc. fixes and doc clean ups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31379 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
0a783f783ca05c961234385f5b269d4cf03dbbdb 02-Nov-2006 Reid Spencer <rspencer@reidspencer.com> For PR950:
Replace the REM instruction with UREM, SREM and FREM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31369 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2a821601f1db665fbb825727aacf1a54d17b91ef 02-Nov-2006 Chris Lattner <sabre@nondot.org> Allow the getRegForInlineAsmConstraint method to return a register class with
no fixes physreg. Treat this as permission to use any register in the register
class. When this happens and it is safe, allow the llvm register allcoator to
allocate the register instead of doing it at isel time. This eliminates a ton
of copies around common inline asms. For example:

int test2(int Y, int X) {
asm("foo %0, %1" : "=r"(X): "r"(X));
return X;
}

now compiles to:

_test2:
foo r3, r4
blr

instead of:

_test2:
mr r2, r4
foo r2, r2
mr r3, r2
blr

GCC produces:

_test2:
foo r4, r4
mr r3,r4
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31366 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e6ae14e1f413987f3de31a7cad1b20a7893f8cae 02-Nov-2006 Evan Cheng <evan.cheng@apple.com> Rename


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31364 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
irtRegMap.cpp
360c2dd25a0dc7eaed3d57af47a47ac7d12a6886 02-Nov-2006 Evan Cheng <evan.cheng@apple.com> Two-address instructions no longer have to be A := A op C. Now any pair of dest / src operands can be tied together.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31363 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
1dabb68ab45cb05a2c50e9a6f18f60cd3d7105f4 01-Nov-2006 Evan Cheng <evan.cheng@apple.com> Clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
93467e7fe3ba5cb60dec94b3ae8cdb13e51aa9a2 01-Nov-2006 Evan Cheng <evan.cheng@apple.com> CopyFromReg starts a live range so its use should not be considered a floater.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
d4bf3c2fd60975b30cd067b59f743a3ea45e45b5 01-Nov-2006 Chris Lattner <sabre@nondot.org> give branch folding a simple heuristic to decide which block to split so that
it inserts an uncond branch where it is less likely to cause a problem. This
fixes some perf issues on ppc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31354 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
41349c10cbb166c58a20896e4761455f001c611e 01-Nov-2006 Evan Cheng <evan.cheng@apple.com> Add a printSetLabel that takes two id's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31347 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
6cc31ae4da958abc85309f2160e64d6effaa2d3c 01-Nov-2006 Evan Cheng <evan.cheng@apple.com> Print jumptable index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
1d08d83230338ca5969ff6ae6737a978336538bf 01-Nov-2006 Chris Lattner <sabre@nondot.org> make tail merging more aggressive. If two blocks share a common tail, but the
tail is not an entire block for either of them, pick one, split it, then
merge the common part.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31336 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
d8ccff0c3e5028019a02dd44bf7d906efc9effd8 01-Nov-2006 Chris Lattner <sabre@nondot.org> enable branch folding with an option


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31335 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
0ccb500fa7a28baeb66754ff4a6950fa0e82617d 01-Nov-2006 Chris Lattner <sabre@nondot.org> Compile CodeGen/PowerPC/fp-branch.ll to:

_intcoord_cond_next55:
LBB1_3: ;cond_next55
lis r2, ha16(LCPI1_0)
lfs f0, lo16(LCPI1_0)(r2)
fcmpu cr0, f1, f0
blt cr0, LBB1_2 ;cond_next62.exitStub
LBB1_1: ;bb72.exitStub
li r3, 1
blr
LBB1_2: ;cond_next62.exitStub
li r3, 0
blr

instead of:

_intcoord_cond_next55:
LBB1_3: ;cond_next55
lis r2, ha16(LCPI1_0)
lfs f0, lo16(LCPI1_0)(r2)
fcmpu cr0, f1, f0
bge cr0, LBB1_1 ;bb72.exitStub
LBB1_4: ;cond_next55
lis r2, ha16(LCPI1_0)
lfs f0, lo16(LCPI1_0)(r2)
fcmpu cr0, f1, f0
bnu cr0, LBB1_2 ;cond_next62.exitStub
LBB1_1: ;bb72.exitStub
li r3, 1
blr
LBB1_2: ;cond_next62.exitStub
li r3, 0
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
df19f27d039fd791c73e39f4134319debc75db4f 31-Oct-2006 Chris Lattner <sabre@nondot.org> look through isunordered to inline it into branch blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31328 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
efa46ce87bd454d128c4429475fea805aa98a5f6 31-Oct-2006 Chris Lattner <sabre@nondot.org> handle global address constant sdnodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31323 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
53069fbbae2558a3138df24776448791fea3acee 31-Oct-2006 Chris Lattner <sabre@nondot.org> TargetLowering::isOperandValidForConstraint


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31319 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
dba1aeedd8179114a45be655b985455218d20806 31-Oct-2006 Chris Lattner <sabre@nondot.org> Change the prototype for TargetLowering::isOperandValidForConstraint


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31318 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
ab4022f196059745c0ca0780b71a80fa67e896be 31-Oct-2006 Anton Korobeynikov <asl@math.spbu.ru> 1. Clean up code due to changes in SwitchTo*Section(2)
2. Added partial debug support for mingw\cygwin targets (the same as
Linux\ELF). Please note, that currently mingw\cygwin uses 'stabs' format
for storing debug info by default, thus many (runtime) libraries has
this information included. These formats shouldn't be mixed in one binary
('stabs' & 'DWARF'), otherwise binutils tools will be confused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31311 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
d03f1581c8a854fdbe4f5a738e9322341c2bc77f 31-Oct-2006 Chris Lattner <sabre@nondot.org> Turn an assert into an error message. This is commonly triggered when
we don't support a specific constraint yet. When this happens, print the
unsupported constraint.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31310 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d063189c0958536aae7ecebec5676541b2cdef9b 31-Oct-2006 Evan Cheng <evan.cheng@apple.com> Fix a typo which can break jumptables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0de0c5da429f8651eeccbcbe68feab23054bd55d 31-Oct-2006 Reid Spencer <rspencer@reidspencer.com> Fix a problem introduced by a last-minute change (logic negation).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31302 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
02b8511364a61b559369d8dc36e82a486f42fec3 30-Oct-2006 Reid Spencer <rspencer@reidspencer.com> Add debug support for X86/ELF targets (Linux). This allows llvm-gcc4
generated object modules to be debugged with gdb. Hopefully this helps
pre-release debugging.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31299 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
a9c83fe5e110108c83427339265f733dc711f625 30-Oct-2006 Jim Laskey <jlaskey@mac.com> Switch abbreviations to use the folding set.a.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31296 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
6519546edabd107815637d596f1ece3d88d1b317 30-Oct-2006 Jim Laskey <jlaskey@mac.com> Simplify DwarfWriter header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31295 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
3d4ce1108520a4dcf31cb01523e145d286ee64c1 30-Oct-2006 Evan Cheng <evan.cheng@apple.com> Lower jumptable to BR_JT. The legalizer can lower it to a BRIND or let the target custom lower it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31293 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
c41cd9c391f1f69adf416145a5a1308d7ce342fc 30-Oct-2006 Evan Cheng <evan.cheng@apple.com> Added a new SDNode type: BR_JT for jumptable branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31292 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6b0e3f890779b7fc912bec8d40a9590e44742737 29-Oct-2006 Chris Lattner <sabre@nondot.org> Make CanFallThrough more intelligent (so it can handle blocks with (e.g.) no
successors), and make island block movement more general.

This compiles CodeGen/X86/2006-04-27-ISelFoldingBug.ll to:

_loadAndRLEsource_no_exit_2E_1_label_2E_0:
subl $8, %esp
movl %esi, 4(%esp)
movl %ebx, (%esp)
movl 16(%esp), %eax
movl 12(%esp), %ecx
LBB1_3: #label.0
movl _last, %edx
movl %edx, %esi
incl %esi
movl %esi, _last
movl %ecx, %ebx
# TRUNCATE movb %bl, %bl
movl _block, %esi
movb %bl, 1(%esi,%edx)
cmpl %eax, _last
jge LBB1_2 #codeRepl5.exitStub
LBB1_4: #label.0
cmpl $257, %ecx
je LBB1_2 #codeRepl5.exitStub
LBB1_1: #label.0.no_exit.1_crit_edge.exitStub
movl $1, %eax
movl (%esp), %ebx
movl 4(%esp), %esi
addl $8, %esp
ret
LBB1_2: #codeRepl5.exitStub
xorl %eax, %eax
movl (%esp), %ebx
movl 4(%esp), %esi
addl $8, %esp
ret

instead of:

_loadAndRLEsource_no_exit_2E_1_label_2E_0:
subl $8, %esp
movl %esi, 4(%esp)
movl %ebx, (%esp)
movl 16(%esp), %eax
movl 12(%esp), %ecx
jmp LBB1_3 #label.0
LBB1_1: #label.0.no_exit.1_crit_edge.exitStub
movl $1, %eax
movl (%esp), %ebx
movl 4(%esp), %esi
addl $8, %esp
ret
LBB1_2: #codeRepl5.exitStub
xorl %eax, %eax
movl (%esp), %ebx
movl 4(%esp), %esi
addl $8, %esp
ret
LBB1_3: #label.0
movl _last, %edx
movl %edx, %esi
incl %esi
movl %esi, _last
movl %ecx, %ebx
# TRUNCATE movb %bl, %bl
movl _block, %esi
movb %bl, 1(%esi,%edx)
cmpl %eax, _last
jge LBB1_2 #codeRepl5.exitStub
LBB1_4: #label.0
cmpl $257, %ecx
jne LBB1_1 #label.0.no_exit.1_crit_edge.exitStub
jmp LBB1_2 #codeRepl5.exitStub

... which is much better layout :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31282 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
6a586c8d9a7ba032adf0619d06473310c41cae14 29-Oct-2006 Chris Lattner <sabre@nondot.org> fix Generic/2006-10-29-Crash.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31281 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5a145f0094d7e15ca3c0326b1af2ea0ad19f9726 29-Oct-2006 Chris Lattner <sabre@nondot.org> Fix a load folding issue that Evan noticed: there is no need to export values
used by comparisons in the main block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ba726ab3ec88b3b149b4caa34dec5ade5a3a7f89 29-Oct-2006 Evan Cheng <evan.cheng@apple.com> VLOAD is not the LoadSDNode opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31276 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f6aaaaa39ef0901623965b9e8306c36a6d3bb89e 29-Oct-2006 Nick Lewycky <nicholas@mxc.ca> Remove spurious case. EXTLOAD is not one of the node opcodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31275 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bad7f48c7070444eeb767c169f8bbed86b2c1ae1 28-Oct-2006 Chris Lattner <sabre@nondot.org> split critical edges more carefully and intelligently. In particular, critical
edges whose destinations are not phi nodes don't bother us. Also, share
split edges, since the split edge can't have a phi. This significantly
reduces the complexity of generated code in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31274 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6acfe12dd6d52c801f78c240528b7cb42fa91159 28-Oct-2006 Chris Lattner <sabre@nondot.org> Teach branch folding to fold identical jump tables together and to delete
jump tables that are dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31273 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
a4eb44a285984ec999de632beb5145b099f5416d 28-Oct-2006 Chris Lattner <sabre@nondot.org> const'ify jump table stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31269 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
e7251a0377334bdb57bd188828bf89c9e3980fad 28-Oct-2006 Chris Lattner <sabre@nondot.org> add an assert


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31267 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
07371882208f913d18a7f2a47373eaee7138416b 28-Oct-2006 Chris Lattner <sabre@nondot.org> don't print dead jump tables


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31266 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
cf420cca572b061fdd63587cb90904c641b6e216 28-Oct-2006 Chris Lattner <sabre@nondot.org> improve deletion of blocks that just contain branches by knowing that
the pred block doesn't fall through into them if it's a jumptable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31263 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
1c6f01aaa58c1f8666c30465b73b702524fa9553 28-Oct-2006 Jim Laskey <jlaskey@mac.com> Load and stores have not been uniqued properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31261 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
47e32e6b831dad8289fd498c71c5f641172b1c09 28-Oct-2006 Chris Lattner <sabre@nondot.org> Split *all* critical edges before isel. This resolves issues with spill code
being inserted on unsplit critical edges, which introduces (sometimes large
amounts of) partially dead spill code.

This also fixes PR925 + CodeGen/Generic/switch-crit-edge-constant.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31260 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6fb6ef4d65abcbbb0b0d81e1b51d99949664ac86 28-Oct-2006 Chris Lattner <sabre@nondot.org> Fix a serious bug that caused any x86 vector stuff to infinite loop


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
def69b92e70d156ed6f8c7af33c9a87d3f475e09 28-Oct-2006 Jim Laskey <jlaskey@mac.com> Clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31243 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8c494ab759266322aa05d5e99af9c05eb0d44576 28-Oct-2006 Chris Lattner <sabre@nondot.org> Fix a bug in merged condition handling (CodeGen/Generic/2006-10-27-CondFolding.ll).

Add many fewer CFG edges and PHI node entries. If there is a switch which has
the same block as multiple destinations, only add that block once as a successor/phi
node (in the jumptable case)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31242 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
583bd47f777fe3eb8305872fa0eadab31e833dff 28-Oct-2006 Jim Laskey <jlaskey@mac.com> Switch over from SelectionNodeCSEMap to FoldingSet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31240 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGCSEMap.cpp
1c9b2f312d63902303507ee35dbd7631447773be 27-Oct-2006 Chris Lattner <sabre@nondot.org> remove debug code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31233 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d2f9ee9ea7b08c23a8742b6a53dd78a20233adc0 27-Oct-2006 Chris Lattner <sabre@nondot.org> Codegen cond&cond with two branches. This compiles (f.e.) PowerPC/and-branch.ll to:

cmpwi cr0, r4, 4
bgt cr0, LBB1_2 ;UnifiedReturnBlock
LBB1_3: ;entry
cmplwi cr0, r3, 0
bne cr0, LBB1_2 ;UnifiedReturnBlock

instead of:

cmpwi cr7, r4, 4
mfcr r2
addic r4, r3, -1
subfe r3, r4, r3
rlwinm r2, r2, 30, 31, 31
or r2, r2, r3
cmplwi cr0, r2, 0
bne cr0, LBB1_2 ;UnifiedReturnBlock
LBB1_1: ;cond_true


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31232 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
571e434a34e26f295f13db2dd07551de7e25f8a9 27-Oct-2006 Chris Lattner <sabre@nondot.org> Turn conditions like x<Y|z==q into multiple blocks.

This compiles Regression/CodeGen/X86/or-branch.ll into:

_foo:
subl $12, %esp
call L_bar$stub
movl 20(%esp), %eax
movl 16(%esp), %ecx
cmpl $5, %eax
jl LBB1_1 #cond_true
LBB1_3: #entry
testl %ecx, %ecx
jne LBB1_2 #UnifiedReturnBlock
LBB1_1: #cond_true
call L_bar$stub
addl $12, %esp
ret
LBB1_2: #UnifiedReturnBlock
addl $12, %esp
ret

instead of:

_foo:
subl $12, %esp
call L_bar$stub
movl 20(%esp), %eax
movl 16(%esp), %ecx
cmpl $4, %eax
setg %al
testl %ecx, %ecx
setne %cl
testb %cl, %al
jne LBB1_2 #UnifiedReturnBlock
LBB1_1: #cond_true
call L_bar$stub
addl $12, %esp
ret
LBB1_2: #UnifiedReturnBlock
addl $12, %esp
ret

And on ppc to:

cmpwi cr0, r29, 5
blt cr0, LBB1_1 ;cond_true
LBB1_3: ;entry
cmplwi cr0, r30, 0
bne cr0, LBB1_2 ;UnifiedReturnBlock

instead of:

cmpwi cr7, r4, 4
mfcr r2
addic r4, r3, -1
subfe r30, r4, r3
rlwinm r29, r2, 30, 31, 31
and r2, r29, r30
cmplwi cr0, r2, 0
bne cr0, LBB1_2 ;UnifiedReturnBlock


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31230 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5270cf1b77e68b19e2c689e87700029821c70aa2 26-Oct-2006 Evan Cheng <evan.cheng@apple.com> getPreIndexedLoad -> getIndexedLoad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31209 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1628cec4d7fce310d9cde0bcc73997e5a71692c4 26-Oct-2006 Reid Spencer <rspencer@reidspencer.com> For PR950:
Make necessary changes to support DIV -> [SUF]Div. This changes llvm to
have three division instructions: signed, unsigned, floating point. The
bytecode and assembler are bacwards compatible, however.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c2e91e34dc18d794435db86713c06400ea60e930 26-Oct-2006 Chris Lattner <sabre@nondot.org> simplify code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31188 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
323ece6fcd9722482a0be6c82afc5abc75739c78 25-Oct-2006 Chris Lattner <sabre@nondot.org> turn off tail merging for now


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31180 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
13a04125df039d118c688df26998343a00d8a749 25-Oct-2006 Chris Lattner <sabre@nondot.org> be more aggressive about matching identical instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31179 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f9c197e022521a83f8876890b4241fc23e63572c 24-Oct-2006 Devang Patel <dpatel@apple.com> Move getPreferredAlignmentLog from AsmPrinter to TargetData


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31171 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
2452595927a19a84ab20f012f1e2414a18f65ffb 24-Oct-2006 Chris Lattner <sabre@nondot.org> visitSwitchCase knows how to insert conditional branches well. Change
visitBr to just call visitSwitchCase, eliminating duplicate logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31167 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
57ab65972e09be54da6461e483664ebf34afa1ee 24-Oct-2006 Chris Lattner <sabre@nondot.org> Generalize CaseBlock a bit more:

Rename LHSBB/RHSBB to TrueBB/FalseBB. Allow the RHS value to be null,
in which case the LHS is treated as a bool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31166 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7b248d986670c214674c45d362950ec105668255 24-Oct-2006 Chris Lattner <sabre@nondot.org> generalize 'CaseBlock'. It really allows any comparison to be inserted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31161 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
62d07d6acef9f5fd807b98a509d164bd3d6f0187 24-Oct-2006 Jim Laskey <jlaskey@mac.com> Don't do dead block elimination in fast mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31155 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
e719d9f8f29bfc227eb109f6cee51a150a25189f 24-Oct-2006 Jim Laskey <jlaskey@mac.com> LinearScanner hotspot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31153 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
fcc1d9473ee6dbc79128561449ff8d603a846f92 24-Oct-2006 Jim Laskey <jlaskey@mac.com> Tighter data structure for deleted debug labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31152 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
7d09784d3fc652131a2afbf06a0f2ed893837fb9 24-Oct-2006 Chris Lattner <sabre@nondot.org> move single basic blocks that are neither fallen into nor fall out of into
a place more useful. In particular, if we can put them in a place where code
will be able to fall into it, do so. Otherwise, put it in a place it can fall
through into a successor. Otherwise, if preventing a fallthrough, move to the
end of the function, out of the way.

This deletes several hundred unconditional branches from spass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31149 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
c585a3f62adb2e491d792115af637ef75bdf489e 24-Oct-2006 Chris Lattner <sabre@nondot.org> add moveBefore/moveAfter helper methods


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31145 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
a4bcfe12d1ea16e3e4ea9148e2d9cba3bb63dbda 24-Oct-2006 Chris Lattner <sabre@nondot.org> Enable tail merging by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31140 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
b354343af79ce7b64e3b32696f37ad0ce29f3ffd 23-Oct-2006 Chris Lattner <sabre@nondot.org> Minor tweak. Instead of generating:

movl 32(%esp), %eax
cmpl $1, %eax
je LBB1_1 #bb
LBB1_4: #entry
cmpl $2, %eax
je LBB1_2 #bb2
jmp LBB1_3 #UnifiedReturnBlock
LBB1_1: #bb

notice that we would miss the fall through and emit this instead:

movl 32(%esp), %eax
cmpl $2, %eax
je LBB1_2 #bb2
LBB1_4: #entry
cmpl $1, %eax
jne LBB1_3 #UnifiedReturnBlock
LBB1_1: #bb


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31130 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
66ebf0973d717b4b2cdef731847aef3904fd04b2 23-Oct-2006 Jim Laskey <jlaskey@mac.com> More complete solution to deleting blocks and debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31129 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
warfWriter.cpp
achineDebugInfo.cpp
b2e806eecd85c98367f038817e742ef183dd9f87 23-Oct-2006 Chris Lattner <sabre@nondot.org> Fix phi node updating for switches lowered to linear sequences of branches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31125 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e236ac64a2b149ccf4216159430de512ec58a504 23-Oct-2006 Chris Lattner <sabre@nondot.org> disable this code for now, it's not yet safely updating phi nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d2c1d2200b4d1012c61c4bcddfbc6fefcf3a05e1 22-Oct-2006 Chris Lattner <sabre@nondot.org> Implement PR964 and Regression/CodeGen/Generic/SwitchLowering.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31119 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4bc135e93beebdcb3b9c44745c5ccbc91199ac0b 21-Oct-2006 Chris Lattner <sabre@nondot.org> don't break infinite loops


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31102 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
a2d799531a748a349b9a458dbbc580b134074c49 21-Oct-2006 Chris Lattner <sabre@nondot.org> Use branch reversal to do stuff like this:

call L_strcmp$stub
testl %eax, %eax
- jne LBB26_208 #cond_true6020
- jmp LBB26_227 #bb7119
+ je LBB26_227 #bb7119
LBB26_208: #cond_true6020
movl $l31_str14, 4(%esp)

testl %eax, %eax
- jne LBB26_704 #cond_true13042
- jmp LBB26_713 #bb13151
+ je LBB26_713 #bb13151
LBB26_704: #cond_true13042
movl $_str52, 4(%esp)

cmpl 76(%ecx), %eax
- jge LBB26_1628 #cond_false63.i.i
- jmp LBB26_1769 #_Z8makeGridP13mrSurfaceListidiidd.exit.i
+ jl LBB26_1769 #_Z8makeGridP13mrSurfaceListidiidd.exit.i
LBB26_1628: #cond_false63.i.i
movl $0, 48964(%esp)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31100 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
2d47bd937c13556ace07b2b2daf4dfe75f4e1e90 21-Oct-2006 Chris Lattner <sabre@nondot.org> Transform code like:

jle FOO
jmp BAR
BAR:

into:

jle FOO
BAR:

... whoa!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31098 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
386e29065db5b05b57440f6b2a6dfa1e7f29a00d 21-Oct-2006 Chris Lattner <sabre@nondot.org> Three changes:
1. Remove a bunch of ifdef'd code.
2. When a block just contains an uncond branch, change all blocks branching
to it to jump to the destination instead.
3. If branch analysis tells us some edges in the machinecfg are not actually
possible, remove them.

#2 triggers a suprisingly large number of times.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31094 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
12143054aa6d120f029d268a5154bf2ecd0f707f 21-Oct-2006 Chris Lattner <sabre@nondot.org> Add an experimental cross-jumping implementation.
This is currently disabled by default and limited in several ways, but does
have a positive effect.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31090 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
8ace2cd034be10c09be51daf08c3dda327f54262 21-Oct-2006 Chris Lattner <sabre@nondot.org> implement MachineOperand::isIdenticalTo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31088 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
34ab4d45d2aa11bee666836e3571be2627959a42 20-Oct-2006 Chris Lattner <sabre@nondot.org> Make flag and chain edges visually distinguishable from value edges in DOT
output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31067 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
b83eb6447ba155342598f0fabe1f08f5baa9164a 20-Oct-2006 Reid Spencer <rspencer@reidspencer.com> For PR950:
This patch implements the first increment for the Signless Types feature.
All changes pertain to removing the ConstantSInt and ConstantUInt classes
in favor of just using ConstantInt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31063 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ntrinsicLowering.cpp
achineDebugInfo.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
c70ddad2b7d7abffeaaace913939fb3c5c55a38b 19-Oct-2006 Bill Wendling <isanbard@gmail.com> Partially in response to PR926: insert the newly created machine basic
blocks into the basic block list when lowering the switch inst. into a
binary tree of if-then statements. This allows the "visitSwitchCase" func
to allow for fall-through behavior.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31057 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
07a2709e9de7c619edc26d97b3491c48ccae55ef 18-Oct-2006 Jim Laskey <jlaskey@mac.com> Add option for controlling inclusion of global AA.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31040 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
096c22ea3d0174d1c75358dbdc49618cf18e9fb7 18-Oct-2006 Jim Laskey <jlaskey@mac.com> Use global info for alias analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31035 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
683747abb81a7b7711ad6cb5abf5a4227f7ab691 18-Oct-2006 Chris Lattner <sabre@nondot.org> Teach the branch folder to update debug info if it removes blocks with line
# notes in it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31026 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
a97906b6e6e85934d6cb71ddf3ca9bb72fe66695 18-Oct-2006 Chris Lattner <sabre@nondot.org> add a method to remove a line # record.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31025 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
8466b214328b162a0be648dd324db8b6a1cfe0df 18-Oct-2006 Chris Lattner <sabre@nondot.org> Do not leak all of the SourceLineInfo objects. Do not bother mallocing each
one separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31022 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
b360729873eb142ae2327cd399880e4ef55bea2a 17-Oct-2006 Chris Lattner <sabre@nondot.org> Trivial patch to speed up legalizing common i64 constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31020 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
50662beab7cc6394a0d6524d16fe7de1d5192196 17-Oct-2006 Chris Lattner <sabre@nondot.org> Fix CodeGen/PowerPC/2006-10-17-brcc-miscompile.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31019 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
649b7ef6273aced78ae32321de282489ce9be6b3 17-Oct-2006 Evan Cheng <evan.cheng@apple.com> Fix printer for StoreSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31017 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
2cacccae194b5ed648c004f6c06fce5565331ee9 17-Oct-2006 Evan Cheng <evan.cheng@apple.com> Reflect MemOpAddrMode change; added a helper to create pre-indexed load.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31016 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
26f7fa7bba94eb18bf0e43586dd2b596cb58ca80 17-Oct-2006 Jim Laskey <jlaskey@mac.com> Make it simplier to dump DAGs while in DAGCombiner. Remove a nasty optimization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31009 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
ffddf6ba1c58b42dcfd071972754649c3ca5dff7 17-Oct-2006 Chris Lattner <sabre@nondot.org> Enable deleting branches to successor blocks. With the previous patches,
branch folding can now compile stuff like this:

void foo(int W, int X, int Y, int Z) {
if (W & 1) {
for (; X;--X) bar();
} else if (W & 2) {
for (; Y;--Y) bar();
} else if (W & 4) {
for (; Z;--Z) bar();
} else if (W & 8) {
for (; W;--W) bar();
}

if (W) {
bar();
}
}

contrived testcase where loops exits all end up merging together. To have
the loop merges be:

...
cmplw cr0, r30, r27
bne cr0, LBB1_14 ;bb38
LBB1_16: ;cond_next48.loopexit
mr r27, r29
LBB1_20: ;cond_next48
cmplwi cr0, r27, 0
beq cr0, LBB1_22 ;UnifiedReturnBlock
...

instead of:


...
cmplw cr0, r30, r27
bne cr0, LBB1_14 ;bb38
LBB1_16: ;cond_next48.loopexit
mr r27, r29
b LBB1_20 ;cond_next48
LBB1_17: ;cond_next48.loopexit1
b LBB1_20 ;cond_next48
LBB1_18: ;cond_next48.loopexit2
b LBB1_20 ;cond_next48
LBB1_19: ;cond_next48.loopexit3
LBB1_20: ;cond_next48
cmplwi cr0, r27, 0
beq cr0, LBB1_22 ;UnifiedReturnBlock
...


This is CodeGen/PowerPC/branch-opt.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31006 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
99e41eed6d8b89b2ba4807625d13d08d85ea493d 17-Oct-2006 Jim Laskey <jlaskey@mac.com> Clean up interface to getGlobalLinkName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31001 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
c50ffcb7fcb7c1109fee2406e8f74d096f755f47 17-Oct-2006 Chris Lattner <sabre@nondot.org> Reenable this pass, fixing the bugs in it.
It now correctly deletes unreachable blocks and blocks that are empty.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31000 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
5d04a1af4fe7600b43812d28757a5d62ba409942 17-Oct-2006 Evan Cheng <evan.cheng@apple.com> Make sure operand does have size and element type operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30999 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a1a19f803c8fef05db627a8b73c909a50306e9d6 17-Oct-2006 Jim Laskey <jlaskey@mac.com> Basic support for getGlobalLinkName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30997 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
5956922a2d22dc46523078e35de7dc648a1db172 17-Oct-2006 Evan Cheng <evan.cheng@apple.com> Be careful when looking through a vbit_convert. Optimizing this:
(vector_shuffle
(vbitconvert (vbuildvector (copyfromreg v4f32), 1, v4f32), 4, f32),
(undef, undef, undef, undef), (0, 0, 0, 0), 4, f32)
to the
vbitconvert
is a very bad idea.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30989 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c7c3f110eda0ff8040e4bd99e38d3112b910810f 16-Oct-2006 Jim Laskey <jlaskey@mac.com> Pass AliasAnalysis thru to DAGCombiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30984 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGISel.cpp
ba8a2ee548ba8d589fd22cf61d479bc5f1274c69 16-Oct-2006 Jim Laskey <jlaskey@mac.com> Global name regression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30982 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
d4edf2cf911f1f6543ec6cc89fe7b8bb37ad95b3 14-Oct-2006 Jim Laskey <jlaskey@mac.com> Tidy up after truncstore changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30961 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d42a5238a967c9cdfec8fe086bd18876bff5a951 14-Oct-2006 Evan Cheng <evan.cheng@apple.com> Debug tweak.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30959 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
30f73e78bd92f9815647ef8e3d29dd355f29432c 14-Oct-2006 Chris Lattner <sabre@nondot.org> Make sure that the node returned by SimplifySetCC is added to the worklist
so that it can be deleted if unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30955 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8ac9d0ebdea49dedca3387fafa4e40e911d3269f 14-Oct-2006 Chris Lattner <sabre@nondot.org> fold setcc of a setcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30953 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
51dabfb28375be7bc5848806ae31cd068b6133f8 14-Oct-2006 Chris Lattner <sabre@nondot.org> When SimplifySetCC was moved to the DAGCombiner, it was never removed from
SelectionDAG and it has since bitrotted. Remove the copy from SelectionDAG.
Next, remove the constant folding piece of DAGCombiner::SimplifySetCC into
a new FoldSetCC method which can be used by getNode() and SimplifySetCC.

This fixes obscure bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
8f16eb98ed21a642d7f75c76f4b1acf0f199ee6d 14-Oct-2006 Chris Lattner <sabre@nondot.org> disable this pass for now, it's causing issues


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30951 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
7821a8afd3009c3c2760592e61de9e2c31c73e18 14-Oct-2006 Chris Lattner <sabre@nondot.org> falling off the end of a function is ok with an unreachable instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30950 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
274062c172bbdf70b8f717875ecf0dabb176c6e5 14-Oct-2006 Jim Laskey <jlaskey@mac.com> Reduce the workload by not adding chain users to work list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30948 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
dc78cbf45794739ee0fbc8e0c0597f97b5e94df6 14-Oct-2006 Chris Lattner <sabre@nondot.org> Fix a bug where we incorrectly turned '(X & 0) == 0' into '(X & 0) >> -1',
which is undefined. "0" isn't a power of 2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30947 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8b2794aeff151be8cdbd44786c1d0f94f8f2e427 13-Oct-2006 Evan Cheng <evan.cheng@apple.com> Merge ISD::TRUNCSTORE to ISD::STORE. Switch to using StoreSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30945 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
4a84ad7a2bfd1795357776164e3bf80a2600d924 13-Oct-2006 Chris Lattner <sabre@nondot.org> add the branch folding pass as a late cleanup pass for all targets. For now
it just deletes empty MBB's. Soon it will do more :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30941 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
eb15eeec396145b6f5028d07bd2c4a5e903fdec5 13-Oct-2006 Chris Lattner <sabre@nondot.org> disable some objectionable code, maybe we can bring this pass to life


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30939 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
339ec4cb15cba923605bafdbd20dcfe30caffc0e 13-Oct-2006 Jim Laskey <jlaskey@mac.com> Workaround for templates


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30927 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
774f85465e72c95c39f71cb3eb9008f7e89c3673 13-Oct-2006 Jim Laskey <jlaskey@mac.com> Clean up dump.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30926 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
26d2990e03e60adc66fc5232baac5855fe65c747 12-Oct-2006 Chris Lattner <sabre@nondot.org> Lower X%C into X/C+stuff. This allows the 'division by a constant' logic to
apply to rems as well as divs. This fixes PR945 and speeds up ReedSolomon
from 14.57s to 10.90s (which is now faster than gcc).

It compiles CodeGen/X86/rem.ll into:

_test1:
subl $4, %esp
movl %esi, (%esp)
movl $2155905153, %ecx
movl 8(%esp), %esi
movl %esi, %eax
imull %ecx
addl %esi, %edx
movl %edx, %eax
shrl $31, %eax
sarl $7, %edx
addl %eax, %edx
imull $255, %edx, %eax
subl %eax, %esi
movl %esi, %eax
movl (%esp), %esi
addl $4, %esp
ret
_test2:
movl 4(%esp), %eax
movl %eax, %ecx
sarl $31, %ecx
shrl $24, %ecx
addl %eax, %ecx
andl $4294967040, %ecx
subl %ecx, %eax
ret
_test3:
subl $4, %esp
movl %esi, (%esp)
movl $2155905153, %ecx
movl 8(%esp), %esi
movl %esi, %eax
mull %ecx
shrl $7, %edx
imull $255, %edx, %eax
subl %eax, %esi
movl %esi, %eax
movl (%esp), %esi
addl $4, %esp
ret

instead of div/idiv instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30920 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
130a6471b90f66e99b1f9f42877fdf611c330ac6 12-Oct-2006 Evan Cheng <evan.cheng@apple.com> Add RemoveDeadNode to remove a dead node and its (potentially) dead operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30916 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3657ffe03733cf7cd9d6ed823ad696edb4547362 12-Oct-2006 Chris Lattner <sabre@nondot.org> add a minor dag combine noticed when looking at PR945


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30915 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6ec3626be40963fa405992e219f94d9524fb6c15 12-Oct-2006 Chris Lattner <sabre@nondot.org> restore my previous patch, now that the X86 backend bug has been fixed:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20061009/038518.html


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30906 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
3ad175bd707f268436afa42af8672569b5b92cb2 12-Oct-2006 Jim Laskey <jlaskey@mac.com> D'oh - need to use the rigth kind of store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30903 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b870100f2a2be0e7de99f7710db01a3e1f9d305b 12-Oct-2006 Evan Cheng <evan.cheng@apple.com> Backing out Chris' last commit. It's breaking llvm-gcc bootstrapping.

It's turning:
movl -24(%ebp), %esp
subl $16, %esp
movl -24(%ebp), %ecx
into
movl -24(%ebp), %esp
subl $16, %esp
movl %esp, (%esp)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30902 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
f183cabba8ec381685807ab40a6e7e3b4077e95a 12-Oct-2006 Chris Lattner <sabre@nondot.org> If we see a load from a stack slot into a physreg, consider it as providing
the stack slot. This fixes PR943.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30898 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
7aed46c25b9c1527b4112e71060f35c4f9c6b024 11-Oct-2006 Jim Laskey <jlaskey@mac.com> Alias analysis of TRUNCSTORE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30889 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2d84c4c7b314242346dea1a7f48563333476a4d5 11-Oct-2006 Jim Laskey <jlaskey@mac.com> Typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c2b19f3449a48bb4810afbf1a80a46bc87098606 11-Oct-2006 Jim Laskey <jlaskey@mac.com> Handle aliasing of loadext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30883 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7ca56aff2257ac0acceb54f3ae7ba65458d46e67 11-Oct-2006 Jim Laskey <jlaskey@mac.com> Fix regression in combiner alias analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2e49f090f9656af7d5ed4d5c4e9fa26af59c7233 11-Oct-2006 Evan Cheng <evan.cheng@apple.com> Naming consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30878 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
electionDAG/TargetLowering.cpp
82c3d8f81ab20dc7571f29ffc46a5bb1b7ed8323 11-Oct-2006 Andrew Lenharth <andrewl@lenharth.org> Jimptables working again on alpha.

As a bonus, use the GOT node instead of the AlphaISD::GOT for internal stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30873 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
755480681c795d585c73556c028b6143c46bda86 11-Oct-2006 Chris Lattner <sabre@nondot.org> add two helper methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30869 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9629abac79fe4efdd000ca1996b2cabd1609190c 11-Oct-2006 Evan Cheng <evan.cheng@apple.com> FindModifiedNodeSlot needs to add LoadSDNode ivars to create proper SelectionDAGCSEMap ID.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
45aeccc1fda9e0938c38f554c002c6950bd92500 10-Oct-2006 Evan Cheng <evan.cheng@apple.com> Also update getNodeLabel for LoadSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30861 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
0ac1c6ad9af78654188ca5164c1d0839e834444e 10-Oct-2006 Evan Cheng <evan.cheng@apple.com> SDNode::dump should also print out extension type and VT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30860 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
55b5708b6bbffc79cf133c31faa51d144bfc5d4a 10-Oct-2006 Chris Lattner <sabre@nondot.org> Fix another bug in extload promotion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30857 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
62f2a3c7aa0eba3e7bc5e2d59e268c5e1f48fb46 10-Oct-2006 Evan Cheng <evan.cheng@apple.com> Fix a bug introduced by my LOAD/LOADX changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30853 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
466685d41a9ea4905b9486fea38e83802e46f196 09-Oct-2006 Evan Cheng <evan.cheng@apple.com> Reflects ISD::LOAD / ISD::LOADX / LoadSDNode changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30844 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
6270f686b323281aa6774d019413a52696337ff2 09-Oct-2006 Chris Lattner <sabre@nondot.org> Eliminate more token factors by taking advantage of transitivity:
if TF depends on A and B, and A depends on B, TF just needs to depend on
A. With Jim's alias-analysis stuff enabled, this compiles the testcase in
PR892 into:

__Z4test3Val:
subl $44, %esp
call L__Z3foov$stub
movl %edx, 28(%esp)
movl %eax, 32(%esp)
movl %eax, 24(%esp)
movl %edx, 36(%esp)
movl 52(%esp), %ecx
movl %ecx, 4(%esp)
movl %eax, 8(%esp)
movl %edx, 12(%esp)
movl 48(%esp), %eax
movl %eax, (%esp)
call L__Z3bar3ValS_$stub
addl $44, %esp
ret

instead of:

__Z4test3Val:
subl $44, %esp
call L__Z3foov$stub
movl %eax, 24(%esp)
movl %edx, 28(%esp)
movl 24(%esp), %eax
movl %eax, 32(%esp)
movl 28(%esp), %eax
movl %eax, 36(%esp)
movl 32(%esp), %eax
movl 36(%esp), %ecx
movl 52(%esp), %edx
movl %edx, 4(%esp)
movl %eax, 8(%esp)
movl %ecx, 12(%esp)
movl 48(%esp), %eax
movl %eax, (%esp)
call L__Z3bar3ValS_$stub
addl $44, %esp
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30821 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7138234bafedf3fc3b9099d3d4bb7c062eb49c6a 08-Oct-2006 Jim Laskey <jlaskey@mac.com> Combiner alias analysis passes Multisource (release-asserts.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30818 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ed83a7019be05c2ed16a134fc9a708eb25dcd641 07-Oct-2006 Chris Lattner <sabre@nondot.org> Fix a bug legalizing zero-extending i64 loads into 32-bit loads. The bottom
part was always forced to be sextload, even when we needed an zextload.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30782 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cf9668f23d67b171d3529087061b1387b20eb8b9 07-Oct-2006 Chris Lattner <sabre@nondot.org> initialize ivar


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30780 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
0336fdba858830d515bf53ac29b8e5ff24dfa823 07-Oct-2006 Chris Lattner <sabre@nondot.org> If a target uses a GOT, put it in the jt data section, not the text
section. This will fix alpha when Andrew implements
AlphaTargetMachine::getTargetLowering().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30779 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
e0cfc8b2f24394c7b5d9275235678269aa4425fd 07-Oct-2006 Chris Lattner <sabre@nondot.org> jump tables handle pic


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30776 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
db3ea6754bc314cb0ba5b4c2ae534b3b33633cf1 06-Oct-2006 Chris Lattner <sabre@nondot.org> print labels even if a MBB doesn't have a corresponding LLVM BB, just don't
print the LLVM BB label.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30775 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
4bdd2753db4a9d92b64c68b042c8b38f7223238d 06-Oct-2006 Chris Lattner <sabre@nondot.org> Fix a miscompilation of:

long long foo(long long X) {
return (long long)(signed char)(int)X;
}

Instead of:

_foo:
extsb r2, r4
srawi r3, r4, 31
mr r4, r2
blr

we now produce:

_foo:
extsb r4, r4
srawi r3, r4, 31
blr

This fixes a miscompilation in ConstantFolding.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5504602836de40f07ac390a836161e45389870c2 06-Oct-2006 Chris Lattner <sabre@nondot.org> MachineBasicBlock::splice was incorrectly updating parent pointers on
instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30760 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
786225adf09e606c795ef68a1f789c12f37869f2 06-Oct-2006 Evan Cheng <evan.cheng@apple.com> Make use of getStore().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30759 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
ad071e1cd1a4b880019f1b2e827ee81867815f82 06-Oct-2006 Evan Cheng <evan.cheng@apple.com> Add getStore() helper function to create ISD::STORE nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30758 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9c78ecb511ba6c8f53579ce60bcc4ef782eb831c 05-Oct-2006 Chris Lattner <sabre@nondot.org> Don't crash if an MBB doesn't have an LLVM BB


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30757 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
bc588b8bbf30a3349ff7b8fa7a8fa2326b0a5df0 05-Oct-2006 Jim Laskey <jlaskey@mac.com> Alias analysis code clean ups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30753 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e08d6e915eba62bacc4441b3d4b24bbed67cd6a0 05-Oct-2006 Chris Lattner <sabre@nondot.org> Emit pic jumptables to the same section that the function is emitted to,
allowing label differences to work. This fixes CodeGen/X86/pic_jumptable.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30744 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
1da31ee472b9615d7329c656e2cc17c419ed7c95 05-Oct-2006 Chris Lattner <sabre@nondot.org> Pass the MachineFunction into EmitJumpTableInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30742 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
52f0670470020d7672f9b0669c07324814e84a07 05-Oct-2006 Chris Lattner <sabre@nondot.org> move getSectionForFunction to AsmPrinter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30736 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
693163e74d047a05799eaaf619ba4972fdc3a0e9 05-Oct-2006 Evan Cheng <evan.cheng@apple.com> Fix some typos that can cause a flag value to have more than one use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6ff23e5e844b49cee021894f168c739a4af423b5 04-Oct-2006 Jim Laskey <jlaskey@mac.com> More extensive alias analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30721 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0c0feb9d5f208cde7c0f61899333da913018f17f 04-Oct-2006 Jim Laskey <jlaskey@mac.com> More long term solution


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30720 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
0f77fe5ea64d19a014c1ce7de77f5738d390fd9c 04-Oct-2006 Jim Laskey <jlaskey@mac.com> Work around for some problems with templates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30715 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
c548428c5d7328592f4db6f6cd815af18b3152a3 04-Oct-2006 Evan Cheng <evan.cheng@apple.com> Combine ISD::EXTLOAD, ISD::SEXTLOAD, ISD::ZEXTLOAD into ISD::LOADX. Add an
extra operand to LOADX to specify the exact value extension type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30714 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
faf1daeb92bf4db4a6a68d296e24a6e2a4768022 04-Oct-2006 Chris Lattner <sabre@nondot.org> Use $( $| $) to represent alternatives in asm blocks instead of {|}. This
is needed to support targets where {|} aren't special symbols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30712 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
bf497a3a68b18472d8ad755bf483588b0caaa8cb 04-Oct-2006 Evan Cheng <evan.cheng@apple.com> Fix an obvious typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30711 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f28bbda2c6c965dbd28e73e06c9e09231a77b0dc 03-Oct-2006 Chris Lattner <sabre@nondot.org> Bugfixes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30709 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
ee773ba72b372460429431ee094690da2464082b 03-Oct-2006 Chris Lattner <sabre@nondot.org> Print the MBB ID # along with the bb tag in the -print-machine-instrs output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30708 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
e70cab0ca4d7835c8e1e0ee6a125be8f2790a136 03-Oct-2006 Chris Lattner <sabre@nondot.org> Provide a function that ensures MBB numbering is dense and inorder. This
can be used by MachineFunctionPasses who need this property.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30706 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
f7da4e939f02678cbe56cae666506da3b1a5e100 03-Oct-2006 Bill Wendling <isanbard@gmail.com> Fix for PR929. The PHI nodes were being gone through for each instruction
in a successor block for every block...resulting in some O(N^k) algorithm
which wasn't very good for performance. Calculating this information up
front and keeping it in a map made it much faster.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30697 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
01078fb7ec3b8f62679c49a147a69b3978092500 02-Oct-2006 Jim Laskey <jlaskey@mac.com> Debugging kruft


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30688 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
ec20402c90b605afeedbcf0e3aabe6f8054f23dd 02-Oct-2006 Jim Laskey <jlaskey@mac.com> Add ability to annotate (color) nodes in a viewGraph.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30686 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
f8f791ef1e8f0e58206dc60b1afa43d93fd46520 29-Sep-2006 Chris Lattner <sabre@nondot.org> simplify code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30659 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
5feaa9a70716e9181a9b940236bc461f2a75334a 28-Sep-2006 Evan Cheng <evan.cheng@apple.com> TargetRegisterClass specifies the desired spill alignment. However, it cannot be honored if stack alignment is smaller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30648 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
ca756d2cf9bd88f210d61dd5f9776920a6178441 28-Sep-2006 Bill Wendling <isanbard@gmail.com> "Once more into the breach, dear friends, once more, or fill the wall up
with our English dead."

No! Really! Serious this time...It was how the vreg uses were being
adjusted that was causing hte Olden tests to fail. I corrected this and
the Olden and Regression tests all passed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30644 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
57f9a43c64e8c5c8b2566fb6649754c11b59b98a 28-Sep-2006 Chris Lattner <sabre@nondot.org> refactor critical edge breaking out into the SplitCritEdgesForPHIConstants method.
This is a baby step towards fixing PR925.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30643 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8af24b86a8dea1696839104c34d6445ee7294d2a 28-Sep-2006 Chris Lattner <sabre@nondot.org> re-re-revert this, back to the right revision. It currently breaks bisort/mst
in olden among others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30637 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
c2b4ec37dea2586765a04d74120e1b6197bbd804 28-Sep-2006 Evan Cheng <evan.cheng@apple.com> PEI now place callee save spills closest to the address pointed to by the
incoming stack. This allows X86 backend to use push / pop in epilogue /
prologue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30636 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
31cefb99431a10ced8660b14c61fc2ad6b172f75 28-Sep-2006 Chris Lattner <sabre@nondot.org> re-revert this patch, bisort and mst are still broken in Olden.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30634 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
4da1abb311b424d581cc1a67cde3aa0233da99b5 28-Sep-2006 Bill Wendling <isanbard@gmail.com> Reapplying this patch. With the newest commits, the error in Olden/bisort
has disappeared.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30633 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
6c88e9b458648c1c0cdecfd03e8b85b3f7db2d25 27-Sep-2006 Chris Lattner <sabre@nondot.org> Temporarily revert this. This breaks Olden/bisort on PPC


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30628 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
c36f2a4ceadff85c83f9a2d68b187ec67d547b79 27-Sep-2006 Bill Wendling <isanbard@gmail.com> PR878: Instead of calculating the vreg to PHI use count everytime we get
a function, do it up front in linear time (going through all of the
instructions once). We create a map out of them. Then it's no problem to
use the information in it during elimination...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30624 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
bae02cfd46c569bb571a234544fb1bbe19c43b59 27-Sep-2006 Chris Lattner <sabre@nondot.org> Add support for ${:private} which prints "L" on darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30620 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
3ce9b67e0c0f171c6d09c19407930ce6989f1b9d 27-Sep-2006 Chris Lattner <sabre@nondot.org> Add support for ${:comment}, which expands to the current target's comment
character, and ${:uid} which expands to a unique ID for the MachineInstr.
More can be added if/when they are needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30619 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
692d4e0823774730b90e8e2d7bf58119397f0535 27-Sep-2006 Evan Cheng <evan.cheng@apple.com> Rename function. It's determining which callee-save registers to save.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30616 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
16113431e84bb8adba21fc73bb5715a1297000ae 26-Sep-2006 Andrew Lenharth <andrewl@lenharth.org> Comments on JumpTableness


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30615 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
bb1518585b2f2b2f501f70cc45c49a2d2ea57804 26-Sep-2006 Jim Laskey <jlaskey@mac.com> Load chain check is not needed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30613 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
79597d2af6e1bd80a7768eab3b380d3d71469f5d 26-Sep-2006 Jim Laskey <jlaskey@mac.com> Chain can be any operand


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30611 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3dd1170616001e38b4dd899d5990734cea339663 26-Sep-2006 Jim Laskey <jlaskey@mac.com> Wrong size for load


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
172585b3aac4444e22d250a68e59bc03b8837ef4 26-Sep-2006 Jim Laskey <jlaskey@mac.com> Can't move a load node if it's chain is not used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30609 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
681764b20c3418b4af783a84eb2a68145d69a9d7 26-Sep-2006 Chris Lattner <sabre@nondot.org> print the preds of each MBB


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30606 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
cb05af852f1d346ac07b84c74a930a5cdbd6d427 26-Sep-2006 Chris Lattner <sabre@nondot.org> Add support for targets that want to do something with the llvm.used list,
because they have an aggressive linker that does dead code stripping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30604 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
14fbcbfa2b7146569c588c451825206906c3b55a 25-Sep-2006 Jim Laskey <jlaskey@mac.com> Accidental enable of bad code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30601 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
288af5e740174463c27539e6021369e0e8ca20fa 25-Sep-2006 Jim Laskey <jlaskey@mac.com> Fix chain dropping in load and drop unused stores in ret blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30600 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
279f053eae35729f449f38e08618664b118806bd 25-Sep-2006 Jim Laskey <jlaskey@mac.com> Core antialiasing for load and store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30597 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
beec30eaf301bd6882cd06800b5175b94f033f9d 24-Sep-2006 Andrew Lenharth <andrewl@lenharth.org> Add support for other relocation bases to jump tables, as well as custom asm directives


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30593 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
2ae5b87996dca039d0721f1c463835f726979030 24-Sep-2006 Evan Cheng <evan.cheng@apple.com> PIC jump table entries are always 32-bit. This fixes PIC jump table support on X86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30590 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2adffa1f6648c2bb1d96f22a4bf97964b7e4128f 21-Sep-2006 Evan Cheng <evan.cheng@apple.com> Make it work for DAG combine of multi-value nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30573 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
516b0eacff5aedf26e146812d1fbcd5f3ceedca8 21-Sep-2006 Jim Laskey <jlaskey@mac.com> core corrections


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30570 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d1aed7aaf7047873b8878502859905159eaf5362 21-Sep-2006 Jim Laskey <jlaskey@mac.com> Basic "in frame" alias analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30568 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0e4b922680f55a8e28fc2c3db0b80a1c78d24918 21-Sep-2006 Chris Lattner <sabre@nondot.org> fold (aext (and (trunc x), cst)) -> (and x, cst).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30561 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bf3708794f4dca6e959247a3fe7cbe0cb5348eeb 21-Sep-2006 Chris Lattner <sabre@nondot.org> Check the right value type. This fixes 186.crafty on x86


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30560 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
111c22824115ed77a8f14e555c10880d07a45eb4 21-Sep-2006 Chris Lattner <sabre@nondot.org> Compile:

int %test(ulong *%tmp) {
%tmp = load ulong* %tmp ; <ulong> [#uses=1]
%tmp.mask = shr ulong %tmp, ubyte 50 ; <ulong> [#uses=1]
%tmp.mask = cast ulong %tmp.mask to ubyte
%tmp2 = and ubyte %tmp.mask, 3 ; <ubyte> [#uses=1]
%tmp2 = cast ubyte %tmp2 to int ; <int> [#uses=1]
ret int %tmp2
}

to:

_test:
movl 4(%esp), %eax
movl 4(%eax), %eax
shrl $18, %eax
andl $3, %eax
ret

instead of:

_test:
movl 4(%esp), %eax
movl 4(%eax), %eax
shrl $18, %eax
# TRUNCATE movb %al, %al
andb $3, %al
movzbl %al, %eax
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6007b84a5bdcba9ee012418fedd32c236aad2cf6 21-Sep-2006 Chris Lattner <sabre@nondot.org> Generalize (zext (truncate x)) and (sext (truncate x)) folding to work when
the src/dst are not the same size. This catches things like "truncate
32-bit X to 8 bits, then zext to 16", which happens a bit on X86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30557 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e3152e54b5e92ef4bc29b3d8c5923893d31617ab 20-Sep-2006 Chris Lattner <sabre@nondot.org> Compile:
int test3(int a, int b) { return (a < 0) ? a : 0; }

to:

_test3:
srawi r2, r3, 31
and r3, r2, r3
blr

instead of:

_test3:
cmpwi cr0, r3, 1
li r2, 0
blt cr0, LBB2_2 ;entry
LBB2_1: ;entry
mr r3, r2
LBB2_2: ;entry
blr


This implements: PowerPC/select_lt0.ll:seli32_a_a


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30517 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
84750587bf859a048580f7f13b1b2710d0b681fb 20-Sep-2006 Chris Lattner <sabre@nondot.org> Fold the full generality of (any_extend (truncate x))


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30514 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5f42a240ba5c6199d2d78fb1238938da2c073755 20-Sep-2006 Chris Lattner <sabre@nondot.org> Two things:
1. teach SimplifySetCC that '(srl (ctlz x), 5) == 0' is really x != 0.
2. Teach visitSELECT_CC to use SimplifySetCC instead of calling it and
ignoring the result. This allows us to compile:

bool %test(ulong %x) {
%tmp = setlt ulong %x, 4294967296
ret bool %tmp
}

to:

_test:
cntlzw r2, r3
cmplwi cr0, r3, 1
srwi r2, r2, 5
li r3, 0
beq cr0, LBB1_2 ;
LBB1_1: ;
mr r3, r2
LBB1_2: ;
blr

instead of:

_test:
addi r2, r3, -1
cntlzw r2, r2
cntlzw r3, r3
srwi r2, r2, 5
cmplwi cr0, r2, 0
srwi r2, r3, 5
li r3, 0
bne cr0, LBB1_2 ;
LBB1_1: ;
mr r3, r2
LBB1_2: ;
blr

This isn't wonderful, but it's an improvement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30513 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0ea26ca45b56b2b4cc1839cdbccc13a38b066969 20-Sep-2006 Chris Lattner <sabre@nondot.org> Expand 64-bit shifts more optimally if we know that the high bit of the
shift amount is one or zero. For example, for:

long long foo1(long long X, int C) {
return X << (C|32);
}

long long foo2(long long X, int C) {
return X << (C&~32);
}

we get:

_foo1:
movb $31, %cl
movl 4(%esp), %edx
andb 12(%esp), %cl
shll %cl, %edx
xorl %eax, %eax
ret
_foo2:
movb $223, %cl
movl 4(%esp), %eax
movl 8(%esp), %edx
andb 12(%esp), %cl
shldl %cl, %eax, %edx
shll %cl, %eax
ret

instead of:

_foo1:
subl $4, %esp
movl %ebx, (%esp)
movb $32, %bl
movl 8(%esp), %eax
movl 12(%esp), %edx
movb %bl, %cl
orb 16(%esp), %cl
shldl %cl, %eax, %edx
shll %cl, %eax
xorl %ecx, %ecx
testb %bl, %bl
cmovne %eax, %edx
cmovne %ecx, %eax
movl (%esp), %ebx
addl $4, %esp
ret
_foo2:
subl $4, %esp
movl %ebx, (%esp)
movb $223, %cl
movl 8(%esp), %eax
movl 12(%esp), %edx
andb 16(%esp), %cl
shldl %cl, %eax, %edx
shll %cl, %eax
xorl %ecx, %ecx
xorb %bl, %bl
testb %bl, %bl
cmovne %eax, %edx
cmovne %ecx, %eax
movl (%esp), %ebx
addl $4, %esp
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30506 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2b41b8e8701cc9188c12ead84f87e614c86be8c0 19-Sep-2006 Chris Lattner <sabre@nondot.org> Fix UnitTests/2005-05-12-Int64ToFP.c with llc-beta. In particular, do not
allow it to go into an infinite loop, filling up the disk!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30494 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
863ac769b850d75a390bfdc20b62d7d120fb69a9 19-Sep-2006 Chris Lattner <sabre@nondot.org> Fold extract_element(cst) to cst


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30478 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5c6621c3bc7e53e0754cb74062d27a6e8b7275e8 19-Sep-2006 Chris Lattner <sabre@nondot.org> Minor speedup for legalize by avoiding some malloc traffic


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30477 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6b5578f052c2405c0d622192ccacfd47563c99a8 19-Sep-2006 Evan Cheng <evan.cheng@apple.com> Fix a typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30474 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
52cc1ea2a1a374b58801398460a6289723089d91 18-Sep-2006 Evan Cheng <evan.cheng@apple.com> Allow i32 UDIV, SDIV, UREM, SREM to be expanded into libcalls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30470 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
303c6222a437bfabf4c1bfd1e00b3481dcda4755 18-Sep-2006 Andrew Lenharth <andrewl@lenharth.org> oops


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30462 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
3fbd67898e365f12436564a52d8995a4aeb4ef89 18-Sep-2006 Andrew Lenharth <andrewl@lenharth.org> absolute addresses must match pointer size


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30461 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/SelectionDAGISel.cpp
e85fb6719a3cdd011359b9cdee27a175bfe5baf7 18-Sep-2006 Jim Laskey <jlaskey@mac.com> Sort out mangled names for globals


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30460 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
8829dc88a8637fe588e299d96de394afc3ecc528 16-Sep-2006 Chris Lattner <sabre@nondot.org> Oh yeah, this is needed too


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30407 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a89654b1a17478a272af33221e325b7feb9aec1b 16-Sep-2006 Chris Lattner <sabre@nondot.org> simplify control flow, no functionality change


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30403 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7d7bffe157c0896cc850ed384dd748aae1a00c7b 16-Sep-2006 Chris Lattner <sabre@nondot.org> Allow custom expand of mul


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30402 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
428b92eb83b457b71d29d1d4b7900d36a0ce9a53 15-Sep-2006 Chris Lattner <sabre@nondot.org> Keep track of the start of MBB's in a separate map from instructions. This
is faster and is needed for future improvements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30383 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1ec72738ac685543a02068559877ec713b36a463 14-Sep-2006 Chris Lattner <sabre@nondot.org> Fold (X & C1) | (Y & C2) -> (X|Y) & C3 when possible.
This implements CodeGen/X86/and-or-fold.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30379 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
516b962b5a043e4773f0655d0790e58780e3a345 14-Sep-2006 Chris Lattner <sabre@nondot.org> Split rotate matching code out to its own function. Make it stronger, by
matching things like ((x >> c1) & c2) | ((x << c3) & c4) to (rot x, c5) & c6


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30376 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a17cf0a7e2d9aa6d9bb6f9461a6fa8a9ac02bab4 14-Sep-2006 Evan Cheng <evan.cheng@apple.com> Use getOffset() instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30327 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
d5a99d781053f7809dc3f3ae2359b92c084d4659 14-Sep-2006 Evan Cheng <evan.cheng@apple.com> Use MachineConstantPoolEntry getOffset() and getType() accessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30326 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
9abd7c38675ad305c733b7e90578255271afc6bd 14-Sep-2006 Evan Cheng <evan.cheng@apple.com> A MachineConstantPool may have mixed Constant* and MachineConstantPoolValue* values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30316 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
c970f062e0a66d97a06eca213486a16fae1b37a4 13-Sep-2006 Chris Lattner <sabre@nondot.org> If LSR went through a lot of trouble to put constants (e.g. the addr of a global
in a specific BB, don't undo this!). This allows us to compile
CodeGen/X86/loop-hoist.ll into:

_foo:
xorl %eax, %eax
*** movl L_Arr$non_lazy_ptr, %ecx
movl 4(%esp), %edx
LBB1_1: #cond_true
movl %eax, (%ecx,%eax,4)
incl %eax
cmpl %edx, %eax
jne LBB1_1 #cond_true
LBB1_2: #return
ret

instead of:

_foo:
xorl %eax, %eax
movl 4(%esp), %ecx
LBB1_1: #cond_true
*** movl L_Arr$non_lazy_ptr, %edx
movl %eax, (%edx,%eax,4)
incl %eax
cmpl %ecx, %eax
jne LBB1_1 #cond_true
LBB1_2: #return
ret

This was noticed in 464.h264ref. This doesn't usually affect PPC,
but strikes X86 all the time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30290 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
79980b07dab50da1a8f572f9504674bfa853d484 13-Sep-2006 Chris Lattner <sabre@nondot.org> Compile X << 1 (where X is a long-long) to:

addl %ecx, %ecx
adcl %eax, %eax

instead of:

movl %ecx, %edx
addl %edx, %edx
shrl $31, %ecx
addl %eax, %eax
orl %ecx, %eax

and to:

addc r5, r5, r5
adde r4, r4, r4

instead of:

slwi r2,r9,1
srwi r0,r11,31
slwi r3,r11,1
or r2,r0,r2

on PPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30284 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d6594ae54cfde4db4d30272192645c0a45fb9902 12-Sep-2006 Evan Cheng <evan.cheng@apple.com> Added support for machine specific constantpool values. These are useful for
representing expressions that can only be resolved at link time, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30278 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achineFunction.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGCSEMap.cpp
electionDAG/SelectionDAGPrinter.cpp
019f851ab26511c089e41b61901f743e75f90714 11-Sep-2006 Nate Begeman <natebegeman@mac.com> Behold, more work on relocations. Things are looking pretty good now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30240 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
c66764c00756d800aede2fd32d55658a236b1912 10-Sep-2006 Chris Lattner <sabre@nondot.org> This code was trying too hard. By eliminating redundant edges in the CFG
due to switch cases going to the same place, it make #pred != #phi entries,
breaking live interval analysis.

This fixes 458.sjeng on x86 with llc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30236 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6ddf8ed6fe2d0aa5e15f7b9ad7e5049e2223bbd1 09-Sep-2006 Chris Lattner <sabre@nondot.org> Implement the fpowi now by lowering to a libcall


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30225 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
f3f333dbd67afde147165bb5ba87889d76a6f436 09-Sep-2006 Chris Lattner <sabre@nondot.org> Allow targets to custom lower expanded BIT_CONVERT's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30217 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
94be248dbb2d2a44e8f4d47f161b93704d33d279 09-Sep-2006 Nate Begeman <natebegeman@mac.com> First pass at supporting relocations. Relocations are written correctly to
the file now, however the relocated address is currently wrong. Fixing
that will require some deep pondering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30207 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
0c5b8dac794b23ac7f84acdc6d2661edb28ed5c8 08-Sep-2006 Chris Lattner <sabre@nondot.org> Non-allocatable physregs can be killed and dead, but don't treat them as
safe for later allocation. This fixes McCat/18-imp with llc-beta.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30204 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
cc406328bf0aaa5f25e268deed5b38be7d4dc7a5 08-Sep-2006 Chris Lattner <sabre@nondot.org> This fixes Benchmarks/Prolangs-C/unix-smail


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30198 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
45d5788123bdb5c59979a3189d4587c84e41a12d 08-Sep-2006 Chris Lattner <sabre@nondot.org> Fix a bunch of llc-beta failures on x86 yesterday. Don't allow selection
of unallocatable registers, just because an alias is allocatable. We were
picking registers like SIL just because ESI was being used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30197 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
a0f3d17daac73c9c71aad497b298cbe82848f726 08-Sep-2006 Jim Laskey <jlaskey@mac.com> Make target asm info a property of the target machine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30162 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
61c958e691bdaa04897553d97153bcdd73996aa0 07-Sep-2006 Evan Cheng <evan.cheng@apple.com> Fix pasto that was breaking x86 tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30151 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
d5e93c07957844e3086fb12d686b93dbbd2524c2 07-Sep-2006 Chris Lattner <sabre@nondot.org> Fix CodeGen/Generic/2006-09-06-SwitchLowering.ll, a bug where SDIsel inserted
too many phi operands when lowering a switch to branches in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30142 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
563321a2582851c653d0863e8e0bba3d483734f9 06-Sep-2006 Jim Laskey <jlaskey@mac.com> Separate target specific asm properties from the asm printers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30126 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
5d8062bcee81a40d976bf0ed653b633b466c16d9 05-Sep-2006 Evan Cheng <evan.cheng@apple.com> Only call isUse/isDef on register operands


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30122 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
d8f44e07b89e651b2f0e3b0d680a775f44e667da 05-Sep-2006 Chris Lattner <sabre@nondot.org> Only call isUse/isDef on register operands


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30118 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
achineInstr.cpp
67942f5dc30be1810f983aba8c94c49ca44e8634 05-Sep-2006 Chris Lattner <sabre@nondot.org> Don't call isDef on non-registers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30117 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
7acf5f39fea463df5ad196affbef0176f3b25e0f 05-Sep-2006 Chris Lattner <sabre@nondot.org> Change the default to 0, which means 'default'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30114 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
09e460662a8d7328da1b938d5581a6ef3740b51d 05-Sep-2006 Chris Lattner <sabre@nondot.org> Completely eliminate def&use operands. Now a register operand is EITHER a
def operand or a use operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30109 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
2926869b4a083fc951484de03a9867eabf81e880 05-Sep-2006 Chris Lattner <sabre@nondot.org> Fix a long-standing wart in the code generator: two-address instruction lowering
actually *removes* one of the operands, instead of just assigning both operands
the same register. This make reasoning about instructions unnecessarily complex,
because you need to know if you are before or after register allocation to match
up operand #'s with the target description file.

Changing this also gets rid of a bunch of hacky code in various places.

This patch also includes changes to fold loads into cmp/test instructions in
the X86 backend, along with a significant simplification to the X86 spill
folding code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30108 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocSimple.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
irtRegMap.h
dffb2e83ed2546226d09c40aa43524e2392322da 04-Sep-2006 Chris Lattner <sabre@nondot.org> Correct fix for a crasher on functions with live in values


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30099 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5277e4304e9559c13aa42b1d056e828f8f75ff08 04-Sep-2006 Chris Lattner <sabre@nondot.org> Hack around a regression I introduced yesterday


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30098 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
0c9e0ff24900aa2bcae9518f8b1bdc3fd41dc2ed 04-Sep-2006 Duraid Madina <duraid@octopus.com.au> forgot this


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30097 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
2a0013f59fb3b23010c0509fab8bf509eb30fb36 04-Sep-2006 Duraid Madina <duraid@octopus.com.au> add setJumpBufSize() and setJumpBufAlignment() to target-lowering.
Call these from your backend to enjoy setjmp/longjmp goodness, see
lib/Target/IA64/IA64ISelLowering.cpp for an example


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30095 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
47877050e7ea02c3514497aba54eef1d4cee8452 04-Sep-2006 Chris Lattner <sabre@nondot.org> new file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30082 91177308-0d34-0410-b5e6-96231b3b80d8
LVMTargetMachine.cpp
6b128bdc58a496e9f08e4d09416330320761baff 03-Sep-2006 Chris Lattner <sabre@nondot.org> Avoid beating on the mi2i map when we know the answer already.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30066 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
fbecc5a593da0a5b4d9ff6be63c5558060e31e43 03-Sep-2006 Chris Lattner <sabre@nondot.org> minor speedup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30065 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5e50349070972ca4e590f6211184df1d4ec28ac8 03-Sep-2006 Chris Lattner <sabre@nondot.org> Fix Regression/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll on X86.
Just because an alias of a register is available, it doesn't mean that we
can arbitrarily evict the register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30064 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
2ac0d43fa2cbf2dd1b024a40685eb1b758ddac56 03-Sep-2006 Chris Lattner <sabre@nondot.org> When deleting a machine instruction, make sure to remove it from the
livevariables information. This fixes several regalloc=local failures on x86


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30062 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
7a3abdc63c0cc4e5d5411c3add0e909c6ac49e79 03-Sep-2006 Chris Lattner <sabre@nondot.org> Move two methods out of line, make them work when the record for a machine
instruction includes physregs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30061 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
94425996c5f58b8c2eb8be3c48c5f80fcb0d3481 02-Sep-2006 Chris Lattner <sabre@nondot.org> improve compat with certain versions of GCC (on cygwin?)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30054 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
1acb17cb8392dce33079fe45f383944ec6616757 02-Sep-2006 Chris Lattner <sabre@nondot.org> Iteration is required for some cases, even if they don't occur in crafty.
Restore it, which re-fixes X86/2006-08-21-ExtraMovInst.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30050 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f21f0205b5dec61f165518887f54e01ab5aab13c 02-Sep-2006 Chris Lattner <sabre@nondot.org> When joining two intervals where the RHS is really simple, use a light-weight
method for joining the live ranges instead of the fully-general one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30049 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
3f4fd0fd644faec87330ef17ebcb93acb74da9c6 01-Sep-2006 Evan Cheng <evan.cheng@apple.com> Allow legalizer to expand ISD::MUL using only MULHS in the rare case that is
possible and the target only supports MULHS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30022 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3ebe71db6bf74f3c46123370ec9c5a28f76b9206 01-Sep-2006 Jim Laskey <jlaskey@mac.com> Corrections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30021 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
8a67f6e848244b00dd706a7e01079d1b39c07731 01-Sep-2006 Chris Lattner <sabre@nondot.org> Pull some code out of a hot recursive function because the common case doesn't
need recursion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30015 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
238416c99b2a2baea06ac05a5964bbbbf660f3dd 01-Sep-2006 Chris Lattner <sabre@nondot.org> Reserve space in the ValueNumberInfo vector. This speeds up live interval
analysis 16% on crafty.

Wrap long lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30012 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a2a8f0919d6d000e894f31b8cb416b4fbe17bb07 01-Sep-2006 Chris Lattner <sabre@nondot.org> Iterative coallescing doesn't buy us anything (we get identical results on
crafty with and without it). Removing it speeds up live intervals 6%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30010 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
dfcfacb0cba97e1ac7e1f619b091d4383218fbd0 31-Aug-2006 Evan Cheng <evan.cheng@apple.com> DAG combiner fix for rotates. Previously the outer-most condition checks
for ROTL availability. This prevents it from forming ROTR for targets that
has ROTR only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29997 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2ebfa0c61823c5d7528b1b3235106c30cb8d53f1 31-Aug-2006 Chris Lattner <sabre@nondot.org> Add a special case that speeds up coallescing a bit, but not enough.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29996 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
bfe180af9eef1cf767f61f501ca325fcce2ae7ce 31-Aug-2006 Chris Lattner <sabre@nondot.org> Delete copies as they are coallesced instead of waiting until the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29995 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
91725b75852443923b419fd23215194cfc65dd88 31-Aug-2006 Chris Lattner <sabre@nondot.org> avoid calling the virtual isMoveInstr method endlessly by caching its results.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29994 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
ba256037ced5606d5cea8a1676b21eaf91d924de 31-Aug-2006 Chris Lattner <sabre@nondot.org> Fix a compiler crash bootstrapping llvm-gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29989 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6d8fbef015ff836bcb8f64f52c49805e43f8ea9f 30-Aug-2006 Chris Lattner <sabre@nondot.org> Teach the coallescer to coallesce live intervals joined by an arbitrary
number of copies, potentially defining live ranges that appear to have
differing value numbers that become identical when coallsced. Among other
things, this fixes CodeGen/X86/shift-coalesce.ll and PR687.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29968 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
ce50a165c784d71abf1b2f981be18f867787d972 29-Aug-2006 Jim Laskey <jlaskey@mac.com> Handle callee saved registers in dwarf frame info (lead up to exception
handling.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29954 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
1efba0ecb4d0b3807c48e6e0f74e3ce5c9fad809 29-Aug-2006 Evan Cheng <evan.cheng@apple.com> Move isCommutativeBinOp from SelectionDAG.cpp and DAGCombiner.cpp out. Make it a static method of SelectionDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29951 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
7f8897f22e88271cfa114998a4d6088e7c8e8e11 28-Aug-2006 Chris Lattner <sabre@nondot.org> eliminate RegisterOpt. It does the same thing as RegisterPass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29925 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
5d8925c7c506a54ebdfb0bc93437ec9f602eaaa0 28-Aug-2006 Chris Lattner <sabre@nondot.org> Eliminate RegisterAnalysis. RegisterPass now does all that is necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29921 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
a4f0b3a084d120cfc5b5bb06f64b222f5cb72740 27-Aug-2006 Chris Lattner <sabre@nondot.org> s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29911 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
HIElimination.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAGISel.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
c9d94d12900bd0d2bd482ef31f8f1deb3ffafa23 27-Aug-2006 Chris Lattner <sabre@nondot.org> typo fix


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29910 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
694481ee01bfe507c6e37de0dc1c64cff455eefd 27-Aug-2006 Evan Cheng <evan.cheng@apple.com> Eliminate SelectNodeTo() and getTargetNode() variants which take more than
3 SDOperand operands. They are replaced by versions which take an array
of SDOperand and the number of operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29905 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d2030e6c990fdcc522d194ac34a6b71df79e3ab7 26-Aug-2006 Nate Begeman <natebegeman@mac.com> Properly size the string table, and emit symbol table and string table
entries in the correct order, fixing several fixmes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29902 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
95514bae7309ffacfc0a79b267159dcfde2b7720 26-Aug-2006 Evan Cheng <evan.cheng@apple.com> SelectNodeTo now returns a SDNode*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29901 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e7f729b42b54fa751ba3524e1c597aad6d3ec3d7 26-Aug-2006 Chris Lattner <sabre@nondot.org> Simplifications to liveinterval analysis, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29896 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
c114b2cad7293d98686d380273085f5c32966b52 26-Aug-2006 Chris Lattner <sabre@nondot.org> Completely change the way that joining with physregs is implemented. This
paves the way for future changes, increases coallescing opportunities (in
theory, not witnessed in practice), and eliminates the really expensive
LiveIntervals::overlapsAliases method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29890 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
08ede262a744f99429658fadb43662441bdcb42d 26-Aug-2006 Jim Laskey <jlaskey@mac.com> Tidy up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29888 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
f3e4f0e615bb2c36c4a9d60bb908e08b76025c75 25-Aug-2006 Jim Laskey <jlaskey@mac.com> Consolidate callee saved register information so that it can me used by debug
information and exception handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29881 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
3d3d404b8a22c9e105bdc54bef24fb1dd7c5ad87 25-Aug-2006 Jim Laskey <jlaskey@mac.com> Allow for register numbers > 31.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29879 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
f8f2c5a1723b46290c0e2d4ba6cf05ee11993002 25-Aug-2006 Nate Begeman <natebegeman@mac.com> Get closer to handling globals correctly. We now generally get them in the
right section.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29871 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
c82b3aab6502a9766ddf42b45faeca3d6fa0ad65 25-Aug-2006 Chris Lattner <sabre@nondot.org> When replacing value numbers, make sure to compactify the value # space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29865 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
f7da2c7b0c6293c268881628fc351bed7763f1f4 25-Aug-2006 Chris Lattner <sabre@nondot.org> Take advantage of the recent improvements to the liveintervals set (tracking
instructions which define each value#) to simplify and improve the coallescer.
In particular, this patch:

1. Implements iterative coallescing.
2. Reverts an unsafe hack from handlePhysRegDef, superceeding it with a
better solution.
3. Implements PR865, "coallescing" away the second copy in code like:

A = B
...
B = A

This also includes changes to symbolically print registers in intervals
when possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29862 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
irtRegMap.cpp
eb883af3903286ac20f5bbf549c555c9ef961e14 23-Aug-2006 Nate Begeman <natebegeman@mac.com> Initial checkin of the Mach-O emitter. There's plenty of fixmes, but it
does emit linkable .o files in very simple cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29850 91177308-0d34-0410-b5e6-96231b3b80d8
achOWriter.cpp
be4f88a8b8bb3311e0dc4cde8533763d7923c3ea 22-Aug-2006 Chris Lattner <sabre@nondot.org> Improve the LiveInterval class to keep track of which machine instruction
defines each value# tracked by the interval. This will be used to improve
coallescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29830 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
8222b2de224647e4ca8ac36adff87b2c93daf7cc 22-Aug-2006 Chris Lattner <sabre@nondot.org> Print physreg names symbolically in dumps


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29805 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7c10b0d2c9b4d637edf27548c104b7199b0e3578 22-Aug-2006 Chris Lattner <sabre@nondot.org> Print debug info as:

*** Register mapping ***
reg 1024 -> %reg1028
reg 1026 -> EAX
reg 1027 -> %reg1028

instead of:

*** Register mapping ***
reg 1024 -> reg 1028
reg 1026 -> reg 15
reg 1027 -> reg 1028


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29803 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
760383e298f5b4633b4454ad4184b379d56f17e2 21-Aug-2006 Jim Laskey <jlaskey@mac.com> Adding C++ member support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29799 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
f921a518912df706a8edf1f867f52e8afc6e2b55 21-Aug-2006 Chris Lattner <sabre@nondot.org> Fix PR861


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29796 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d36d03bf2daec79a364f32aba4f4a672c814c1bd 21-Aug-2006 Bill Wendling <isanbard@gmail.com> Added a check so that if we have two machine instructions in this form

MOV R0, R1
MOV R1, R0

the second machine instruction is removed. Added a regression test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29792 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
228a18e0f220fb85ee06fd5bfa29304e57047ff1 17-Aug-2006 Chris Lattner <sabre@nondot.org> switch the SUnit pred/succ sets from being std::sets to being smallvectors.
This reduces selectiondag time on kc++ from 5.43s to 4.98s (9%). More
significantly, this speeds up the default ppc scheduler from ~1571ms to 1063ms,
a 33% speedup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29743 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
be384162c68641233deba8702666af51bdfd4b83 17-Aug-2006 Chris Lattner <sabre@nondot.org> minor changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29740 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
f83482dcad35ac4fcb0d387d8f84794cda70f857 16-Aug-2006 Chris Lattner <sabre@nondot.org> Use the appropriate typedef


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29730 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0b3e525a3a6b55b66dc5676675712b26e4c1ed9f 15-Aug-2006 Chris Lattner <sabre@nondot.org> Start using SDVTList more consistently


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29711 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGCSEMap.cpp
70046e920fa37989a041af663ada2b2b646e258f 15-Aug-2006 Chris Lattner <sabre@nondot.org> add a new SDVTList type and new SelectionDAG::getVTList methods to streamline
the creation of canonical VTLists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29709 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f9f37fc52c444e34bad7846729ae5481a65e0a53 15-Aug-2006 Chris Lattner <sabre@nondot.org> eliminate use of getNode that takes vector of valuetypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29687 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
2fa6d3b1fcadbde90eaee0e8e89aebd81630b662 15-Aug-2006 Chris Lattner <sabre@nondot.org> Add a new getNode() method that takes a pointer to an already-intern'd list
of value-type nodes. This avoids having to do mallocs for std::vectors of
valuetypes when a node returns more than one type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29685 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e51ee04c3d682b4701e4ba03233a37645206cf20 15-Aug-2006 Chris Lattner <sabre@nondot.org> remove SelectionDAG::InsertISelMapEntry, it is dead


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
213a16c637926bfc38ba373d3aba6778e181e3ec 15-Aug-2006 Chris Lattner <sabre@nondot.org> Add code to resize the CSEMap hash table. This doesn't speedup codegen of
kimwitu, but seems like a good idea from a "avoid performance cliffs" standpoint :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29675 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGCSEMap.cpp
130fc13506b4da64981632c83734721a8b5b2d2d 14-Aug-2006 Chris Lattner <sabre@nondot.org> Add the actual constant to the hash for ConstantPool nodes. Thanks to
Rafael Espindola for pointing this out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29669 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGCSEMap.cpp
52a51e38dc312aa262b0d771419afe1785f3cb22 12-Aug-2006 Nate Begeman <natebegeman@mac.com> Emit .set directives for jump table entries when possible, which reduces
the number of relocations in object files, shrinkifying them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29650 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
103de7785aaf7375460adac32c63335a24fc440d 12-Aug-2006 Chris Lattner <sabre@nondot.org> Fix an obvious bug, noticed by inspection. No current targets trigger this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29648 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
dd289001684a6c4fba54328255329325bb7b2ff5 12-Aug-2006 Chris Lattner <sabre@nondot.org> Switch to using SuperFastHash instead of adding all elements together. This
doesn't significantly improve performance but it helps a small amount.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29642 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGCSEMap.cpp
7ed9ea81f8b4ec26c27da73ea9ad0e84337a3e4a 12-Aug-2006 Chris Lattner <sabre@nondot.org> Switch NodeID to track 32-bit chunks instead of 8-bit chunks, for a 2.5%
speedup in isel time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29640 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGCSEMap.cpp
c9f8f416800784ca6453222b307bc44ad24739b0 11-Aug-2006 Chris Lattner <sabre@nondot.org> Remove 8 more std::map's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29631 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGCSEMap.cpp
61b09412fe2c98367730c7064d56eff537b03434 11-Aug-2006 Chris Lattner <sabre@nondot.org> Move the BBNodes, GlobalValues, TargetGlobalValues, Constants, TargetConstants,
RegNodes, and ValueNodes maps into the CSEMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29626 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGCSEMap.cpp
4a283e90af7984762eb3e984cee747d32c82e3db 11-Aug-2006 Chris Lattner <sabre@nondot.org> eliminate the NullaryOps map, use CSEMap instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29621 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3577e38c2b34c7978b8a1b6047eed3e421559d28 11-Aug-2006 Chris Lattner <sabre@nondot.org> change internal impl of dag combiner so that calls to CombineTo never have to
make a temporary vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29618 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b9ea4a39b8192bd13d69d5e15d1e6a2290d24e80 11-Aug-2006 Chris Lattner <sabre@nondot.org> Change one ReplaceAllUsesWith method to take an array of operands to replace
instead of a vector of operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29616 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
bd564bfc63163e31f320c3da9749db70992dc35e 08-Aug-2006 Chris Lattner <sabre@nondot.org> Start eliminating temporary vectors used to create DAG nodes. Instead, pass
in the start of an array and a count of operands where applicable. In many
cases, the number of operands is known, so this static array can be allocated
on the stack, avoiding the heap. In many other cases, a SmallVector can be
used, which has the same benefit in the common cases.

I updated a lot of code calling getNode that takes a vector, but ran out of
time. The rest of the code should be updated, and these methods should be
removed.

We should also do the same thing to eliminate the methods that take a
vector of MVT::ValueTypes.

It would be extra nice to convert the dagiselemitter to avoid creating vectors
for operands when calling getTargetNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29566 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
f06f35e30b4c4d7db304f717a3d4dc6595fbd078 08-Aug-2006 Chris Lattner <sabre@nondot.org> Eliminate some malloc traffic by allocating vectors on the stack. Change some
method that took std::vector<SDOperand> to take a pointer to a first operand
and #operands.

This speeds up isel on kc++ by about 3%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29561 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
a5682853b9921bbb0dd2ee175c9bd44142d4819e 08-Aug-2006 Chris Lattner <sabre@nondot.org> Revamp the "CSEMap" datastructure used in the SelectionDAG class. This
eliminates a bunch of std::map's in the SelectionDAG, replacing them with a
home-grown hashtable.

This is still a work in progress: not all the maps have been moved over and the
hashtable never resizes. That said, this still speeds up llc 20% on kimwitu++
with -fast -regalloc=local using a release build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29550 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGCSEMap.cpp
99157a00a6cadfd733cf02b947e2b7c7ed27246b 08-Aug-2006 Evan Cheng <evan.cheng@apple.com> Clear TopOrder before assigning topological order. Some clean ups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3b97acdbdb179cf592f62a3491d82f5e234a863c 08-Aug-2006 Evan Cheng <evan.cheng@apple.com> Reverse the FlaggedNodes after scanning up for flagged preds or else the order would be reversed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
190a418bf6b49a4ef1c1980229a2f0d516e8a2cd 04-Aug-2006 Chris Lattner <sabre@nondot.org> Make SelectionDAG::RemoveDeadNodes iterative instead of recursive, which
also make it simpler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29524 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
f492391de03dc1f1fe539d97271bdb05f59dbdbc 03-Aug-2006 Jim Laskey <jlaskey@mac.com> Copy the liveins for the first block. PR859


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29511 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
3700f90c19f51deae00f85b80d31e1f7fbda1f99 03-Aug-2006 Chris Lattner <sabre@nondot.org> Work around a GCC 3.3.5 bug noticed by a user.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29490 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8653b37ab97ce69e8ff81e28f702ae94e20f6dec 03-Aug-2006 Chris Lattner <sabre@nondot.org> Work around a bug in gcc 3.3.5, reported by a user


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29489 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
c384d6c3989cf2055b577754fc61a4673af30618 03-Aug-2006 Evan Cheng <evan.cheng@apple.com> - Change AssignTopologicalOrder to return vector of SDNode* by reference.
- Tweak implementation to avoid using std::map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29479 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
eb577ba3b815a1fa4627b060dd2345d17abf672d 02-Aug-2006 Jim Laskey <jlaskey@mac.com> Final polish on machine pass registries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29471 91177308-0d34-0410-b5e6-96231b3b80d8
achinePassRegistry.cpp
asses.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAGISel.cpp
9373beba6010dd34316a801c3a9b37ab9e048031 01-Aug-2006 Jim Laskey <jlaskey@mac.com> Now that the ISel is available, it's possible to create a default instruction
scheduler creator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29452 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9ff542f2cce5bf7bf3cf9f692cf3ec0690ad2b3b 01-Aug-2006 Jim Laskey <jlaskey@mac.com> 1. Change use of "Cache" to "Default".
2. Added argument to instruction scheduler creators so the creators can do
special things.
3. Repaired target hazard code.
4. Misc.

More to follow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29450 91177308-0d34-0410-b5e6-96231b3b80d8
achinePassRegistry.cpp
asses.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAGISel.cpp
c6a0a117a63b22ac8f4ae1aaa16a4a4fb57a45f1 01-Aug-2006 Jim Laskey <jlaskey@mac.com> Forgot the added files for plugable machine passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29436 91177308-0d34-0410-b5e6-96231b3b80d8
achinePassRegistry.cpp
13ec702c430b91ee49b9e6d9581cd95412f216c8 01-Aug-2006 Jim Laskey <jlaskey@mac.com> Introducing plugable register allocators and instruction schedulers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29434 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAGISel.cpp
e6f35d8a5cc92d776cf460200e2b815e8c301b14 01-Aug-2006 Evan Cheng <evan.cheng@apple.com> Added AssignTopologicalOrder() to assign each node an unique id based on their topological order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29431 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8825a485e2e99216adc0c469a7c43895cd4eae40 01-Aug-2006 Evan Cheng <evan.cheng@apple.com> PIC jump table entries are always 32-bit even in 64-bit mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29422 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4a6bd33da0e30c26568baf3ad6c94d1f497e5ea7 29-Jul-2006 Chris Lattner <sabre@nondot.org> Instead of blindly looking past constantexpr casts, actually constant
fold them. This correctly truncates constants that are too large for the
destination slot and makes the code easier to understand. This fixes PR853
and Regression/CodeGen/X86/2006-07-28-AsmPrint-Long-As-Pointer.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29408 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
2641cad180e94c0d26630d4ed455352f19be3d3e 28-Jul-2006 Evan Cheng <evan.cheng@apple.com> Remove InFlightSet hack. No longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29373 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f26f5dde14dddb7540d4d8024ecdd7f5a8390b39 28-Jul-2006 Chris Lattner <sabre@nondot.org> Print empty inline asms as a blank line instead of:

# InlineAsm Start

# InlineAsm End


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29372 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
33a0a6ddf5427e05b1d9477075c6f6bf60aa7e62 27-Jul-2006 Jim Laskey <jlaskey@mac.com> Working toward registration of register allocators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29360 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
4d9bbdc4408cc871d229677313cc4887862719d7 27-Jul-2006 Nate Begeman <natebegeman@mac.com> Code cleanups, per review


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29347 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/SelectionDAGISel.cpp
7c16d776cb827922dd0f8f0a88c5b65a90810c0b 27-Jul-2006 Evan Cheng <evan.cheng@apple.com> AssignNodeIds should return unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29343 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
091cba1b9132759cc4ef0e9e528f244c2024c445 27-Jul-2006 Evan Cheng <evan.cheng@apple.com> AssignNodeIds assign each node in the DAG an unique id.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29337 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2f1ae88445c696a9b9d61e14747ba721190cdc99 27-Jul-2006 Nate Begeman <natebegeman@mac.com> Support jump tables when in PIC relocation model


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29318 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/SelectionDAGISel.cpp
c9cf4f1a7573ac7e379efd6ad15d7bd0a84a097c 27-Jul-2006 Chris Lattner <sabre@nondot.org> Fix a case where LegalizeAllNodesNotLeadingTo could take exponential time.
This manifested itself as really long time to compile
Regression/CodeGen/Generic/2003-05-28-ManyArgs.ll on ppc.
This is PR847.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29313 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7107c3badfe78ec89dcab6c02cf1b1bcaccc42a8 26-Jul-2006 Reid Spencer <rspencer@reidspencer.com> For PR780:
1. Move IncludeFile.h to System library
2. Move IncludeFile.cpp to System library
3. #1 and #2 required to prevent cyclic library dependencies for libSystem
4. Convert all existing uses of Support/IncludeFile.h to System/IncludeFile.h
5. Add IncludeFile support to various lib/System classes.
6. Add new lib/System classes to LinkAllVMCore.h
All this in an attempt to pull in lib/System to what's required for VMCore


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29287 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/Makefile
9160a6a18fdd091717cc3375bbac604d1949a65c 25-Jul-2006 Reid Spencer <rspencer@reidspencer.com> Initialize some variables the compiler warns about.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29277 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cd4317efcf334be10d9a98008a1445d6e12a7712 21-Jul-2006 Jim Laskey <jlaskey@mac.com> Eliminate data relocations by using NULL instead of global empty list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29250 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
egAllocLocal.cpp
egAllocSimple.cpp
irtRegMap.cpp
60f09928a0d22d5927ff0a40fe9163cf1ba1014a 21-Jul-2006 Jim Laskey <jlaskey@mac.com> Use an enumeration to eliminate data relocations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
917ec983df36c642492cdc786dee531fbdd6a775 21-Jul-2006 Evan Cheng <evan.cheng@apple.com> If a shuffle is a splat, check if the argument is a build_vector with all elements being the same. If so, return the argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29242 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
02b04b4d347b537becdf8453c511bf058fa4389a 21-Jul-2006 Chris Lattner <sabre@nondot.org> Build more debugger/selectiondag libraries as archives instead of .o files.
This works around bugs in some versions of the cygwin linker.

Patch contributed by Anton Korobeynikov.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29239 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/Makefile
e7bec0dbb50235ec60f78f1f7b3f6d2f6bb5cd91 21-Jul-2006 Evan Cheng <evan.cheng@apple.com> If a shuffle is unary, i.e. one of the vector argument is not needed, turn the
operand into a undef and adjust mask accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29232 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a15cf7045efc688b813f4bc7cbc9f17c27114c04 20-Jul-2006 Chris Lattner <sabre@nondot.org> Mems can be in the output list also. This is the second half of a fix for
PR833


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29224 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ae6153f943970f3899ace54287ef4421879813e6 20-Jul-2006 Andrew Lenharth <andrewl@lenharth.org> 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29221 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
electionDAG/DAGCombiner.cpp
ed41f1bb1981a98eea63f00c5988cf62bbdd7c59 20-Jul-2006 Andrew Lenharth <andrewl@lenharth.org> Reduce number of exported symbols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29220 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
HIElimination.cpp
asses.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/DAGCombiner.cpp
electionDAG/ScheduleDAGList.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
74bda2e320b92c017c1938ab35a18071d22f5127 20-Jul-2006 Andrew Lenharth <andrewl@lenharth.org> Fix linking on Alpha


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29219 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
917d2c9dc2cc8879ed97533e7f75f3f92fa26b61 19-Jul-2006 Chris Lattner <sabre@nondot.org> Add an out-of-line virtual method for the sdnode class to give it a home.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29192 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0c4e6789da4dba6c7b0010886776b24dec3f3bb8 15-Jul-2006 Chris Lattner <sabre@nondot.org> On 64-bit targets like ppc64, we should use .quad to output pointer directives,
not .long.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29157 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
efb9b813fa74d3134dd185df10f6577ceab72bcd 15-Jul-2006 Chris Lattner <sabre@nondot.org> Add an out-of-line virtual function to home class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29154 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
d04c159ac13abbf15de719de1637c59dc38d4216 13-Jul-2006 Jim Laskey <jlaskey@mac.com> Fixed a bug handling void function types.
Requires rebuild of llvm-gcc4 (touch llvm-debug.cpp.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29131 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
16d42c6ac65e19aedfb4853724416cefda27134e 11-Jul-2006 Jim Laskey <jlaskey@mac.com> It was pointed out that DEBUG() is only available with -debug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29106 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
e37fe9b3a1cadceb42ac27fa0718f5a10ea2f0e6 11-Jul-2006 Jim Laskey <jlaskey@mac.com> Ensure that dump calls that are associated with asserts are removed from
non-debug build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29105 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
e2a78f2e3dcea4a087fd776aefc56e9edef840a9 11-Jul-2006 Jim Laskey <jlaskey@mac.com> 1. Support for c++ mangled names.
2. Support for private/protected class members.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29104 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
25a022c7801b047b31d7610386e8a9ddca878cb1 11-Jul-2006 Chris Lattner <sabre@nondot.org> Fix CodeGen/Alpha/2006-07-03-ASMFormalLowering.ll and PR818.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29099 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
42f75a926ab4b55f97da010f2ac05d2bc97a6dbf 07-Jul-2006 Evan Cheng <evan.cheng@apple.com> Fix a typo that causes 2006-07-07-ComputeMaskedBits.ll to fail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
322812e603705e1c2037313633e72f689524b163 30-Jun-2006 Evan Cheng <evan.cheng@apple.com> Ugly hack! Add helper functions InsertInFlightSetEntry and
RemoveInFlightSetEntry. They are used in place of direct set operators to
reduce instruction selection function stack size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28987 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2d2cec1e9e93a388bd8448f4bad661ac89a49de3 29-Jun-2006 Evan Cheng <evan.cheng@apple.com> Add support to print 4-, 8-, and 16- byte constant literals in special
sections. e.g. On Darwin that would be .literal4 and .literal8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28977 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
9525528a7dc5462b6374d38c81ba5c07b11741fe 29-Jun-2006 Chris Lattner <sabre@nondot.org> Use hidden visibility to make symbols in an anonymous namespace get
dropped. This shrinks libllvmgcc.dylib another 67K


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28975 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
egAllocLocal.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
nreachableBlockElim.cpp
f8c68f694c25b1ae8c0e5adb2a19432cb405d232 29-Jun-2006 Chris Lattner <sabre@nondot.org> Shave another 27K off libllvmgcc.dylib with visibility hidden


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28973 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egAllocSimple.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
360e8200ec544a3c877ff74b48f445140ac9bbd6 28-Jun-2006 Chris Lattner <sabre@nondot.org> Mark these two classes as hidden, shrinking libllbmgcc.dylib by 25K


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28970 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
883a52de66da854de158b602952d8242acddcb48 28-Jun-2006 Chris Lattner <sabre@nondot.org> Fix CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28965 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9d5b532de9bdca37810a59a93a69128441b02c55 27-Jun-2006 Reid Spencer <rspencer@reidspencer.com> For PR801:
Refactor the Graph writing code to use a common implementation which is
now in lib/Support/GraphWriter.cpp. This completes the PR.

Patch by Anton Korobeynikov. Thanks, Anton!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28925 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/SelectionDAGPrinter.cpp
89d67faf30ed1a8b5364f53c9a0f5e07a9a0719c 23-Jun-2006 Jim Laskey <jlaskey@mac.com> Add and sort "sections" in debug lines. This always stepping through
code in sections other than ".text", including weak sections like ctors and
dtors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28909 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
650f609734b0f948be89376acfebb56249990619 20-Jun-2006 Jim Laskey <jlaskey@mac.com> Add support for function types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28874 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
d16f2a73264a8247437278b768dd3842b02b57b3 19-Jun-2006 Jim Laskey <jlaskey@mac.com> References need to be section relative.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28861 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
067ef412bbc915d0756f28b09a449e7ccc2d369d 19-Jun-2006 Jim Laskey <jlaskey@mac.com> References need to be section relative.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28858 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
ca0dc56742986df05f9a7e0b425e2e798eaa2f92 19-Jun-2006 Jim Laskey <jlaskey@mac.com> Handle versioning of compile unit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28855 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
7089f45987728197e80174e7640f0178d688080e 16-Jun-2006 Jim Laskey <jlaskey@mac.com> 1. Revise vector debug support.

2. Update docs for vector debug support and new version control.

3. Simplify serialization of DebugDescInfo subclasses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28816 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
44500e3d538a250d8591e708b62741cde0bdc249 16-Jun-2006 Chris Lattner <sabre@nondot.org> Teach the local allocator to know that live-in values (e.g. arguments) are
live at function entry. This prevents it from using arg registers for other
purposes before the arguments are used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28809 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
f8a01a966120a041fe96300271573a8bf5a3e668 15-Jun-2006 Jim Laskey <jlaskey@mac.com> 1. Support standard dwarf format (was bootstrapping in Apple format.)

2. Add vector support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28807 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
d5a932b92af122209bfb53fc3198698a4af18371 15-Jun-2006 Jim Laskey <jlaskey@mac.com> Was pointed out that structure alignment and type alignment are not the same
thing. Doubles still need to be special cased.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28806 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
35f8c208a98371b3eb38494c03514f497b9af12b 15-Jun-2006 Jim Laskey <jlaskey@mac.com> Alignment of globals has not been quite right. Needed to drop the pointer type
to get the alignment of the element type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28799 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
a844126c43976387a66dafbe5137a762169f1f34 15-Jun-2006 Evan Cheng <evan.cheng@apple.com> Consistency. EXTRACT_ELEMENT index operand should have ptr type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28795 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a9767f6218bf5d56953ae28b0531f6d558bf36c2 15-Jun-2006 Evan Cheng <evan.cheng@apple.com> Assert. Rather than silently stop printing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28794 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
8d3af5e7d082dbd029c3987ceadbdcf9e49af6d7 15-Jun-2006 Evan Cheng <evan.cheng@apple.com> Instructions with variable operands (variable_ops) can have a number required
operands. e.g.
def CALL32r : I<0xFF, MRM2r, (ops GR32:$dst, variable_ops),
"call {*}$dst", [(X86call GR32:$dst)]>;
TableGen should emit operand informations for the "required" operands.

Added a target instruction info flag M_VARIABLE_OPS to indicate the target
instruction may have more operands in addition to the minimum required
operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28791 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
ed4e566ddae779d6325b8ad96fa0020909550690 14-Jun-2006 Jim Laskey <jlaskey@mac.com> Change versioning to per debug info descriptor (merged with tag.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28782 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
014f98c7e5cbf41104ab9a86e32b8ce869982934 14-Jun-2006 Jim Laskey <jlaskey@mac.com> Place dwarf headers at earliest possible point. Well behaved when skipping
functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28781 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
c4fa603347e798c94f54430227df8265736ef183 13-Jun-2006 Chris Lattner <sabre@nondot.org> Port some bugfixes in shift handling from SimplifyDemandedBits over to
ComputeMaskedBits. DemandedMasks and KnownZero/One masks should never have
bits set out of the range of the base datatype.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28768 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
9bfa2dcff6c341814c18703d6760c3645bcc14e9 13-Jun-2006 Jim Laskey <jlaskey@mac.com> TargetLowering::ComputeMaskedBits was not clearing reciprocal bits on shifts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28765 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
a3bb86dd6b6220c69d9d7e4e11aea42fa1ec2bc5 12-Jun-2006 Chris Lattner <sabre@nondot.org> Make sure to update the CFG correctly if a switch only has a default dest.
This fixes CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28755 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
232c910b8acd81cbf47fb18595ce557789c2217c 12-Jun-2006 Andrew Lenharth <andrewl@lenharth.org> Start on my todo list


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28752 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
0c48fd4610cc7a90a998428c93a0c68246e79e57 08-Jun-2006 Chris Lattner <sabre@nondot.org> Fix X86/inline-asm.ll:test2, a case where an input value was implicitly
truncated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28733 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cf752aa502a2ce6eaca9db4640171143c49e1733 08-Jun-2006 Chris Lattner <sabre@nondot.org> Fix Regression/CodeGen/X86/inline-asm.ll, a case where inline asm causes
implement extension of a register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28731 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fd561cded3cbaec1a4bdfae0703b4be4ea4092f3 08-Jun-2006 Chris Lattner <sabre@nondot.org> Fix an assert-on-inline-inline-asm bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28727 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
fcadfbbdef6c87cf3952142e396e5872e30da8a3 05-Jun-2006 Reid Spencer <rspencer@reidspencer.com> For PR798:
Provide GraphViz support for MingW32. Patch provided by Anton Korobeynikov


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28688 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
3e0c1542409eda9afaf7427ad72facdecb91128c 05-Jun-2006 Reid Spencer <rspencer@reidspencer.com> For PR798:
Add support for Graphviz. Patch contributed by Anton Korobeynikov.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28684 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
177284ce8976d840e6093c6555dacc13f3ed0c4f 01-Jun-2006 Reid Spencer <rspencer@reidspencer.com> Prevent the -pedantic option from causing Mac OS/X build problems:
LiveIntervalAnalysis.cpp:218: error: floating constant exceeds range of 'double'


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28620 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
18c8b49e7d3c94d7f84a4205a19f8761722fc4e5 01-Jun-2006 Reid Spencer <rspencer@reidspencer.com> Use archive libraries instead of object files for VMCore, BCReader,
BCWriter, and bzip2 libraries. Adjust the various makefiles to accommodate
these changes. This was done to speed up link times.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28610 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
electionDAG/Makefile
4c6f2f9e92eae3e676ee09133e9666567782faa3 31-May-2006 Evan Cheng <evan.cheng@apple.com> commuteInstruction() does not always create a new MI!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28592 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
16eee25c660010e5fc632b3707037b3baaa32909 31-May-2006 Evan Cheng <evan.cheng@apple.com> Eliminate a memory leak.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28585 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
7b336a87466da67cbd528d124e38c12390707a24 31-May-2006 Evan Cheng <evan.cheng@apple.com> visitVBinOp: Can't fold divide by zero!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6b8e5a93183ab08811b7b71887d8c7d774666210 30-May-2006 Evan Cheng <evan.cheng@apple.com> Make sure the register pressure reduction schedulers work for non-uniform
latency targets, e.g. PPC32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28561 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
19564e3d83c9c3cdf908005c91bad13d26b5cedf 30-May-2006 Evan Cheng <evan.cheng@apple.com> When a priority_queue is empty, the behavior of top() operator is
non-deterministic. Returns NULL when it's empty!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28560 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
729c6d1da87ad5b3bf849c4102b255657f67276c 27-May-2006 Chris Lattner <sabre@nondot.org> Fix a nasty dag combiner bug that caused nondeterminstic crashes (MY FAVORITE!):
SimplifySelectOps would eliminate a Select, delete it, then return true.

The clients would see that it did something and return null.

The top level would see a null return, and decide that nothing happened,
proceeding to process the node in other ways: boom.

The fix is simple: clients of SimplifySelectOps should return the select
node itself.

In order to catch really obnoxious boogs like this in the future, add an
assert that nodes are not deleted. We do this by checking for a sentry node
type that the SDNode dtor sets when a node is destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28514 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d61c4820c9e39500a67bec4d6cfe521a833afdcc 27-May-2006 Evan Cheng <evan.cheng@apple.com> Make CALL node consistent with RET node. Signness of value has type MVT::i32
instead of MVT::i1. Either is fine except MVT::i32 is probably a legal type
for most (if not all) platforms while MVT::i1 is not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28511 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8e7d056bc5c0688501f6721994c8f4074d699c69 27-May-2006 Evan Cheng <evan.cheng@apple.com> Change RET node to include signness information of the return values. e.g.
RET chain, value1, sign1, value2, sign2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28509 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
00aff7d9772e4945e3a946e70a3ef9998006b8de 26-May-2006 Evan Cheng <evan.cheng@apple.com> Remove a bogus cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28492 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
3b788238683396671e63cad36298d26eb4806dbe 25-May-2006 Evan Cheng <evan.cheng@apple.com> Turn on -sched-commute-nodes by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGRRList.cpp
f6d62c2e2a53e3ebf2e25f0891e5f1a0b772b368 25-May-2006 Evan Cheng <evan.cheng@apple.com> CALL node change: now including signness of every argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28461 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d74ea2bbd8bb630331f35ead42d385249bd42af8 24-May-2006 Chris Lattner <sabre@nondot.org> Patches to make the LLVM sources more -pedantic clean. Patch provided
by Anton Korobeynikov! This is a step towards closing PR786.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28447 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
electionDAG/LegalizeDAG.cpp
woAddressInstructionPass.cpp
80235d508e5f7a9603ef43ba6625984173ff0323 23-May-2006 Evan Cheng <evan.cheng@apple.com> -enable-unsafe-fp-math implies -enable-finite-only-fp-math


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28437 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
124729155d860a0850eb4ef2a7cea4145e13a057 23-May-2006 Vladimir Prus <ghost@cs.msu.su> Fix missing include


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28435 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f6f9581983c85f8b4d2775b22870c1a4516fabdf 23-May-2006 Evan Cheng <evan.cheng@apple.com> Incorrect SETCC CondCode used for FP comparisons.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28433 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
21d03f2de0087d60dbf575d95924404a97852879 18-May-2006 Evan Cheng <evan.cheng@apple.com> lib/Target/Target.td


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28386 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
d202ca4d988b5ee3f30656a7e82443db4752dd91 17-May-2006 Chris Lattner <sabre@nondot.org> Fix the result of the call to use a correct vbitconvert. There is no need to
use getPackedTypeBreakdown at all here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28365 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
1b8daae71b0118b489cbecf2f1b8ed86b6bc8e57 17-May-2006 Chris Lattner <sabre@nondot.org> Correct a previous patch which broke CodeGen/PowerPC/vec_call.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7e399c14abb27f9d1291442ee7f9251fa827f2e9 17-May-2006 Evan Cheng <evan.cheng@apple.com> Another typo. Pointed out by Nate Begeman.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28353 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6c43f35d740ccd1d746be90d98ee11f8829fe543 17-May-2006 Evan Cheng <evan.cheng@apple.com> Fixed a LowerCallTo and LowerArguments bug. They were introducing illegal
VBIT_VECTOR nodes. There were some confusion about the semantics of
getPackedTypeBreakdown(). e.g. for <4 x f32> it returns 1 and v4f32, not 4,
and f32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28352 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e9b3da17cdc5b54bb1194043f27d4d2914d77097 17-May-2006 Evan Cheng <evan.cheng@apple.com> Fix an obvious bug in getPackedTypeBreakdown. Return 1 if type is legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28351 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
c5d7d7c715f7b7a4eeea1ceaafefc3d1d6df2add 17-May-2006 Chris Lattner <sabre@nondot.org> When we legalize target nodes, do not use getNode to create a new node,
use UpdateNodeOperands to just update the operands! This is important because
getNode will allocate a new node if the node returns a flag and this breaks
assumptions in the legalizer that you can legalize some things multiple times
and get exactly the same results.

This latent bug was exposed by my ppc patch last night, and this fixes
gsm/toast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b248e16afd105fd8c01e08d8bf997b08ff08d127 17-May-2006 Chris Lattner <sabre@nondot.org> Add an assertion, avoid some unneeded work for each call. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28347 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
da098e7d1017e9435617d4c3de58ff72ae01ca22 17-May-2006 Chris Lattner <sabre@nondot.org> Add support for calls that pass and return legal vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f4ec817299a4187044a6162c2f520772b3ad69a0 17-May-2006 Chris Lattner <sabre@nondot.org> Add a new ISD::CALL node, make the default impl of TargetLowering::LowerCallTo
produce it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28338 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
3e348494bbe72609893957510d56fb0266531306 16-May-2006 Andrew Lenharth <andrewl@lenharth.org> this should be 128 I think


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
dae9cbe8d4fcd8f182a99403d67cae906bdb3175 16-May-2006 Andrew Lenharth <andrewl@lenharth.org> Move this code to a common place


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28329 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
8c0c10c2b9fef21dcbabac81fffa32f4407a0b7f 16-May-2006 Chris Lattner <sabre@nondot.org> Add a chain to FORMAL_ARGUMENTS. This is a minimal port of the X86 backend,
it doesn't currently use/maintain the chain properly. Also, make the
X86ISelLowering.cpp file 80-col clean.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
966454129dc62260df1f438f0243f6877dcd185c 16-May-2006 Chris Lattner <sabre@nondot.org> Move function-live-in-handling code from the sdisel code to the scheduler.
This code should be emitted after legalize, so it can't be in sdisel.

Note that the EmitFunctionEntryCode hook should be updated to operate on the
DAG. The X86 backend is the only one currently using this hook.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28315 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
4e92027837136233db0fc1c1a4fa2bc456d74de3 16-May-2006 Chris Lattner <sabre@nondot.org> Print the vreg that livein physregs are live in


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28314 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
e2e41730ccfa9bebfabbd17ab3454aa2bb620b2a 16-May-2006 Chris Lattner <sabre@nondot.org> Legalize FORMAL_ARGUMENTS nodes correctly, we don't want to legalize them once
for each argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28313 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8820ad5154eae194a685a8735bd5999221fdffd0 13-May-2006 Evan Cheng <evan.cheng@apple.com> Fixing 2006-05-01-SchedCausingSpills.ll; some clean up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28279 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
ee00a1d12c631eb7360ddd4809bdde72331b2736 13-May-2006 Evan Cheng <evan.cheng@apple.com> Revert an un-intended change


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28278 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a2d079a7763d01922e806e7874553da2ae4006af 13-May-2006 Chris Lattner <sabre@nondot.org> Merge identical code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28274 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3b6d56cab3dde20699d862fbd859bcb4ea4ed16e 12-May-2006 Evan Cheng <evan.cheng@apple.com> If the register allocator cannot find a register to spill, try the aliases. If
that still fails (because all the register spill weights are inf), just grab
one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28262 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
b5d9319bc585d872b59967eec71ada21a3bbd497 12-May-2006 Chris Lattner <sabre@nondot.org> Remove dead vars


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f1343c1b7929930c276939ac571cfbfadc283c4e 12-May-2006 Chris Lattner <sabre@nondot.org> remove dead vars


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c485e55c651fe6240e118e42bdf98effb6d06584 12-May-2006 Chris Lattner <sabre@nondot.org> Remove dead variable


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28253 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
5eed34d208159e02949097ec91d98d5d9eb30e27 12-May-2006 Chris Lattner <sabre@nondot.org> Comment out dead variables


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28252 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9dcb780e23abdec3e348124b47cf78cbff167154 12-May-2006 Chris Lattner <sabre@nondot.org> Remove dead var


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28250 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
e41102bb610aeebe73eeec6a4afe62301de10042 12-May-2006 Chris Lattner <sabre@nondot.org> Compile:

%tmp152 = setgt uint %tmp144, %tmp149 ; <bool> [#uses=1]
%tmp159 = setlt uint %tmp144, %tmp149 ; <bool> [#uses=1]
%bothcond2 = or bool %tmp152, %tmp159 ; <bool> [#uses=1]

To setne, not setune, which causes an assertion fault.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28244 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
07000c6f01d8f57170f2d4c77a86d934bdc5c696 12-May-2006 Owen Anderson <resistor@mac.com> Refactor a bunch of includes so that TargetMachine.h doesn't have to include
TargetData.h. This should make recompiles a bit faster with my current
TargetData tinkering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28238 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
LFWriter.cpp
achineBasicBlock.cpp
achineFunction.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/TargetLowering.cpp
647c15e58ed4c3fda81041d401ca7547639958dc 12-May-2006 Evan Cheng <evan.cheng@apple.com> Backing out fix for PR770. Need to re-apply it after live range splitting is possible


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28236 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
626da3d9aeb5e18a47a7516cbeae38c9324636e5 12-May-2006 Evan Cheng <evan.cheng@apple.com> Duh. That could take a long time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28235 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
21a57dc75172aa964c51d386b2cdd0ad3be7792f 12-May-2006 Chris Lattner <sabre@nondot.org> Two simplifications for token factor nodes: simplify tf(x,x) -> x.
simplify tf(x,y,y,z) -> tf(x,y,z).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28233 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
13d41b9d721f98372b97d2ec119e6c91932ab0ae 12-May-2006 Evan Cheng <evan.cheng@apple.com> Add capability to scheduler to commute nodes for profit.
If a two-address code whose first operand has uses below, it should be commuted
when possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28230 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGRRList.cpp
e165a78551a91d8420cd8f074d97701e8788f8b5 12-May-2006 Evan Cheng <evan.cheng@apple.com> Refactor scheduler code. Move register-reduction list scheduler to a
separate file. Added an initial implementation of top-down register pressure
reduction list scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28226 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGRRList.cpp
electionDAG/SelectionDAGISel.cpp
993141402f57b4d4cbb7f8a3113f19c61688f9b7 11-May-2006 Evan Cheng <evan.cheng@apple.com> Set weight of zero length intervals to infinite to prevent them from being
spilled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28220 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5d02eafaf250931838e77a6f5741e3738764e908 11-May-2006 Evan Cheng <evan.cheng@apple.com> Backing out previous check-in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28219 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
1f300190f35ac0f99403ead9363d40ecfc98df89 11-May-2006 Evan Cheng <evan.cheng@apple.com> If the live interval legnth is essentially zero, i.e. in every live range
the use follows def immediately, it doesn't make sense to spill it and
hope it will be easier to allocate for this LI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28217 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
90db0358bbe4479099adfe41589f1787e3dc1545 10-May-2006 Evan Cheng <evan.cheng@apple.com> Templatify RegReductionPriorityQueue


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28212 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
ec57fd91af6be26a29535e7dd3dcb63beb71d898 09-May-2006 Nate Begeman <natebegeman@mac.com> Fix PR773


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28207 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c8d37c6e140dcddfc2d841ccd0a0924030ce15f8 09-May-2006 Chris Lattner <sabre@nondot.org> Fix a regression in my patch from last night that broke the llvmgcc4 build on
ppc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28205 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
b63b0679251834601633ed91b5567801a89d77fe 09-May-2006 Evan Cheng <evan.cheng@apple.com> Add pseudo dependency to force a def&use operand to be scheduled last (unless
the distance between the def and another use is much longer). This is under
option control for now "-sched-lower-defnuse".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28201 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
60e8c71c9f63959890ecabb70c6e2cde2f947224 09-May-2006 Evan Cheng <evan.cheng@apple.com> Debugging info


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28200 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e73701df947d23c65e96abc71a3be40ad77058ee 09-May-2006 Evan Cheng <evan.cheng@apple.com> PR 770 - permit coallescing of registers in subset register classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28197 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7faec9b93ad8c1f40ec2dd415c7f2ccbe48cfe30 09-May-2006 Chris Lattner <sabre@nondot.org> Implement MASM sections correctly, without a "has masm sections flag" and a bunch of special case code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28194 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
a7090ae7a3209783ba2a2f7b8ab5744ec3d292b3 09-May-2006 Chris Lattner <sabre@nondot.org> Oh yeah, there are two of these now, unify both.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28192 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
b81cb6133e224e37b1783fa2343a4789536fb0a4 09-May-2006 Chris Lattner <sabre@nondot.org> Setting SwitchToSectionDirective properly in the MASM backend permits a bunch
of code to be unified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28191 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
23b9eac4cbd0d3aba53eb802d7af8a11280985e7 09-May-2006 Chris Lattner <sabre@nondot.org> Don't prefix section directives with a tab. Doing so causes blank lines to
be emitted to the .s file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28189 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
13f161c51844d02af9b3637330af95f79db2f1c1 09-May-2006 Chris Lattner <sabre@nondot.org> Make the masm codepath work like the normal code path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28188 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
4ca4bb1ed2963a09c758677727a9f5432448fac9 09-May-2006 Chris Lattner <sabre@nondot.org> The MASM asmprinter has been fixed, these hacks are no longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28186 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
4632d7a57008564c4b0f8246e85bd813a200d2c6 09-May-2006 Chris Lattner <sabre@nondot.org> Split SwitchSection into SwitchTo{Text|Data}Section methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28184 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
4b37e87ab9e7bfad8b87115278ca589f8d49ba26 08-May-2006 Chris Lattner <sabre@nondot.org> Make the case I just checked in stronger. Now we compile this:

short test2(short X, short x) {
int Y = (short)(X+x);
return Y >> 1;
}

to:

_test2:
add r2, r3, r4
extsh r2, r2
srawi r3, r2, 1
blr

instead of:

_test2:
add r2, r3, r4
extsh r2, r2
srwi r2, r2, 1
extsh r3, r2
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28175 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
eaeda56649052fc75e527b37089d6d67c4a5976d 08-May-2006 Chris Lattner <sabre@nondot.org> Implement and_sext.ll:test3, generating:

_test4:
srawi r3, r3, 16
blr

instead of:

_test4:
srwi r2, r3, 16
extsh r3, r2
blr

for:

short test4(unsigned X) {
return (X >> 16);
}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28174 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a850446a0be73ceb9ac1b312bffb1e06d7e40d99 08-May-2006 Chris Lattner <sabre@nondot.org> Compile this:

short test4(unsigned X) {
return (X >> 16);
}

to:

_test4:
movl 4(%esp), %eax
sarl $16, %eax
ret

instead of:

_test4:
movl $-65536, %eax
andl 4(%esp), %eax
sarl $16, %eax
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2cfd6746ae4ab9dbfc25b025bc3e8bccddc47475 08-May-2006 Chris Lattner <sabre@nondot.org> Fold shifts with undef operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28167 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1b7371331fef3db77999b9c4ca62c2ddbaf1d804 08-May-2006 Chris Lattner <sabre@nondot.org> When tracking demanded bits, if any bits from the sext of an SRA are demanded,
then so is the input sign bit. This fixes mediabench/g721 on X86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28166 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
17c275ff2ce9e94d647e781f6dac6320d088f899 08-May-2006 Nate Begeman <natebegeman@mac.com> Make emission of jump tables a bit less conservative; they are now required
to be only 31.25% dense, rather than 75% dense.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5c742681edc9d0e8be16f7518af5429d2b643078 08-May-2006 Nate Begeman <natebegeman@mac.com> Fix PR772


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28161 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
822db93e57f9b8800268e8ba7b2cbc1234bc265c 07-May-2006 Chris Lattner <sabre@nondot.org> Use ComputeMaskedBits to determine # sign bits as a fallback. This allows us
to handle all kinds of stuff, including silly things like:
sextinreg(setcc,i16) -> setcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28155 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
e60351bb72938117a0a0dd6fe2844381e9ec4ca9 07-May-2006 Chris Lattner <sabre@nondot.org> Add some more sign propagation cases


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28154 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
310b578023bc6c91f5961582ec8de49c9268f711 07-May-2006 Chris Lattner <sabre@nondot.org> Simplify some code, add a couple minor missed folds


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28152 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b9ebacdb4dccd0048b7fc8bcd2559d17e5293d38 07-May-2006 Chris Lattner <sabre@nondot.org> constant fold sign_extend_inreg


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28151 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
541a24f7af685610838b5a89b2feffc2285937db 07-May-2006 Chris Lattner <sabre@nondot.org> remove cases handled elsewhere


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28150 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d6f7fe76a63ae8c3eff0699b3214278cae30e4b6 07-May-2006 Chris Lattner <sabre@nondot.org> Add some more simple sign bit propagation cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28149 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d43b18d9e47326cb83b11d684d569ee9050ebefa 06-May-2006 Jeff Cohen <jeffc@jolt-lang.org> Fix some loose ends in MASM support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28148 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ee4ea923589a2556ff85edbaf444d9575050613a 06-May-2006 Chris Lattner <sabre@nondot.org> Use the new TargetLowering::ComputeNumSignBits method to eliminate
sign_extend_inreg operations. Though ComputeNumSignBits is still rudimentary,
this is enough to compile this:

short test(short X, short x) {
int Y = X+x;
return (Y >> 1);
}
short test2(short X, short x) {
int Y = (short)(X+x);
return Y >> 1;
}

into:

_test:
add r2, r3, r4
srawi r3, r2, 1
blr
_test2:
add r2, r3, r4
extsh r2, r2
srawi r3, r2, 1
blr

instead of:

_test:
add r2, r3, r4
srawi r2, r2, 1
extsh r3, r2
blr
_test2:
add r2, r3, r4
extsh r2, r2
srawi r2, r2, 1
extsh r3, r2
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28146 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5c3e21d68726dbfc313d8af3d320b0a6b3eeac36 06-May-2006 Chris Lattner <sabre@nondot.org> Add some really really simple code for computing sign-bit propagation.

This will certainly be enhanced in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28145 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
f0df8824eb2bf8a5fb91ce6fd1db590caf34f994 06-May-2006 Chris Lattner <sabre@nondot.org> When inserting casts, be careful of where we put them. We cannot insert
a cast immediately before a PHI node.

This fixes Regression/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28143 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c93dfda9056a83a81b07ad25ed567cc303893990 06-May-2006 Chris Lattner <sabre@nondot.org> Fold (trunc (srl x, c)) -> (srl (trunc x), c)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28138 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b72773bb88859633c62bc4938d05aafedb1442f1 06-May-2006 Chris Lattner <sabre@nondot.org> Fold trunc(any_ext). This gives stuff like:

27,28c27
< movzwl %di, %edi
< movl %edi, %ebx
---
> movw %di, %bx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28137 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
06afe070371c5bdcdc76d90d9e13f8532d9f95aa 06-May-2006 Chris Lattner <sabre@nondot.org> Shrink shifts when possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28136 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fe8babf689c624c53d03f5629324b049b5327a6e 06-May-2006 Chris Lattner <sabre@nondot.org> Implement ComputeMaskedBits/SimplifyDemandedBits for ISD::TRUNCATE


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28135 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
1c05997bd8d8b3e97c9a5384f8197d0348e237a3 05-May-2006 Chris Lattner <sabre@nondot.org> Indent multiline asm strings more nicely


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28132 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
e564dbb51ca1ad9ff6d88ae6120782a48bd040c2 05-May-2006 Chris Lattner <sabre@nondot.org> Fold (fpext (load x)) -> (extload x)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28130 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
903236468c3ebb3f9ae8f51b6f2e68f10c7e1d3a 05-May-2006 Chris Lattner <sabre@nondot.org> More aggressively sink GEP offsets into loops. For example, before we
generated:

movl 8(%esp), %eax
movl %eax, %edx
addl $4316, %edx
cmpb $1, %cl
ja LBB1_2 #cond_false
LBB1_1: #cond_true
movl L_QuantizationTables720$non_lazy_ptr, %ecx
movl %ecx, (%edx)
movl L_QNOtoQuantTableShift720$non_lazy_ptr, %edx
movl %edx, 4460(%eax)
ret
...

Now we generate:

movl 8(%esp), %eax
cmpb $1, %cl
ja LBB1_2 #cond_false
LBB1_1: #cond_true
movl L_QuantizationTables720$non_lazy_ptr, %ecx
movl %ecx, 4316(%eax)
movl L_QNOtoQuantTableShift720$non_lazy_ptr, %ecx
movl %ecx, 4460(%eax)
ret

... which uses one fewer register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28129 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0d8dae749c116a4168c3b4312f1bc0352d22c9db 05-May-2006 Chris Lattner <sabre@nondot.org> Fold some common code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
540121f1ec6495445aab87ff464b170c0b762d05 05-May-2006 Chris Lattner <sabre@nondot.org> Implement:

// fold (and (sext x), (sext y)) -> (sext (and x, y))
// fold (or (sext x), (sext y)) -> (sext (or x, y))
// fold (xor (sext x), (sext y)) -> (sext (xor x, y))
// fold (and (aext x), (aext y)) -> (aext (and x, y))
// fold (or (aext x), (aext y)) -> (aext (or x, y))
// fold (xor (aext x), (aext y)) -> (aext (xor x, y))


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28123 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a3dc3f692c2967dc9cfac6344c7216f62098feda 05-May-2006 Chris Lattner <sabre@nondot.org> Pull and through and/or/xor. This compiles some bitfield code to:

mov EAX, DWORD PTR [ESP + 4]
mov ECX, DWORD PTR [EAX]
mov EDX, ECX
add EDX, EDX
or EDX, ECX
and EDX, -2147483648
and ECX, 2147483647
or EDX, ECX
mov DWORD PTR [EAX], EDX
ret

instead of:

sub ESP, 4
mov DWORD PTR [ESP], ESI
mov EAX, DWORD PTR [ESP + 8]
mov ECX, DWORD PTR [EAX]
mov EDX, ECX
add EDX, EDX
mov ESI, ECX
and ESI, -2147483648
and EDX, -2147483648
or EDX, ESI
and ECX, 2147483647
or EDX, ECX
mov DWORD PTR [EAX], EDX
mov ESI, DWORD PTR [ESP]
add ESP, 4
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5ffc066912ce4f5c32741c5e56dc28a8fe1dc050 05-May-2006 Chris Lattner <sabre@nondot.org> Implement a variety of simplifications for ANY_EXTEND.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28121 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
35e5c14b80a732c7d061a13a3717362e936852b1 05-May-2006 Chris Lattner <sabre@nondot.org> Factor some code, add these transformations:

// fold (and (trunc x), (trunc y)) -> (trunc (and x, y))
// fold (or (trunc x), (trunc y)) -> (trunc (or x, y))
// fold (xor (trunc x), (trunc y)) -> (trunc (xor x, y))


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28120 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4b75e73791f32f73ca1fc91f073a5126e6700b7a 05-May-2006 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ compilation error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28117 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
7e598096ea8db3f19f4ec8f4cb407aea996bd7c2 05-May-2006 Chris Lattner <sabre@nondot.org> Sink noop copies into the basic block that uses them. This reduces the number
of cross-block live ranges, and allows the bb-at-a-time selector to always
coallesce these away, at isel time.

This reduces the load on the coallescer and register allocator. For example
on a codec on X86, we went from:

1643 asm-printer - Number of machine instrs printed
419 liveintervals - Number of loads/stores folded into instructions
1144 liveintervals - Number of identity moves eliminated after coalescing
1022 liveintervals - Number of interval joins performed
282 liveintervals - Number of intervals after coalescing
1304 liveintervals - Number of original intervals
86 regalloc - Number of times we had to backtrack
1.90232 regalloc - Ratio of intervals processed over total intervals
40 spiller - Number of values reused
182 spiller - Number of loads added
121 spiller - Number of stores added
132 spiller - Number of register spills
6 twoaddressinstruction - Number of instructions commuted to coalesce
360 twoaddressinstruction - Number of two-address instructions

to:

1636 asm-printer - Number of machine instrs printed
403 liveintervals - Number of loads/stores folded into instructions
1155 liveintervals - Number of identity moves eliminated after coalescing
1033 liveintervals - Number of interval joins performed
279 liveintervals - Number of intervals after coalescing
1312 liveintervals - Number of original intervals
76 regalloc - Number of times we had to backtrack
1.88998 regalloc - Ratio of intervals processed over total intervals
1 spiller - Number of copies elided
41 spiller - Number of values reused
191 spiller - Number of loads added
114 spiller - Number of stores added
128 spiller - Number of register spills
4 twoaddressinstruction - Number of instructions commuted to coalesce
356 twoaddressinstruction - Number of two-address instructions

On this testcase, this change provides a modest reduction in spill code,
regalloc iterations, and total instructions emitted. It increases the number
of register coallesces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28115 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6e994b74921d8519472a087246d7a56731e958d4 04-May-2006 Chris Lattner <sabre@nondot.org> Final pass of minor cleanups for MachineInstr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28110 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
14a6db8bd9c83f5fa1821c133f43ccaebdebef91 04-May-2006 Evan Cheng <evan.cheng@apple.com> Initial support for register pressure aware scheduling. The register reduction
scheduler can go into a "vertical mode" (i.e. traversing up the two-address
chain, etc.) when the register pressure is low.
This does seem to reduce the number of spills in the cases I've looked at. But
with x86, it's no guarantee the performance of the code improves.
It can be turned on with -sched-vertically option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28108 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
943b5e117fe9a087f9aa529a2632c2d32cc22374 04-May-2006 Chris Lattner <sabre@nondot.org> Remove redundancy and a level of indirection when creating machine operands


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28107 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
8b915b4ed2c6e43413937ac71c0cbcf476ad1a98 04-May-2006 Chris Lattner <sabre@nondot.org> Remove and simplify some more machineinstr/machineoperand stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28105 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
2d90ac7ca6117d3b160dde8a4f322c1079a6ffce 04-May-2006 Chris Lattner <sabre@nondot.org> Rename MO_VirtualRegister -> MO_Register. Clean up immediate handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28104 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
e53f4a055f74bded20d6129b4724ddd17fd199f6 04-May-2006 Chris Lattner <sabre@nondot.org> Move some methods out of MachineInstr into MachineOperand


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28102 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineInstr.cpp
egAllocLocal.cpp
egAllocSimple.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
63b3d7113d93fda622c4954c6b1d046ce029044e 04-May-2006 Chris Lattner <sabre@nondot.org> There shalt be only one "immediate" operand type!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28099 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ceb408f6a263e319683209ae5c6f8d1e3e4d9b69 04-May-2006 Chris Lattner <sabre@nondot.org> Change "value" in MachineOperand to be a GlobalValue, as that is the only
thing that can be in it. Remove a dead method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28098 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
4efeab208cf0fe7ae2f68bcdd1264a8fdb18826c 04-May-2006 Chris Lattner <sabre@nondot.org> Remove a bunch more dead V9 specific stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28094 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
achineBasicBlock.cpp
achineInstr.cpp
ea50fabfd4e5fad25a25b312f64a9b2a53363586 04-May-2006 Chris Lattner <sabre@nondot.org> Remove a bunch more SparcV9 specific stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28093 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
electionDAG/ScheduleDAG.cpp
34fb2cad46adb39f3c2cc705fbbf439a383d0f65 04-May-2006 Chris Lattner <sabre@nondot.org> Remove some more V9-specific stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28092 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
10f3597c4e0c13ecf0272b7ca0be741a91ade48c 04-May-2006 Chris Lattner <sabre@nondot.org> Remove some more unused stuff from MachineInstr that was leftover from V9.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28091 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b4432f3d4754e16c918428d34a9d8ec18ab79204 03-May-2006 Chris Lattner <sabre@nondot.org> Suck block address tracking out of targets into the JIT Emitter. This
simplifies the MachineCodeEmitter interface just a little bit and makes
BasicBlocks work like constant pools and jump tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28082 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
f4360a478944af45d5f851a0903fbbfa44f520dc 03-May-2006 Nate Begeman <natebegeman@mac.com> Finish up the initial jump table implementation by allowing jump tables to
not be 100% dense. Increase the minimum threshold for the number of cases
in a switch statement from 4 to 6 in order to create a jump table.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28079 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c9a83a45ba53abeab329548e7ac9f3968b440e64 03-May-2006 Evan Cheng <evan.cheng@apple.com> Bottom up register pressure reduction work: clean up some hacks and enhanced
the heuristic to further reduce spills for several test cases. (Note, it may
not necessarily translate to runtime win!)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28076 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
a69571c7991813c93cba64e88eced6899ce93d81 03-May-2006 Owen Anderson <resistor@mac.com> Refactor TargetMachine, pushing handling of TargetData into the target-specific subclasses. This has one caller-visible change: getTargetData() now returns a pointer instead of a reference.

This fixes PR 759.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28074 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
LFWriter.cpp
achineFunction.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
af1563fb62ed76f4818ac172ab1c6cf15fa35a82 03-May-2006 Chris Lattner <sabre@nondot.org> Change the BasicBlockAddrs map to be a vector, indexed by MBB number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28069 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
f75f9be3fb89eb6661a0ed8bfee8a6328ee5a4d1 03-May-2006 Chris Lattner <sabre@nondot.org> Several related changes:

1. Change several methods in the MachineCodeEmitter class to be pure virtual.
2. Suck emitConstantPool/initJumpTableInfo into startFunction, removing them
from the MachineCodeEmitter interface, and reducing the amount of target-
specific code.
3. Change the JITEmitter so that it allocates constantpools and jump tables
*right* next to the functions that they belong to, instead of in a separate
pool of memory. This makes all memory for a function be contiguous, and
means the JITEmitter only tracks one block of memory now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28065 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
f5d438c1f0e0c0ed44475ab69f03d86a3c818c60 02-May-2006 Chris Lattner <sabre@nondot.org> Do not make the JIT memory manager manage the memory for globals. Instead
just have the JIT malloc them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28062 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
43b429b05989075b60693d57395c99b0ad789f8d 02-May-2006 Chris Lattner <sabre@nondot.org> Refactor the machine code emitter interface to pull the pointers for the current
code emission location into the base class, instead of being in the derived classes.

This change means that low-level methods like emitByte/emitWord now are no longer
virtual (yaay for speed), and we now have a framework to support growable code
segments. This implements feature request #1 of PR469.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28059 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achineCodeEmitter.cpp
9d51eeb8bc2ccdd488aab90eb57672de6155f2d5 02-May-2006 Nate Begeman <natebegeman@mac.com> Print function number instead of name


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28057 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
b0cc79d45b1e455b486f8ca5cc68546b7a865eb3 02-May-2006 Chris Lattner <sabre@nondot.org> Remove dead method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28055 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achineCodeEmitter.cpp
3a9cfbaf861076128be6acd27826a1176abf79b3 02-May-2006 Chris Lattner <sabre@nondot.org> Remove the debug machine code emitter. The "FilePrinterEmitter" is more
useful for debugging.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28051 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
cdf38c4edb892c356cfaa3c09c57728bc8d6bfd0 02-May-2006 Nate Begeman <natebegeman@mac.com> Extend printBasicBlockLabel a bit so that it can be used to print all
basic block labels, consolidating the code to do so in one place for each
target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28050 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
51b776d25915ca7fbfc14578ff479352a772da06 02-May-2006 Jeff Cohen <jeffc@jolt-lang.org> De-virtualize SwitchSection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28047 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
c6a057b04db506152c98355b51ba15d82a15b90a 02-May-2006 Jeff Cohen <jeffc@jolt-lang.org> De-virtualize EmitZeroes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28046 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
c884db47f1a1d5449b749e6528292451e49025e4 02-May-2006 Jeff Cohen <jeffc@jolt-lang.org> Make Intel syntax mode friendlier to Microsoft ML assembler (still needs more work).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28044 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
229924a79f9a3b33b767527b9d4249e1133ceeda 02-May-2006 Chris Lattner <sabre@nondot.org> Fix a latent bug that my spiller patch last week exposed: we were leaving
instructions in the virtregfolded map that were deleted. Because they
were deleted, newly allocated instructions could end up at the same address,
magically finding themselves in the map. The solution is to remove entries
from the map when we delete the instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28041 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
8a18c13fa5d226e60a875eff5ae66cefe4093bc9 01-May-2006 Chris Lattner <sabre@nondot.org> When promoting a load to a reg-reg copy, where the load was a previous
instruction folded with spill code, make sure the remove the load from
the virt reg folded map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28040 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
35f2705e3de4600c3621b883eed9b22e4607ddf4 01-May-2006 Chris Lattner <sabre@nondot.org> Remove previous patch, which wasn't quite right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28039 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
22608c2d1feeb649770f8cceab5ccdf949a24543 01-May-2006 Evan Cheng <evan.cheng@apple.com> Dis-favor stores more


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28035 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
f229a5d4beffae21e89481cb93c874ac5a149c2d 01-May-2006 Evan Cheng <evan.cheng@apple.com> Bottom up register-pressure reduction scheduler now pushes store operations
up the schedule. This helps code that looks like this:

loads ...
computations (first set) ...
stores (first set) ...
loads
computations (seccond set) ...
stores (seccond set) ...

Without this change, the stores and computations are more likely to
interleave:

loads ...
loads ...
computations (first set) ...
computations (second set) ...
computations (first set) ...
stores (first set) ...
computations (second set) ...
stores (stores set) ...

This can increase the number of spills if we are unlucky.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28033 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
3766d66b91c2cf850c79c6f0dbb5f20413edea71 01-May-2006 Evan Cheng <evan.cheng@apple.com> Didn't mean ScheduleDAGList.cpp to make the last checkin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28030 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
10dbd3ead83e64aae614181ee23965e10f341973 01-May-2006 Evan Cheng <evan.cheng@apple.com> Remove temp. option -spiller-check-liveout, it didn't cause any failure nor performance regressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28029 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
irtRegMap.cpp
c80c43eee09e151b3f2137e405004772f0ebc1a5 01-May-2006 Chris Lattner <sabre@nondot.org> Format #APP lines a bit nicer


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28026 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
200370fb5617a1719f0054804b412469ce486ebd 30-Apr-2006 Evan Cheng <evan.cheng@apple.com> Local spiller kills a store if the folded restore is turned into a copy.
But this is incorrect if the spilled value live range extends beyond the
current BB.
It is currently controlled by a temporary option -spiller-check-liveout.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28024 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
25c344a7589054bd3f6ad31c777a02fb4916c31f 29-Apr-2006 Chris Lattner <sabre@nondot.org> Remove a bogus transformation. This fixes SingleSource/UnitTests/2006-01-23-InitializedBitField.c
with some changes I have to the new CFE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28022 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
55d0fa1bfaec665c949b1069225bbc23ca7782bc 28-Apr-2006 Evan Cheng <evan.cheng@apple.com> Remove the temporary option: -no-isel-fold-inflight


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28012 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
020c41f21e8b6b01bc40db69e660c3c6e29b0978 28-Apr-2006 Evan Cheng <evan.cheng@apple.com> TargetLowering::LowerArguments should return a VBIT_CONVERT of
FORMAL_ARGUMENTS SDOperand in the return result vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28009 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ba1fc3daf757c8f880c3069eed20218c91f2c3a8 28-Apr-2006 Chris Lattner <sabre@nondot.org> Mapping of physregs can make it so that the designated and input physregs are
the same. In this case, don't emit a noop copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28008 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
552c4a849422ad91fa9988255ae35aebbf3acf7b 28-Apr-2006 Evan Cheng <evan.cheng@apple.com> Added a temporary option -no-isel-fold-inflight to control whether a "inflight"
node can be folded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28003 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
addc55af6c7f8b71eedd68d48f6a93ceecff2840 28-Apr-2006 Chris Lattner <sabre@nondot.org> When we have a two-address instruction where the input cannot be clobbered
and is already available, instead of falling back to emitting a load, fall
back to emitting a reg-reg copy. This generates significantly better code
for some SSE testcases, as SSE has lots of two-address instructions and
none of them are read/modify/write. As one example, this change does:

pshufd %XMM5, XMMWORD PTR [%ESP + 84], 255
xorps %XMM2, %XMM5
cmpltps %XMM1, %XMM0
- movaps XMMWORD PTR [%ESP + 52], %XMM0
- movapd %XMM6, XMMWORD PTR [%ESP + 52]
+ movaps %XMM6, %XMM0
cmpltps %XMM6, XMMWORD PTR [%ESP + 68]
movapd XMMWORD PTR [%ESP + 52], %XMM6
movaps %XMM6, %XMM0
cmpltps %XMM6, XMMWORD PTR [%ESP + 36]
cmpltps %XMM3, %XMM0
- movaps XMMWORD PTR [%ESP + 20], %XMM0
- movapd %XMM7, XMMWORD PTR [%ESP + 20]
+ movaps %XMM7, %XMM0
cmpltps %XMM7, XMMWORD PTR [%ESP + 4]
movapd XMMWORD PTR [%ESP + 20], %XMM7
cmpltps %XMM4, %XMM0

... which is far better than a store followed by a load!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28001 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
f7179bb56ea49e627cdc531ea73d7b6940e87372 27-Apr-2006 Evan Cheng <evan.cheng@apple.com> Insert a VBIT_CONVERT between a FORMAL_ARGUMENT node and its vector uses
(VAND, VADD, etc.). Legalizer will assert otherwise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27991 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a83385fb7bdb325921d091729d95e2e1f4d49cc1 27-Apr-2006 Chris Lattner <sabre@nondot.org> Fix Regression/CodeGen/Generic/2006-04-26-SetCCAnd.ll and
PR748.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27987 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3b0d286d0085fbf8314d9f5510c2f78558ab5dea 26-Apr-2006 Evan Cheng <evan.cheng@apple.com> Don't forget return void.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27974 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9453eea49bca1c3904047db495855c93e001d1cd 23-Apr-2006 Nate Begeman <natebegeman@mac.com> Fix the updating of the machine CFG when a PHI node was in a successor of
the jump table's range check block. This re-enables 100% dense jump tables
by default on PPC & x86


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3700a4d3a27ca8d39c73049020623cf4963d6c13 23-Apr-2006 Nate Begeman <natebegeman@mac.com> Code cleanup associated with jump tables, thanks to Chris for noticing
these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27950 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
05f9466cf0f4f47803af7283f7708cb25f4da889 23-Apr-2006 Nate Begeman <natebegeman@mac.com> Turn of jump tables for a bit, there are still some issues to work out with
updating the machine CFG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27949 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
37efe6764568a3829fee26aba532283131d1a104 22-Apr-2006 Nate Begeman <natebegeman@mac.com> JumpTable support! What this represents is working asm and jit support for
x86 and ppc for 100% dense switch statements when relocations are non-PIC.
This support will be extended and enhanced in the coming days to support
PIC, and less dense forms of jump tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27947 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
LFWriter.cpp
achineCodeEmitter.cpp
achineFunction.cpp
achineInstr.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
4a1cd9c61e3e648587d33d5f02ddad97e87f16aa 21-Apr-2006 Chris Lattner <sabre@nondot.org> The BFS scheduler is apparently nondeterminstic (causes many llvmgcc bootstrap
miscompares). Switch RISC targets to use the list-td scheduler, which isn't.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27933 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ef027f940cca409d9e923be3e30afa3f4f0af41a 21-Apr-2006 Chris Lattner <sabre@nondot.org> Fix a couple more memory issues


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27930 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fedced7bc3702f2db5c5d78531b7f58e0f6c9c50 21-Apr-2006 Chris Lattner <sabre@nondot.org> Fix a really subtle and obnoxious memory bug that caused issues with an
llvm-gcc4 boostrap. Whenever a node is deleted by the dag combiner, it
*must* be returned by the visit function, or the dag combiner will not
know that the node has been processed (and will, e.g., send it to the
target dag combine xforms).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1b87c42c82883e37099c777d08474f89834010dd 20-Apr-2006 Chris Lattner <sabre@nondot.org> This field no longer exists


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27899 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
02e5f8dcda4319e05fe49301ab72c386ed859e16 20-Apr-2006 Chris Lattner <sabre@nondot.org> Remove some of the obvious V9-specific cruft


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27893 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
44f1f09b4e08bf6f94269c1fe4363b99ef17af50 20-Apr-2006 Evan Cheng <evan.cheng@apple.com> Turn a VAND into a VECTOR_SHUFFLE is applicable.
DAG combiner can turn a VAND V, <-1, 0, -1, -1>, i.e. vector clear elements,
into a vector shuffle with a zero vector. It only does so when TLI tells it
the xform is profitable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27874 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
62b5772959741f1f1368e9a603d171caac1083f5 20-Apr-2006 Chris Lattner <sabre@nondot.org> Implement folding of a bunch of binops with undef


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27863 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
89a1b380a475cbe477e50ff4b94335596b37f21a 20-Apr-2006 Chris Lattner <sabre@nondot.org> Simplify some code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27846 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
80edfb3af5ed214c5cd7797b37cb3bb024e98cc6 18-Apr-2006 Chris Lattner <sabre@nondot.org> Fix handling of calls in functions that use vectors. This fixes a crash on
the code in GCC PR26546.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27780 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
48d7c069c76882475c23de153bda9483cd3c9bb4 17-Apr-2006 Chris Lattner <sabre@nondot.org> Add a MachineInstr::eraseFromParent convenience method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27775 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
8d5a894501b7546dee94df03118b90126c420820 17-Apr-2006 Chris Lattner <sabre@nondot.org> Codegen insertelement with constant insertion points as scalar_to_vector
and a shuffle. For this:

void %test2(<4 x float>* %F, float %f) {
%tmp = load <4 x float>* %F ; <<4 x float>> [#uses=2]
%tmp3 = add <4 x float> %tmp, %tmp ; <<4 x float>> [#uses=1]
%tmp2 = insertelement <4 x float> %tmp3, float %f, uint 2 ; <<4 x float>> [#uses=2]
%tmp6 = add <4 x float> %tmp2, %tmp2 ; <<4 x float>> [#uses=1]
store <4 x float> %tmp6, <4 x float>* %F
ret void
}

we now get this on X86 (which will get better):

_test2:
movl 4(%esp), %eax
movaps (%eax), %xmm0
addps %xmm0, %xmm0
movaps %xmm0, %xmm1
shufps $3, %xmm1, %xmm1
movaps %xmm0, %xmm2
shufps $1, %xmm2, %xmm2
unpcklps %xmm1, %xmm2
movss 8(%esp), %xmm1
unpcklps %xmm1, %xmm0
unpcklps %xmm2, %xmm0
addps %xmm0, %xmm0
movaps %xmm0, (%eax)
ret

instead of:

_test2:
subl $28, %esp
movl 32(%esp), %eax
movaps (%eax), %xmm0
addps %xmm0, %xmm0
movaps %xmm0, (%esp)
movss 36(%esp), %xmm0
movss %xmm0, 8(%esp)
movaps (%esp), %xmm0
addps %xmm0, %xmm0
movaps %xmm0, (%eax)
addl $28, %esp
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27765 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2efce0a589e2a688a1a06b5dc2ed0db32ae79924 16-Apr-2006 Chris Lattner <sabre@nondot.org> Add support for promoting stores from one legal type to another, allowing us
to write one pattern for vector stores instead of 4.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27730 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
547a16f27315a08527c41dc521c7cdf6ad9a0b6c 16-Apr-2006 Chris Lattner <sabre@nondot.org> Make these predicates return true for bit_convert(buildvector)'s as well as
buildvectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27723 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3824e50b1e931f15e47bdf9edeb324737f236fe6 14-Apr-2006 Chris Lattner <sabre@nondot.org> Make this assertion better


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27695 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
60d07eeffe80e8b7a3e1fad9420614b8438ba7e3 13-Apr-2006 Reid Spencer <rspencer@reidspencer.com> Expand some code with temporary variables to rid ourselves of the warning
about "dereferencing type-punned pointer will break strict-aliasing rules"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27671 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
cc9876124e7096d050e6750dd075758320f2cdce 12-Apr-2006 Evan Cheng <evan.cheng@apple.com> Promote vector AND, OR, and XOR


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
41f6cbbeb21d7d4376b8c0302b9766c3e43be5f2 12-Apr-2006 Evan Cheng <evan.cheng@apple.com> Vector type promotion for ISD::LOAD and ISD::SELECT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27606 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fdfded55888e35b76bb70231a5bb2f60877c2f6a 12-Apr-2006 Chris Lattner <sabre@nondot.org> Implement support for the formal_arguments node. To get this, targets shouldcustom legalize it and remove their XXXTargetLowering::LowerArguments overload


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
9d956250f547eb50c453edcb83b9d1783ee1558c 12-Apr-2006 Chris Lattner <sabre@nondot.org> Don't memoize vloads in the load map! Don't memoize them anywhere here, let
getNode do it. This fixes CodeGen/Generic/2006-04-11-vecload.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27602 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
98f8aeb45fc1e54437cbb8f2a7445c609deab832 11-Apr-2006 Evan Cheng <evan.cheng@apple.com> Only get Tmp2 for cases where number of operands is > 1. Fixed return void.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27586 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b49e52c7e2d828c45583f862c0f7e1a4a2649aca 11-Apr-2006 Chris Lattner <sabre@nondot.org> add some todos


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27580 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f87324e44de88da5b3d57d6aeda5bc9d30f86374 11-Apr-2006 Chris Lattner <sabre@nondot.org> Add basic support for legalizing returns of vectors


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27578 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1069fbdd2fc637321ca69f501b8af4f321aeb9f7 11-Apr-2006 Jim Laskey <jlaskey@mac.com> Use existing information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27574 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
db3c626eb9e85e9192dbee59ff0c4d143c37c94d 10-Apr-2006 Evan Cheng <evan.cheng@apple.com> Missing break


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b22e35a3c3bec07f5559c1476b3143e0d6d64269 09-Apr-2006 Chris Lattner <sabre@nondot.org> Add code generator support for VSELECT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27542 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
17614ea63db9189050b6ca0310f535d12bdedb81 08-Apr-2006 Chris Lattner <sabre@nondot.org> Canonicalize vvector_shuffle(x,x) -> vvector_shuffle(x,undef) to enable patterns
to match again :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27533 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
3e104b11168da4692b69cc6b236c1da22adff959 08-Apr-2006 Chris Lattner <sabre@nondot.org> Codegen shufflevector as VVECTOR_SHUFFLE


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27529 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGISel.cpp
4ddd283f6928fc337c1bf3277566d7b31526e8d9 08-Apr-2006 Chris Lattner <sabre@nondot.org> add a sanity check: LegalizeOp should return a value that is the same type
as its input.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27528 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f6bf87f2cc685d13d6a8fa37693425956b33a840 08-Apr-2006 Evan Cheng <evan.cheng@apple.com> INSERT_VECTOR_ELT lowering bug:
store vector to $esp
store element to $esp + sizeof(VT) * index
load vector from $esp
The bug is VT is the type of the vector element, not the type of the vector!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27517 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
67f13514984c71f80cedf32b698e585a68bcf3e0 08-Apr-2006 Chris Lattner <sabre@nondot.org> Stub out shufflevector


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27514 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f36e2d3415e91d51b0da2883ad57f663a34a1b97 08-Apr-2006 Jim Laskey <jlaskey@mac.com> Remove section change in function end, preventing override of function's real
section.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27503 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
6b92b8e50d7e5b48407865c3aaf9966c01416c69 07-Apr-2006 Jim Laskey <jlaskey@mac.com> Make sure that debug labels are defined within the same section and after the
entry point of a function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27494 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
4188699f80c233a20b6ddc61570a8a8c1804cb85 07-Apr-2006 Jim Laskey <jlaskey@mac.com> Foundation for call frame information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27491 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
rologEpilogInserter.cpp
c04766a22832bd044bf3e1c3740415165b9400d6 07-Apr-2006 Evan Cheng <evan.cheng@apple.com> 1. If both vector operands of a vector_shuffle are undef, turn it into an undef.
2. A shuffle mask element can also be an undef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27472 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2e2ef9535070bb352601482cceac1140c1158cdd 05-Apr-2006 Chris Lattner <sabre@nondot.org> Make a vector live across blocks have the correct Vec type. This fixes
CodeGen/X86/2006-04-04-CrossBlockCrash.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
18dd6d0a2aeb3b827391f46996a7b40c9b1f907a 05-Apr-2006 Evan Cheng <evan.cheng@apple.com> Exapnd a VECTOR_SHUFFLE to a BUILD_VECTOR if target asks for it to be expanded
or custom lowering fails.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27432 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e44be60ee91b65df8dcf13cca15563ab80b236c4 04-Apr-2006 Chris Lattner <sabre@nondot.org> Do not create ZEXTLOAD's unless we are before legalize or the operation is
legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27402 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4352cc9e217e4482ad53f5a7b92c3543f569eb6e 04-Apr-2006 Chris Lattner <sabre@nondot.org> * Add supprot for SCALAR_TO_VECTOR operations where the input needs to be
promoted/expanded (e.g. SCALAR_TO_VECTOR from i8/i16 on PPC).
* Add support for targets to request that VECTOR_SHUFFLE nodes be promoted
to a canonical type, for example, we only want v16i8 shuffles on PPC.
* Move isShuffleLegal out of TLI into Legalize.
* Teach isShuffleLegal to allow shuffles that need to be promoted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27399 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
08da55eeff8fdacd232e69c76bc5142eb4b1474e 04-Apr-2006 Chris Lattner <sabre@nondot.org> Constant fold bitconvert(undef)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27391 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4672f71ac4d056aa22d6b09838a3eb22a2e384e7 03-Apr-2006 Chris Lattner <sabre@nondot.org> The stack alignment is now computed dynamically, just verify it is correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27380 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
7dca8e2d732bdbf72034def4d6b9d3d6b99d4ba5 03-Apr-2006 Chris Lattner <sabre@nondot.org> Remove unused method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27379 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
97c2073270e59efd966e9fe1c9b6697cc863d680 03-Apr-2006 Chris Lattner <sabre@nondot.org> Add a missing check, this fixes UnitTests/Vector/sumarray.c


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27375 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a4c5d8c6b4e91b880fcd1b8b293f330e3aa198a3 03-Apr-2006 Chris Lattner <sabre@nondot.org> Add a missing check, which broke a bunch of vector tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27374 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cf4fb61f6c1daa3b4446ad0444b63770f3026d2d 03-Apr-2006 Andrew Lenharth <andrewl@lenharth.org> back this out


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27367 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
50a0d426e85b4e27766a99279d2e61f622525f94 02-Apr-2006 Andrew Lenharth <andrewl@lenharth.org> This should be a win of every arch


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1b5232a93767eac1424c67fb86580deef97e21e0 02-Apr-2006 Chris Lattner <sabre@nondot.org> relax assertion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27358 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
1482b5fc7affd691fbd8ece7808ddd4559ad20ae 02-Apr-2006 Chris Lattner <sabre@nondot.org> Allow targets to compute masked bits for intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
350bec0fb9680b849942052b25f838d8ad10c743 02-Apr-2006 Chris Lattner <sabre@nondot.org> Add a little dag combine to compile this:

int %AreSecondAndThirdElementsBothNegative(<4 x float>* %in) {
entry:
%tmp1 = load <4 x float>* %in ; <<4 x float>> [#uses=1]
%tmp = tail call int %llvm.ppc.altivec.vcmpgefp.p( int 1, <4 x float> < float 0x7FF8000000000000, float 0.000000e+00, float 0.000000e+00, float 0x7FF8000000000000 >, <4 x float> %tmp1 ) ; <int> [#uses=1]
%tmp = seteq int %tmp, 0 ; <bool> [#uses=1]
%tmp3 = cast bool %tmp to int ; <int> [#uses=1]
ret int %tmp3
}

into this:

_AreSecondAndThirdElementsBothNegative:
mfspr r2, 256
oris r4, r2, 49152
mtspr 256, r4
li r4, lo16(LCPI1_0)
lis r5, ha16(LCPI1_0)
lvx v0, 0, r3
lvx v1, r5, r4
vcmpgefp. v0, v1, v0
mfcr r3, 2
rlwinm r3, r3, 27, 31, 31
mtspr 256, r2
blr

instead of this:

_AreSecondAndThirdElementsBothNegative:
mfspr r2, 256
oris r4, r2, 49152
mtspr 256, r4
li r4, lo16(LCPI1_0)
lis r5, ha16(LCPI1_0)
lvx v0, 0, r3
lvx v1, r5, r4
vcmpgefp. v0, v1, v0
mfcr r3, 2
rlwinm r3, r3, 27, 31, 31
xori r3, r3, 1
cntlzw r3, r3
srwi r3, r3, 5
mtspr 256, r2
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4aab2f4ab50d2b04dc559c7b197f1de7612c896b 02-Apr-2006 Chris Lattner <sabre@nondot.org> Implement promotion for EXTRACT_VECTOR_ELT, allowing v16i8 multiplies to work with PowerPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bc70cf8be95f33f9aa30c8c3d0fd79e3fa636360 02-Apr-2006 Chris Lattner <sabre@nondot.org> Implement the Expand action for binary vector operations to break the binop
into elements and operate on each piece. This allows generic vector integer
multiplies to work on PPC, though the generated code is horrible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27347 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e58a780166eb684164a0a95b999f29328d4e9b2b 02-Apr-2006 Chris Lattner <sabre@nondot.org> Intrinsics that just load from memory can be treated like loads: they don't
have to serialize against each other. This allows us to schedule lvx's
across each other, for example.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27346 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
edab1b91336af19e815e780f2e28eb3d2013ddf4 02-Apr-2006 Chris Lattner <sabre@nondot.org> Constant fold all of the vector binops. This allows us to compile this:

"vector unsigned char mergeLowHigh = (vector unsigned char)
( 8, 9, 10, 11, 16, 17, 18, 19, 12, 13, 14, 15, 20, 21, 22, 23 );
vector unsigned char mergeHighLow = vec_xor( mergeLowHigh, vec_splat_u8(8));"

aka:

void %test2(<16 x sbyte>* %P) {
store <16 x sbyte> cast (<4 x int> xor (<4 x int> cast (<16 x ubyte> < ubyte 8, ubyte 9, ubyte 10, ubyte 11, ubyte 16, ubyte 17, ubyte 18, ubyte 19, ubyte 12, ubyte 13, ubyte 14, ubyte 15, ubyte 20, ubyte 21, ubyte 22, ubyte 23 > to <4 x int>), <4 x int> cast (<16 x sbyte> < sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8 > to <4 x int>)) to <16 x sbyte>), <16 x sbyte> * %P
ret void
}

into this:

_test2:
mfspr r2, 256
oris r4, r2, 32768
mtspr 256, r4
li r4, lo16(LCPI2_0)
lis r5, ha16(LCPI2_0)
lvx v0, r5, r4
stvx v0, 0, r3
mtspr 256, r2
blr

instead of this:

_test2:
mfspr r2, 256
oris r4, r2, 49152
mtspr 256, r4
li r4, lo16(LCPI2_0)
lis r5, ha16(LCPI2_0)
vspltisb v0, 8
lvx v1, r5, r4
vxor v0, v1, v0
stvx v0, 0, r3
mtspr 256, r2
blr

... which occurs here:
http://developer.apple.com/hardware/ve/calcspeed.html


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27343 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5e46a19ec848cd4fc9649bd5170c43d9e657668c 02-Apr-2006 Chris Lattner <sabre@nondot.org> Add a new -view-legalize-dags command line option


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27342 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
6258fb2592d97e1c8e58d4fadf6c47ddeb23b455 02-Apr-2006 Chris Lattner <sabre@nondot.org> Implement constant folding of bit_convert of arbitrary constant vbuild_vector nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27341 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5e08a1103950722c1faa999aabb04048342392b7 02-Apr-2006 Chris Lattner <sabre@nondot.org> These entries already exist


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27340 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
97d23335ad9a3a1e5b78b9feea49c57252ab53e9 02-Apr-2006 Chris Lattner <sabre@nondot.org> Add some missing node names


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27339 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f8814cf8b8ba8953add60078e304fd5a4113f9cc 02-Apr-2006 Chris Lattner <sabre@nondot.org> Prefer larger register classes over smaller ones when a register occurs in
multiple register classes. This fixes PowerPC/2006-04-01-FloatDoubleExtend.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27334 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f1d0c623c6d9ce3e5d1b30ba3e76e122adc6720e 01-Apr-2006 Chris Lattner <sabre@nondot.org> Delete identity shuffles, implementing CodeGen/Generic/vector-identity-shuffle.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27317 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c741ea424a290373b24b06b77f161d06f08f7fa7 31-Mar-2006 Chris Lattner <sabre@nondot.org> Do not endian swap split vector loads. This fixes UnitTests/Vector/sumarray-dbl on PPC.

Now all UnitTests/Vector/* tests pass on PPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27299 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d9731af75b38f30c02f19d6e81333b9c2599ad5f 31-Mar-2006 Chris Lattner <sabre@nondot.org> Do not endian swap the operands to a store if the operands came from a vector.

This fixes UnitTests/Vector/simple.c with altivec.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27298 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
29cd7db31097a1ae70a88d7f721a46f207363b46 31-Mar-2006 Chris Lattner <sabre@nondot.org> Remove dead *extloads. This allows us to codegen vector.ll:test_extract_elt
to:

test_extract_elt:
alloc r3 = ar.pfs,0,1,0,0
adds r8 = 12, r32
;;
ldfs f8 = [r8]
mov ar.pfs = r3
br.ret.sptk.many rp

instead of:

test_extract_elt:
alloc r3 = ar.pfs,0,1,0,0
adds r8 = 28, r32
adds r9 = 24, r32
adds r10 = 20, r32
adds r11 = 16, r32
;;
ldfs f6 = [r8]
;;
ldfs f6 = [r9]
adds r8 = 12, r32
adds r9 = 8, r32
adds r14 = 4, r32
;;
ldfs f6 = [r10]
;;
ldfs f6 = [r11]
ldfs f8 = [r8]
;;
ldfs f6 = [r9]
;;
ldfs f6 = [r14]
;;
ldfs f6 = [r32]
mov ar.pfs = r3
br.ret.sptk.many rp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27297 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e4b953939c2848cd71ab4aeaecaa150ba1ae7fd9 31-Mar-2006 Chris Lattner <sabre@nondot.org> Delete dead loads in the dag. This allows us to compile
vector.ll:test_extract_elt2 into:

_test_extract_elt2:
lfd f1, 32(r3)
blr

instead of:

_test_extract_elt2:
lfd f0, 56(r3)
lfd f0, 48(r3)
lfd f0, 40(r3)
lfd f1, 32(r3)
lfd f0, 24(r3)
lfd f0, 16(r3)
lfd f0, 8(r3)
lfd f0, 0(r3)
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27296 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1597221eace1c53ce5f84a7018397497d11a8393 31-Mar-2006 Chris Lattner <sabre@nondot.org> Implement PromoteOp for VEXTRACT_VECTOR_ELT. Thsi fixes
Generic/vector.ll:test_extract_elt on non-sse X86 systems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27294 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2ae2e98d4f83a02b5e576ec7a0da74d8aebb38cf 31-Mar-2006 Chris Lattner <sabre@nondot.org> Scalarized vector stores need not be legal, e.g. if the vector element type
needs to be promoted or expanded. Relegalize the scalar store once created.
This fixes CodeGen/Generic/vector.ll:test1 on non-SSE x86 targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27293 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7e02151ce2686687446ba7293e66d6b096106e68 31-Mar-2006 Chris Lattner <sabre@nondot.org> Make sure to pass enough values to phi nodes when we are dealing with
decimated vectors. This fixes UnitTests/Vector/sumarray-dbl.c


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27280 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
70c2a61e0a0fb0a7e8b9bddd26bdcc92762772f0 31-Mar-2006 Chris Lattner <sabre@nondot.org> Significantly improve handling of vectors that are live across basic blocks,
handling cases where the vector elements need promotion, expansion, and when
the vector type itself needs to be decimated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27278 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
a6c9de42938a26aa7edf50f4250cfd5cdca7737d 31-Mar-2006 Chris Lattner <sabre@nondot.org> Was returning the wrong type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27277 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
eb0b461cf4884bf2c98e463663a298e5c4ae9883 31-Mar-2006 Evan Cheng <evan.cheng@apple.com> Expand INSERT_VECTOR_ELT to store vec, sp; store elt, sp+k; vec = load sp;


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27274 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
79227e2906656b2c92965f5dbebcd66a5774c87f 31-Mar-2006 Chris Lattner <sabre@nondot.org> Modify the TargetLowering::getPackedTypeBreakdown method to also return the
unpromoted element type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
dc879296090a738c66968f5eec77db65d7e03623 31-Mar-2006 Chris Lattner <sabre@nondot.org> Implement TargetLowering::getPackedTypeBreakdown


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27270 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
2bbd81064a6998496a71ff7ae8160b3caada64fa 29-Mar-2006 Chris Lattner <sabre@nondot.org> Bug fixes: handle constantexpr insert/extract element operations
Handle constantpacked vectors with constantexpr elements.

This fixes CodeGen/Generic/vector-constantexpr.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27241 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cef896e50cf58e6b3dc3cd431693d78b8ebfa079 29-Mar-2006 Chris Lattner <sabre@nondot.org> When building a VVECTOR_SHUFFLE node from extract_element operations, make
sure to build it as SHUFFLE(X, undef, mask), not SHUFFLE(X, X, mask).

The later is not canonical form, and prevents the PPC splat pattern from
matching. For a particular splat, we go from generating this:

li r10, lo16(LCPI1_0)
lis r11, ha16(LCPI1_0)
lvx v3, r11, r10
vperm v3, v2, v2, v3

to generating:

vspltw v3, v2, 3


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27236 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
66445d3e0a3c6d02585a3c18ec295451a80d427c 29-Mar-2006 Chris Lattner <sabre@nondot.org> Canonicalize VECTOR_SHUFFLE(X, X, Y) -> VECTOR_SHUFFLE(X,undef,Y')


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27235 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d7648c89343c62e154a7d374485dc93a9dc49d54 28-Mar-2006 Chris Lattner <sabre@nondot.org> Turn a series of extract_element's feeding a build_vector into a
vector_shuffle node. For this:

void test(__m128 *res, __m128 *A, __m128 *B) {
*res = _mm_unpacklo_ps(*A, *B);
}

we now produce this code:

_test:
movl 8(%esp), %eax
movaps (%eax), %xmm0
movl 12(%esp), %eax
unpcklps (%eax), %xmm0
movl 4(%esp), %eax
movaps %xmm0, (%eax)
ret

instead of this:

_test:
subl $76, %esp
movl 88(%esp), %eax
movaps (%eax), %xmm0
movaps %xmm0, (%esp)
movaps %xmm0, 32(%esp)
movss 4(%esp), %xmm0
movss 32(%esp), %xmm1
unpcklps %xmm0, %xmm1
movl 84(%esp), %eax
movaps (%eax), %xmm0
movaps %xmm0, 16(%esp)
movaps %xmm0, 48(%esp)
movss 20(%esp), %xmm0
movss 48(%esp), %xmm2
unpcklps %xmm0, %xmm2
unpcklps %xmm1, %xmm2
movl 80(%esp), %eax
movaps %xmm2, (%eax)
addl $76, %esp
ret

GCC produces this (with -fomit-frame-pointer):

_test:
subl $12, %esp
movl 20(%esp), %eax
movaps (%eax), %xmm0
movl 24(%esp), %eax
unpcklps (%eax), %xmm0
movl 16(%esp), %eax
movaps %xmm0, (%eax)
addl $12, %esp
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27233 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5b2316e2b06e0fb6aea31d9d3eb61376b40c23a6 28-Mar-2006 Chris Lattner <sabre@nondot.org> Teach Legalize how to pack VVECTOR_SHUFFLE nodes into VECTOR_SHUFFLE nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27232 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
354cde9a7e7038ec0cb61a76f22baae289131ade 28-Mar-2006 Chris Lattner <sabre@nondot.org> new node


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27231 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4fbdd59f4ff40122ddf5a7adb40e1344da4f5f2b 28-Mar-2006 Chris Lattner <sabre@nondot.org> Don't crash on X^X if X is a vector. Instead, produce a vector of zeros.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27229 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f35b29765b2c1393aa479cd2d9c82d99c18d7430 28-Mar-2006 Chris Lattner <sabre@nondot.org> Add an assertion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b3e7be25be0b6fafae5b5301df40e09a7cae0ede 28-Mar-2006 Jim Laskey <jlaskey@mac.com> Refactor address attributes. Add base register to frame info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27226 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
bf7637d59028a5d9911769810f537c499e23bb8e 28-Mar-2006 Jim Laskey <jlaskey@mac.com> More bulletproofing of llvm.dbg.declare.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27224 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
aaa80ebd10c62a903537d386b0d3738b0595491f 28-Mar-2006 Jim Laskey <jlaskey@mac.com> More bulletproofing of DebugInfoDesc verify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27203 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
48b61a729df6576c8833a83893d4086bddff69a5 28-Mar-2006 Chris Lattner <sabre@nondot.org> Tblgen doesn't like multiple SDNode<> definitions that map to the sameenum value. Split them into separate enums.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27201 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
8c39020359e1b80277277382c63560f592619a2f 28-Mar-2006 Jim Laskey <jlaskey@mac.com> Reactivate llvm.dbg.declare.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27192 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
67995340fb223d91636c95ba35488c34d47b726a 27-Mar-2006 Chris Lattner <sabre@nondot.org> Disable dbg_declare, it currently breaks the CFE build


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27182 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
13fc2f1d270cdedffb72b33621369cee9a2cdaaa 27-Mar-2006 Chris Lattner <sabre@nondot.org> Fix legalization of intrinsics with chain and result values


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27181 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
401ec7f6a9fb339f752ec424efe13431a556cc6d 27-Mar-2006 Chris Lattner <sabre@nondot.org> Unbreak the build on non-apple compilers :-(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27173 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
23cc8708c316128088674675707e140658043f85 27-Mar-2006 Evan Cheng <evan.cheng@apple.com> Try again


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f48b50a7ef18044c8f05075e6432d072db069f5d 27-Mar-2006 Evan Cheng <evan.cheng@apple.com> Incorrect check for FP all one's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a8df166fbef047c90adba3c673162a1b1f6681c4 27-Mar-2006 Evan Cheng <evan.cheng@apple.com> Change isBuildVectorAllOnesInteger to isBuildVectorAllOnes. Also check for
floating point cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
70a248d284af550ae46c8dfc18ea2bbc15d31eb0 27-Mar-2006 Chris Lattner <sabre@nondot.org> Instead of printing "INTRINSIC" on intrinsic node, print the intrinsic name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a8299deab75b9675f46a2ba03ea8a1ba19ffe280 27-Mar-2006 Jim Laskey <jlaskey@mac.com> Pass llvm/test/Regression/CodeGen/Generic/debug-info.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27158 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
f15485a8d0dff5f720b7ad27346129ac5c3ec503 27-Mar-2006 Nate Begeman <natebegeman@mac.com> SelectionDAGISel can now natively handle Switch instructions, in the same
manner that the LowerSwitch LLVM to LLVM pass does: emitting a binary
search tree of basic blocks. The new approach has several advantages:
it is faster, it generates significantly smaller code in many cases, and
it paves the way for implementing dense switch tables as a jump table by
handling switches directly in the instruction selector.

This functionality is currently only enabled on x86, but should be safe for
every target. In anticipation of making it the default, the cfg is now
properly updated in the x86, ppc, and sparc select lowering code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27156 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fbcf23c3c12449c264f1448a2eee524be0b799f7 27-Mar-2006 Jim Laskey <jlaskey@mac.com> Bullet proof against undefined args produced by upgrading ols-style debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27155 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
98e0410f078185d54195d2594be3cb96e6e8ab5d 27-Mar-2006 Jim Laskey <jlaskey@mac.com> How to be dumb on $5/day. Need a tri-state to track valid debug descriptors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27154 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
4a147842eb24a7611fcd7bfb37c55185b4664927 26-Mar-2006 Evan Cheng <evan.cheng@apple.com> Add ISD::isBuildVectorAllZeros predicate


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27147 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
10d7fa62fffbceed580c34a00bd30f16643f6607 26-Mar-2006 Chris Lattner <sabre@nondot.org> Allow targets to custom lower their own intrinsics if desired.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27146 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c8e2c5561c65d048198c211baae9e5b961799767 26-Mar-2006 Chris Lattner <sabre@nondot.org> Add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27133 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
452e8354d58960289aae610fa265ee69431b6b83 25-Mar-2006 Chris Lattner <sabre@nondot.org> Fix a bug in ISD::isBuildVectorAllOnesInteger that caused it to always return
false


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27131 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
61d4399dfc7046595e30ad34a28c72a885cb8100 25-Mar-2006 Chris Lattner <sabre@nondot.org> Implement the ISD::isBuildVectorAllOnesInteger predicate


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27130 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6ea2dee6f675bd5eb32de08b4eecfe21ebe107a0 25-Mar-2006 Chris Lattner <sabre@nondot.org> Don't call SimplifyDemandedBits on vectors


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27128 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7255a545613f9e713779ca81f55711c0863d9cc9 24-Mar-2006 Chris Lattner <sabre@nondot.org> fix inverted conditional


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27089 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5b4939907edab7ca3d77b04bc1d436668af50b3b 24-Mar-2006 Jim Laskey <jlaskey@mac.com> Hack no more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27079 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
73d7b6029ac8b52a90f302d06831abcc04c77077 24-Mar-2006 Evan Cheng <evan.cheng@apple.com> Only to vector shuffle for {x,x,y,y} cases when SCALAR_TO_VECTOR is free.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27071 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0892cee81fa8c1ea6a0901b268fe9ad2b8fa733a 24-Mar-2006 Jim Laskey <jlaskey@mac.com> Rename for truth in advertising.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27063 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2eb8653157ccd318b357af74bfd517c76ef166b8 24-Mar-2006 Chris Lattner <sabre@nondot.org> prefer to generate constant pool loads over splats. This prevents us from
using a splat for {1.0,1.0,1.0,1.0}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27055 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
45053fc7fc2712d5ead1c087ce603637c99cad93 24-Mar-2006 Chris Lattner <sabre@nondot.org> fix spello


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27053 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
d1f04d40a078d6ca7c876b16a178992a109af774 24-Mar-2006 Chris Lattner <sabre@nondot.org> legalize vbit_convert nodes whose result is a legal type.
Legalize intrinsic nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27036 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0eade319cdb72e24c11d068728a98083737c6435 24-Mar-2006 Chris Lattner <sabre@nondot.org> Lower target intrinsics into an INTRINSIC node


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27035 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e8a30fdf519a7db1c5e157aa29d72839cfc16174 24-Mar-2006 Chris Lattner <sabre@nondot.org> fix some bogus assertions: noop bitconverts are legal


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27032 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
033e6816668da71ff0866a61f5c0a7e7e795d069 24-Mar-2006 Evan Cheng <evan.cheng@apple.com> Lower BUILD_VECTOR to VECTOR_SHUFFLE if there are two distinct nodes (and if
the target can handle it). Issue two SCALAR_TO_VECTOR ops followed by a
VECTOR_SHUFFLE to select from the two vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27023 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3e8f3ce8f6d7fb7bee4cf7ac27bea2e90f83b25d 24-Mar-2006 Chris Lattner <sabre@nondot.org> Identify the INTRINSIC node


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27020 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
677274b1cb511613df087adaebfdb0817c7beb49 24-Mar-2006 Evan Cheng <evan.cheng@apple.com> Typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27008 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7e0911585ec2996837f151baab3d3fc9145a7e02 24-Mar-2006 Jim Laskey <jlaskey@mac.com> Unneeded forward.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27004 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
90c79d73ac071978f01eb48ea3f7e1cea79a730d 24-Mar-2006 Jim Laskey <jlaskey@mac.com> Make sure types are allocated in the scope of their use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27002 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
7692eb4201e2071fb2afddcdaa6ba93b5e6abad4 23-Mar-2006 Chris Lattner <sabre@nondot.org> add support for splitting casts. This implements
CodeGen/Generic/vector.ll:test_cast_2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26999 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b8509c5752d58280178f611e0c3f8b89ed076598 23-Mar-2006 Jim Laskey <jlaskey@mac.com> Generate local variable and scope information and equivalent dwarf forms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26989 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
43970fec322d9e0153ca513de41d80af1c79bdde 23-Mar-2006 Jim Laskey <jlaskey@mac.com> Handle new forms of llvm.dbg intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26988 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
408c428096df3a3970a8387f9dd258ae948663a6 23-Mar-2006 Chris Lattner <sabre@nondot.org> simplify some code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26972 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7e358908b885f50fb9258b7d10509bad20ca4c3b 22-Mar-2006 Chris Lattner <sabre@nondot.org> Fix a typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26965 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e25ca692c0478af5e15170fce23cea2a5b5fd0b9 22-Mar-2006 Chris Lattner <sabre@nondot.org> Implement simple support for vector casting. This can currently only handle
casts between legal vector types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26961 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
841c882f5dae8c953ea99b5824108313549cfaf8 22-Mar-2006 Chris Lattner <sabre@nondot.org> Endianness does not affect the order of vector fields. This fixes
SingleSource/UnitTests/Vector/build.c


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26936 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3b9fa89fcaf3eb08397c4c68b60c72fc73f8ab44 22-Mar-2006 Chris Lattner <sabre@nondot.org> Enclose some variables in a scope to avoid error with some gcc versions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e35c218f3e8e15f96cb44c5fbc70c7ea20d6c962 21-Mar-2006 Chris Lattner <sabre@nondot.org> add expand support for extractelement


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26931 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
384504cea6c392125a2318d8bbb7f25aa0bbff7e 21-Mar-2006 Chris Lattner <sabre@nondot.org> add some trivial support for extractelement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26928 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
1c6191ffe764f3294cc2dda2bb3703403a416414 21-Mar-2006 Chris Lattner <sabre@nondot.org> Add a hacky workaround for crashes due to vectors live across blocks.
Note that this code won't work for vectors that aren't legal on the
target. Improvements coming.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26925 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
87100e0b83b808757bf44dabecd1d1048255d1ad 20-Mar-2006 Chris Lattner <sabre@nondot.org> If a target supports splatting with SHUFFLE_VECTOR, lower to it from BUILD_VECTOR(x,x,x,x)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26885 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
54a30b9639d81abb91022963054e6d17ea21e9ca 20-Mar-2006 Chris Lattner <sabre@nondot.org> TargetData doesn't know the alignment of vectors :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26884 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
fb194b9e738ab2730ea0a3189f091737aba31c5b 20-Mar-2006 Chris Lattner <sabre@nondot.org> Add very basic support for VECTOR_SHUFFLE


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4d3abee6183f110c9db56b94b0a4b5f8c985002a 19-Mar-2006 Chris Lattner <sabre@nondot.org> Allow SCALAR_TO_VECTOR to be custom lowered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26867 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ce87215131efcc68dcf7fca61055ad783a7aeb0e 19-Mar-2006 Chris Lattner <sabre@nondot.org> Add SCALAR_TO_VECTOR support


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
74881908fec5de98175d41d6fa065971736b2119 19-Mar-2006 Chris Lattner <sabre@nondot.org> Don't bother storing undef elements of BUILD_VECTOR's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26858 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5fcd0350be08acc2f0415941c1e2101f5a399622 19-Mar-2006 Chris Lattner <sabre@nondot.org> Implement expand of BUILD_VECTOR containing variable elements.
This implements CodeGen/Generic/vector.ll:test_variable_buildvector


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26852 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ca2424423416032dc95dae4c106a5cf99795e589 19-Mar-2006 Chris Lattner <sabre@nondot.org> fold insertelement(buildvector) -> buildvector if the inserted element # is
a constant. This implements test_constant_insert in CodeGen/Generic/vector.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26851 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2332b9f16fe17d1886566729b2241b8cd90f9916 19-Mar-2006 Chris Lattner <sabre@nondot.org> implement basic support for INSERT_VECTOR_ELT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26849 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
b2827b0901162169bb2692b77a839c9767849134 19-Mar-2006 Chris Lattner <sabre@nondot.org> Rename ConstantVec -> BUILD_VECTOR and VConstant -> VBUILD_VECTOR. Allow*BUILD_VECTOR to take variable inputs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26847 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
23d564c11fbe628dbebd6d8f09d7d07fa862b719 19-Mar-2006 Chris Lattner <sabre@nondot.org> implement vector.ll:test_undef


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26845 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
4794a6b6a09e3440438cd653ec09cf0c2e45be1c 19-Mar-2006 Chris Lattner <sabre@nondot.org> Fix the remaining bugs in the vector expansion rework I commited yesterday.
This fixes CodeGen/Generic/vector.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c7029805ef35ce9805931067b841e6af11db382e 18-Mar-2006 Chris Lattner <sabre@nondot.org> Change the structure of lowering vector stuff. Note: This breaks some
things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26840 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
0c486bdc221768f229e97ad15f5d160288817e96 17-Mar-2006 Chris Lattner <sabre@nondot.org> add a couple enum values


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26830 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
81e8097377529dc3b666f33bb525c49cfbac3f51 17-Mar-2006 Nate Begeman <natebegeman@mac.com> Remove BRTWOWAY*
Make the PPC backend not dependent on BRTWOWAY_CC and make the branch
selector smarter about the code it generates, fixing a case in the
readme.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26814 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
6cb7004c3499f07c034a01f6335b5058aa80a5ce 17-Mar-2006 Chris Lattner <sabre@nondot.org> Fix a problem fully scalarizing values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26811 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
199862b74973198c2ab5a139f664c86713e7b579 16-Mar-2006 Chris Lattner <sabre@nondot.org> Add support for CopyFromReg from vector values. Note: this doesn't support
illegal vector types yet!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26799 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3c38449be6371d53a58d0df80ecf3772a2f9a79f 16-Mar-2006 Chris Lattner <sabre@nondot.org> Teach CreateRegForValue how to handle vector types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26798 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3a59358499f527ad9a8d1d4ed7d80b6bf0f1c12d 16-Mar-2006 Chris Lattner <sabre@nondot.org> set TransformToType correctly for vector types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26797 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
28b5b1c7b54c2065882b98af2406c38a3bcee802 15-Mar-2006 Chris Lattner <sabre@nondot.org> add support for vector->vector casts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26788 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
06ac6ab938cf54596202de851da4b20aa61fe64e 15-Mar-2006 Chris Lattner <sabre@nondot.org> Add a note, this code should be moved to the dag combiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26787 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9d0ff8e6f9077dd7fe4836c7f06524eb12cd3a7e 15-Mar-2006 Jim Laskey <jlaskey@mac.com> Expand subprogram and added block descriptor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26782 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
2140798cc4fe05fdaf04082abf6a3b03b2a005ab 14-Mar-2006 Jim Laskey <jlaskey@mac.com> 1. Use null for serialized empty strings.
2. Allow for user defined debug descriptors.
3. Allow for user augmented fields on debug descriptors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26760 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
30b37b5f29991874648d839d018aa2921b39355f 14-Mar-2006 Evan Cheng <evan.cheng@apple.com> Add LSR hooks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26740 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
ac0f8f29290ff018d51ce58bd11be13ab148e698 13-Mar-2006 Chris Lattner <sabre@nondot.org> make sure dead token factor nodes are removed by the dag combiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26731 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f4321a3a438833dade457e24da6e1e6907cabcd5 13-Mar-2006 Jim Laskey <jlaskey@mac.com> Handle the removal of the debug chain.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26729 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
947c28935d179f486c8137323361923ba4f23886 13-Mar-2006 Chris Lattner <sabre@nondot.org> Fold X+Y -> X|Y when safe. This implements:
Regression/CodeGen/PowerPC/and_add.ll

a case that occurs with dynamic allocas of constant size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b6b17ffbc61025c6b3233787ccce2e6335d60b49 13-Mar-2006 Chris Lattner <sabre@nondot.org> I can't convince myself that this is safe, remove the recursive call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26725 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
79dbea5ab4c73243a4f6a09fa1637a618263493e 13-Mar-2006 Chris Lattner <sabre@nondot.org> add a couple of missing folds


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26724 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8f4191d61978529e9e9d7ddc24dbcd528ef7dd4c 13-Mar-2006 Chris Lattner <sabre@nondot.org> For targets with FABS/FNEG support, lower copysign to an integer load,
a select and FABS/FNEG.

This speeds up a trivial (aka stupid) copysign benchmark I wrote from 6.73s
to 2.64s, woo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26723 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fc3549ee8ccf15ab3fad8ec18a299eef0aa53b41 12-Mar-2006 Chris Lattner <sabre@nondot.org> Don't advance the hazard recognizer when there are no hazards and no instructions
to be emitted.

Don't add one to the latency of a completed instruction if the latency of the
op is 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26718 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
b2215030d6a6c3096ed5da8fde43c4eed7165768 12-Mar-2006 Chris Lattner <sabre@nondot.org> Chain operands aren't real uses: they don't require the full latency of the
predecessor to finish before they can start.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26717 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
53fbf2a8e810bbdf5ad5d7808fabe9ae4f3497e2 12-Mar-2006 Chris Lattner <sabre@nondot.org> As a pending queue data structure to keep track of instructions whose
operands have all issued, but whose results are not yet available. This
allows us to compile:

int G;
int test(int A, int B, int* P) {
return (G+A)*(B+1);
}

to:

_test:
lis r2, ha16(L_G$non_lazy_ptr)
addi r4, r4, 1
lwz r2, lo16(L_G$non_lazy_ptr)(r2)
lwz r2, 0(r2)
add r2, r2, r3
mullw r3, r2, r4
blr

instead of this, which has a stall between the lis/lwz:

_test:
lis r2, ha16(L_G$non_lazy_ptr)
lwz r2, lo16(L_G$non_lazy_ptr)(r2)
addi r4, r4, 1
lwz r2, 0(r2)
add r2, r2, r3
mullw r3, r2, r4
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26716 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
84690316227247b9375a797184ca2cbea55e9f62 11-Mar-2006 Chris Lattner <sabre@nondot.org> rename priorityqueue -> availablequeue. When a node is scheduled, remember
which cycle it lands on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26714 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
c1c078c170b45459f7fb914079cd7aff14878f17 11-Mar-2006 Chris Lattner <sabre@nondot.org> Make CurrCycle a local var instead of an instance var


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26713 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
7d82b000488fbb2cd7abae073770c94d8ed2fbc2 11-Mar-2006 Chris Lattner <sabre@nondot.org> Move some methods around so that BU specific code is together, TD specific code
is together, and direction independent code is together.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
309cf8a7132bf6dcd00135a49fef4258bbd1a903 11-Mar-2006 Chris Lattner <sabre@nondot.org> merge preds/chainpreds -> preds set
merge succs/chainsuccs -> succs set

This has no functionality change, simplifies the code, and reduces the size
of sunits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26711 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
0937103368992af8d3d8032d31a7d152aeae32d5 11-Mar-2006 Evan Cheng <evan.cheng@apple.com> Added a parameter to control whether Constant::getStringValue() would chop
off the result string at the first null terminator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26704 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7d74d1145fd17cdc11113755cee2a21f3cb0b7cf 10-Mar-2006 Chris Lattner <sabre@nondot.org> scrape out bits of llvm-db


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a34b6f8713cd065306b07aafb1c978c30bc64947 10-Mar-2006 Chris Lattner <sabre@nondot.org> Move simple-selector-specific types to the simple selector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26693 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
20a4921791eafc0cce00fb01dcacfcfc15a0d0fc 10-Mar-2006 Chris Lattner <sabre@nondot.org> Simplify the interface to the schedulers, to not pass the selected heuristicin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAGISel.cpp
2f5806c2b37a4e59cb12a6d49f0e3423c2082a64 10-Mar-2006 Chris Lattner <sabre@nondot.org> Move some simple-sched-specific instance vars to the simple scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26690 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGSimple.cpp
1e433c59e0e123743bc08ba9518fa3c9792dc419 10-Mar-2006 Chris Lattner <sabre@nondot.org> prune #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26689 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
e76074ab89136d9ffd4520949f580c6114402512 10-Mar-2006 Chris Lattner <sabre@nondot.org> move some simple scheduler methods into the simple scheduler


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26688 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGSimple.cpp
8c7ef0599c3d5b0beea9c16ac1e4ac6755d34de2 10-Mar-2006 Chris Lattner <sabre@nondot.org> Make EmitNode take a SDNode instead of a NodeInfo*


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26687 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
df3750642a90e2865145104157f9f12b46ce5e24 10-Mar-2006 Chris Lattner <sabre@nondot.org> Move the VRBase field from NodeInfo to being a separate, explicit, map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26686 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
8d41651da73e2458f6eff9926a3de0a7932653e4 10-Mar-2006 Chris Lattner <sabre@nondot.org> no need to build groups anymore


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26684 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
b2042e31a7cc58a454889593a39bce42de09fd62 10-Mar-2006 Chris Lattner <sabre@nondot.org> Create SUnits directly from the SelectionDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26683 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
be24e5996c9cb06c6af5d9c86d1181b62a3a8393 10-Mar-2006 Chris Lattner <sabre@nondot.org> Push PrepareNodeInfo/IdentifyGroups down the inheritance hierarchy


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26682 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/ScheduleDAGSimple.cpp
da4ff69153c7562a71a1990929adc0faa8d0996d 10-Mar-2006 Chris Lattner <sabre@nondot.org> Teach the latency scheduler some new tricks. In particular, to break ties,
keep track of a sense of "mobility", i.e. how many other nodes scheduling one
node will free up. For something like this:

float testadd(float *X, float *Y, float *Z, float *W, float *V) {
return (*X+*Y)*(*Z+*W)+*V;
}

For example, this makes us schedule *X then *Y, not *X then *Z. The former
allows us to issue the add, the later only lets us issue other loads.

This turns the above code from this:

_testadd:
lfs f0, 0(r3)
lfs f1, 0(r6)
lfs f2, 0(r4)
lfs f3, 0(r5)
fadds f0, f0, f2
fadds f1, f3, f1
lfs f2, 0(r7)
fmadds f1, f0, f1, f2
blr

into this:

_testadd:
lfs f0, 0(r6)
lfs f1, 0(r5)
fadds f0, f1, f0
lfs f1, 0(r4)
lfs f2, 0(r3)
fadds f1, f2, f1
lfs f2, 0(r7)
fmadds f1, f1, f0, f2
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26680 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
f83a47d905f4c6a4d1099bc5e1963c84af5300ee 10-Mar-2006 Chris Lattner <sabre@nondot.org> add an aggregate method for reinserting scheduled nodes, add a callback for
priority impls that want to be notified when a node is scheduled


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26678 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
9630d271c524fac27301ac205b16f90eae461721 10-Mar-2006 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ build breakage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26676 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
59bcce5ae52afff2ba4840bfa630b20e8ff4ddb2 09-Mar-2006 Chris Lattner <sabre@nondot.org> remove dbg_declare, it's not used yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26659 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
2695de410d1d055ecc1b6eb6fea965f06598ad00 09-Mar-2006 Chris Lattner <sabre@nondot.org> back out my previous hack


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26650 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
8c84f3f0dfae7975e93fb5465c41c8a41bd70aa6 09-Mar-2006 Chris Lattner <sabre@nondot.org> remove temporary option


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26646 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
8bf586f3056df3bbbd40d324a207736e00bb70c8 09-Mar-2006 Chris Lattner <sabre@nondot.org> temporary hack to get the build working again, apparently a header
commit was forgotten


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26642 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
54689c2beeac17793ba9cdbc1fc0d4e679390b7b 09-Mar-2006 Jim Laskey <jlaskey@mac.com> Move bit field endianness to backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26639 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
571340633f1d4941a606a4049c1d7d982002f754 09-Mar-2006 Chris Lattner <sabre@nondot.org> yes yes, enabled debug output is bad


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26637 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
6a4b70bbcfa0ebdc36420de4d16b62cb62f76ef7 09-Mar-2006 Chris Lattner <sabre@nondot.org> switch the t-d scheduler to use a really dumb and trivial critical path
latency priority function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
477ef6d8cb987e90a177b39ae0207139059de5c3 09-Mar-2006 Chris Lattner <sabre@nondot.org> Pull latency information for target instructions out of the latency tables. :)
Only enable this with -use-sched-latencies, I'll enable it by default with a
clean nightly tester run tonight.

PPC is the only target that provides latency info currently.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
e70f671b97a59cb0851131b398384f7ba88bf7c7 09-Mar-2006 Chris Lattner <sabre@nondot.org> don't copy all itinerary data


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26633 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
0324ba8f02f4193659c1ff35d8de3cc7e14f604e 09-Mar-2006 Chris Lattner <sabre@nondot.org> PriorityQueue is an instance var, use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
e87c5c8088d2f267469917ca69c0f6dc324a5249 09-Mar-2006 Chris Lattner <sabre@nondot.org> add some comments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26631 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
e32178dd32ebe28034528bbc47c4d253cadb6faf 09-Mar-2006 Chris Lattner <sabre@nondot.org> Refactor the priority mechanism one step further: now that it is a separate
class, sever its implementation from the interface. Now we can provide new
implementations of the same interface (priority computation) without touching
the scheduler itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
21b6c9d6477c8df3f884c3f1ebeaaa44dd53aafe 08-Mar-2006 Jim Laskey <jlaskey@mac.com> Get rid of the multiple copies of getStringValue. Now a Constant:: method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26616 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
electionDAG/SelectionDAGISel.cpp
49eee4a26f17b27d8949be3b6da7d9e75846be00 08-Mar-2006 Chris Lattner <sabre@nondot.org> Split the priority function computation and priority queue management out
of the ScheduleDAGList class into a new SchedulingPriorityQueue class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26613 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
c45a59bb327a1c8b908f43a1112a0118b659495b 08-Mar-2006 Chris Lattner <sabre@nondot.org> switch from an explicitly managed list of SUnits to a simple vector of sunits


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26612 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
6a67b3a4e636bccb25c5003972424d4545efa279 08-Mar-2006 Chris Lattner <sabre@nondot.org> Shrinkify some fields, fit to 80 columns


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26611 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
6b24af87e6af1d2e8beb644554e06fcb5d620182 08-Mar-2006 Chris Lattner <sabre@nondot.org> revert the previous patch, didn't mean to check it in yet


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5874f82564d6cd9da086cc705e1c5c8ec8ff8361 08-Mar-2006 Chris Lattner <sabre@nondot.org> remove "Slot", it is dead


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26609 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAGList.cpp
b0d21ef20c29f4ea46d21b488f17feaa6a8760e1 08-Mar-2006 Chris Lattner <sabre@nondot.org> Change the interface for getting a target HazardRecognizer to be more clean.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26608 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
electionDAG/SelectionDAGISel.cpp
2b0e309640c638025d83c8f6f4ee2698ba1b8b92 08-Mar-2006 Jim Laskey <jlaskey@mac.com> libstdc++-v3 was failing to build. Needed to handle composite types with empty
members (running into a zero initializer.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26607 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
7809811e4ed3c2462efa327cef0464b9844baea2 07-Mar-2006 Jim Laskey <jlaskey@mac.com> Use "llvm.metadata" section for debug globals. Filter out these globals in the
asm printer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26599 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achineDebugInfo.cpp
e8c3e3b51c21dad94f0b427d7e0d6722e663fc64 07-Mar-2006 Jim Laskey <jlaskey@mac.com> Switch to using a numeric id for anchors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26598 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
20c3ed8166d3eb436ac4edc33b33b4538ff75073 07-Mar-2006 Jim Laskey <jlaskey@mac.com> Bitfield support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26593 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
b2d635803db0e82ce6f6692af6fac4880e029fac 07-Mar-2006 Chris Lattner <sabre@nondot.org> Fix some formatting, when looking for hazards, prefer target nodes over
things like copyfromreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26586 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
6af7ef8da874635f5f060ad19afb19811452b447 06-Mar-2006 Chris Lattner <sabre@nondot.org> update file comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26573 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
adc5e5c85fdf188166690084675a971aa5e9f188 06-Mar-2006 Evan Cheng <evan.cheng@apple.com> Remove some code that doesn't make sense


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26572 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
6b36ce920254dc8ca5c60baec1a23e271e7a34ce 06-Mar-2006 Evan Cheng <evan.cheng@apple.com> Remove SUnit::Priority1: it is re-calculated on demand as number of live
range to be generated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26570 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
03fc53c174e654adae4e42a0c352c7937de2cd87 06-Mar-2006 Chris Lattner <sabre@nondot.org> Hoist the HazardRecognizer out of the ScheduleDAGList.cpp file to where
targets can implement them. Make the top-down scheduler non-g5-specific.

Remove the old testing hazard recognizer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26569 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
electionDAG/SelectionDAGISel.cpp
67727308fa1fbcc5090e1da657bd2bb93c6d0858 06-Mar-2006 Chris Lattner <sabre@nondot.org> Comment fixes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26567 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
3c232c83be461b741c40fb25b932a1f60256a462 06-Mar-2006 Chris Lattner <sabre@nondot.org> Don't depend on the C99 copysign function, implement it ourselves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26566 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a93dfcd40a0750455d093903a9b65627c4e58a8e 06-Mar-2006 Chris Lattner <sabre@nondot.org> When a hazard recognizer needs noops to be inserted, do so. This represents
noops as null pointers in the instruction sequence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26564 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGList.cpp
6cc3f0a77427b66378f5a57aff2cd4310b91a670 06-Mar-2006 Chris Lattner <sabre@nondot.org> Implement G5HazardRecognizer as a trivial thing that wants 5 cycles between
copyfromreg nodes. Clearly useful!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
ad0f78ace25ebc5a9597c189b0a797331f350fea 05-Mar-2006 Chris Lattner <sabre@nondot.org> Add basic hazard recognizer support. noop insertion isn't complete yet though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26558 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
3d68e15c20fd91183e352b906395fbc98c27d7af 05-Mar-2006 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ compilation error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26554 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a5de484bc7c8f896b5903999797c4d57f4e45185 05-Mar-2006 Chris Lattner <sabre@nondot.org> Split the list scheduler into top-down and bottom-up pieces. The priority
function of the top-down scheduler are completely bogus currently, and
having (future) PPC specific in this file is also wrong, but this is a
small incremental step.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26552 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
electionDAG/SelectionDAGISel.cpp
41f5ea06659026f149915009217f7caeb463cc53 05-Mar-2006 Chris Lattner <sabre@nondot.org> Move the available queue to being inside the ListSchedule method, since it
bounds its lifetime.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26550 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
cac7059d0f8e6e1be5d4001eb942e23780af2300 05-Mar-2006 Chris Lattner <sabre@nondot.org> Reinstate this now that the offending opposite xform has been removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c1d9f1de41b26769752224829987a6aa06fe4b87 05-Mar-2006 Chris Lattner <sabre@nondot.org> Do not fold (add (shl x, c1), (shl c2, c1)) -> (shl (add x, c2), c1),
we want to canonicalize the other way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26547 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
52676510577a5fdab082eb0c065ae151903d9dcf 05-Mar-2006 Chris Lattner <sabre@nondot.org> print arbitrary constant pool entries


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
9176b0169c8650fa6fb1d0464256d7c3e8ecf115 05-Mar-2006 Evan Cheng <evan.cheng@apple.com> Back out fold (shl (add x, c1), c2) -> (add (shl x, c2), c1<<c2) for now.
It's causing an infinite loop compiling ldecod on x86 / Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26544 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
12d830346b78b8e92dc0346e710f261cc680480f 05-Mar-2006 Chris Lattner <sabre@nondot.org> Add some simple copysign folds


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26543 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
a09f848c11c9db3c2614e0275a3256310ac26653 05-Mar-2006 Chris Lattner <sabre@nondot.org> Codegen copysign[f] into a FCOPYSIGN node


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26542 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
a1deca3cd62963c1f5a7c48e7e5e67fec9beadaa 05-Mar-2006 Chris Lattner <sabre@nondot.org> fold (mul (add x, c1), c2) -> (add (mul x, c2), c1*c2)
fold (shl (add x, c1), c2) -> (add (shl x, c2), c1<<c2)

This allows us to compile CodeGen/PowerPC/addi-reassoc.ll into:

_test1:
slwi r2, r4, 4
add r2, r2, r3
lwz r3, 36(r2)
blr
_test2:
mulli r2, r4, 5
add r2, r2, r3
lbz r2, 11(r2)
extsb r3, r2
blr

instead of:

_test1:
addi r2, r4, 2
slwi r2, r2, 4
add r2, r3, r2
lwz r3, 4(r2)
blr
_test2:
addi r2, r4, 2
mulli r2, r2, 5
add r2, r3, r2
lbz r2, 1(r2)
extsb r3, r2
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26535 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b80af6f572394dda2ea4620da963878f403c2c59 03-Mar-2006 Jim Laskey <jlaskey@mac.com> Added support for dwarf block data entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26509 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
f01e54770033fe6dde528eea655d91e279b43d21 03-Mar-2006 Jim Laskey <jlaskey@mac.com> Adding basic structure support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26505 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
3e1ce5a44d3d59b2b9ca68a21261f0f487d69269 03-Mar-2006 Evan Cheng <evan.cheng@apple.com> Add more vector NodeTypes: VSDIV, VUDIV, VAND, VOR, and VXOR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26504 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
33143dce15c0dc4155ff4cf2e375a9a59c8a5d61 03-Mar-2006 Evan Cheng <evan.cheng@apple.com> Number of NodeTypes now exceeds 128.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26503 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
bfa284f69752c54f81bffc2b0d15d5c1e618a659 03-Mar-2006 Evan Cheng <evan.cheng@apple.com> SDOperand::isOperand should not be a forwarding. It must check *this against N's operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26502 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
80d8eaae05d9bcb25abf6c6f0385ec2554355f26 03-Mar-2006 Evan Cheng <evan.cheng@apple.com> Added isOperand(N): true if this is an operand of N


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26501 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
fb43331226ae41cac862972c52a05f6c05dfcf19 03-Mar-2006 Evan Cheng <evan.cheng@apple.com> A bit more tweaking


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26500 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
d84525480ae75e783b2a4d9a9480f1ec11222ce3 03-Mar-2006 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ compilation errors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26498 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
932f022b826c7b0b821c6a5369e18e4ebdceeb4c 03-Mar-2006 Evan Cheng <evan.cheng@apple.com> Move #include "llvm/CodeGen/AsmPrinter.h" to top since it's the interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26493 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
41edaa0529997e41a2bd64efd5f3e8027c67d99f 03-Mar-2006 Chris Lattner <sabre@nondot.org> remove the read/write port/io intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26479 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
03dd4652158f8a4c1db65f066195342d4a3695a7 03-Mar-2006 Chris Lattner <sabre@nondot.org> Split memcpy/memset/memmove intrinsics into i32/i64 versions, resolving
PR709, and paving the way for future progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26476 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
86ec7d1d073dae5b75ad5749f65fc54c141180f5 02-Mar-2006 Evan Cheng <evan.cheng@apple.com> - Fixed some priority calculation bugs that were causing bug 478. Among them:
a predecessor appearing more than once in the operand list was counted as
multiple predecessor; priority1 should be updated during scheduling;
CycleBound was updated after the node is inserted into priority queue; one
of the tie breaking condition was flipped.
- Take into consideration of two address opcodes. If a predecessor is a def&use
operand, it should have a higher priority.
- Scheduler should also favor floaters, i.e. nodes that do not have real
predecessors such as MOV32ri.
- The scheduling fixes / tweaks fixed bug 478:
.text
.align 4
.globl _f
_f:
movl 4(%esp), %eax
movl 8(%esp), %ecx
movl %eax, %edx
imull %ecx, %edx
imull %eax, %eax
imull %ecx, %ecx
addl %eax, %ecx
leal (%ecx,%edx,2), %eax
ret

It is also a slight performance win (1% - 3%) for most tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26470 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
6a3eb01084ff5fe0eee64a66cd050d86a38579c7 02-Mar-2006 Jim Laskey <jlaskey@mac.com> Support for enumerations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26466 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
246ae0dcf750401ee84e1319ebe0b790744097a5 01-Mar-2006 Evan Cheng <evan.cheng@apple.com> Don't print llvm constant in assmebly file. Assembler won't like comments that
span multiple lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26463 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
1ec05d1bb4e8903321caf29f57a805952f5b8b86 01-Mar-2006 Chris Lattner <sabre@nondot.org> Fix CodeGen/Generic/2006-03-01-dagcombineinfloop.ll, an infinite loop
in the dag combiner on 176.gcc on x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26459 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9c4447aa2b47f133ac3eac095adb3c375d33031e 01-Mar-2006 Jim Laskey <jlaskey@mac.com> Switch back to using actual dwarf tags. Simplifies code without loss to other
debug forms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26455 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
b2742f4a2693510aa77d69f6e91fd8983e07680f 01-Mar-2006 Chris Lattner <sabre@nondot.org> Fix a typo evan noticed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26454 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
92ae7403964e522267f557772e0eb408116e35ac 01-Mar-2006 Jim Laskey <jlaskey@mac.com> Use context and not compile unit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26453 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
288fe0f74da02944e3a9b3fc2a751789482faf0b 01-Mar-2006 Jim Laskey <jlaskey@mac.com> I guess I can handle large type sizes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26452 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
f8913f19ae83927521103b9c84189c8d716e85ad 01-Mar-2006 Jim Laskey <jlaskey@mac.com> Basic array support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26451 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
2466472a2b6a2992a65efdc4634bcee08d23d8a8 01-Mar-2006 Chris Lattner <sabre@nondot.org> Add support for target-specific dag combines


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
00ffed0468ad406062b7c08c2ff46d79d2d1be4d 01-Mar-2006 Chris Lattner <sabre@nondot.org> Add interfaces for targets to provide target-specific dag combiner optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26442 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
5750df9d695bf5aea6d672d00fdfb4243984fd38 01-Mar-2006 Chris Lattner <sabre@nondot.org> Add a new AddToWorkList method, start using it


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26441 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0b1a85f110c4ed50f7adf181490d9f6a1b4f55a5 01-Mar-2006 Chris Lattner <sabre@nondot.org> Pull shifts by a constant through multiplies (a form of reassociation),
implementing Regression/CodeGen/X86/mul-shift-reassoc.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26440 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
860771d2d86243b65ec16fac6cc57b285078f138 01-Mar-2006 Evan Cheng <evan.cheng@apple.com> Vector ops lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
1ab7d859cf5c490612799d7e132c0b1c39f8f497 01-Mar-2006 Evan Cheng <evan.cheng@apple.com> - Added VConstant as an abstract version of ConstantVec.
- All abstrct vector nodes must have # of elements and element type as their
first two operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26432 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
45ccae5b7d658e9948f3cdfc8f06facaca536e1f 28-Feb-2006 Jim Laskey <jlaskey@mac.com> Add const, volatile, restrict support.
Add array of debug descriptor support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26428 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
35a9f5a24114f65002504b2276ee1b553f282058 28-Feb-2006 Chris Lattner <sabre@nondot.org> Compile:
unsigned foo4(unsigned short *P) { return *P & 255; }
unsigned foo5(short *P) { return *P & 255; }

to:

_foo4:
lbz r3,1(r3)
blr
_foo5:
lbz r3,1(r3)
blr

not:

_foo4:
lhz r2, 0(r3)
rlwinm r3, r2, 0, 24, 31
blr
_foo5:
lhz r2, 0(r3)
rlwinm r3, r2, 0, 24, 31
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
15045b6973bfe7a5adda8c0fb53bb1b0cdc06b8d 28-Feb-2006 Chris Lattner <sabre@nondot.org> Fold "and (LOAD P), 255" -> zextload. This allows us to compile:

unsigned foo3(unsigned *P) { return *P & 255; }
as:
_foo3:
lbz r3, 3(r3)
blr

instead of:

_foo3:
lwz r2, 0(r3)
rlwinm r3, r2, 0, 24, 31
blr

and:

unsigned short foo2(float a) { return a; }

as:
_foo2:
fctiwz f0, f1
stfd f0, -8(r1)
lhz r3, -2(r1)
blr

instead of:

_foo2:
fctiwz f0, f1
stfd f0, -8(r1)
lwz r2, -4(r1)
rlwinm r3, r2, 0, 16, 31
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
71d9ebcbc1c74848372e11c96989ede974b2366d 28-Feb-2006 Chris Lattner <sabre@nondot.org> fold (sra (sra x, c1), c2) -> (sra x, c1+c2)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26416 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
22873462c965a57664c4e375aa6e8bf02c9c6ad8 28-Feb-2006 Chris Lattner <sabre@nondot.org> Add support for output memory constraints.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26410 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9a777a3a8ed8f73cc9a256208ad3c52391eb5aae 27-Feb-2006 Jim Laskey <jlaskey@mac.com> Qualify dwarf namespace inside llvm namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26409 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
8a8e9756c83f269c1223039b9fd5552ac6cfe7b3 27-Feb-2006 Jim Laskey <jlaskey@mac.com> Partial enabling of functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26404 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
bd76184e67faf1ece54ff984739c29239e118c76 27-Feb-2006 Jim Laskey <jlaskey@mac.com> Supporting multiple compile units.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26402 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
0d086af82b2b659688911a5e8c3eb27d58156063 27-Feb-2006 Jim Laskey <jlaskey@mac.com> Re-orging file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26401 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
a6bc5a4d2138ea3cba90f5a794dd525228ec2c73 27-Feb-2006 Chris Lattner <sabre@nondot.org> Implement bit propagation through sub nodes, this (re)implements
PowerPC/div-2.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26392 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
2d2536c9d7669c1ba809664dd164be50222183dd 27-Feb-2006 Chris Lattner <sabre@nondot.org> remove some completed notes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26390 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
81cd35586f5b675faf5391e1f597908bdda5338e 27-Feb-2006 Chris Lattner <sabre@nondot.org> Check RHS simplification before LHS simplification to avoid infinitely looping
on PowerPC/small-arguments.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26389 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
5f0c658aa40c6d1475f7c9daa72497362fbee216 27-Feb-2006 Chris Lattner <sabre@nondot.org> Just like we use the RHS of an AND to simplify the LHS, use the LHS to
simplify the RHS. This allows for the elimination of many thousands of
ands from multisource, and compiles CodeGen/PowerPC/and-elim.ll:test2
into this:

_test2:
srwi r2, r3, 1
xori r3, r2, 40961
blr

instead of this:

_test2:
rlwinm r2, r3, 31, 17, 31
xori r2, r2, 40961
rlwinm r3, r2, 0, 16, 31
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26388 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
ec665151b891bf59d7c7c6cab180a978e2c20265 27-Feb-2006 Chris Lattner <sabre@nondot.org> Add a bunch of missed cases. Perhaps the most significant of which is that
assertzext produces zero bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26386 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
38b7327ec02fbc6f163905ac85ea55d357dece51 26-Feb-2006 Evan Cheng <evan.cheng@apple.com> Print ConstantPoolSDNode offset field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26381 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
404cb4f9fa2df50eac4d84b8a77c84a92188c6d5 25-Feb-2006 Evan Cheng <evan.cheng@apple.com> Added an offset field to ConstantPoolSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
28bad084118a9746df95084364d7d95de00c3b67 25-Feb-2006 Chris Lattner <sabre@nondot.org> Fix a bug that Evan exposed with some changes he's making, and that was
exposed with a fastcc problem (breaking pcompress2 on x86 with -enable-x86-fastcc).

When reloading a reused reg, make sure to invalidate the reloaded reg, and
check to see if there are any other pending uses of the same register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26369 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
47cb7173ea48691343b1046a0228a87c03b4167e 25-Feb-2006 Chris Lattner <sabre@nondot.org> Remove debugging printout :)

Add a minor compile time win, no codegen change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26368 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
540fec6b38c8107161a0db4f8a6b7cc50be38b4a 25-Feb-2006 Chris Lattner <sabre@nondot.org> Refactor some code from being inline to being out in a new class with methods.
This gets rid of two gotos, which is always nice, and also adds some comments.

No functionality change, this is just a refactor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26367 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
dd26033002b1b4c569df84ac947828c0fc02f6ba 24-Feb-2006 Chris Lattner <sabre@nondot.org> Use the PrintAsmMemoryOperand to print addressing modes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26364 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
daf6bc6347b4785102611bdf21c512e8a7678cce 24-Feb-2006 Chris Lattner <sabre@nondot.org> Pass all the flags to the asm printer, not just the # operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26362 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/ScheduleDAG.cpp
fd6d282a7154fd724e7fe6abaac358bb3041cb23 24-Feb-2006 Chris Lattner <sabre@nondot.org> rename NumOps -> NumVals to avoid shadowing a NumOps var in an outer scope.

Add support for addressing modes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
ed18b6896ee244b1484daea3fbd5987bea25658f 24-Feb-2006 Chris Lattner <sabre@nondot.org> Refactor operand adding out to a new AddOperand method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26358 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
6990600f93c212bd73623d523eb8f53ae0b6eee5 24-Feb-2006 Jim Laskey <jlaskey@mac.com> Add pointer and reference types. Added short-term code to ignore NULL types
(to allow llvm-gcc4 to build.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26355 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
7e88103cdea8c36b2229dae8c60def14e3816512 24-Feb-2006 Jeff Cohen <jeffc@jolt-lang.org> Get VC++ building again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26351 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0e43f2ba114df7bfc1f70d0ef62b663f6ea4c09d 24-Feb-2006 Chris Lattner <sabre@nondot.org> Implement (most of) selection of inline asm memory operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
87bc3bd1213ced06eade93e3267178198d41a381 24-Feb-2006 Chris Lattner <sabre@nondot.org> Lower C_Memory operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26346 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2b7401e28e0c3c18ef027345560f9ce5abeef4d2 24-Feb-2006 Chris Lattner <sabre@nondot.org> Recognize memory operand codes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26345 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
434b40b42f915822871d26ab3eb13db36d2984a3 23-Feb-2006 Jim Laskey <jlaskey@mac.com> Added basic support for typedefs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26339 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
9f6637db10642fae51fa3628b7833c6999f7fdb3 23-Feb-2006 Chris Lattner <sabre@nondot.org> Fix an endianness problem on big-endian targets with expanded operands
to inline asms. Mark some methods const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26334 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c3a9f8d31ce93ba384bd2bbdd55c757b06600a15 23-Feb-2006 Chris Lattner <sabre@nondot.org> Record all of the expanded registers in the DAG and machine instr, fixing
several bugs in inline asm expanded operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26332 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
f4afdd9f413c472e5785355f0d69847eaf729192 23-Feb-2006 Jim Laskey <jlaskey@mac.com> DwarfWriter reading basic type information from llvm-gcc4 code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26331 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
ffab42263ae3436229e5aeb1414e1a788c1d7378 23-Feb-2006 Chris Lattner <sabre@nondot.org> Code cleanups, no functionality change


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26328 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
9b6fb5de49f30d03b3e3f2fcb99e777b3149b783 23-Feb-2006 Chris Lattner <sabre@nondot.org> This fixes a couple of problems with expansion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26318 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b3befd41b4b5aa882bed9796bbb097df29b505ac 23-Feb-2006 Chris Lattner <sabre@nondot.org> Don't return registers from register classes that aren't legal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26317 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
864635ad7b3046d3042311423071152c613961de 22-Feb-2006 Chris Lattner <sabre@nondot.org> Change a whole bunch of code to be built around RegsForValue instead of
a single register number. This fully implements promotion for inline asms,
expand is close but not quite right yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26316 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0420f2aaf9551a10e2060d076de2fcdd7b316370 22-Feb-2006 Jim Laskey <jlaskey@mac.com> Coordinate activities with llvm-gcc4 and dwarf.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26314 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
1efa40f6a4b561cf8f80fe018684236010645cd0 22-Feb-2006 Chris Lattner <sabre@nondot.org> split register class handling from explicit physreg handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26308 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
0f0b7d4927e56e622cf43da0db56f3e0d40b8aaf 22-Feb-2006 Chris Lattner <sabre@nondot.org> Adjust to changes in getRegForInlineAsmConstraint prototype


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26306 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4217ca8dc175f7268a4335c8406dedd901e8e631 22-Feb-2006 Chris Lattner <sabre@nondot.org> Updates to match change of getRegForInlineAsmConstraint prototype


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26305 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
7d20d39009f89e7c2ab905d0b5dc3af059e7e886 20-Feb-2006 Chris Lattner <sabre@nondot.org> Fix a problem Nate and Duraid reported where simplifying nodes can cause
them to get ressurected, in which case, deleting the undead nodes is
unfriendly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26291 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
dca7abed918c8191de6e258ddf394cf11de240f2 20-Feb-2006 Chris Lattner <sabre@nondot.org> Fix a problem on itanium with memset. The value to set has been promoted to
i64 before this code, so zero_ext doesn't work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26290 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
003a272319d8871492edf9cecc25d9275b872f99 18-Feb-2006 Nate Begeman <natebegeman@mac.com> Add a fold for add that exchanges it with a constant shift if possible, so
that the shift may be more easily folded into other operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26286 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b0d04a7deaf1ffc78f2eb85295af987a54223c00 18-Feb-2006 Nate Begeman <natebegeman@mac.com> Add checks to make sure we don't create bogus extend nodes, and fix a bug
where we were doing exactly that which was causing failures on x86 and
alpha.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26284 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
012f241987a017ea74d34d4c126997f84902ef61 17-Feb-2006 Chris Lattner <sabre@nondot.org> Fix a tricky issue in the SimplifyDemandedBits code where CombineTo wasn't
exactly the API we wanted to call into. This fixes the crash on crafty last
night.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26269 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
fb7217bea3fe0472850798a0554c9b45689c4fbd 17-Feb-2006 Nate Begeman <natebegeman@mac.com> Clean up DemandedBitsAreZero interface
Make more use of the new mask helpers in valuetypes.h
Combine (sra (srl x, c1), c1) -> sext_inreg if legal


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cd6a6ed0a9d4b63535b430bf4c5c4396cd9d4e86 17-Feb-2006 Nate Begeman <natebegeman@mac.com> Don't expand sdiv by power of two before legalize, since it will likely
generate illegal nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26261 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
551bf3f80058a026b6a128dffd5530019e1df1b9 17-Feb-2006 Nate Begeman <natebegeman@mac.com> kill ADD_PARTS & SUB_PARTS and replace them with fancy new ADDC, ADDE, SUBC
and SUBE nodes that actually expose what's going on and allow for
significant simplifications in the targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
25125697fb0a761da440b222671cf2d6d4deaeac 17-Feb-2006 Chris Lattner <sabre@nondot.org> Fix another miscompilation exposed by lencode, where we lowered i64->f32
conversions to __floatdidf instead of __floatdisf on targets that support
f32 but not i64 (e.g. sparc).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5755b17044b5929b89f06f6f8d19e9ccd4d6c0c9 17-Feb-2006 Jeff Cohen <jeffc@jolt-lang.org> Fix bug noticed by VC++.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26252 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
cffbb5174f283d123d6bfc582292f4a9c84cb3ed 17-Feb-2006 Evan Cheng <evan.cheng@apple.com> Dumb bug. Code sees a memcpy from X+c so it increments src offset. But it
turns out not to point to a constant string but it forgot change the offset
back.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26242 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
368e18d56a87308045d341e85584597bfe7426e9 16-Feb-2006 Nate Begeman <natebegeman@mac.com> Rework the SelectionDAG-based implementations of SimplifyDemandedBits
and ComputeMaskedBits to match the new improved versions in instcombine.
Tested against all of multisource/benchmarks on ppc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26238 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
298ebf2bd80ca415e58bbcbd9866ee58f167b620 16-Feb-2006 Evan Cheng <evan.cheng@apple.com> If the false case is the current basic block, then this is a self loop.
We do not want to emit "Loop: ... brcond Out; br Loop", as it adds an extra
instruction in the loop. Instead, invert the condition and emit
"Loop: ... br!cond Loop; br Out.

Generalize the fix by moving it from PPCDAGToDAGISel to SelectionDAGLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26231 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8f4880be6675dbf1840446bc7a335f71ff557154 16-Feb-2006 Chris Lattner <sabre@nondot.org> Lowering of sdiv X, pow2 was broken, this fixes it. This patch is written
by Nate, I'm just committing it for him.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26230 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a47876d87a84fa94bf9f09cfef6756223575611d 15-Feb-2006 Evan Cheng <evan.cheng@apple.com> Remove an unused function parameter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26221 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
74d0aa9a4b1f5e021d2ce851a7af344e9b4ebb23 15-Feb-2006 Evan Cheng <evan.cheng@apple.com> Turn a memcpy from string constant into a series of stores of constant values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26219 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d0e58e36a9857c45ecdc910ec8db04c21e143db5 15-Feb-2006 Jim Laskey <jlaskey@mac.com> Should not combine ISD::LOCATIONs until we have scheme to remove from
MachineDebugInfo tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26216 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
c080d6fb3dc7769c5a1e00c6a77cb415453b0b89 15-Feb-2006 Evan Cheng <evan.cheng@apple.com> Lower memcpy with small constant size operand into a series of load / store
ops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
dea7245997f37972ed2f94d4ca1ec50c5af5000a 15-Feb-2006 Evan Cheng <evan.cheng@apple.com> Doh again!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26188 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ae9a84b9be2df23be256e48d7749eaec3a016477 14-Feb-2006 Jim Laskey <jlaskey@mac.com> Using wrong DW_FORM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26184 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
c4f8eee05447a1d7ead3deabbeb087e3e037f3f8 14-Feb-2006 Evan Cheng <evan.cheng@apple.com> Keep to < 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26177 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ac940ab1bf21be40f74a83b202419a20ad2e279f 14-Feb-2006 Evan Cheng <evan.cheng@apple.com> Missed a break so memcpy cases fell through to memset. Doh.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26176 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
80e89d7d6c02233a92d26bd4625e4188d48cbfa1 14-Feb-2006 Evan Cheng <evan.cheng@apple.com> Fixed a build breakage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26175 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a03a5dc7ce876dac4b3b91bae14216de4233bacd 14-Feb-2006 Evan Cheng <evan.cheng@apple.com> Rename maxStoresPerMemSet to maxStoresPerMemset, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26174 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
1db92f947cc600dee5edb9305a4e0f1c5c872965 14-Feb-2006 Evan Cheng <evan.cheng@apple.com> Expand memset dst, c, size to a series of stores if size falls below the
target specific theshold, e.g. 16 for x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
06a248c9b398049d41cf6dd1a3f9eecc75603401 14-Feb-2006 Chris Lattner <sabre@nondot.org> now that libcalls don't suck, we can remove this hack


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4b653a0405bb16b555334d134c1eb8a97366ec3d 14-Feb-2006 Chris Lattner <sabre@nondot.org> Fix a latent bug in the call sequence handling stuff. Some targets (e.g. x86)
create these nodes with flag results. Remember that we legalized them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26156 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d96185aa62dacf5c75d889231a8ab2e0f1ceb073 13-Feb-2006 Jim Laskey <jlaskey@mac.com> Rename to better reflect usage (current and planned.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26145 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
electionDAG/SelectionDAGISel.cpp
6831a815999dde4cf801e2076e66b4943964daf2 13-Feb-2006 Chris Lattner <sabre@nondot.org> Completely rewrite libcall insertion by the legalizer, providing the
following handy-dandy properties:

1. it is always correct now
2. it is much faster than before
3. it is easier to understand

This implementation builds off of the recent simplifications of the
legalizer that made it single-pass instead of iterative.

This fixes JM/lencod, JM/ldecod, and
CodeGen/Generic/2006-02-12-InsertLibcall.ll (at least on PPC).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26144 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ce72b1755f5993a42c2e04e32a93fa5228a285d4 11-Feb-2006 Jim Laskey <jlaskey@mac.com> Reorg for integration with gcc4. Old style debug info will not be passed though
to SelIDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26115 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
electionDAG/SelectionDAGISel.cpp
fae9f1cb34d6d2c4dbd007f2d748a70b67776a82 09-Feb-2006 Evan Cheng <evan.cheng@apple.com> Added SelectionDAG::InsertISelMapEntry(). This is used to workaround the gcc
problem where it inline the map insertion call too aggressively. Before this
change it was producing a frame size of 24k for Select_store(), now it's down
to 10k (by calling this method rather than calling the map insertion operator).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26094 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6ae46c4c8757237bca2b78b589c96c37015bc356 09-Feb-2006 Evan Cheng <evan.cheng@apple.com> More changes to reduce frame size.
Move all getTargetNode() out of SelectionDAG.h into SelectionDAG.cpp. This
prevents them from being inlined.
Change getTargetNode() so they return SDNode * instead of SDOperand to prevent
copying. It should also help compilation speed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26083 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3029f920519e0871a5aad5d7c592281093953733 09-Feb-2006 Chris Lattner <sabre@nondot.org> Adjust to MachineConstantPool interface change: instead of keeping a
value/alignment pair for each constant, keep a value/offset pair.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26078 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achineFunction.cpp
fa77d43ba1d91ed39f46e11caeb28dcabae9e193 09-Feb-2006 Chris Lattner <sabre@nondot.org> rename fields of constant pool entries


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26076 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achineFunction.cpp
74b7d27ab177be8c643591427c912e24aaf7e585 09-Feb-2006 Chris Lattner <sabre@nondot.org> Simplify code, alignment must be specified now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26074 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
948d9668a7bc96b435de7ebc1b4a28b70aeb0fc3 09-Feb-2006 Chris Lattner <sabre@nondot.org> Make MachineConstantPool entries alignments explicit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26071 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
d6c65ea92449bfba377baccf9b15d9346e96a029 09-Feb-2006 Chris Lattner <sabre@nondot.org> Add support for assembler directives that wrap inline asm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26065 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
3391bcd434c644747f6340e8077b3dac858b9d5d 08-Feb-2006 Chris Lattner <sabre@nondot.org> Compile this:

xori r6, r2, 1
rlwinm r6, r6, 0, 31, 31
cmpwi cr0, r6, 0
bne cr0, LBB1_3 ; endif

to this:

rlwinm r6, r2, 0, 31, 31
cmpwi cr0, r6, 0
beq cr0, LBB1_3 ; endif


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26047 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a36cb0a6b110f1ac9a9388019febb64620a124b9 06-Feb-2006 Chris Lattner <sabre@nondot.org> Add support for modifier characters to operand printers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26021 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
f60c2414abadd31217e7a797a3e70c8330ff372e 06-Feb-2006 Jim Laskey <jlaskey@mac.com> Goodbye nasty macro.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26019 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
c2f0c8def74dcdf5b142291029fdfc2a8d161cb9 06-Feb-2006 Jim Laskey <jlaskey@mac.com> Edit requests from Sabre.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26018 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
86cbdba5228a3cb043a73c630e8d93e1a943cbe3 06-Feb-2006 Jim Laskey <jlaskey@mac.com> Changing model for the construction of debug information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26016 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
be71442292e89b2e0cca61a8ecca9997df319d93 05-Feb-2006 Nate Begeman <natebegeman@mac.com> Back out previous commit, it isn't safe.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26006 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bab9239d0572d35a08423782eb964e532c3c6524 05-Feb-2006 Nate Begeman <natebegeman@mac.com> fold c1 << (x + c2) into (c1 << c2) << x. fix a warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26005 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c031e33b68168ee776b825b01eca83c56b2b2996 05-Feb-2006 Nate Begeman <natebegeman@mac.com> Handle urem by shifted powers of 2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fb5e4bdded9c204c5f50c4770431544c074ef7bb 05-Feb-2006 Nate Begeman <natebegeman@mac.com> handle combining A / (B << N) into A >>u (log2(B)+N) when B is a power of 2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26000 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
4ee621125876cc954cba5280dd9395552755a871 05-Feb-2006 Evan Cheng <evan.cheng@apple.com> * Added SDNode::isOnlyUse().
* Fix hasNUsesOfValue(), it should be const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25990 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
519ea2abc9f43a374443d112d386cce13a04ecf3 05-Feb-2006 Chris Lattner <sabre@nondot.org> make sure that global doubles are aligned to 8 bytes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25981 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
4d57e0cd69d8466c9321d67021c4747ce822f79a 05-Feb-2006 Chris Lattner <sabre@nondot.org> Implement the AsmPrinter::getPreferredAlignmentLog method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25978 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
f3afef3b3a9d7c4ca69d4b0306a684a61e1e50d5 04-Feb-2006 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25975 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
cccf1232a69e2d78516c61a97e7bfa26acefb714 04-Feb-2006 Evan Cheng <evan.cheng@apple.com> Get rid of some memory leaks identified by Valgrind


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25960 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
003cecbc9d210fa23f0ba68ac288748d20780cc7 04-Feb-2006 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25957 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
dc19b70d24e5fc0b80da36240550e31eb6ee4ee8 04-Feb-2006 Chris Lattner <sabre@nondot.org> Add initial support for immediates. This allows us to compile this:

int %rlwnm(int %A, int %B) {
%C = call int asm "rlwnm $0, $1, $2, $3, $4", "=r,r,r,n,n"(int %A, int %B, int 4, int 17)
ret int %C
}

into:

_rlwnm:
or r2, r3, r3
or r3, r4, r4
rlwnm r2, r2, r3, 4, 17 ;; note the immediates :)
or r3, r2, r2
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25955 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
3d81fee8511536962543cbf420fd70ef15ae9c3a 04-Feb-2006 Chris Lattner <sabre@nondot.org> Initial early support for non-register operands, like immediates


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25952 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
eb8146b5ee4b9b66d6294f62a5ed556e332018ab 04-Feb-2006 Chris Lattner <sabre@nondot.org> implementation of some methods for inlineasm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25951 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
8666249ad6eca27d267f251495545bca132a9a5c 04-Feb-2006 Chris Lattner <sabre@nondot.org> Handle another case exposed on X86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25949 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
593c95878b089388f9c82b8c7b1f4731af86c792 04-Feb-2006 Chris Lattner <sabre@nondot.org> Fix a nasty problem on two-address machines in the following situation:

store EAX -> [ss#0]
[ss#0] += 1
...
use(EAX)

In this case, it is not valid to rewrite this as:


store EAX -> [ss#0]
EAX += 1
store EAX -> [ss#0] ;;; this would also delete the store above
...
use(EAX)

... because EAX is not a dead at that point. Keep track of which registers
we are allowed to clobber, and which ones we aren't, and don't clobber the
ones we're not supposed to. :)

This should resolve the issues on X86 last night.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25948 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
66cf80f226e04e6704a78da83e08c7b0af944ef1 04-Feb-2006 Chris Lattner <sabre@nondot.org> significantly simplify the VirtRegMap code by pulling the SpillSlotsAvailable
and PhysRegsAvailable maps out into a new AvailableSpills struct. No
functionality change.

This paves the way for a bugfix, coming up next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25947 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
244d1dccd11fc4b35f6d90e08631cc40f722ff95 03-Feb-2006 Nate Begeman <natebegeman@mac.com> Implement some feedback from sabre


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25946 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
de99629e2ae8cd7cc731328d2ad6ed6b8e759f2c 03-Feb-2006 Nate Begeman <natebegeman@mac.com> Add a framework for eliminating instructions that produces undemanded bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25945 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
7632e2beb4f0eacc49d580cbf23c89f24ad07ce9 03-Feb-2006 Chris Lattner <sabre@nondot.org> remove some #ifdef'd out code, which should properly be in the dag combiner anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25941 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
eefae25034a116d8cd1639f61e2920e913f2259f 03-Feb-2006 Chris Lattner <sabre@nondot.org> remove dead fn


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25935 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
cd4d58cef1b932fe6ae66fdccdb2f69e80bbb734 03-Feb-2006 Nate Begeman <natebegeman@mac.com> Add common code for reassociating ops in the dag combiner


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
2ba0b02e15d8ed79e0c42fd6f85ab6c142d93a8a 03-Feb-2006 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ compilation error caused by using a std::map iterator variable to receive
a std::multimap iterator value. For some reason, GCC doesn't have a problem with this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25927 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
109afed40bec552e4d37115c971e082e79eb0093 03-Feb-2006 Chris Lattner <sabre@nondot.org> Remove move copies and dead stuff by not clobbering the result reg of a noop copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25926 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
84e752a8129e7a02ee6e3c6d356a8fd68fbdf698 03-Feb-2006 Chris Lattner <sabre@nondot.org> Simplify some code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25924 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
1118d25d3971bc4fce9715c8c83ea7a197bf2eff 03-Feb-2006 Chris Lattner <sabre@nondot.org> Add code that checks for noop copies, which triggers when either:
1. a target doesn't know how to fold load/stores into copies, or
2. the spiller rewrites the input to a copy to the same register as the dest
instead of to the reloaded reg.

This will be moved/improved in the near future, but allows elimination of
some ancient x86 hacks. This eliminates 92 copies from SMG2000 on X86 and
163 copies from 252.eon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25922 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
9fda2f9106112a522aecf080c016ea5317f52b21 03-Feb-2006 Evan Cheng <evan.cheng@apple.com> Added case HANDLENODE to getOperationName().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25920 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
07cf14112dcdb9c6b20a4f8e17de717b5219dad8 03-Feb-2006 Chris Lattner <sabre@nondot.org> Physregs may hold multiple stack slot values at the same time. Keep track
of this, and use it to our advantage (bwahahah). This allows us to eliminate another
60 instructions from smg2000 on PPC (probably significantly more on X86). A common
old-new diff looks like this:

stw r2, 3304(r1)
- lwz r2, 3192(r1)
stw r2, 3300(r1)
- lwz r2, 3192(r1)
stw r2, 3296(r1)
- lwz r2, 3192(r1)
stw r2, 3200(r1)
- lwz r2, 3192(r1)
stw r2, 3196(r1)
- lwz r2, 3192(r1)
+ or r2, r2, r2
stw r2, 3188(r1)

and

- lwz r31, 604(r1)
- lwz r13, 604(r1)
- lwz r14, 604(r1)
- lwz r15, 604(r1)
- lwz r16, 604(r1)
- lwz r30, 604(r1)
+ or r31, r30, r30
+ or r13, r30, r30
+ or r14, r30, r30
+ or r15, r30, r30
+ or r16, r30, r30
+ or r30, r30, r30

Removal of the R = R copies is coming next...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25919 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
cd81639d2e3705ee13b1869d6c166b5f5b4c29c4 03-Feb-2006 Chris Lattner <sabre@nondot.org> Fix a deficiency in the spiller that Evan noticed. In particular, consider
this code:

store [stack slot #0], R10
= add R14, [stack slot #0]

The spiller didn't know that the store made the value of [stackslot#0] available
in R10 *IF* the store came from a copy instruction with the store folded into it.

This patch teaches VirtRegMap to look at these stores and recognize the values
they make available. In one case Evan provided, this code:

divsd %XMM0, %XMM1
movsd %XMM1, QWORD PTR [%ESP + 40]
1) movsd QWORD PTR [%ESP + 48], %XMM1
2) movsd %XMM1, QWORD PTR [%ESP + 48]
addsd %XMM1, %XMM0
3) movsd QWORD PTR [%ESP + 48], %XMM1
movsd QWORD PTR [%ESP + 4], %XMM0

turns into:

divsd %XMM0, %XMM1
movsd %XMM1, QWORD PTR [%ESP + 40]
addsd %XMM1, %XMM0
3) movsd QWORD PTR [%ESP + 48], %XMM1
movsd QWORD PTR [%ESP + 4], %XMM0

In this case, instruction #2 was removed because of the value made
available by #1, and inst #1 was later deleted because it is now
never used before the stack slot is redefined by #3.

This occurs here and there in a lot of code with high spilling, on PPC
most of the removed loads/stores are LSU-reject-causing loads, which is
nice.

On X86, things are much better (because it spills more), where we nuke
about 1% of the instructions from SMG2000 and several hundred from eon.

More improvements to come...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25917 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
408396014742a05cad1c91949d2226169e3f9d80 02-Feb-2006 Chris Lattner <sabre@nondot.org> Move isLoadFrom/StoreToStackSlot from MRegisterInfo to TargetInstrInfo,a far more logical place. Other methods should also be moved if anyoneis interested. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25913 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
3603cd62aed5cc54ec626848d0195eed2958312a 02-Feb-2006 Chris Lattner <sabre@nondot.org> Turn any_extend nodes into zero_extend nodes when it allows us to remove an
and instruction. This allows us to compile stuff like this:

bool %X(int %X) {
%Y = add int %X, 14
%Z = setne int %Y, 12345
ret bool %Z
}

to this:

_X:
cmpl $12331, 4(%esp)
setne %al
movzbl %al, %eax
ret

instead of this:

_X:
cmpl $12331, 4(%esp)
setne %al
movzbl %al, %eax
andl $1, %eax
ret

This occurs quite a bit with the X86 backend. For example, 25 times in
lambda, 30 times in 177.mesa, 14 times in galgel, 70 times in fma3d,
25 times in vpr, several hundred times in gcc, ~45 times in crafty,
~60 times in parser, ~140 times in eon, 110 times in perlbmk, 55 on gap,
16 times on bzip2, 14 times on twolf, and 1-2 times in many other SPEC2K
programs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25901 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9a06cce0f2088a298f357b933fb7d8e268f6ca52 02-Feb-2006 Chris Lattner <sabre@nondot.org> Implement MaskedValueIsZero for ANY_EXTEND nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b3ddfc42af8d6f5c4b168797ccbcb6b55cb9397f 02-Feb-2006 Chris Lattner <sabre@nondot.org> add two dag combines:
(C1-X) == C2 --> X == C1-C2
(X+C1) == C2 --> X == C2-C1

This allows us to compile this:

bool %X(int %X) {
%Y = add int %X, 14
%Z = setne int %Y, 12345
ret bool %Z
}

into this:

_X:
cmpl $12331, 4(%esp)
setne %al
movzbl %al, %eax
andl $1, %eax
ret

not this:

_X:
movl $14, %eax
addl 4(%esp), %eax
cmpl $12345, %eax
setne %al
movzbl %al, %eax
andl $1, %eax
ret

Testcase here: Regression/CodeGen/X86/compare-add.ll

nukage of the and coming up next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25898 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1e8791d790ad3a3bbc141eb8a7ff326b618d799c 02-Feb-2006 Chris Lattner <sabre@nondot.org> make -debug output less newliney


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25895 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
2223aea6ed33e4261d506afdcfbf30ccd8f52bfb 02-Feb-2006 Chris Lattner <sabre@nondot.org> Implement matching constraints. We can now say things like this:

%C = call int asm "xyz $0, $1, $2, $3", "=r,r,r,0"(int %A, int %B, int 4)

and get:

xyz r2, r3, r4, r2

note that the r2's are pinned together. Yaay for 2-address instructions.

2342 ----------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25893 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6609913b7d0ad13058d4ffffb17fb8d8078799ef 01-Feb-2006 Chris Lattner <sabre@nondot.org> Implement smart printing of inline asm strings, handling variants and
substituted operands. For this testcase:

int %test(int %A, int %B) {
%C = call int asm "xyz $0, $1, $2", "=r,r,r"(int %A, int %B)
ret int %C
}

we now emit:

_test:
or r2, r3, r3
or r3, r4, r4
xyz r2, r2, r3 ;; look here
or r3, r2, r2
blr

... note the substituted operands. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25886 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
da06e9e665a1a94886541ed85e97315f58b357b0 01-Feb-2006 Nate Begeman <natebegeman@mac.com> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4e4b576e2edfc7d40a3d7177c639acbe91cfd45f 01-Feb-2006 Chris Lattner <sabre@nondot.org> Implement simple register assignment for inline asms. This allows us to compile:

int %test(int %A, int %B) {
%C = call int asm "xyz $0, $1, $2", "=r,r,r"(int %A, int %B)
ret int %C
}

into:

(0x8906130, LLVM BB @0x8902220):
%r2 = OR4 %r3, %r3
%r3 = OR4 %r4, %r4
INLINEASM <es:xyz $0, $1, $2>, %r2<def>, %r2, %r3
%r3 = OR4 %r2, %r2
BLR

which asmprints as:

_test:
or r2, r3, r3
or r3, r4, r4
xyz $0, $1, $2 ;; need to print the operands now :)
or r3, r2, r2
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25878 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
750ac1bdfa6f09bddfd9efce1d6360dde8fa74c0 01-Feb-2006 Nate Begeman <natebegeman@mac.com> Fix some of the stuff in the PPC README file, and clean up legalization
of the SELECT_CC, BR_CC, and BRTWOWAY_CC nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25875 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
a55079a5ccdf0cdb4d482fb47a3fb21825f56713 01-Feb-2006 Chris Lattner <sabre@nondot.org> Beef up the interface to inline asm constraint parsing, making it more general, useful, and easier to use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
2cc2f66c25d9576743026688fdae5ed402726532 01-Feb-2006 Chris Lattner <sabre@nondot.org> adjust to changes in InlineAsm interface. Fix a few minor bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25865 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/SelectionDAGISel.cpp
b8973bd8f50d7321635e1e07b81a880a0828d185 31-Jan-2006 Evan Cheng <evan.cheng@apple.com> Allow the specification of explicit alignments for constant pool entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25855 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
achineFunction.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
59ad781e0118021d1ca7dfbc9f8db2ed828745e0 31-Jan-2006 Evan Cheng <evan.cheng@apple.com> Allow custom lowering of fabs. I forgot to check in this change which
caused several test failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25852 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
19c5c4cca9edd0e1e2961879d3da164325af6d63 31-Jan-2006 Chris Lattner <sabre@nondot.org> Only insert an AND when converting from BR_COND to BRCC if needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25832 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6656dd1a7888e6dabc82ebce734734127b1df6a7 31-Jan-2006 Chris Lattner <sabre@nondot.org> Handle physreg input/outputs. We now compile this:

int %test_cpuid(int %op) {
%B = alloca int
%C = alloca int
%D = alloca int
%A = call int asm "cpuid", "=eax,==ebx,==ecx,==edx,eax"(int* %B, int* %C, int* %D, int %op)
%Bv = load int* %B
%Cv = load int* %C
%Dv = load int* %D
%x = add int %A, %Bv
%y = add int %x, %Cv
%z = add int %y, %Dv
ret int %z
}

to this:

_test_cpuid:
sub %ESP, 16
mov DWORD PTR [%ESP], %EBX
mov %EAX, DWORD PTR [%ESP + 20]
cpuid
mov DWORD PTR [%ESP + 8], %ECX
mov DWORD PTR [%ESP + 12], %EBX
mov DWORD PTR [%ESP + 4], %EDX
mov %ECX, DWORD PTR [%ESP + 12]
add %EAX, %ECX
mov %ECX, DWORD PTR [%ESP + 8]
add %EAX, %ECX
mov %ECX, DWORD PTR [%ESP + 4]
add %EAX, %ECX
mov %EBX, DWORD PTR [%ESP]
add %ESP, 16
ret

... note the proper register allocation. :)

it is unclear to me why the loads aren't folded into the adds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25827 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
f2b67cff040d1eb3229f7929d0ec7a5e016a7a57 31-Jan-2006 Chris Lattner <sabre@nondot.org> Print the most trivial inline asms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25822 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
73e142f2b6a3b5223de2d557d646f319ca8168cf 30-Jan-2006 Chris Lattner <sabre@nondot.org> Fix a bug in my legalizer reworking that caused the X86 backend to not get
a chance to custom legalize setcc, which broke a bunch of C++ Codes.
Testcase here: CodeGen/X86/2006-01-30-LongSetcc.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25821 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0e753d617be1ff6a9ac0f894da9d2544e2489850 30-Jan-2006 Chris Lattner <sabre@nondot.org> don't insert an and node if it isn't needed here, this can prevent folding
of lowered target nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25804 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c6fd6cd65c88ef1f11da43c11be0152cb69013a7 30-Jan-2006 Chris Lattner <sabre@nondot.org> Move MaskedValueIsZero from the DAGCombiner to the TargetLowering interface,making isMaskedValueZeroForTargetNode simpler, and useable from other partsof the compiler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25803 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
5c413bc451f6e889639864fda6157be6a5f4fd7c 30-Jan-2006 Chris Lattner <sabre@nondot.org> pass the address of MaskedValueIsZero into isMaskedValueZeroForTargetNode,
to permit recursion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25799 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
87c890a9c2a8f9818772f3b9e359d301b246e3a4 30-Jan-2006 Chris Lattner <sabre@nondot.org> adjust prototype


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25798 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
6862dbc446f2f633f6f4905d07a3bafd96741da2 29-Jan-2006 Chris Lattner <sabre@nondot.org> Fix RET of promoted values on targets that custom expand RET to a target node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25794 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
68a17febc70d9beb5353454e0c6d136ca1e87605 29-Jan-2006 Chris Lattner <sabre@nondot.org> cleanups to the ValueTypeActions interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25785 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3e6e8cc26b0f78e7e9164b59aaf7bdead6715127 29-Jan-2006 Chris Lattner <sabre@nondot.org> clean up interface to ValueTypeActions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25783 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
70814bc38435d61a8c7cc32f2375c09e21f12a8a 29-Jan-2006 Chris Lattner <sabre@nondot.org> Remove some special case hacks for CALLSEQ_*, using UpdateNodeOperands
instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25780 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
8ca05e0c302e15d6365afd2a0ea5fe15c9e85758 29-Jan-2006 Chris Lattner <sabre@nondot.org> Allow custom expansion of ConstantVec nodes. PPC will use this in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25774 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3181a771ff5b2090b7ed55f9b18a684ea8fe625a 29-Jan-2006 Chris Lattner <sabre@nondot.org> Legalize ConstantFP into TargetConstantFP when the target allows. Implement
custom expansion of ConstantFP nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25772 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
03d5e877fd30d7f18546e6df8fd60837081ad8cc 29-Jan-2006 Chris Lattner <sabre@nondot.org> eliminate uses of SelectionDAG::getBR2Way_CC


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25767 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
c52ad4f04ea5f51a1b4c67e585acea5c0525fc3d 28-Jan-2006 Chris Lattner <sabre@nondot.org> Use the new "UpdateNodeOperands" method to simplify LegalizeDAG and make it
faster. This cuts about 120 lines of code out of the legalizer (mostly code
checking to see if operands have changed).

It also fixes an ugly performance issue, where the legalizer cloned the entire
graph after any change. Now the "UpdateNodeOperands" method gives it a chance
to reuse nodes if the operands of a node change but not its opcode or valuetypes.

This speeds up instruction selection time on kimwitu++ by about 8.2% with a
release build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25746 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
809ec110885ad7cc820889d789b06aaa3ea7358f 28-Jan-2006 Chris Lattner <sabre@nondot.org> add another method variant


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25744 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
df6eb30fa9bc8600862cae18fce66da466188323 28-Jan-2006 Chris Lattner <sabre@nondot.org> add some methods for updating nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25742 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
948c1b1cda280c6428dbeaa03a6c2c559dbb93f4 28-Jan-2006 Chris Lattner <sabre@nondot.org> minor tweaks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25740 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
22cde6a518782cafc2115ad8d8233f79c9e9d52e 28-Jan-2006 Chris Lattner <sabre@nondot.org> move a bunch of code, no other change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25739 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7cd2997a83444b4ce14644db1a985f6c717f765e 28-Jan-2006 Chris Lattner <sabre@nondot.org> remove a couple more now-extraneous legalizeop's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25738 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5c62f337fe846247f5e72acb32844e24b4f18b71 28-Jan-2006 Chris Lattner <sabre@nondot.org> fix a bug


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25737 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
456a93afcec7740c45cafa8354317f7b17987a6d 28-Jan-2006 Chris Lattner <sabre@nondot.org> Several major changes:

1. Pull out the expand cases for BSWAP and CT* into a separate function,
reducing the size of LegalizeOp.
2. Fix a bug where expand(bswap i64) was wrong when i64 is legal.
3. Changed LegalizeOp/PromoteOp so that the legalizer never needs to be
iterative. It now operates in a single pass over the nodes.
4. Simplify a LOT of code, with a net reduction of ~280 lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25736 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8137c9e41d69943ac84066e6c7a95390b84e29f2 28-Jan-2006 Chris Lattner <sabre@nondot.org> Eliminate the need for ExpandOp to set 'needsanotheriteration', as it already
relegalizes the stuff it returns.

Add the ability to custom expand ADD/SUB, so that targets don't need to deal
with ADD_PARTS/SUB_PARTS if they don't want.

Fix some obscure potential bugs and simplify code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25732 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9c6b4b8c3a48aa420f6499ca6c1a356f74e100f8 28-Jan-2006 Chris Lattner <sabre@nondot.org> Instead of making callers of ExpandLibCall legalize the result, make
ExpandLibCall do it itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25731 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0e8ea71a4f45b070aecfe9a896bbe402c8b175d6 28-Jan-2006 Chris Lattner <sabre@nondot.org> Eliminate the need to do another iteration of the legalizer after inserting
a libcall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25730 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
04c62c78f451807b13520efbfe0f5d432bc755cb 28-Jan-2006 Chris Lattner <sabre@nondot.org> remove method I just added


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25728 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4f16e70faad0840357998059f7f296e5f5e412be 28-Jan-2006 Chris Lattner <sabre@nondot.org> add a new callback


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0aed7840ec8cc85f91b4aa6e69318bba0cbd1f03 28-Jan-2006 Nate Begeman <natebegeman@mac.com> Implement Promote for VAARG, and allow it to be custom promoted for people
who don't want the default behavior (Alpha).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25726 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
61af66e687561a821181f742677c38a933a6fea0 28-Jan-2006 Nate Begeman <natebegeman@mac.com> Add a missing case to the dag combiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25723 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
0ff5c27a00926e2ea4c99b3d5e62c55b29faf06b 28-Jan-2006 Chris Lattner <sabre@nondot.org> Remove the ISD::CALL and ISD::TAILCALL nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25721 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
ee625573b5b39b91441fc6ea23f3ba415abdc71f 27-Jan-2006 Nate Begeman <natebegeman@mac.com> Remove TLI.LowerReturnTo, and just let targets custom lower ISD::RET for
the same functionality. This addresses another piece of bug 680. Next,
on to fixing Alpha VAARG, which I broke last time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25696 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
da427fa5daa4fca1a437e1ca8ff2e68925688fe9 27-Jan-2006 Jim Laskey <jlaskey@mac.com> Using bit size of integers instead of ambiguous "long" et all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25694 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
3ea0e0e005b6e047756f40c0848b82811d357463 27-Jan-2006 Jim Laskey <jlaskey@mac.com> Sorry - really folowing convention.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25691 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
bb5830d127b8a07b86ca1fe764e8a51fbc0e2535 27-Jan-2006 Jim Laskey <jlaskey@mac.com> Following convention.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25689 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
97d938c971a1a67370ec18447227925861567b7e 27-Jan-2006 Andrew Lenharth <andrewl@lenharth.org> fix build


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25687 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
22760af21f0012ba3dcdeb319ea55970f93389c5 27-Jan-2006 Chris Lattner <sabre@nondot.org> Fix build error that is apparently only a warning with some compilers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25686 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
1a05851a27f42ef2718d04119c616a7fecdffb32 27-Jan-2006 Jim Laskey <jlaskey@mac.com> Forgot the version number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25685 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
d8f77bae03b4ff701ed24ce74d1bf079f2dd197f 27-Jan-2006 Jim Laskey <jlaskey@mac.com> Improve visibility/correctness of operand indices in "llvm.db" objects.
Handle 64 in DIEs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25684 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
0264d1a4777370009176157b76d116b3195e3767 27-Jan-2006 Chris Lattner <sabre@nondot.org> Stub out a method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25676 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
acc43bf4ab8d7fe6fdb0deee13931e4935fbf145 27-Jan-2006 Chris Lattner <sabre@nondot.org> Teach the scheduler to emit the appropriate INLINEASM MachineInstr for an
ISD::INLINEASM node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25668 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
ce7518ce92f45568dc7d4cbb863284afb962fec5 26-Jan-2006 Chris Lattner <sabre@nondot.org> initial selectiondag support for new INLINEASM node. Note that inline asms
with outputs or inputs are not supported yet. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25664 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
6e87c0e029c011b9ee61068c607080ca4934378a 26-Jan-2006 Jim Laskey <jlaskey@mac.com> Use global information to fill out Dwarf compile units.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25662 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
4ccb070f158b0f331c68de800c6bab8c31c2ecb6 26-Jan-2006 Chris Lattner <sabre@nondot.org> Implement a method for inline asm support


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25660 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
b3e789ac2548a4382d0db03b573fd8a127617f8f 26-Jan-2006 Jim Laskey <jlaskey@mac.com> Set up MachineDebugInfo to scan for debug information form "llvm.db"g globals.
Global Variable information is now pulled from "llvm.dbg.globals"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25655 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
achineDebugInfo.cpp
cdf3838bf180d7295c3a4eca5efd3e5a58b714fd 26-Jan-2006 Evan Cheng <evan.cheng@apple.com> Clean up some code; improve efficiency; and fixed a potential bug involving
chain successors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
2a8e6186e971743da51e9220753f7803a9fb3f88 25-Jan-2006 Reid Spencer <rspencer@reidspencer.com> Don't break the optimized build (by incorrect placement of #endif)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25613 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
ee4a76563a84839453588104e94d4891fc44d625 25-Jan-2006 Chris Lattner <sabre@nondot.org> initialize an instance var, apparently I forgot to commit this long ago


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25609 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
46c01cfe9f1c6900ea63df9c79094d0826fd9ecc 25-Jan-2006 Evan Cheng <evan.cheng@apple.com> No need to keep track of top and bottom nodes in a group since the vector is
already in order. Thanks Jim for pointing it out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25608 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
0577a22c678bd5e31047e6b8038c6917202271ee 25-Jan-2006 Evan Cheng <evan.cheng@apple.com> Set SchedulingForLatency to be the default scheduling preference for all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25607 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
acc398c195a697795bff3245943d104eb19192b9 25-Jan-2006 Nate Begeman <natebegeman@mac.com> First part of bug 680:
Remove TLI.LowerVA* and replace it with SDNodes that are lowered the same
way as everything else.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25606 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
05ebc8d795f039f1b7647bb33e995aa2f5c40b73 25-Jan-2006 Jeff Cohen <jeffc@jolt-lang.org> Make it even more portable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25605 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
44c687d0afa9be89e1dc45dca96713e58a94ccb8 25-Jan-2006 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ compilation error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25604 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
cd1419af1e9ef5472e09cd8a7c7eca971eae94ae 25-Jan-2006 Evan Cheng <evan.cheng@apple.com> Bottom up register usage reducing list scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25601 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
e0a58323747bfca126f698d4e89e719b36007bf7 25-Jan-2006 Evan Cheng <evan.cheng@apple.com> Keep track of bottom / top element of a set of flagged nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25600 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
3f23952404cd03a8ab934cedcef7916f52a796c0 25-Jan-2006 Evan Cheng <evan.cheng@apple.com> If scheduler choice is the default (-sched=default), use target scheduling
preference to determine which scheduler to use. SchedulingForLatency ==
Breadth first; SchedulingForRegPressure == bottom up register reduction list
scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25599 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fb709b6817426c99d2ce48a2d08ef20e376a0e06 25-Jan-2006 Jeff Cohen <jeffc@jolt-lang.org> Portably cast a pointer to an integer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25594 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
50d1e8b70d1499e4a5aeba0a92ae9d33712e5f9e 24-Jan-2006 Andrew Lenharth <andrewl@lenharth.org> fix build on 64 bit hosts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25591 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
6a5428934ba6159c1acc541944332e51a6cfa59a 24-Jan-2006 Chris Lattner <sabre@nondot.org> Fix an infinite loop I caused by making sure to legalize the flag operand
of CALLSEQ_* nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25582 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
2aa750a874b31ecab56f923a714e43a029526e56 24-Jan-2006 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ compilation error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25577 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
83404e320d5074f6bd7919ca56decf4a211bfeae 24-Jan-2006 Jeff Cohen <jeffc@jolt-lang.org> Remove unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25576 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
3e2fa7a746270452316523f27b9055b007feba32 24-Jan-2006 Chris Lattner <sabre@nondot.org> rename method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25572 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
52060a0e7190d7713042f18b1b949d1ae953638f 24-Jan-2006 Jim Laskey <jlaskey@mac.com> Crude Dwarf global variable debugging.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25569 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
2c1b1597f244c836771b4f2668c0ae399d32a5e9 24-Jan-2006 Chris Lattner <sabre@nondot.org> Print file-scope inline asm blocks at the start of the output file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25565 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
7cf11b4ab248d6ab7fb0d9df0b72baf158201abe 23-Jan-2006 Andrew Lenharth <andrewl@lenharth.org> another couple selects


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25551 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8c6f1ee5aa376118f1cb7b16b62994fc255eac56 23-Jan-2006 Andrew Lenharth <andrewl@lenharth.org> another selectto


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
17d52f723421ce28d1b9fe2fc058366ed43ec094 23-Jan-2006 Jim Laskey <jlaskey@mac.com> Typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25545 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f0f9c90204c650b9f3c3feb02ccfcb1e40c6acdd 23-Jan-2006 Evan Cheng <evan.cheng@apple.com> Skeleton of the list schedule.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25544 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGList.cpp
electionDAG/SelectionDAGISel.cpp
414842906419a345813bb72edf698df9acdaad87 23-Jan-2006 Evan Cheng <evan.cheng@apple.com> Minor clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25543 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
67993f7b974cd17e4372a6b7b9f9cad5ed174df1 23-Jan-2006 Chris Lattner <sabre@nondot.org> Fix Regression/CodeGen/SparcV8/2006-01-22-BitConvertLegalize.ll by making
sure that the result of expanding a BIT_CONVERT node is itself legalized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25538 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
dfeeac9f002454ccba362893f218fd2e6f502f48 23-Jan-2006 Evan Cheng <evan.cheng@apple.com> Remove a couple of unnecessary #include's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25535 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAGSimple.cpp
4ef10867499aa146cd819c78d8d37a8353d4f0ff 23-Jan-2006 Evan Cheng <evan.cheng@apple.com> Factor out more instruction scheduler code to the base class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25532 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAGISel.cpp
39a17dd31ddc4af6067940cb31e2c7d380773478 23-Jan-2006 Chris Lattner <sabre@nondot.org> Fix bugs lowering stackrestore, fixing 2004-08-12-InlinerAndAllocas.c on
PPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25522 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2c2c6c61f100bc7c3df873b11203fcea1b5e18fe 23-Jan-2006 Chris Lattner <sabre@nondot.org> Add explicit #includes of <iostream>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25515 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/DAGCombiner.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
a3818e6f9a62db0c5b6aee28e44c30d5f96c9fa4 21-Jan-2006 Chris Lattner <sabre@nondot.org> Fix a bug in a recent refactor that caused a bunch of programs to miscompile
or the compiler to crash.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25503 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
348e93c8f7132c6ecbaf5866048e087feb7520e2 21-Jan-2006 Chris Lattner <sabre@nondot.org> Fix CodeGen/PowerPC/2006-01-20-ShiftPartsCrash.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25496 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a9c2091cd38e401c846391c9951ff416e709b65e 21-Jan-2006 Evan Cheng <evan.cheng@apple.com> Do some code refactoring on Jim's scheduler in preparation of the new list
scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25493 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/ScheduleDAGSimple.cpp
electionDAG/SelectionDAGISel.cpp
63ae85f194981cc6493b1aeda7b8c25d34fe7e8b 21-Jan-2006 Jim Laskey <jlaskey@mac.com> Simplify search for abbreviations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25491 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
736832107b64a80da1623868e7c16cb97d7ee826 21-Jan-2006 Jim Laskey <jlaskey@mac.com> Correct some simple errors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25490 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
4002017e6847a2d8fef7ba2cfe83a8ef2ce6a038 20-Jan-2006 Jim Laskey <jlaskey@mac.com> Right size integer values before emitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25489 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
d18e28964bf8e8f0147f165c2080af20a28687c0 20-Jan-2006 Jim Laskey <jlaskey@mac.com> Reworked how Dwarf debug info entries and abbreviations are handled. Added
pubnames and debuy str sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25487 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
a68d204843fc8b9606e7760fcddd20b99e8e340d 20-Jan-2006 Chris Lattner <sabre@nondot.org> remove some unintentionally committed code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25483 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4eebb60f843e0aa67b62f3b8643101bc0e39531d 20-Jan-2006 Chris Lattner <sabre@nondot.org> If the target doesn't support f32 natively, insert the FP_EXTEND in target-indep
code, so that the LowerReturn code doesn't have to handle it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
12f2274ba8c6af21e8b6c71ef872afe43a64b6d7 19-Jan-2006 Evan Cheng <evan.cheng@apple.com> Another typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25440 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8ff318b7fb6185e94403c0a902f1132141847ac5 19-Jan-2006 Andrew Lenharth <andrewl@lenharth.org> was ignoring the legalized chain in this case, fixed SPASS on alpha


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a148d9811a37a320adbf512276abcf42cc36d04c 18-Jan-2006 Nate Begeman <natebegeman@mac.com> Get rid of code in the DAGCombiner that is duplicated in SelectionDAG.cpp
Now all constant folding in the code generator is in one place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25426 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d12b2d7b5ae73c6f1b89a30f12e9d30e731b2e20 18-Jan-2006 Chris Lattner <sabre@nondot.org> Temporary work around for a libcall insertion bug: If a target doesn't
support FSIN/FCOS nodes, do not lower sin/cos to them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25425 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4090aee72e0f29976c9b1e7a0e0c7b4456f645b5 18-Jan-2006 Chris Lattner <sabre@nondot.org> Fix a backwards conditional that caused an inf loop in some cases. This
fixes: test/Regression/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
e719a7c40b58a382144212828bfecd4e64210b92 18-Jan-2006 Jim Laskey <jlaskey@mac.com> Added minimum Dwarf aranges. Cleaned up some section headers. Line number
support now works in gdb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25417 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
19ef4efa70b29aa2ef2d68a60e9bdfa7a4b47d89 17-Jan-2006 Jim Laskey <jlaskey@mac.com> Add frame work for additional dwarf sections. Comments will improve as code
is added.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25410 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
4eb2e3a6f45e6f0a4a8f0002918f8d14c34169c1 17-Jan-2006 Robert Bocchino <bocchino@illinois.edu> Support for the insertelement operation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25405 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
433f8acefb78f1c8a2cf79c12b101ce7c4b20202 17-Jan-2006 Evan Cheng <evan.cheng@apple.com> Bug fix: missing LegalizeOp() on newly created nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25401 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
063e765345fd49df0f53b807e57ada7c2ded7e16 17-Jan-2006 Jim Laskey <jlaskey@mac.com> Adding basic support for Dwarf line number debug information.

I promise to keep future commits smaller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25396 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
achineDebugInfo.cpp
electionDAG/LegalizeDAG.cpp
0b118206bf3411722707f2e5cab8fd2eedcd50d6 16-Jan-2006 Reid Spencer <rspencer@reidspencer.com> For PR411:
This patch is an incremental step towards supporting a flat symbol table.
It de-overloads the intrinsic functions by providing type-specific intrinsics
and arranging for automatically upgrading from the old overloaded name to
the new non-overloaded name. Specifically:
llvm.isunordered -> llvm.isunordered.f32, llvm.isunordered.f64
llvm.sqrt -> llvm.sqrt.f32, llvm.sqrt.f64
llvm.ctpop -> llvm.ctpop.i8, llvm.ctpop.i16, llvm.ctpop.i32, llvm.ctpop.i64
llvm.ctlz -> llvm.ctlz.i8, llvm.ctlz.i16, llvm.ctlz.i32, llvm.ctlz.i64
llvm.cttz -> llvm.cttz.i8, llvm.cttz.i16, llvm.cttz.i32, llvm.cttz.i64
New code should not use the overloaded intrinsic names. Warnings will be
emitted if they are used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25366 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
1b5db7aaec8bbe350b1af42ecfe97c73f0e07d0f 16-Jan-2006 Nate Begeman <natebegeman@mac.com> Constant fold ctpop/ctlz/cttz, and a couple other small cleanups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c02d98e335703d8aa51b42d9b22a1fa2ac5d6c33 16-Jan-2006 Nate Begeman <natebegeman@mac.com> Expand case for 64b Legalize, even though no one should end up using this
(itanium supports bswap natively, alpha should custom lower it using the
VAX floating point swapload, ha ha).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e598181889d8ab43c3924799fd310e68571186f1 16-Jan-2006 Nate Begeman <natebegeman@mac.com> Add BSWAP stuff to intrinsic lowering for CBE & friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25355 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
bf40c4bfe1607980ea570ac69bf134cc4e58d0ca 15-Jan-2006 Chris Lattner <sabre@nondot.org> Disable two transformations that contribute to bus errors on SparcV8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25339 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
903d278a9b7398d8905c90832e587e0556c52789 15-Jan-2006 Chris Lattner <sabre@nondot.org> Allow the target to specify 'expand' if they just require the amount to
be subtracted from the stack pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25331 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5f652295c27826f26547cf5eb4096a59d86b56b8 15-Jan-2006 Chris Lattner <sabre@nondot.org> Fix custom lowering of dynamic_stackalloc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25329 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cc0aad20dd1bac26f7da21fb9720df76cc3c26e7 15-Jan-2006 Chris Lattner <sabre@nondot.org> add a missing node name


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25327 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c0ab5226cc92b8d33104374a21896b8331f3fee1 14-Jan-2006 Chris Lattner <sabre@nondot.org> Token chain results are not always the first or last result. Consider copyfromreg nodes, where they are the middle result (the flag result is last)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25325 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3a04ffbf6daa66e489aaf29f6c9c728d7272d8a8 14-Jan-2006 Nate Begeman <natebegeman@mac.com> Remove some duplicated code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25313 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d88fc03602947b5baa35c8b09fe8bcfa2b4a03c1 14-Jan-2006 Nate Begeman <natebegeman@mac.com> bswap implementation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25312 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
4f0d8e4018d50c5796660a4fa167763f46259646 13-Jan-2006 Chris Lattner <sabre@nondot.org> If a target specified a stack pointer with setStackPointerRegisterToSaveRestore,
lower STACKSAVE/STACKRESTORE into a copy from/to that register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25276 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
140d53c99c3a70b9d3858a3c87f8ecb098994748 13-Jan-2006 Chris Lattner <sabre@nondot.org> Compile llvm.stacksave/restore into STACKSAVE/STACKRESTORE nodes, and allow
targets to custom expand them as they desire.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
5a67afc118d47a0061ca9809c763451ea3125306 13-Jan-2006 Chris Lattner <sabre@nondot.org> add stacksave/stackrestore nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25270 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e8f7a4bbee5b29d0c94120e7e24365113758f0a2 13-Jan-2006 Chris Lattner <sabre@nondot.org> Add "support" for stacksave/stackrestore to the dag isel


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25268 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0c067bc11d5274973c21f83b6c6403a9928265d8 13-Jan-2006 Chris Lattner <sabre@nondot.org> Add "support" for the llvm.stacksave/stackrestore intrinsics, this is
used by the C backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25267 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
4aafb4ff92ee6b5372aaaa51845445f2418a7fd1 12-Jan-2006 Chris Lattner <sabre@nondot.org> Add a simple missing fold to produce this:

subfic r3, r2, 33

instead of this:

subfic r2, r2, 32
addi r3, r2, 1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5166b82866085db7ecb8a3fef790232faeec74ed 12-Jan-2006 Chris Lattner <sabre@nondot.org> If using __main, emit global ctor/dtor list like any other global


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25251 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
af551bcf6be6c2c44b1b5dac5573c58bdc3da972 12-Jan-2006 Chris Lattner <sabre@nondot.org> Don't create rotate instructions in unsupported types, because we don't have
promote/expand code yet. This fixes the 177.mesa failure on PPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25250 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a7dce3c6c29fb9513d215c1bc44b01865571b4c2 11-Jan-2006 Evan Cheng <evan.cheng@apple.com> Allow custom lowering of DYNAMIC_STACKALLOC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25224 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
140e99babce85d0a54fc5df7bdec4603e718ccb9 11-Jan-2006 Evan Cheng <evan.cheng@apple.com> ignore register #0


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25223 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
35ef913ec21de0f4f1b39c811b4335438717a9b8 11-Jan-2006 Nate Begeman <natebegeman@mac.com> Add bswap, rotl, and rotr nodes
Add dag combiner code to recognize rotl, rotr
Add ppc code to match rotl

Targets should add rotl/rotr patterns if they have them


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25222 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
269f8c069105e13f3845a8dbc7796ac9a15dc882 10-Jan-2006 Chris Lattner <sabre@nondot.org> silence a warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25184 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c0f4cd99316b0b9ae10b5774d1036d74d838f0af 10-Jan-2006 Robert Bocchino <bocchino@illinois.edu> Added selection DAG support for the extractelement operation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25179 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
60d97d4f55b6bd51179eba3388c95d5ec6942ec8 10-Jan-2006 Chris Lattner <sabre@nondot.org> Minor cleanup, no functionality change for current targets


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25173 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
de387ce81024f9be0ca523e9487b1aafeb95fa22 10-Jan-2006 Chris Lattner <sabre@nondot.org> Fix an exponential function in libcall insertion to not be exponential. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
05a2d568c60b8d547a5ac78f99107c476e6612b5 09-Jan-2006 Evan Cheng <evan.cheng@apple.com> * Allow custom lowering of ADD_PARTS, SUB_PARTS, SHL_PARTS, SRA_PARTS,
and SRL_PARTS.
* Fix a bug that caused *_PARTS to be custom lowered twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25157 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
909addffc3c9391dfda2c67b7c05eeb42259eb90 09-Jan-2006 Evan Cheng <evan.cheng@apple.com> New getNode() variants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25156 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
47f5beaaaf41ffa2db51da6f99314474be6aca7d 06-Jan-2006 Chris Lattner <sabre@nondot.org> Unbreak the build :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25124 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6907708c23303703c6f89e055d1c204c5abb27a5 06-Jan-2006 Evan Cheng <evan.cheng@apple.com> Revert the previous check-in. Leave shl x, 1 along for target to deal with.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25121 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
da95a84a11e684072ea25fbb9830e769039fd985 06-Jan-2006 Evan Cheng <evan.cheng@apple.com> fold (shl x, 1) -> (add x, x)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25120 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
17c428e23dbeac1f985d725905ce6be1c725491f 06-Jan-2006 Evan Cheng <evan.cheng@apple.com> Support for custom lowering of ISD::RET.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25116 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
abf6d1784b2d4bbcb7d20ab64881f77d755059f6 05-Jan-2006 Jim Laskey <jlaskey@mac.com> Added initial support for DEBUG_LABEL allowing debug specific labels to be
inserted in the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25104 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
b2efb853f00d45b1c8d57f92acd0028fbdeffda6 04-Jan-2006 Jim Laskey <jlaskey@mac.com> Applied some recommend changes from sabre. The dominate one beginning "let the
pass manager do it's thing." Fixes crash when compiling -g files and suppresses
dwarf statements if no debug info is present.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25100 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
achineDebugInfo.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
5bf6f25b4a888afaf3e37acd18c43186d45cac2e 04-Jan-2006 Jim Laskey <jlaskey@mac.com> Add unique id to debug location for debug label use (work in progress.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25096 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
7d78a2ab7e3575561a15abd5bd386ea4a0301b23 04-Jan-2006 Jim Laskey <jlaskey@mac.com> Add check for debug presence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25095 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
a7cea6f599418a579ab5ce66413fba7efa8bf581 04-Jan-2006 Jim Laskey <jlaskey@mac.com> Tie dwarf generation to darwin assembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25093 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
warfWriter.cpp
f99c232506f134107f9ae02c118fe31685e6b06c 04-Jan-2006 Jim Laskey <jlaskey@mac.com> Moving MachineDebugInfo to module level location.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25090 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
7ca9ab3f5c1e9f2b1d4ded2389373ec672da217a 04-Jan-2006 Jim Laskey <jlaskey@mac.com> Change how MachineDebugInfo is fetched.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25089 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6af5681824713544a7a8c6e115649b29d59b3d13 04-Jan-2006 Jim Laskey <jlaskey@mac.com> Extending MachineDebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25086 91177308-0d34-0410-b5e6-96231b3b80d8
achineDebugInfo.cpp
2adfa7e9320e79859beb556367ea607a329866b3 04-Jan-2006 Chris Lattner <sabre@nondot.org> Add support for targets (like Alpha) that have terminator instructions which
use virtual registers. We now allow the first instruction in a block of
terminators to use virtual registers, and update phi elimination to correctly
update livevar when eliminating phi's. This fixes a problem on a testcase
Andrew sent me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25083 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
172c362fefe3d6e762ada119d4084ed4ed31595b 04-Jan-2006 Chris Lattner <sabre@nondot.org> Add an assertion, update DefInst even though no one uses it (dangling pointers
don't help anyone)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25081 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
irtRegMap.cpp
dacceef2666d37eb984c6f5e0a84cdabab8dfffc 04-Jan-2006 Chris Lattner <sabre@nondot.org> Add a LiveVariables::VarInfo::dump method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25080 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
3b9db830f7f0ed33af13459be3fd60ebe01a13ca 03-Jan-2006 Chris Lattner <sabre@nondot.org> Change a variable from being an iterator to a raw MachineInstr*, to make
GDB use tolerable


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25064 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
512beb9465ec9d22de6352eee4339e8295bfb79b 30-Dec-2005 Nate Begeman <natebegeman@mac.com> Make sure to pass the offset into the new node, so that we don't silently
drop it on the floor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25044 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f65d917f71690dfc0e10f8d8d7672f3c2a84837e 29-Dec-2005 Duraid Madina <duraid@octopus.com.au> purity++


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25041 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
2e096c1cbf83c3d6405f74481cb7880ba02cf092 28-Dec-2005 Duraid Madina <duraid@octopus.com.au> add these so I can be less naughty


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25034 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
LFWriter.cpp
3005961701ca5f08b3a4945e45123a373fd47582 28-Dec-2005 Duraid Madina <duraid@octopus.com.au> HB is *the* code janitor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25031 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
8c7bd3615a8722d981a1a7e8a6a2dd3b1d56ef4d 28-Dec-2005 Duraid Madina <duraid@octopus.com.au> mixed-STL programs are big and nasty :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25030 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
57030e36e41ebd982a24632e7cea5b584b2d49fc 25-Dec-2005 Andrew Lenharth <andrewl@lenharth.org> allow custom lowering to return null for legal results


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25007 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e8f65f1e62ea1d4f2ca9fd0137ae2e0ce20e26e1 25-Dec-2005 Andrew Lenharth <andrewl@lenharth.org> Support Custom lowering of a few more operations.
Alpha needs to custom lower *DIV and *REM


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25006 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d6e8d4134022a3b451439a631b41744e9e07c034 23-Dec-2005 Jim Laskey <jlaskey@mac.com> Remove redundant debug locations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c26f7a033f5416f216ef08929cbc8cb8df509ef3 23-Dec-2005 Chris Lattner <sabre@nondot.org> unbreak the build :-/


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f3fd9fe20dbcb40f3dffc1518ab955a0b5d6fa23 23-Dec-2005 Evan Cheng <evan.cheng@apple.com> Allow custom lowering of LOAD, EXTLOAD, ZEXTLOAD, STORE, and TRUNCSTORE. Not
currently used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24988 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c33baaafb6fb59eb4077f7b2cadff6cf743ce605 23-Dec-2005 Chris Lattner <sabre@nondot.org> Simplify store(bitconv(x)) to store(x). This allows us to compile this:

void bar(double Y, double *X) {
*X = Y;
}

to this:

bar:
save -96, %o6, %o6
st %i1, [%i2+4]
st %i0, [%i2]
restore %g0, %g0, %g0
retl
nop

instead of this:

bar:
save -104, %o6, %o6
st %i1, [%i6+-4]
st %i0, [%i6+-8]
ldd [%i6+-8], %f0
std %f0, [%i2]
restore %g0, %g0, %g0
retl
nop

on sparcv8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24983 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5710410deaceab136878e73dc48b6d468cff9701 23-Dec-2005 Chris Lattner <sabre@nondot.org> fold (conv (load x)) -> (load (conv*)x).

This allows us to compile this:
void foo(double);
void bar(double *X) { foo(*X); }

To this:

bar:
save -96, %o6, %o6
ld [%i0+4], %o1
ld [%i0], %o0
call foo
nop
restore %g0, %g0, %g0
retl
nop

instead of this:

bar:
save -104, %o6, %o6
ldd [%i0], %f0
std %f0, [%i6+-8]
ld [%i6+-4], %o1
ld [%i6+-8], %o0
call foo
nop
restore %g0, %g0, %g0
retl
nop

on SparcV8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24982 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c8547d856d3459a61ca9e35b5342288fe626c295 23-Dec-2005 Chris Lattner <sabre@nondot.org> Fold bitconv(bitconv(x)) -> x. We now compile this:

void foo(double);
void bar(double X) { foo(X); }

to this:

bar:
save -96, %o6, %o6
or %g0, %i0, %o0
or %g0, %i1, %o1
call foo
nop
restore %g0, %g0, %g0
retl
nop

instead of this:

bar:
save -112, %o6, %o6
st %i1, [%i6+-4]
st %i0, [%i6+-8]
ldd [%i6+-8], %f0
std %f0, [%i6+-16]
ld [%i6+-12], %o1
ld [%i6+-16], %o0
call foo
nop
restore %g0, %g0, %g0
retl
nop

on V8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24981 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
94683777aee436a0e5f12e08a4b3827a11265fb2 23-Dec-2005 Chris Lattner <sabre@nondot.org> constant fold bits_convert in getNode and in the dag combiner for fp<->int
conversions. This allows V8 to compiles this:

void %test() {
call float %test2( float 1.000000e+00, float 2.000000e+00, double 3.000000e+00, double* null )
ret void
}

into:

test:
save -96, %o6, %o6
sethi 0, %o3
sethi 1049088, %o2
sethi 1048576, %o1
sethi 1040384, %o0
or %g0, %o3, %o4
call test2
nop
restore %g0, %g0, %g0
retl
nop

instead of:

test:
save -112, %o6, %o6
sethi 0, %o4
sethi 1049088, %l0
st %o4, [%i6+-12]
st %l0, [%i6+-16]
ld [%i6+-12], %o3
ld [%i6+-16], %o2
sethi 1048576, %o1
sethi 1040384, %o0
call test2
nop
restore %g0, %g0, %g0
retl
nop


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24980 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
232348d66fcfe8f42f8b14cfacd2df3d00d2596e 23-Dec-2005 Chris Lattner <sabre@nondot.org> Fix a pasto


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24973 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ed7b5babfbdc708c564266052ad3b0ce0a5726c5 23-Dec-2005 Chris Lattner <sabre@nondot.org> fix a thinko in the bit_convert handling code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24972 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
35481892da1e5634bf497c8a0cabb1bb5a8b8fef 23-Dec-2005 Chris Lattner <sabre@nondot.org> add very simple support for the BIT_CONVERT node


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24970 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
0fcd40f501d99ce50b23f67e578a37f0943dec36 22-Dec-2005 Chris Lattner <sabre@nondot.org> remove dead code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24965 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
1ccf26a6392034a11827aeaa0d58d025ecb2b85a 22-Dec-2005 Chris Lattner <sabre@nondot.org> The 81st column doesn't like code in it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24943 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
780c861733efa4533a77aa41d02af95920cfd0a4 22-Dec-2005 Reid Spencer <rspencer@reidspencer.com> Add an eol at the end to shut gcc sup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24926 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
ff9be11da215602358e9358c3ff2d7d08c319bab 22-Dec-2005 Evan Cheng <evan.cheng@apple.com> Lefted out TargetLowering::


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
3a03ebb37747c2b3fd9b4f8b44f1124f53727894 22-Dec-2005 Evan Cheng <evan.cheng@apple.com> * Fix a GlobalAddress lowering bug.
* Teach DAG combiner about X86ISD::SETCC by adding a TargetLowering hook.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24921 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
e81aecbae69d4b3bd24523ec87673632d3b0beec 21-Dec-2005 Jim Laskey <jlaskey@mac.com> Disengage DEBUG_LOC from non-PPC targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24919 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
d5781fca4f8f98863560338d4f8d017389428119 21-Dec-2005 Evan Cheng <evan.cheng@apple.com> * Added support for X86 RET with an additional operand to specify number of
bytes to pop off stack.
* Added support for X86 SETCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e503289977f3acb5055d03dc2c137eb832397fa7 21-Dec-2005 Jim Laskey <jlaskey@mac.com> Start of Dwarf framework.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24914 91177308-0d34-0410-b5e6-96231b3b80d8
warfWriter.cpp
f9dee6a0473db4f3713bf40c7408fa30578ac141 21-Dec-2005 Chris Lattner <sabre@nondot.org> make sure to relegalize all cases


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24911 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9797c5cc3ebc2c78ff30866ce0650d87ea02946c 21-Dec-2005 Chris Lattner <sabre@nondot.org> enable the gep isel opt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24910 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
83397363348662e9352455ea1e6e88e7026300a4 21-Dec-2005 Chris Lattner <sabre@nondot.org> fix a bug I introduced that broke recursive expansion of nodes (e.g. scalarizing vectors)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24905 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3b841e9f52611c1f92c60f979c775adf2c1fe22d 21-Dec-2005 Chris Lattner <sabre@nondot.org> Lower ConstantAggregateZero into zeros


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24890 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8de324b59ce81cfb4202c706c96a3140f52e00c0 21-Dec-2005 Chris Lattner <sabre@nondot.org> Don't emit a null terminator, nor anything after it, to the ctor/dtor list


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24887 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
7226158d7e3986e55b58214a749aa4eabb3fb6d5 20-Dec-2005 Evan Cheng <evan.cheng@apple.com> Added a hook to print out names of target specific DAG nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24877 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/TargetLowering.cpp
69a889eb35d59a10e78a07cc26d41cbab31eddce 20-Dec-2005 Chris Lattner <sabre@nondot.org> Fix a nasty latent bug in the legalizer that was triggered by my patch
last night, breaking crafty and twolf. Make sure that the newly found
legal nodes are themselves not re-legalized until the next iteration.

Also, since this functionality exists now, we can reduce number of legalizer
iterations by depending on this behavior instead of having to misuse 'do
another iteration' to get the same effect.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24875 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
898101c15fa11a896deb4e2fcb73b4727e1dcc1f 20-Dec-2005 Evan Cheng <evan.cheng@apple.com> X86 conditional branch support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24870 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
115c036a4c83cd277ffac0867a21b34f63829db7 20-Dec-2005 Evan Cheng <evan.cheng@apple.com> Print out opcode number if it's an unknown target node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24869 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9f8cc69009468a5096e32e897060ee0b5b9dddd8 19-Dec-2005 Chris Lattner <sabre@nondot.org> Fix a case where the DAG Combiner would accidentally CSE flag-producing nodes,
creating graphs that cannot be scheduled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d845582d4a4b866513f6e3b656dc80d59dc9c05b 19-Dec-2005 Jim Laskey <jlaskey@mac.com> Amend comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24861 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
de48ee28a319f3990dcaac637b6dad78d48ab61f 19-Dec-2005 Jim Laskey <jlaskey@mac.com> Create a strong dependency for loads following stores. This will leave a
latency period between the two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24860 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
e773673d8e0094bbff2f9ab2f2da9ecb5c4d0909 19-Dec-2005 Chris Lattner <sabre@nondot.org> Make sure to relegalize new nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24843 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
18840db533de12aaabbc3b7bdce7a4d1688f323e 18-Dec-2005 Jeff Cohen <jeffc@jolt-lang.org> Keep VC++ happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24835 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
f1a47c3371ecd5bb449f39736a36ebbebd4e9e14 18-Dec-2005 Chris Lattner <sabre@nondot.org> More corrections for flagged copyto/from reg


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24828 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7310fb11f2a074069bf9ec3fc169c742ac48d32b 18-Dec-2005 Chris Lattner <sabre@nondot.org> legalize copytoreg and copyfromreg nodes that have flag operands correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24826 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bd2b6214862ccc33d3bb63005faa15c16ee51c49 18-Dec-2005 Jim Laskey <jlaskey@mac.com> Fix a bug Sabre was having where the DAG root was a group. The group dominator
needed to be added to the ordering list, not the first member of the group.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24816 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
9022ed955adc8ecdc8ebf19bb05efea924d1ad0e 18-Dec-2005 Jim Laskey <jlaskey@mac.com> Groups were not emitted if the dominator node and the node in the ordering list
were not the same node. Ultimately the test was bogus.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24815 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
a5282d8df2fe5253b274c97de2617a7c141c5ca8 18-Dec-2005 Chris Lattner <sabre@nondot.org> Simplify code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24806 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
181b7a382fbdd3d03ce373a6ffac2204e763f9c3 18-Dec-2005 Chris Lattner <sabre@nondot.org> allow custom expansion of BR_CC


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24804 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7df96d66729d1f33934de7b52553e5f071686041 17-Dec-2005 Evan Cheng <evan.cheng@apple.com> X86 lowers SELECT to a cmp / test followed by a conditional move.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24754 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f5395cee6a24699a016b2e379cf4804b09ce5030 16-Dec-2005 Jim Laskey <jlaskey@mac.com> Added source file/line correspondence for dwarf (PowerPC only at this point.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24748 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
d0f6d18aa896a6c37f26e2d947d24d8ec95f1164 15-Dec-2005 Chris Lattner <sabre@nondot.org> Don't create SEXTLOAD/ZEXTLOAD instructions that the target doesn't support
if after legalize. This fixes IA64 failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24725 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d4771840fd59654becb989675fbc0d0dc54c6dd4 14-Dec-2005 Chris Lattner <sabre@nondot.org> When folding loads into ops, immediately replace uses of the op with the
load. This reduces number of worklist iterations and avoid missing optimizations
depending on folding of things into sext_inreg nodes (which aren't supported by
all targets).
Tested by Regression/CodeGen/X86/extend.ll:test2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24712 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ad25d4e2df3fe01541d62ab0fd22c7de22ce3a42 14-Dec-2005 Chris Lattner <sabre@nondot.org> Fix the (zext (zextload)) case to trigger, similarly for sign extends.
Allow (zext (truncate)) to apply after legalize if the target supports
AND (which all do).

This compiles
short %foo() {
%tmp.0 = load ubyte* %X ; <ubyte> [#uses=1]
%tmp.3 = cast ubyte %tmp.0 to short ; <short> [#uses=1]
ret short %tmp.3
}

to:
_foo:
movzbl _X, %eax
ret

instead of:

_foo:
movzbl _X, %eax
movzbl %al, %eax
ret

thanks to Evan for pointing this out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24709 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
00cb95c9bef6b4d96994112422d9d66679dfe986 14-Dec-2005 Chris Lattner <sabre@nondot.org> Fix a miscompilation in crafty due to a recent patch


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24706 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
110dec20008c94216a486f5c0d2eba30cbc2deef 14-Dec-2005 Evan Cheng <evan.cheng@apple.com> Fold (zext (load x) to (zextload x).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24702 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
86cb643801be1308ba1da7db774b64852a119e94 13-Dec-2005 Chris Lattner <sabre@nondot.org> Don't lump the filename and working dir together


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24697 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ed13893ff729bc3b91697f6d80a3ba303782efcc 13-Dec-2005 Chris Lattner <sabre@nondot.org> Add a couple more fields, move ctor init list to .cpp file, add support
for emitting the ctor/dtor list for common targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24694 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
d7d746f60337684310fcd985d4466edd6a5980ac 13-Dec-2005 Nate Begeman <natebegeman@mac.com> Lowering constant pool entries on ppc exposed a bug in the recently added
ConstantVec legalizing code, which would return constantpool nodes that
were not of the target's pointer type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24691 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ac22c83e6853c759a10eb7310b019b22e1d42d16 12-Dec-2005 Chris Lattner <sabre@nondot.org> Accept and ignore prefetches for now


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24678 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
58f7963b8b3cb8894623a7d7663cc54005fea8f9 12-Dec-2005 Chris Lattner <sabre@nondot.org> Fix CodeGen/Generic/2005-12-12-ExpandSextInreg.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3802c2552fe4475418db3c948e7601d7259f996d 11-Dec-2005 Chris Lattner <sabre@nondot.org> Minor tweak to get isel opt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24663 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
28a6b02626c29b1fe9bb16c14c193549fab4cab8 10-Dec-2005 Nate Begeman <natebegeman@mac.com> Add support for TargetConstantPool nodes to the dag isel emitter, and use
them in the PPC backend, to simplify some logic out of Select and
SelectAddr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24657 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7038daf34272d58da160989dd97f0bce39f5b0b1 10-Dec-2005 Evan Cheng <evan.cheng@apple.com> Added new getNode and getTargetNode variants for X86 stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24653 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
42a80fedad12fbdc585909762f2284268e5619a8 09-Dec-2005 Chris Lattner <sabre@nondot.org> Avoid emitting two tabs when switching to a named section


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
5e3c5b4e13d45d631cddf42176b380f64fde918f 09-Dec-2005 Chris Lattner <sabre@nondot.org> Teach legalize how to promote sext_inreg to fix a problem Andrew pointed
out to me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24644 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c78b0b740bcf2e00a8871090709c3571fe442f07 08-Dec-2005 Chris Lattner <sabre@nondot.org> improve code insertion in two ways:
1. Only forward subst offsets into loads and stores, not into arbitrary
things, where it will likely become a load.
2. If the source is a cast from pointer, forward subst the cast as well,
allowing us to fold the cast away (improving cases when the cast is
from an alloca or global).

This hasn't been fully tested, but does appear to further reduce register
pressure and improve code. Lets let the testers grind on it a bit. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24640 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cc827e60b67b2cbcf08a37b119e68081e4171b8a 07-Dec-2005 Nate Begeman <natebegeman@mac.com> Fix a crash where ConstantVec nodes were being generated with the wrong
type when the target did not support them. Also teach Legalize how to
expand ConstantVecs.

This allows us to generate

_test:
lwz r2, 12(r3)
lwz r4, 8(r3)
lwz r5, 4(r3)
lwz r6, 0(r3)
addi r2, r2, 4
addi r4, r4, 3
addi r5, r5, 2
addi r6, r6, 1
stw r2, 12(r3)
stw r4, 8(r3)
stw r5, 4(r3)
stw r6, 0(r3)
blr

For:

void %test(%v4i *%P) {
%T = load %v4i* %P
%S = add %v4i %T, <int 1, int 2, int 3, int 4>
store %v4i %S, %v4i * %P
ret void
}

On PowerPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24633 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
cc2210b4fa9debfaafa2d385549b0c30448e9c12 07-Dec-2005 Chris Lattner <sabre@nondot.org> Only transform (sext (truncate x)) -> (sextinreg x) if before legalize or
if the target supports the resultant sextinreg


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
b14ab8a10d7955501ec80b247b2510bbd2511b12 07-Dec-2005 Chris Lattner <sabre@nondot.org> Teach the dag combiner to turn a truncate/sign_extend pair into a sextinreg
when the types match up. This allows the X86 backend to compile:

sbyte %toggle_value(sbyte* %tmp.1) {
%tmp.2 = load sbyte* %tmp.1
ret sbyte %tmp.2
}

to this:

_toggle_value:
mov %EAX, DWORD PTR [%ESP + 4]
movsx %EAX, BYTE PTR [%EAX]
ret

instead of this:

_toggle_value:
mov %EAX, DWORD PTR [%ESP + 4]
movsx %EAX, BYTE PTR [%EAX]
movsx %EAX, %AL
ret

noticed in Shootout/objinst.

-Chris


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8cfa57b1b4eade4e0101195b2f94ab288cd03563 06-Dec-2005 Nate Begeman <natebegeman@mac.com> Teach the SelectionDAG ISel how to turn ConstantPacked values into
constant nodes with vector types. Also teach the asm printer how to print
ConstantPacked constant pool entries. This allows us to generate altivec
code such as the following, which adds a vector constantto a packed float.

LCPI1_0: <4 x float> < float 0.0e+0, float 0.0e+0, float 0.0e+0, float 1.0e+0 >
.space 4
.space 4
.space 4
.long 1065353216 ; float 1
.text
.align 4
.globl _foo
_foo:
lis r2, ha16(LCPI1_0)
la r2, lo16(LCPI1_0)(r2)
li r4, 0
lvx v0, r4, r2
lvx v1, r4, r3
vaddfp v0, v1, v0
stvx v0, r4, r3
blr

For the llvm code:

void %foo(<4 x float> * %a) {
entry:
%tmp1 = load <4 x float> * %a;
%tmp2 = add <4 x float> %tmp1, < float 0.0, float 0.0, float 0.0, float 1.0 >
store <4 x float> %tmp2, <4 x float> *%a
ret void
}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24616 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
c88d8e944dae71e31595b8ae264668e68db6b8ed 05-Dec-2005 Chris Lattner <sabre@nondot.org> Fix the #1 code quality problem that I have seen on X86 (and it also affects
PPC and other targets). In a particular, consider code like this:

struct Vector3 { double x, y, z; };
struct Matrix3 { Vector3 a, b, c; };
double dot(Vector3 &a, Vector3 &b) {
return a.x * b.x + a.y * b.y + a.z * b.z;
}
Vector3 mul(Vector3 &a, Matrix3 &b) {
Vector3 r;
r.x = dot( a, b.a );
r.y = dot( a, b.b );
r.z = dot( a, b.c );
return r;
}
void transform(Matrix3 &m, Vector3 *x, int n) {
for (int i = 0; i < n; i++)
x[i] = mul( x[i], m );
}

we compile transform to a loop with all of the GEP instructions for indexing
into 'm' pulled out of the loop (9 of them). Because isel occurs a bb at a time
we are unable to fold the constant index into the loads in the loop, leading to
PPC code that looks like this:

LBB3_1: ; no_exit.preheader
li r2, 0
addi r6, r3, 64 ;; 9 values live across the loop body!
addi r7, r3, 56
addi r8, r3, 48
addi r9, r3, 40
addi r10, r3, 32
addi r11, r3, 24
addi r12, r3, 16
addi r30, r3, 8
LBB3_2: ; no_exit
lfd f0, 0(r30)
lfd f1, 8(r4)
fmul f0, f1, f0
lfd f2, 0(r3) ;; no constant indices folded into the loads!
lfd f3, 0(r4)
lfd f4, 0(r10)
lfd f5, 0(r6)
lfd f6, 0(r7)
lfd f7, 0(r8)
lfd f8, 0(r9)
lfd f9, 0(r11)
lfd f10, 0(r12)
lfd f11, 16(r4)
fmadd f0, f3, f2, f0
fmul f2, f1, f4
fmadd f0, f11, f10, f0
fmadd f2, f3, f9, f2
fmul f1, f1, f6
stfd f0, 0(r4)
fmadd f0, f11, f8, f2
fmadd f1, f3, f7, f1
stfd f0, 8(r4)
fmadd f0, f11, f5, f1
addi r29, r4, 24
stfd f0, 16(r4)
addi r2, r2, 1
cmpw cr0, r2, r5
or r4, r29, r29
bne cr0, LBB3_2 ; no_exit

uh, yuck. With this patch, we now sink the constant offsets into the loop, producing
this code:

LBB3_1: ; no_exit.preheader
li r2, 0
LBB3_2: ; no_exit
lfd f0, 8(r3)
lfd f1, 8(r4)
fmul f0, f1, f0
lfd f2, 0(r3)
lfd f3, 0(r4)
lfd f4, 32(r3) ;; much nicer.
lfd f5, 64(r3)
lfd f6, 56(r3)
lfd f7, 48(r3)
lfd f8, 40(r3)
lfd f9, 24(r3)
lfd f10, 16(r3)
lfd f11, 16(r4)
fmadd f0, f3, f2, f0
fmul f2, f1, f4
fmadd f0, f11, f10, f0
fmadd f2, f3, f9, f2
fmul f1, f1, f6
stfd f0, 0(r4)
fmadd f0, f11, f8, f2
fmadd f1, f3, f7, f1
stfd f0, 8(r4)
fmadd f0, f11, f5, f1
addi r6, r4, 24
stfd f0, 16(r4)
addi r2, r2, 1
cmpw cr0, r2, r5
or r4, r6, r6
bne cr0, LBB3_2 ; no_exit

This is much nicer as it reduces register pressure in the loop a lot. On X86,
this takes the function from having 9 spilled registers to 2. This should help
some spec programs on X86 (gzip?)

This is currently only enabled with -enable-gep-isel-opt to allow perf testing
tonight.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24606 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d67b3a8bf75d4d3c50263960a9375e6856588f2c 03-Dec-2005 Chris Lattner <sabre@nondot.org> dbg.stoppoint returns a value, don't forget to init it


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24583 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cde0f5cfe7b7e0a73708c0db29dcfc0d00294e98 02-Dec-2005 Andrew Lenharth <andrewl@lenharth.org> bah, must generate all results


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
49c709f891a3e49db58b56ca94eafa98cbb12c4d 02-Dec-2005 Andrew Lenharth <andrewl@lenharth.org> cycle counter fix


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24573 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fe14b34d83c085e6b7d46e915fdd9c21344e323b 02-Dec-2005 Chris Lattner <sabre@nondot.org> Don't remove two operand, two result nodes from the binary ops map. These
should come from the arbitrary ops map.

This fixes Regression/CodeGen/PowerPC/2005-12-01-Crash.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24571 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9ad17c9c9abfd6e011751d2fd2b03448e1dccb71 01-Dec-2005 Chris Lattner <sabre@nondot.org> Promote line and column number information for our friendly 64-bit targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24568 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c5e6c649b5856c8f02726de014fa3d415a0cb87b 01-Dec-2005 Chris Lattner <sabre@nondot.org> This is a bugfix for SelectNodeTo. In certain situations, we could be
selecting a node and use a mix of getTargetNode() and SelectNodeTo. Because
SelectNodeTo didn't check the CSE maps for a preexisting node and didn't insert
its result into the CSE maps, we would sometimes miss a CSE opportunity.

This is extremely rare, but worth fixing for completeness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24565 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6510b22cec7de4f0acc9965ec24c3668a6a8a87e 01-Dec-2005 Nate Begeman <natebegeman@mac.com> Support multiple ValueTypes per RegisterClass, needed for upcoming vector
work. This change has no effect on generated code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24563 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
eb19e40efbd3cae80c908a30cdf4d33450733c45 30-Nov-2005 Chris Lattner <sabre@nondot.org> Make SelectNodeTo return N


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c85a9f37e92f972467962c82c08cc083c344243f 30-Nov-2005 Chris Lattner <sabre@nondot.org> CALLSEQ_START/END nodes don't get memoized, do not add them in when
replaceAllUses'ing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24539 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ae35575957a3ab446e2766aa05d03020ced27d14 30-Nov-2005 Andrew Lenharth <andrewl@lenharth.org> At long last, you can say that f32 isn't supported for setcc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24537 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f43a3ca26d7bf431be5cdfb5963350a158e840af 30-Nov-2005 Nate Begeman <natebegeman@mac.com> First chunk of actually generating vector code for packed types. These
changes allow us to generate the following code:

_foo:
li r2, 0
lvx v0, r2, r3
vaddfp v0, v0, v0
stvx v0, r2, r3
blr

for this llvm:

void %foo(<4 x float>* %a) {
entry:
%tmp1 = load <4 x float>* %a
%tmp2 = add <4 x float> %tmp1, %tmp1
store <4 x float> %tmp2, <4 x float>* %a
ret void
}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24534 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5b5b8c27556e5dc8792e37436e4ddd7ab157192d 30-Nov-2005 Andrew Lenharth <andrewl@lenharth.org> add support for custom lowering SINT_TO_FP


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24531 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6ff7240a5c484af6e42e2ba6a6d7e03ddf844922 30-Nov-2005 Reid Spencer <rspencer@reidspencer.com> Fix a problem with llvm-ranlib that (on some platforms) caused the archive
file to become corrupted due to interactions between mmap'd memory segments
and file descriptors closing. The problem is completely avoiding by using
a third temporary file.

Patch provided by Evan Jones


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24527 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
14229bb6369c110644c11bc7906b0c1167d3a87a 30-Nov-2005 Evan Cheng <evan.cheng@apple.com> Fixed a bug introduced by my last commit: TargetGlobalValues should key on
GlobalValue * and index pair. Update getGlobalAddress() for symmetry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24524 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
61ca74bc3a29b2af2be7e4bd612289da8aae85b5 30-Nov-2005 Evan Cheng <evan.cheng@apple.com> Added an index field to GlobalAddressSDNode so it can represent X+12, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24523 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
36ce69195ed488034d0bb11180cc2ebd923679c8 29-Nov-2005 Chris Lattner <sabre@nondot.org> Add support for a new STRING and LOCATION node for line number support, patch
contributed by Daniel Berlin, with a few cleanups here and there by me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24515 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
6a648614e88586e85a36ceb5c1d3b84e4f55b458 29-Nov-2005 Nate Begeman <natebegeman@mac.com> Add the majority of the vector machien value types we expect to support,
and make a few changes to the legalization machinery to support more than
16 types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24511 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/TargetLowering.cpp
ab48be377298bd509427a29e174cf4e305138819 22-Nov-2005 Nate Begeman <natebegeman@mac.com> Check in code to scalarize arbitrarily wide packed types for some simple
vector operations (load, add, sub, mul).

This allows us to codegen:
void %foo(<4 x float> * %a) {
entry:
%tmp1 = load <4 x float> * %a;
%tmp2 = add <4 x float> %tmp1, %tmp1
store <4 x float> %tmp2, <4 x float> *%a
ret void
}

on ppc as:
_foo:
lfs f0, 12(r3)
lfs f1, 8(r3)
lfs f2, 4(r3)
lfs f3, 0(r3)
fadds f0, f0, f0
fadds f1, f1, f1
fadds f2, f2, f2
fadds f3, f3, f3
stfs f0, 12(r3)
stfs f1, 8(r3)
stfs f2, 4(r3)
stfs f3, 0(r3)
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
4ef3b817fee7ea5be7219e00ab8e15976bfe279f 22-Nov-2005 Nate Begeman <natebegeman@mac.com> Rather than attempting to legalize 1 x float, make sure the SD ISel never
generates it. Make MVT::Vector expand-only, and remove the code in
Legalize that attempts to legalize it.

The plan for supporting N x Type is to continually epxand it in ExpandOp
until it gets down to 2 x Type, where it will be scalarized into a pair of
scalars.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/TargetLowering.cpp
e0b632a5d8940d415e67e3462a8ba5973255cda2 21-Nov-2005 Duraid Madina <duraid@octopus.com.au> I think I know what you meant here, but just to be safe I'll let you
do it. :)

<_sabre_> excuses excuses


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24471 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
3b4fd32a41a90ea67fd09a020d480c20e9c40daf 21-Nov-2005 Chris Lattner <sabre@nondot.org> Allow target to customize directive used to switch to arbitrary section in SwitchSection,
add generic constant pool emitter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24464 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
77bc22866aa212144ceec3590ea2df11585a7f0c 21-Nov-2005 Chris Lattner <sabre@nondot.org> increment the function number in SetupMachineFunction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24461 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
25045bdcda822d63674e2df7e34016536c5d3fa7 21-Nov-2005 Chris Lattner <sabre@nondot.org> Adjust to capitalized asmprinter method names


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24457 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ac28fbd0436dd8b2bc0c071ba150b60bbfca67f3 21-Nov-2005 Chris Lattner <sabre@nondot.org> Add section switching to common code generator code. Add a couple of
asserts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24445 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
iveVariables.cpp
egAllocLinearScan.cpp
308575be66ec3870d27b19df044fda18448feb41 20-Nov-2005 Chris Lattner <sabre@nondot.org> Legalize MERGE_VALUES, expand READCYCLECOUNTER correctly, so it doesn't
break control dependence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24437 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f70e30b41dc6a92733681dcea2c06d8b3dd488db 20-Nov-2005 Andrew Lenharth <andrewl@lenharth.org> The first patch of X86 support for read cycle counter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24429 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6bf234c4a894b898954f8be3fb5973caba241012 20-Nov-2005 Chris Lattner <sabre@nondot.org> more progress towards bug 291 being finished. Patch by Owen Anderson,
HAVE_GV case fixed up by me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24428 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
b67eb9131c5c04d2e55c6b587fde954619feceaf 19-Nov-2005 Chris Lattner <sabre@nondot.org> Unbreak codegen of bools. This should fix the llc/jit/llc-beta failures
from last night.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24427 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3aa2c74e192124244d22aaef857980e16fab49ea 19-Nov-2005 Chris Lattner <sabre@nondot.org> Improve Selection DAG printer portability. Patch by Owen Anderson!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24425 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
44fa764355eec81d8ef8fbd63824695b1554c4ab 19-Nov-2005 Chris Lattner <sabre@nondot.org> Teach the graph viewer to handle register operands that are zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24421 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
b89175feffa7148c05d1d30a8e382b8d321edae5 19-Nov-2005 Chris Lattner <sabre@nondot.org> Silence a bogus warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24420 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0fb094fd60f3762f9031655e0223b3bfa72c5ac2 19-Nov-2005 Chris Lattner <sabre@nondot.org> Add some method variants, patch by Evan Cheng


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24418 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5fbb5d2459a5410590f285250faa604576308a93 19-Nov-2005 Nate Begeman <natebegeman@mac.com> Teach LLVM how to scalarize packed types. Currently, this only works on
packed types with an element count of 1, although more generic support is
coming. This allows LLVM to turn the following code:

void %foo(<1 x float> * %a) {
entry:
%tmp1 = load <1 x float> * %a;
%tmp2 = add <1 x float> %tmp1, %tmp1
store <1 x float> %tmp2, <1 x float> *%a
ret void
}

Into:

_foo:
lfs f0, 0(r3)
fadds f0, f0, f0
stfs f0, 0(r3)
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24416 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
e21ea61588996609f827213a2701a204f2f13fb3 18-Nov-2005 Nate Begeman <natebegeman@mac.com> Split out the shift code from visitBinary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24412 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0c8fbe33a4bdf7c60e0cfd5a9c86499c817d9f1a 17-Nov-2005 Chris Lattner <sabre@nondot.org> Allow targets to custom legalize leaf nodes like GlobalAddress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24387 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b9debbf54c926036d5c22b3e7f0d12c79c1c15a3 17-Nov-2005 Chris Lattner <sabre@nondot.org> Teach legalize about targetglobaladdress


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24385 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b1a5a5c4c0182205b91b962def7b008228a1f7e6 16-Nov-2005 Chris Lattner <sabre@nondot.org> when debugging lower dbg intrinsics to calls


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24377 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
27ecef510f785bc9345e6ddf058cd4f45e05bc4f 15-Nov-2005 Chris Lattner <sabre@nondot.org> Remove extraneous parents around constants when using a constant expr cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24357 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
a1ab72daadbdc5b499ce7e7e97c4b80efad46736 14-Nov-2005 Chris Lattner <sabre@nondot.org> Teach emitAlignment to handle explicit alignment requests by globals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24354 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
06d9b4ab24d1a6aa94fd0c6f24ab8381e1771f93 12-Nov-2005 Jeff Cohen <jeffc@jolt-lang.org> Fix operator precedence bug caught by VC++.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24318 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8b91c77385a055474d271aa8c10f0382fdeaafeb 11-Nov-2005 Andrew Lenharth <andrewl@lenharth.org> added a chain output


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24306 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
51b8d54922350b7e1c2cd5a5183ef2c5f5d1b1d5 11-Nov-2005 Andrew Lenharth <andrewl@lenharth.org> continued readcyclecounter support


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24300 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
ed0c4ecf05e8fed9d76ed649c2dba0a238032a00 10-Nov-2005 Chris Lattner <sabre@nondot.org> nuke blank line


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24278 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
450de393acdf4be89db8558522b04d8111e4562b 10-Nov-2005 Chris Lattner <sabre@nondot.org> Get rid of casts by #including the right header


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24275 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
2a21c6e86101c857d683e7bdefb775654ccab7e3 10-Nov-2005 Chris Lattner <sabre@nondot.org> Compile C strings to:

l1__2E_str_1: ; '.str_1'
.asciz "foo"

not:

.align 0
l1__2E_str_1: ; '.str_1'
.asciz "foo"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24273 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
2980cefb809c60aa1d7dd85adfc2c269f731de88 10-Nov-2005 Chris Lattner <sabre@nondot.org> add support for .asciz, and enable it by default. If your target assemblerdoesn't support .asciz, just set AscizDirective to null in your asmprinter.
This compiles C strings to:

l1__2E_str_1: ; '.str_1'
.asciz "foo"

instead of:

l1__2E_str_1: ; '.str_1'
.ascii "foo\000"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24272 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
de202b3cda00f17ba2c047be7270b51f9585a413 10-Nov-2005 Chris Lattner <sabre@nondot.org> Switch the allnodes list from a vector of pointers to an ilist of nodes.This eliminates the vector, allows constant time removal of a node froma graph, and makes iteration over the all nodes list stable when adding
nodes to the graph.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24263 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
c9ea6fde305b35ab7c9f909ac390d4b53e33d536 09-Nov-2005 Chris Lattner <sabre@nondot.org> Refactor intrinsic lowering stuff out of visitCall


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24261 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
040c11c24e9f6c172eaf680e135d9bb466c284b2 09-Nov-2005 Chris Lattner <sabre@nondot.org> Handle the trivial (but common) two-op case more efficiently


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24259 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e6a88ac1b903206c777fdf85e1c2be4b01175107 09-Nov-2005 Chris Lattner <sabre@nondot.org> Nuke noop copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24258 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
6b2d69655ace2788b244c8a4ebcfb6f2a926ad92 09-Nov-2005 Chris Lattner <sabre@nondot.org> Fix CodeGen/X86/shift-folding.ll:test3 on X86


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24256 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
9a5ef20f5ed0551e02e4e6d7a41185a52187f5cf 09-Nov-2005 Chris Lattner <sabre@nondot.org> Disable some overly-aggressive checking code. This speeds up the local
allocator from 23s to 11s on kc++ in debug mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24255 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
7436b57de32333cc337b8c7cea208c8863eee793 09-Nov-2005 Chris Lattner <sabre@nondot.org> Avoid creating a token factor node in trivially redundant cases. This
eliminates almost one node per block in common cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7c0104b525a4ba8b5268ee5455f92b011f7cc263 09-Nov-2005 Chris Lattner <sabre@nondot.org> Handle GEP's a bit more intelligently. Fold constant indices early and
turn power-of-two multiplies into shifts early to improve compile time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24253 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0d902a9c740bdaa57396547f26a02c234752c579 09-Nov-2005 Chris Lattner <sabre@nondot.org> Allocate the right amount of memory for this vector up front.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24252 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a32551197ab7f39bb2bff8cee24ecf70c2a40f6f 09-Nov-2005 Chris Lattner <sabre@nondot.org> Change the ValueList array for each node to be shared instead of individuallyallocated. Further, in the common case where a node has a single value, justreference an element from a small array. This is a small compile-time win.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24251 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
65113b2f86ac0b714f3f580beb886d42c988c5b6 08-Nov-2005 Chris Lattner <sabre@nondot.org> Switch the operandlist/valuelist from being vectors to being just an array.This saves 12 bytes from SDNode, but doesn't speed things up substantially
(our graphs apparently already fit within the cache on my g5). In any case
this reduces memory usage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24249 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4012eb2137c91668d4951a312fc6067b4a5da4cd 08-Nov-2005 Chris Lattner <sabre@nondot.org> Explicitly initialize some instance vars


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24247 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
f469cb654600969db1131eb80002fc7ff53d1f5e 08-Nov-2005 Chris Lattner <sabre@nondot.org> Clean up RemoveDeadNodes significantly, by eliminating the need for a temporary
set and eliminating the need to iterate whenever something is removed (which
can be really slow in some cases). Thx to Jim for pointing out something silly
I was getting stuck on. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24241 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
26b91ebb63b29c94b3803b15ff1e6929f135caec 07-Nov-2005 Jim Laskey <jlaskey@mac.com> Let's try ignoring resource utilization on the backward pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24231 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
cbef8ba5f959b3c4f932005ceef5cf2e0d899f9b 06-Nov-2005 Chris Lattner <sabre@nondot.org> Always compute max align.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24227 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
ae232e7a1055033436370c0b3aecf054fa44d5e7 06-Nov-2005 Nate Begeman <natebegeman@mac.com> Add the necessary support to the ISel to allow targets to codegen the new
alignment information appropriately. Includes code for PowerPC to support
fixed-size allocas with alignment larger than the stack. Support for
arbitrarily aligned dynamic allocas coming soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24224 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
electionDAG/SelectionDAGISel.cpp
a5e5bff8b85cc3b5bf0632b409e949eda5eb7ac1 05-Nov-2005 Jim Laskey <jlaskey@mac.com> Fix logic bug in finding retry slot in tally.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24188 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
54f997d23f8fbab68bdb70bd0bc8b0a956134dae 04-Nov-2005 Jim Laskey <jlaskey@mac.com> Fix a warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24187 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
7d090f3485b5a17431b5a956fdd5d1fc03cbd5d5 04-Nov-2005 Jim Laskey <jlaskey@mac.com> Scheduling now uses itinerary data.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24180 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
5dc7e861f8c58301886b54f4ec1a1077b1e5281e 02-Nov-2005 Nate Begeman <natebegeman@mac.com> Fix a crash that Andrew noticed, and add a pair of braces to unfconfuse
XCode's indenting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24159 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
7c22575e3292a80b42ec6189d618976a464f7406 02-Nov-2005 Chris Lattner <sabre@nondot.org> Fix a source of undefined behavior when dealing with 64-bit types. This
may fix PR652. Thanks to Andrew for tracking down the problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24145 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5a608ddadae5ad5bc121a263c37015c42c526d7a 31-Oct-2005 Jim Laskey <jlaskey@mac.com> 1. Embed and not inherit vector for NodeGroup.

2. Iterate operands and not uses (performance.)

3. Some long pending comment changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24119 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
bf209489ad3f7a38ce6b2159b22d8727500e60c2 30-Oct-2005 Chris Lattner <sabre@nondot.org> Significantly simplify this code and make it more aggressive. Instead of having
a special case hack for X86, make the hack more general: if an incoming argument
register is not used in any block other than the entry block, don't copy it to
a vreg. This helps us compile code like this:

%struct.foo = type { int, int, [0 x ubyte] }
int %test(%struct.foo* %X) {
%tmp1 = getelementptr %struct.foo* %X, int 0, uint 2, int 100
%tmp = load ubyte* %tmp1 ; <ubyte> [#uses=1]
%tmp2 = cast ubyte %tmp to int ; <int> [#uses=1]
ret int %tmp2
}

to:

_test:
lbz r3, 108(r3)
blr

instead of:

_test:
lbz r2, 108(r3)
or r3, r2, r2
blr

The (dead) copy emitted to copy r3 into a vreg for extra-block uses was
increasing the live range of r3 past the load, preventing the coallescing.

This implements CodeGen/PowerPC/reg-coallesce-simple.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24115 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a4176525cc4018e781b48fd35d4000040841287f 30-Oct-2005 Chris Lattner <sabre@nondot.org> Reduce the number of copies emitted as machine instructions by
generating results in vregs that will need them. In the case of something
like this: CopyToReg((add X, Y), reg1024), we no longer emit code like
this:

reg1025 = add X, Y
reg1024 = reg 1025

Instead, we emit:

reg1024 = add X, Y

Whoa! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24111 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
3e6099b05fa85d9e5d82f04f73722f2af301c772 30-Oct-2005 Chris Lattner <sabre@nondot.org> Codegen mul by negative power of two with a shift and negate.
This implements test/Regression/CodeGen/PowerPC/mul-neg-power-2.ll,
producing:

_foo:
slwi r2, r3, 1
subfic r3, r2, 63
blr

instead of:

_foo:
mulli r2, r3, -2
addi r3, r2, 63
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24106 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fe7f046de875e41dd338163a719a32571da7ec06 27-Oct-2005 Chris Lattner <sabre@nondot.org> Fix DSE to not nuke dead stores unless they redundant store is the same
VT as the killing one. Fix fixes PR491


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24034 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
731d348166792bb9846022a82f7712c7bcec8f30 27-Oct-2005 Chris Lattner <sabre@nondot.org> Add a simple xform that is useful for bitfield operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24029 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c60e6020c0dd1260b0d60835e2ab823f97a4b810 26-Oct-2005 Chris Lattner <sabre@nondot.org> Fix some spello's pointed out by Gabor Greif


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24019 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
woAddressInstructionPass.cpp
b7f6ef12f682c7068ca7513e088177a0d1046b35 26-Oct-2005 Nate Begeman <natebegeman@mac.com> Allow custom lowered FP_TO_SINT ops in the check for whether a larger
FP_TO_SINT is preferred to a larger FP_TO_UINT. This seems to be begging
for a TLI.isOperationCustom() helper function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23992 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a158eee3130b93717d9b53b6a128fe193238aea3 25-Oct-2005 Chris Lattner <sabre@nondot.org> Clear a bit in this file that was causing a miscompilation of 178.galgel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23980 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8a6cd98e964fa42f05773cd2389e8b663ffecc6c 24-Oct-2005 Chris Lattner <sabre@nondot.org> Alkis agrees that that iterative scan allocator isn't going to be worked on
in the future, remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23952 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
egAllocIterativeScan.cpp
66c5fd6c537269eaef0f630fa14360dcaff6a295 23-Oct-2005 Jeff Cohen <jeffc@jolt-lang.org> When a function takes a variable number of pointer arguments, with a zero
pointer marking the end of the list, the zero *must* be cast to the pointer
type. An un-cast zero is a 32-bit int, and at least on x86_64, gcc will
not extend the zero to 64 bits, thus allowing the upper 32 bits to be
random junk.

The new END_WITH_NULL macro may be used to annotate a such a function
so that GCC (version 4 or newer) will detect the use of un-casted zero
at compile time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23888 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
2a2de66db2093a5bc1fd620d1b6ae7992a552b24 23-Oct-2005 Andrew Lenharth <andrewl@lenharth.org> add TargetExternalSymbol


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23886 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e9936d14b899cc17572bfd6165dd6a9aa0ff89b8 22-Oct-2005 Chris Lattner <sabre@nondot.org> BuildSDIV and BuildUDIV only work for i32/i64, but they don't check that
the input is that type, this caused a failure on gs on X86 last night.
Move the hard checks into Build[US]Div since that is where decisions like
this should be made.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23881 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
c8597ca6985f8de7ab4398f60b0be1e1bea3a5b9 21-Oct-2005 Chris Lattner <sabre@nondot.org> add a case missing from the dag combiner that exposed the failure on
2005-10-21-longlonggtu.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23875 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
aa51a484e188ecb8d3e4b6ac852c553a4aacc89a 21-Oct-2005 Chris Lattner <sabre@nondot.org> Make the coallescer a bit smarter, allowing it to join more live ranges.
For example, we can now join things like [0-30:0)[31-40:1)[52-59:2)
with [40:60:0) if the 52-59 range is defined by a copy from the 40-60 range.
The resultant range ends up being [0-30:0)[31-60:1).

This fires a lot through-out the test suite (e.g. shrinking bc from
19492 -> 18509 machineinstrs) though most gains are smaller (e.g. about
50 copies eliminated from crafty).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23866 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9e20d352c2fec5731857313014107a586387d242 21-Oct-2005 Chris Lattner <sabre@nondot.org> Fix LiveInterval::getOverlapingRanges to take things in the right order
(an unused method).

Fix the merger so that it can merge ranges like this [10:12)[16:40) with
[12:38) into [10:40) instead of bogus ranges. This sort of input will be
possible for the merger coming shortly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23865 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
4d3856768934ee748f754cc134ba88180ce42d1c 21-Oct-2005 Nate Begeman <natebegeman@mac.com> Fix a typo in the dag combiner, so that this can work on i64 targets


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23856 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
405e3ecb563f21e7b4ee30f0de57821f3eb91219 21-Oct-2005 Nate Begeman <natebegeman@mac.com> Invert the TargetLowering flag that controls divide by consant expansion.
Add a new flag to TargetLowering indicating if the target has really cheap
signed division by powers of two, make ppc use it. This will probably go
away in the future.
Implement some more ISD::SDIV folds in the dag combiner
Remove now dead code in the x86 backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23853 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/TargetLowering.cpp
cef6010c64bc56fa2a8f1e7e9e28b8821adeceac 21-Oct-2005 Chris Lattner <sabre@nondot.org> Fix a conditional so we don't access past the end of the range. Thanks to
Andrew for bringing this to my attn.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23850 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
c6a454e8d57acd47e9769516b36ce0810e9dc4f4 20-Oct-2005 Nate Begeman <natebegeman@mac.com> Fix a couple bugs in the const div stuff where we'd generate MULHS/MULHU
for types that aren't legal, and fail a divisor is less than zero
comparison, which would cause us to drop a subtract.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23846 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f75f2a0a026621430f412d903c489b3fc951dbb3 20-Oct-2005 Chris Lattner <sabre@nondot.org> don't use llabs with apparently VC++ doesn't have


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23845 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8317e12cef9b16b948231a20f02b4dd4c3623dfc 20-Oct-2005 Chris Lattner <sabre@nondot.org> Fix order of eval problem from when I refactored this into a function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23844 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
b0fa11ca41d85e35d3c1155c6a3af1b67788fce6 20-Oct-2005 Chris Lattner <sabre@nondot.org> add a new method, play around with some code.

Fix a *bug* in the extendIntervalEndTo method. In particular, if adding
[2:10) to an interval containing [0:2),[10:30), we produced [0:10),[10,30).
Which is not the most smart thing to do. Now produce [0:30).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23841 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
f5ce2678f63f5776fddcfc34ae63ecdec622938c 20-Oct-2005 Chris Lattner <sabre@nondot.org> Refactor some code, pulling it out into a function. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23839 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
6957523b9ddc6e85aede47a107502043fd1a3b2d 20-Oct-2005 Nate Begeman <natebegeman@mac.com> Move the target constant divide optimization up into the dag combiner, so
that the nodes can be folded with other nodes, and we can not duplicate
code in every backend. Alpha will probably want this too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23835 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5dc897b0e4e5eb4513adc2f161412ce23f6bf2e0 19-Oct-2005 Nate Begeman <natebegeman@mac.com> Teach Legalize how to do something with EXTRACT_ELEMENT when the type of
the pair of elements is a legal type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23804 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4a95945fa5aa431110f50092f4a45d24772a553b 19-Oct-2005 Nate Begeman <natebegeman@mac.com> Add the ability to lower return instructions to TargetLowering. This
allows us to lower legal return types to something else, to meet ABI
requirements (such as that i64 be returned in two i32 regs on Darwin/ppc).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23802 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d222f6ab67472fa2b2e211172a11b43905aa9445 19-Oct-2005 Chris Lattner <sabre@nondot.org> Fix Generic/2005-10-18-ZeroSizeStackObject.ll by not requesting a zero
sized stack object if either the array size or the type size is zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23801 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2dfa8192abaad8a3c29132dba50e8b85218e918c 19-Oct-2005 Chris Lattner <sabre@nondot.org> remove hack


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23797 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
40c62d50697a8515abdaf83655c031968d06a900 18-Oct-2005 Chris Lattner <sabre@nondot.org> Fold (select C, load A, load B) -> load (select C, A, B). This happens quite
a lot throughout many programs. In particular, specfp triggers it a bunch for
constant FP nodes when you have code like cond ? 1.0 : -1.0.

If the PPC ISel exposed the loads implicit in pic references to external globals,
we would be able to eliminate a load in cases like this as well:

%X = external global int
%Y = external global int
int* %test4(bool %C) {
%G = select bool %C, int* %X, int* %Y
ret int* %G
}

Note that this breaks things that use SrcValue's (see the fixme), but since nothing
uses them yet, this is ok.

Also, simplify some code to use hasOneUse() on an SDOperand instead of hasNUsesOfValue directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23781 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a0e221dc75ee1f2d8830eec9569116386a56a936 18-Oct-2005 Nate Begeman <natebegeman@mac.com> Implement some feedback from Chris re: constant canonicalization


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23777 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
419f8b62f73541dd783aa98c9eda6e483a487d51 18-Oct-2005 Nate Begeman <natebegeman@mac.com> Legalize BUILD_PAIR appropriately for upcoming 64 bit PowerPC work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23776 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
11af4eaa6d061befe341420b0ff7762b51e920ce 17-Oct-2005 Nate Begeman <natebegeman@mac.com> fold fmul X, +2.0 -> fadd X, X;


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23774 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
854077d3a5a42c3286f22fd5f72ee98797ed3d71 17-Oct-2005 Chris Lattner <sabre@nondot.org> add a trivial fold


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23764 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
750dbd5950ab5a6689f189adbea900eee9e6884d 16-Oct-2005 Chris Lattner <sabre@nondot.org> Fix this logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23756 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
85d63bbff740d23fae631ec1ecf5c7603e4b321d 16-Oct-2005 Chris Lattner <sabre@nondot.org> Add a case we were missing that was causing us to fail CodeGen/PowerPC/rlwinm.ll:test3


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23755 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
8136cdae60eaa30cea91f288f25564a417b19a84 15-Oct-2005 Chris Lattner <sabre@nondot.org> Use getExtLoad here instead of getNode, as extloads produce two values. This
fixes a legalize failure on SPASS for itanium.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23747 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
216def8ecfb8d2b03520a4fe004d498ad7b8b1c9 14-Oct-2005 Nate Begeman <natebegeman@mac.com> fold sext_in_reg, sext_in_reg where both have the same VT. This was
popping up in Fourinarow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23722 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
5054f162127f19ad43bc4d0b8ab232f0fee32953 14-Oct-2005 Nate Begeman <natebegeman@mac.com> Relax the checking on zextload generation a bit, since as sabre pointed out
you could be AND'ing with the result of a shift that shifts out all the
bits you care about, in addition to a constant.

Also, move over an add/sub_parts fold from legalize to the dag combiner,
where it works for things other than constants. Woot!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23720 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
24edbb7a6cdf8adcd80086700448d59c59a810b9 14-Oct-2005 Chris Lattner <sabre@nondot.org> Fix the trunc(load) case, finally allowing crafty and povray to pass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23718 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
f98840531a8da37e481a838971abd9ab4ee69eb9 13-Oct-2005 Chris Lattner <sabre@nondot.org> Fix some bugs in (sext (load x))


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23717 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9ad8481cfbbb9dfe451b771978098677bc8dd254 13-Oct-2005 Chris Lattner <sabre@nondot.org> When ExpandOp'ing a [SZ]EXTLOAD, make sure to remember that the chain
is also legal. Add support for ExpandOp'ing raw EXTLOADs too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23716 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4c8f8f0481b26818d7810a6a585e7ecf52973e93 13-Oct-2005 Chris Lattner <sabre@nondot.org> Implement PromoteOp for *EXTLOAD, allowing MallocBench/gs to Legalize


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23715 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bfd65a05c96988d175dec57b0b59e7dca2be04c1 13-Oct-2005 Nate Begeman <natebegeman@mac.com> Fix the remaining DAGCombiner issues pointed out by sabre. This should fix
the remainder of the failures introduced by my patch last night.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23714 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
67a44cd3aa26003a6bc2cd755516c9cc12c36ca0 13-Oct-2005 Chris Lattner <sabre@nondot.org> Fix a minor bug in the dag combiner that broke pcompress2 and some other
tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23713 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
144ff660e66845a575586bc4092c0cf349b5bfb9 13-Oct-2005 Nate Begeman <natebegeman@mac.com> Add support to Legalize for expanding i64 sextload/zextload into hi and lo
parts. This should fix the crafty and signed long long unit test failure
on x86 last night.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23711 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
53c523c00e6c160bb8e3a6931497eb87d82eb108 13-Oct-2005 Jim Laskey <jlaskey@mac.com> Inhibit instructions from being pushed before function calls. This will
minimize unnecessary spilling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23710 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
ded4963ab98c424a8e83f4dc0e63203754ca353b 13-Oct-2005 Nate Begeman <natebegeman@mac.com> Move some Legalize functionality over to the DAGCombiner where it belongs.
Kill some dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23706 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
765784ad760ee6cc504d79e4966c272387c313f8 13-Oct-2005 Nate Begeman <natebegeman@mac.com> Fix a potential bug with two combine-to's back to back that chris pointed
out, where after the first CombineTo() call, the node the second CombineTo
wishes to replace may no longer exist.

Fix a very real bug with the truncated load optimization on little endian
targets, which do not need a byte offset added to the load.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23704 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3df4d525c58d5db878eaadcfdcffbbfca96dd6a2 12-Oct-2005 Nate Begeman <natebegeman@mac.com> More cool stuff for the dag combiner. We can now finally handle things
like turning:

_foo:
fctiwz f0, f1
stfd f0, -8(r1)
lwz r2, -4(r1)
rlwinm r3, r2, 0, 16, 31
blr

into
_foo:
fctiwz f0,f1
stfd f0,-8(r1)
lhz r3,-2(r1)
blr

Also removed an unncessary constraint from sra -> srl conversion, which
should take care of hte only reason we would ever need to handle sra in
MaskedValueIsZero, AFAIK.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fab66f69009857f77bad1e9cb9f41733c04e011f 12-Oct-2005 Jim Laskey <jlaskey@mac.com> Finally committing to the new scheduler. Still -sched=none by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23702 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
851a22db2bdbcab1768a87c4f02b5972e48db5ed 12-Oct-2005 Jim Laskey <jlaskey@mac.com> Added graphviz/gv support for MF.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23700 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
a179ab3016a08051c34ba82d7feaeb4198702a60 11-Oct-2005 Chris Lattner <sabre@nondot.org> Fix a powerpc crash on CodeGen/Generic/llvm-ct-intrinsics.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23694 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
05b57433e68de3ba0f6eb01f4a0271fee3abeb09 11-Oct-2005 Chris Lattner <sabre@nondot.org> Add a canonicalization that got lost, fixing PowerPC/fold-li.ll:SUB


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23693 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
04ecf6d65fb5c8703eff8a3dcd5a8208e91318fe 11-Oct-2005 Chris Lattner <sabre@nondot.org> clean up some corner cases


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23692 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
87514ca04cb069310d29fd77e0501601c1e22c11 11-Oct-2005 Chris Lattner <sabre@nondot.org> Implement trivial DSE. If two stores are neighbors and store to the same
location, replace them with a new store of the last value. This occurs
in the same neighborhood in 197.parser, speeding it up about 1.5%


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23691 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
01a220213852223f2503f05c8bbb8b72e3c71290 11-Oct-2005 Chris Lattner <sabre@nondot.org> Add support for CombineTo, allowing the dag combiner to replace nodes with
multiple results.

Use this support to implement trivial store->load forwarding, implementing
CodeGen/PowerPC/store-load-fwd.ll. Though this is the most simple case and
can be extended in the future, it is still useful. For example, it speeds
up 197.parser by 6.2% by avoiding an LSU reject in xalloc:

stw r6, lo16(l5_end_of_array)(r2)
addi r2, r5, -4
stwx r5, r4, r2
- lwzx r5, r4, r2
- rlwinm r5, r5, 0, 0, 30
stwx r5, r4, r2
lwz r2, -4(r4)
ori r2, r2, 1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23690 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
07ed417df21269c51e61746176caf73d8aef43e8 10-Oct-2005 Nate Begeman <natebegeman@mac.com> Teach the DAGCombiner several new tricks, teaching it how to turn
sext_inreg into zext_inreg based on the signbit (fires a lot), srem into
urem, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23688 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d739075cbb88463dd83d212426cfe13ad17e00da 10-Oct-2005 Chris Lattner <sabre@nondot.org> Fix comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23686 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
bba9aa3475e307be7bd60eecc733cd46eeaf107a 10-Oct-2005 Chris Lattner <sabre@nondot.org> Add ISD::ADD to MaskedValueIsZero


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23685 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3892560680e244601e52080f448df75988d89663 10-Oct-2005 Chris Lattner <sabre@nondot.org> This function is now dead


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23684 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
af21d55aee8d6852fedfd630395a3c7c95df8f12 10-Oct-2005 Chris Lattner <sabre@nondot.org> Enable Nate's excellent DAG combiner work by default. This allows the
removal of a bunch of ad-hoc and crufty code from SelectionDAG.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23682 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
a19cea061e661277489655f5d0777360fb9fe736 10-Oct-2005 Chris Lattner <sabre@nondot.org> add a todo for something I noticed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23679 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
ee899e6bfc854adefdbfd6631e206d18fd43ab81 10-Oct-2005 Chris Lattner <sabre@nondot.org> (X & Y) & C == 0 if either X&C or Y&C are zero


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23678 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
089c25ccb3469946d70d9fa97d2e0b7ab16902a2 09-Oct-2005 Chris Lattner <sabre@nondot.org> When emiting a CopyFromReg and the source is already a vreg, do not bother
creating a new vreg and inserting a copy: just use the input vreg directly.

This speeds up the compile (e.g. about 5% on mesa with a debug build of llc)
by not adding a bunch of copies and vregs to be coallesced away. On mesa,
for example, this reduces the number of intervals from 168601 to 129040
going into the coallescer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23671 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
f845b4563a960047b1092618093a79dc0bf998a8 08-Oct-2005 Nate Begeman <natebegeman@mac.com> Lo and behold, the last bits of SelectionDAG.cpp have been moved over.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23665 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9a9719eea1d134809c582754188cc10df1021717 07-Oct-2005 Chris Lattner <sabre@nondot.org> remove debugging code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23663 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c4ced268d8d35942eb57aac2ce8d5dc7580cae94 07-Oct-2005 Chris Lattner <sabre@nondot.org> implement CodeGen/PowerPC/div-2.ll:test2-4 by propagating zero bits through
C-X's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23662 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
6c4dad0b8bd75f827c83a92245df54e1f776bc61 07-Oct-2005 Chris Lattner <sabre@nondot.org> fix indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23660 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
094c8fcd14a04a3bac12eb17e7e04276ce594e11 07-Oct-2005 Chris Lattner <sabre@nondot.org> Turn sdivs into udivs when we can prove the sign bits are clear. This
implements CodeGen/PowerPC/div-2.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23659 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
cf5c79b34fcffdf7f0de72bc693ddcd3e2ec47a6 06-Oct-2005 Chris Lattner <sabre@nondot.org> silence a bogus GCC warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23646 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8a61a7524af19d67bd11f8e7d868ca75efbf5c91 06-Oct-2005 Chris Lattner <sabre@nondot.org> Fix the LLC regressions on X86 last night. In particular, when undoing
previous copy elisions and we discover we need to reload a register, make
sure to use the regclass of the original register for the reload, not the
class of the current register. This avoid using 16-bit loads to reload 32-bit
values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23645 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
32fca00a23a9872c31999d054b4dd7c724276d9d 06-Oct-2005 Chris Lattner <sabre@nondot.org> Make the legalizer completely non-recursive


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23642 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0558f61b0c758344ce18c548e4046b794610ea42 05-Oct-2005 Nate Begeman <natebegeman@mac.com> Let the combiner handle more cases


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23641 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
829cb818065673a50101435f3c25e50ca82a02bf 05-Oct-2005 Nate Begeman <natebegeman@mac.com> Remove some bad code from Legalize


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23640 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e17daebb30195ad5e95c1dc0ade89aa1eca9fd51 05-Oct-2005 Nate Begeman <natebegeman@mac.com> Check in some more DAGCombiner pieces


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23639 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
22480c43504eca3092f79d9b42bdbb1b413e8e53 05-Oct-2005 Chris Lattner <sabre@nondot.org> Fix a bug in the local spiller, where we could take code like this:

store r12 -> [ss#2]
R3 = load [ss#1]
use R3
R3 = load [ss#2]
R4 = load [ss#1]

and turn it into this code:

store R12 -> [ss#2]
R3 = load [ss#1]
use R3
R3 = R12
R4 = R3 <- oops!

The problem was that promoting R3 = load[ss#2] to a copy missed the fact that
the instruction invalidated R3 at that point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23638 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
3ea0b47f81caeb53f9594dd3f7702ae01c4f2cc6 05-Oct-2005 Chris Lattner <sabre@nondot.org> implement visitBR_CC so that PowerPC/inverted-bool-compares.ll passes
with the dag combiner. This speeds up espresso by 8%, reaching performance
parity with the dag-combiner-disabled llc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
ad13715ed4068a347452de9a86f5c1a702458f83 05-Oct-2005 Chris Lattner <sabre@nondot.org> fix some pastos


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9503859c545496838165a340b1e1730dc1b83736 05-Oct-2005 Chris Lattner <sabre@nondot.org> Add a new HandleNode class, which is used to handle (haha) cases in the
dead node elim and dag combiner passes where the root is potentially updated.
This fixes a fixme in the dag combiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23634 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
5c46f74ec78e73bc91785299a6877f45a7b2f1df 05-Oct-2005 Chris Lattner <sabre@nondot.org> Implement the code for PowerPC/inverted-bool-compares.ll, even though it
that testcase still does not pass with the dag combiner. This is because
not all forms of br* are folded yet.

Also, when we combine a node into another one, delete the node immediately
instead of waiting for the node to potentially come up in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23632 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
d48050aa1509130871b8bb2453270c92b969c2e7 05-Oct-2005 Chris Lattner <sabre@nondot.org> make sure that -view-isel-dags is the input to the isel, not the input to
the second phase of dag combining


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23631 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
91559026d346747886bb4a5a686b29d64efdd640 05-Oct-2005 Chris Lattner <sabre@nondot.org> Fix a crash compiling Olden/tsp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23630 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
9d528dc2b4a936a9515b874b59a3c1b9b786b37b 04-Oct-2005 Jim Laskey <jlaskey@mac.com> Reverting to version - until problem isolated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23622 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
1aa1972c63fb6b940b11250f7c12bcb368026014 04-Oct-2005 Nate Begeman <natebegeman@mac.com> Fix some faulty logic in the libcall inserter.

Since calls return more than one value, don't bail if one of their uses
happens to be a node that's not an MVT::Other when following the chain
from CALLSEQ_START to CALLSEQ_END.

Once we've found a CALLSEQ_START, we can just return; there's no need to
tail-recurse further up the graph.

Most importantly, just because something only has one use doesn't mean we
should use it's one use to follow from start to end. This faulty logic
caused us to follow a chain of one-use FP operations back to a much earlier
call, putting a cycle in the graph from a later start to an earlier end.

This is a better fix that reverting to the workaround committed earlier
today.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23620 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
27d404ccd1e86b7fffaf8037bf6b6dfb0b9d683b 04-Oct-2005 Nate Begeman <natebegeman@mac.com> Add back a workaround that fixes some breakages from chris's last change.
Neither of us have yet figured out why this code is necessary, but stuff
breaks if its not there. Still tracking this down...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23617 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8ba732bb1c21059153215a1cbe664a1db9293e1f 03-Oct-2005 Jim Laskey <jlaskey@mac.com> Refactor gathering node info and emission.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
6db0756f021a7b9c84d3bb7ae50498feb080a013 03-Oct-2005 Chris Lattner <sabre@nondot.org> clean up this code a bit, no functionality change


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23609 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
53a79aaae988d9dc9d12af8970f8b8fe58cc478d 03-Oct-2005 Chris Lattner <sabre@nondot.org> Break the body of the loop out into a new method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23606 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
ab510a76d6fed412f2dbbb29b3e123eef34f9c0a 02-Oct-2005 Chris Lattner <sabre@nondot.org> Fix a problem where the legalizer would run out of stack space on extremely
large basic blocks because it was purely recursive. This switches it to an
iterative/recursive hybrid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23596 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
dcd5abc70c03fe7679363ab704da57478a948b85 02-Oct-2005 Chris Lattner <sabre@nondot.org> silence a bogus warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23595 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
a3638c0f1fd13d7c685de3f7ead39b046a604d84 02-Oct-2005 Chris Lattner <sabre@nondot.org> Add assertions to the trivial scheduler to check that the value types match
up between defs and uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23590 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
14765be0bc7cba8a0cda45de3a20e0d7c33411ca 02-Oct-2005 Chris Lattner <sabre@nondot.org> Codegen CopyFromReg using the regclass that matches the valuetype of the
destination vreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23586 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
505277a7f554fcfe73e97cbdca304da5716cefa7 01-Oct-2005 Chris Lattner <sabre@nondot.org> Add some very paranoid checking for operand/result reg class matchup
For instructions that define multiple results, use the right regclass
to define the result, not always the rc of result #0


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23580 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
2aeaf4e839438d51766996006fc22310d05ab2a7 01-Oct-2005 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23579 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
37345fe3cd2dd56c3711592a5af6c294c10c7aba 01-Oct-2005 Chris Lattner <sabre@nondot.org> add a method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23575 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
22f6212e9f1551c93a76f2ad8ea0e9688a3e3775 01-Oct-2005 Jim Laskey <jlaskey@mac.com> typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23574 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
41755e2c7e112f96a448e71521685318fe42f37e 01-Oct-2005 Jim Laskey <jlaskey@mac.com> 1. Simplify the gathering of node groups.

2. Printing node groups when displaying nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23573 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
b6d4c2cf2d3e5173fb16c24d93b18eb13ba04f37 30-Sep-2005 Jim Laskey <jlaskey@mac.com> 1. Made things node-centric (from operand).

2. Added node groups to handle flagged nodes.

3. Started weaning simple scheduling off existing emitter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23566 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
8fb040e584606f048b85d87363a52baf5ff9c1c7 30-Sep-2005 Chris Lattner <sabre@nondot.org> now that we have a reg class to spill with, get this info from the regclass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23559 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
80a4f169b4a8cd160f832fd4a1052e5d9b2c1a92 30-Sep-2005 Chris Lattner <sabre@nondot.org> Now that we have getCalleeSaveRegClasses() info, use it to pass the register
class into the spill/reload methods. Targets can now rely on that argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23556 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
bf9716b9c48d3b0370c715cd79540945f73dc296 30-Sep-2005 Chris Lattner <sabre@nondot.org> Change this code ot pass register classes into the stack slot spiller/reloader
code. PrologEpilogInserter hasn't been updated yet though, so targets cannot
use this info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23536 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egAllocLocal.cpp
egAllocSimple.cpp
irtRegMap.cpp
473a99073cc29f59809a0d5dfee11f5e9e6ad2b7 29-Sep-2005 Chris Lattner <sabre@nondot.org> Fix two bugs in my patch earlier today that broke int->fp conversion on X86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23522 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fef80f43e0f5be66baf74db5e585ef10a101b355 29-Sep-2005 Jeff Cohen <jeffc@jolt-lang.org> Silence VC++ redeclaration warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23516 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
01b3d73c20f5afb8265ae943a8ba23c2238c5eea 29-Sep-2005 Chris Lattner <sabre@nondot.org> Add FP versions of the binary operators, keeping the int and fp worlds seperate.

Though I have done extensive testing, it is possible that this will break
things in configs I can't test. Please let me know if this causes a problem
and I'll fix it ASAP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23504 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
6c38b33613d64522581dc55d82fffa4aee0e9f22 28-Sep-2005 Chris Lattner <sabre@nondot.org> If the target prefers it, use _setjmp/_longjmp should be used instead of setjmp/longjmp for llvm.setjmp/llvm.longjmp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23481 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
8e6be8b9218b3b9c44b784b559d49236f80c1049 28-Sep-2005 Chris Lattner <sabre@nondot.org> initialize new flag


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23480 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
5324fec6449555a76fa622a1a90760d42c50bd6b 27-Sep-2005 Jim Laskey <jlaskey@mac.com> Remove some redundancies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23469 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
e6b90fba4a0ab4ea14bbb11f029305b7153905cb 26-Sep-2005 Jim Laskey <jlaskey@mac.com> Addition of a simple two pass scheduler. This version is currently hacked up
for testing and will require target machine info to do a proper scheduling.
The simple scheduler can be turned on using -sched=simple (defaults
to -sched=none)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23455 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
5ae7911b2437aec6f695d6820284ff7bc60ec97a 23-Sep-2005 Chris Lattner <sabre@nondot.org> Turn (X^C1) == C2 into X == C1^C2 iff X&~C1 = 0 (and move a function)

This happens all the time on PPC for bool values, e.g. eliminating a xori
in inverted-bool-compares.ll.

This should be added to the dag combiner as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23403 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3c3fe462f7978b429ecdd71750c26be25c3d1335 21-Sep-2005 Chris Lattner <sabre@nondot.org> Expose the LiveInterval interfaces as public headers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23400 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveInterval.h
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
44728a7bb65f5228fff631da807ed7ed3c791a8d 20-Sep-2005 Nate Begeman <natebegeman@mac.com> Stub out the rest of the DAG Combiner. Just need to fill in the
select_cc bits and then wrap it in a convenience function for use with
regular select.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23389 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
cea8688ee4637e0f3cffc75e47f15be756f043bf 19-Sep-2005 Chris Lattner <sabre@nondot.org> Teach the local spiller to turn stack slot loads into register-register copies
when possible, avoiding the load (and avoiding the copy if the value is already
in the right register).

This patch came about when I noticed code like the following being generated:

store R17 -> [SS1]
...blah...
R4 = load [SS1]

This was causing an LSU reject on the G5. This problem was due to the register
allocator folding spill code into a reg-reg copy (producing the load), which
prevented the spiller from being able to rewrite the load into a copy, despite
the fact that the value was already available in a register. In the case
above, we now rip out the R4 load and replace it with a R4 = R17 copy.

This speeds up several programs on X86 (which spills a lot :) ), e.g.
smg2k from 22.39->20.60s, povray from 12.93->12.66s, 168.wupwise from
68.54->53.83s (!), 197.parser from 7.33->6.62s (!), etc. This may have a larger
impact in some cases on the G5 (by avoiding LSU rejects), though it probably
won't trigger as often (less spilling in general).

Targets that implement folding of loads/stores into copies should implement
the isLoadFromStackSlot hook to get this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23388 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
452d7bebaab3990ed16efa5f21b1031894a99caf 16-Sep-2005 Nate Begeman <natebegeman@mac.com> More DAG combining. Still need the branch instructions, and select_cc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23371 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
fa57702388f139e964befecb4b98c7dfe836945f 13-Sep-2005 Chris Lattner <sabre@nondot.org> If a function has liveins, and if the target requested that they be plopped
into particular vregs, emit copies into the entry MBB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23331 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
13d58e71b7ab2857162b88860c56dce4c9cea3de 10-Sep-2005 Chris Lattner <sabre@nondot.org> Allow targets to say they don't support truncstore i1 (which includes a mask
when storing to an 8-bit memory location), as most don't.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23303 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a500fc681de6329194e9755e051422d621387aa3 10-Sep-2005 Chris Lattner <sabre@nondot.org> Add a missing #include, patch courtesy of Baptiste Lepilleur.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23302 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
3ec5d74fc5bc03bdb3ab5876799dff4d82e38193 10-Sep-2005 Chris Lattner <sabre@nondot.org> Fix a problem duraid encountered on itanium where this folding:
select (x < y), 1, 0 -> (x < y) incorrectly: the setcc returns i1 but the
select returned i32. Add the zero extend as needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23301 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
08addbd4770a60adb6dbdc29cf73e7720f08197a 10-Sep-2005 Chris Lattner <sabre@nondot.org> Fix a crash viewing dags that have target nodes in them


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23300 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
50ea01ed5ba23c8988af9fed0b91178e69140a80 09-Sep-2005 Chris Lattner <sabre@nondot.org> Use continue in the use-processing loop to make it clear what the early exits
are, simplify logic, and cause things to not be nested as deeply. This also
uses MRI->areAliases instead of an explicit loop.

No functionality change, just code cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23296 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
39ee1ac7e58a66aff7f6986c04878bb7e1bc5b5d 09-Sep-2005 Nate Begeman <natebegeman@mac.com> Last round of 2-node folds from SD.cpp. Will move on to 3 node ops such
as setcc and select next.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23295 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
ceb0a5223180c01c6ea6e26ae9556b3797b47f02 09-Sep-2005 Chris Lattner <sabre@nondot.org> remove debugging code *slaps head*


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23294 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b11443dc8458b0ba72d484dacf99dffa2e8d3b51 09-Sep-2005 Chris Lattner <sabre@nondot.org> When spilling a live range that is used multiple times by one instruction,
only add a reload live range once for the instruction. This is one step
towards fixing a regalloc pessimization that Nate notice, but is later undone
by the spiller (so no code is changed).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23293 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
223df2269da508eadc160e34e0dc03c9e02e7d0b 08-Sep-2005 Nate Begeman <natebegeman@mac.com> Move yet more folds over to the dag combiner from sd.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23278 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
998011927000c8150499bb887ca0d68bb1ff38c2 08-Sep-2005 Nate Begeman <natebegeman@mac.com> Another round of dag combiner changes. This fixes some missing XOR folds
as well as fixing how we replace old values with new values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23260 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAG.cpp
dc6e2e0a5f3ee81d85922790aaedc80740820a8b 07-Sep-2005 Chris Lattner <sabre@nondot.org> Fix a bug that Tzu-Chien Chiu noticed: live interval analysis does NOT
preserve livevar


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23259 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f89d78d7c7c93e83c0f19ecabc16cef4ba748d61 07-Sep-2005 Nate Begeman <natebegeman@mac.com> Implement a common missing fold, (add (add x, c1), c2) -> (add x, c1+c2).
This restores all of stanford to being identical with and without the dag
combiner with the add folding turned off in sd.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23258 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1e111c7bbb50eec1cb1ebc7d12fcfb22c36f8d87 07-Sep-2005 Chris Lattner <sabre@nondot.org> Fix a bug nate ran into with replacealluseswith. In the recursive cse case,
we were losing a node, causing an assertion to fail. Now we eagerly delete
discovered CSE's, and provide an optional vector to keep track of these
discovered equivalences.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23255 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2300f5504643eaddc307d3db8a3ccd224c4fa251 07-Sep-2005 Nate Begeman <natebegeman@mac.com> Add an option to the DAG Combiner to enable it for beta runs, and turn on
that option for PowerPC's beta.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23253 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
electionDAG/SelectionDAGISel.cpp
83e75ecd2725aed3ace0bd52945f2b5266696d00 06-Sep-2005 Nate Begeman <natebegeman@mac.com> Next round of DAGCombiner changes. This version now passes all the tests
I have run so far when run before Legalize. It still needs to pick up the
SetCC folds, and nodes that use SetCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23243 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6a8a21ced4fd1bb3655aa3b5990a6e9b65022089 03-Sep-2005 Chris Lattner <sabre@nondot.org> Fix a checking failure in gs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23235 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
646d7e2727950b7729b9b1604a7c84246e81550f 02-Sep-2005 Nate Begeman <natebegeman@mac.com> Next round of DAG Combiner changes. Just need to support multiple return
values, and then we should be able to hook it up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23231 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
6fdcb250d5692235813b30274cdfcd0e76377f00 02-Sep-2005 Chris Lattner <sabre@nondot.org> Clean up some code from the last checkin


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23229 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
99c25b86aa85b0093f24b2394a5aa37f66294b2b 02-Sep-2005 Chris Lattner <sabre@nondot.org> Fix a bug in legalize where it would emit two calls to libcalls that return
i64 values on targets that need that expanded to 32-bit registers. This fixes
PowerPC/2005-09-02-LegalizeDuplicatesCalls.ll and speeds up 189.lucas from
taking 122.72s to 81.96s on my desktop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
70b9b1098a82990cca7804ba6425e7aa151ea8b4 02-Sep-2005 Chris Lattner <sabre@nondot.org> Make sure to auto-cse nullary ops


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23224 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6621e3b9636174886c9665b648f2ddc13effbc8a 02-Sep-2005 Chris Lattner <sabre@nondot.org> Fix some buggy logic where we would try to remove nodes with two operands
from the binary ops map, even if they had multiple results. This latent bug
caused a few failures with the dag isel last night.

To prevent stuff like this from happening in the future, add some really
strict checking to make sure that the CSE maps always match up with reality!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23221 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
fd88f64934c43613dd4a70b97db620de1338782b 02-Sep-2005 Chris Lattner <sabre@nondot.org> Don't create zero sized stack objects even for array allocas with a zero
number of elements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23219 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a639a43602cd64087a9730632fbf6f7cf7d88276 02-Sep-2005 Chris Lattner <sabre@nondot.org> Fix the release build, noticed by Eric van Riet Paap


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23215 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
08951a32fbc1de3ec3746e14109a74ca506ca251 02-Sep-2005 Chris Lattner <sabre@nondot.org> Make sure to legalize assert[zs]ext's operand correctly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23208 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5ab6f5fe666d0e3403d9b777324d1a1999118153 02-Sep-2005 Chris Lattner <sabre@nondot.org> Teach live intervals to not crash on dead livein regs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23206 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
fab08875b73656f373b10a59aad475615df82baf 02-Sep-2005 Chris Lattner <sabre@nondot.org> For values that are live across basic blocks and need promotion, use ANY_EXTEND
instead of ZERO_EXTEND to eliminate extraneous extensions. This eliminates
dead zero extensions on formal arguments and other cases on PPC, implementing
the newly tightened up test/Regression/CodeGen/PowerPC/small-arguments.ll test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23205 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
13c78e2e5f158e9008b279b43b685ff02bb3cbea 02-Sep-2005 Chris Lattner <sabre@nondot.org> legalize ANY_EXTEND appropriately


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4ed11b4b791422af543c87d5451183a2a1081e80 02-Sep-2005 Chris Lattner <sabre@nondot.org> Add support for ANY_EXTEND and add a few minor folds for it


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
39f60a230243d8da02f5e17be3f8918f689ec72b 02-Sep-2005 Nate Begeman <natebegeman@mac.com> Fix some code in the current node combining code, spotted when it was moved
over to DAGCombiner.cpp

1. Don't assume that SetCC returns i1 when folding (xor (setcc) constant)
2. Don't duplicate code in folding AND with AssertZext that is handled by
MaskedValueIsZero


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23196 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4ebd805c6af9db5099214b463003387691df50e8 02-Sep-2005 Nate Begeman <natebegeman@mac.com> Implement first round of feedback from chris (there's still a couple things
left to do).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23195 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
da8abb02397d7cd62a1e16e7c534edd7096ac873 01-Sep-2005 Chris Lattner <sabre@nondot.org> It is NDEBUG not _NDEBUG


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23186 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
4942a9687dc6c3322dd135cab005c1dd7345df23 01-Sep-2005 Nate Begeman <natebegeman@mac.com> Add the rest of the currently implemented visit routines to the switch
statement in visit().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23185 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
1d4d41411190dd9e62764e56713753d4155764dd 01-Sep-2005 Nate Begeman <natebegeman@mac.com> First pass at the DAG Combiner. It isn't used anywhere yet, but it should
be mostly functional. It currently has all folds from SelectionDAG.cpp
that do not involve a condition code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23184 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGCombiner.cpp
a1f68ca94e763945f9accc75768a55a84bae6cfb 01-Sep-2005 Chris Lattner <sabre@nondot.org> If a function has live ins/outs, print them


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23181 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
50ec8979047065bd0ff41fac4ffd44f744b77723 31-Aug-2005 Chris Lattner <sabre@nondot.org> Allow targets to custom expand shifts that are too large for their registers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23173 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7383ce4127f0e1d9ff4eaaa7dac8e71e02d860c6 31-Aug-2005 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ precedence warnings


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23169 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
fe75a2836abd15557cf21a5cc34a7048cbba654f 31-Aug-2005 Nate Begeman <natebegeman@mac.com> Sigh, not my day. Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23166 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9f52f2838d99774d3262bfce7b22d70a7a3f0196 31-Aug-2005 Nate Begeman <natebegeman@mac.com> Fix a mistake in my previous patch pointed out by sabre; the AssertZext
case in MaskedValueIsZero was wrong.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b85dfab8898807d592ea96acf19f41ebcd9e8813 31-Aug-2005 Nate Begeman <natebegeman@mac.com> Remove some unnecessary casts, and add the AssertZext case to
MaskedValueIsZero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23164 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0fdd7680948a6facf34e0791bd2dfa8b5a2e4942 31-Aug-2005 Chris Lattner <sabre@nondot.org> Allow physregs to occur in the dag with multiple types. Though I don't likethis, it is a requirement on PPC, which can have an f32 value in r3 at onepoint in a function and a f64 value in r3 at another point. :(

This fixes compilation of mesa


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23161 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e836ad6736492c239be8f1d125369ae8ef0d9401 30-Aug-2005 Chris Lattner <sabre@nondot.org> When checking the fixed intervals, don't forget to check for register aliases.
This fixes PR621 and Regression/CodeGen/X86/2005-08-30-RegAllocAliasProblem.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23158 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
cc0675a4be9a5133abd48ee272ff999ae48feabf 30-Aug-2005 Chris Lattner <sabre@nondot.org> Fix FreeBench/fourinarow with the dag isel, by not adding a bogus result
to SHIFT_PARTS nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23151 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ec176e30d655f96d75b49e620a849008bf0f63a2 30-Aug-2005 Chris Lattner <sabre@nondot.org> Fix a miscompile of PtrDist/bc. Sign extending bools is not the right thing,
at least tends to expose problems elsewhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23149 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
5ffcd9b56c527c060b6d7c128610916f6afb507a 30-Aug-2005 Nate Begeman <natebegeman@mac.com> Remove a bogus piece of my AssertSext/AssertZext patch. oops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23148 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
56eb86806d5d178d42108f17d11098b3e640b996 30-Aug-2005 Nate Begeman <natebegeman@mac.com> Add support for AssertSext and AssertZext, folding other extensions with
them. This allows for elminination of redundant extends in the entry
blocks of functions on PowerPC.

Add support for i32 x i32 -> i64 multiplies, by recognizing when the inputs
to ISD::MUL in ExpandOp are actually just extended i32 values and not real
i64 values. this allows us to codegen

int mulhs(int a, int b) { return ((long long)a * b) >> 32; }
as:
_mulhs:
mulhw r3, r4, r3
blr

instead of:
_mulhs:
mulhwu r2, r4, r3
srawi r5, r3, 31
mullw r5, r4, r5
add r2, r2, r5
srawi r4, r4, 31
mullw r3, r4, r3
add r3, r2, r3
blr

with a similar improvement on x86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23147 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
f155635b53e02e3460af3374000d22d1f8432f1c 30-Aug-2005 Chris Lattner <sabre@nondot.org> Name this variable to be what it really is!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23145 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
55334fc45c27c55de61d895e4ec704f0727ebb46 30-Aug-2005 Chris Lattner <sabre@nondot.org> Handle CopyToReg nodes with flag operands correctly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23144 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
82e14db9a90413cc11fcf2ba27431346146aed75 30-Aug-2005 Chris Lattner <sabre@nondot.org> Add a hack to avoid some horrible code in some cases by always emitting
token chains first. For this C function:

int test() {
int i;
for (i = 0; i < 100000; ++i)
foo();
}

Instead of emitting this (condition before call)

.LBB_test_1: ; no_exit
addi r30, r30, 1
lis r2, 1
ori r2, r2, 34464
cmpw cr2, r30, r2
bl L_foo$stub
bne cr2, .LBB_test_1 ; no_exit

Emit this:

.LBB_test_1: ; no_exit
bl L_foo$stub
addi r30, r30, 1
lis r2, 1
ori r2, r2, 34464
cmpw cr0, r30, r2
bne cr0, .LBB_test_1 ; no_exit

Which makes it so we don't have to save/restore cr2 in the prolog/epilog of
the function.

This also makes the code much more similar to what the pattern isel produces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23135 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
c26aefa15ae7f02b37923f6fed5a74d60e76ff56 29-Aug-2005 Chris Lattner <sabre@nondot.org> Add a new API for Nate


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23131 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5e3efbc2ca459621400211f7370d7f121d4827d9 29-Aug-2005 Andrew Lenharth <andrewl@lenharth.org> Some of us cared about the the promote path


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23130 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
507f752f6ed28aa9f0ae680e95bfc93df4e9e2dc 29-Aug-2005 Chris Lattner <sabre@nondot.org> Fix an infinite loop on x86


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23129 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
dfd58709cc78e841ef4a50ba75d940473031617e 29-Aug-2005 Chris Lattner <sabre@nondot.org> Fix a bug in my previous patch that was using the wrong iterator. This fixes
Olden/bisort among others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23124 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
ff01698ec037050fd9452d3b3486de568024ee72 29-Aug-2005 Chris Lattner <sabre@nondot.org> Fix a bug in ReplaceAllUsesWith


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0f9beca707b98ecfc7af252c5827958f7ede4c74 27-Aug-2005 Reid Spencer <rspencer@reidspencer.com> Change the names of member variables per Chris' instructions, and document
them more clearly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23118 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
88b9c159120703555a30314411af26f425597d90 27-Aug-2005 Chris Lattner <sabre@nondot.org> Disable this code, which broke many tests last night


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23114 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
620c93cca1aeef8a53b00eee19e3f16926dcc1cf 27-Aug-2005 Chris Lattner <sabre@nondot.org> fix PHI node emission for basic blocks that have select_cc's in them on ppc32


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23113 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
eb150d7d1fe0a7c63a9008798324a284bbcb9ce9 27-Aug-2005 Chris Lattner <sabre@nondot.org> Nate noticed that Andrew never did this. This fixes PR600


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23110 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9d3a483a3826d3749c2db9863ddb6e824f1dd6d4 27-Aug-2005 Chris Lattner <sabre@nondot.org> Don't copy regs that are only used in the entry block into a vreg. This
changes the code generated for:

short %test(short %A) {
%B = xor short %A, -32768
ret short %B
}

to:

_test:
xori r2, r3, 32768
xoris r2, r2, 65535
extsh r3, r2
blr

instead of:

_test:
rlwinm r2, r3, 0, 16, 31
xori r2, r3, 32768
xoris r2, r2, 65535
extsh r3, r2
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23109 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ed461e0fafbd0b905cb716df108000bcd6ecf3d4 27-Aug-2005 Chris Lattner <sabre@nondot.org> Make this code safe for when loadRegFromStackSlot inserts multiple instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23108 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
579cfabdade805651c42971a22ae042dba3a33c4 26-Aug-2005 Chris Lattner <sabre@nondot.org> Checking types here is not safe, because multiple types can map to the same
register class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23103 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
025c39bf36b6bc2f35a5544338de6cf96fa511a9 26-Aug-2005 Chris Lattner <sabre@nondot.org> Call the InsertAtEndOfBasicBlock hook if the usesCustomDAGSchedInserter
flag is set on an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23098 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAGISel.cpp
8b52f21f100b090c49fc264fc482942c767eaa18 26-Aug-2005 Chris Lattner <sabre@nondot.org> Revampt ReplaceAllUsesWith to be more efficient and easier to use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23087 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5839bf2b3bd22689d9dd0e9de66c2dce71d130ae 26-Aug-2005 Chris Lattner <sabre@nondot.org> Change ConstantPoolSDNode to actually hold the Constant itself instead of
putting it into the constant pool. This allows the isel machinery to
create constants that it will end up deciding are not needed, without them
ending up in the resultant function constant pool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23081 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/ScheduleDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
2bb06cdf27905cf95bd39e4120f1ad57c68ac73e 26-Aug-2005 Chris Lattner <sabre@nondot.org> Fix a huge annoyance: SelectNodeTo took types before the opcode unlike
every other SD API. Fix it to take the opcode before the types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23079 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d7050a9c50211dd215cb3c2bc28b4fb6bfa4a116 26-Aug-2005 Chris Lattner <sabre@nondot.org> the 5th operand is the 4th number


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23074 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
23004e5f21716671401e95e3be91d87dc7d4d68b 26-Aug-2005 Chris Lattner <sabre@nondot.org> Add support for targets that want to custom expand select_cc in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23071 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
07dffd6af673c73352150583150b242a93694f00 26-Aug-2005 Chris Lattner <sabre@nondot.org> Allow LowerOperation to return a null SDOperand in case it wants to lower
some things given to it, but not all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23070 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f07d023dd9a4638dc157d1361482c780117c1302 26-Aug-2005 Chris Lattner <sabre@nondot.org> Fix a nasty bug from a previous patch of mine


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23069 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1999b4b974d2674e94953c32e5e4a47ede7664b4 25-Aug-2005 Nate Begeman <natebegeman@mac.com> New fold for SELECT_CC


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23058 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
43247a157b613dbf3caedacdbb171a9d653e3ef5 25-Aug-2005 Chris Lattner <sabre@nondot.org> Don't auto-cse nodes that return flags


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23055 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9d338cf3a3888c18cb031e6bf7633992c0c0b8a0 25-Aug-2005 Chris Lattner <sabre@nondot.org> simplify the code a bit using isOperationLegal


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23053 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
376d54f9b622424bbc485834f45e8e4fc0001749 25-Aug-2005 Chris Lattner <sabre@nondot.org> Add support for flag operands


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23050 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
4025a9c2cc4ac3b9efa465a2f64be50fdaba9da9 25-Aug-2005 Chris Lattner <sabre@nondot.org> ADd support for TargetConstantPool nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23041 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
afb2dd43de61f4585e75d1f3ab93a9ac4b3b7592 25-Aug-2005 Chris Lattner <sabre@nondot.org> add a new TargetFrameIndex node


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23035 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7651fa4a7ed1c81abb004847af1eeb3beb9c88fd 25-Aug-2005 Chris Lattner <sabre@nondot.org> add a method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23027 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7b2880c4cd29f5a90ac8af897f970b3199a9bbb1 25-Aug-2005 Chris Lattner <sabre@nondot.org> Add ReplaceAllUsesWith that can take a vector of replacement values.
Add some foldings to hopefully help the illegal setcc issue, and move some code around.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23025 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
14b392af1d696c3880b1ed1e5202533d7afe3855 25-Aug-2005 Chris Lattner <sabre@nondot.org> Add support for external symbols, and support for variable arity instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23022 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
e39db07713641cb933d1183a343ffe4eb8f44492 24-Aug-2005 Chris Lattner <sabre@nondot.org> Fix pasto that prevented VT ndoes from showing up in -view-isel-dags correctly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23021 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
1d6373c1af26236385e41b52b3a4d93c00bf7431 24-Aug-2005 Chris Lattner <sabre@nondot.org> teach selection dag mask tracking about the fact that select_cc operates like
select. Also teach it that the bit count instructions can only set the low bits
of the result, depending on the size of the input.

This allows us to compile this:

int %eq0(int %a) {
%tmp.1 = seteq int %a, 0 ; <bool> [#uses=1]
%tmp.2 = cast bool %tmp.1 to int ; <int> [#uses=1]
ret int %tmp.2
}

To this:

_eq0:
cntlzw r2, r3
srwi r3, r2, 5
blr

instead of this:

_eq0:
cntlzw r2, r3
rlwinm r3, r2, 27, 31, 31
blr

when setcc is marked illegal on ppc (which restores parity to non-illegal
setcc). Thanks to Nate for pointing this out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23013 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c9c60f6429416d362c2131b14d097ce0a9ac9599 24-Aug-2005 Chris Lattner <sabre@nondot.org> Start using isOperationLegal and isTypeLegal to simplify the code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23012 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9ed62c16f2b463461fa8667143969fea0b81781e 24-Aug-2005 Chris Lattner <sabre@nondot.org> Adjust to new interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23010 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
cebd433d8de9cdfeea4a27341e4afea7ca5fca67 24-Aug-2005 Nate Begeman <natebegeman@mac.com> Teach SelectionDAG how to simplify a few more setcc-equivalent select_cc
nodes so that backends don't have to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22999 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
82cfa5d616ff0f760425cbf6e2983fbab618fbda 24-Aug-2005 Chris Lattner <sabre@nondot.org> Make -view-isel-dags show the dag before instruction selecting, in case
the target isel crashes due to unimplemented features like calls :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22997 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0750a40a4ff494a2dec24f5761149b8b00e642c5 24-Aug-2005 Nate Begeman <natebegeman@mac.com> Fix optimization of select_cc seteq X, 0, 1, 0 -> srl (ctlz X), log2 X size


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22995 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
657b4d1ac6a64d8751ed8c53d662201dab4438e1 24-Aug-2005 Chris Lattner <sabre@nondot.org> Implement LiveVariables.h change


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22994 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
44b94c2185f4c1b826ec6003d25370cf2efac219 24-Aug-2005 Chris Lattner <sabre@nondot.org> adjust to new live variables interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22992 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
egAllocLocal.cpp
ab4b66d4c279e8cd9e448687020fc838e7881dbc 24-Aug-2005 Chris Lattner <sabre@nondot.org> Simplify this code by using higher-level LiveVariables methods


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22989 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b980578b4160cf8ef1ba6d33e85c50eaeef0eef8 24-Aug-2005 Chris Lattner <sabre@nondot.org> Keep track of which registers are related to which other registers.
Use this information to avoid doing expensive interval intersections for
registers that could not possible be interesting. This speeds up linscan
on ia64 compiling kc++ in release mode from taking 7.82s to 4.8s(!), total
itanium llc time on this program is 27.3s now. This marginally speeds up
PPC and X86, but they appear to be limited by other parts of linscan, not
this code.

On this program, on itanium, live intervals now takes 41% of llc time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22986 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
7042f15bded917ba68e5e66be873ad4d06f9ca2d 23-Aug-2005 Nate Begeman <natebegeman@mac.com> Teach the SelectionDAG how to transform select_cc eq, X, 0, 1, 0 into
either seteq X, 0 or srl (ctlz X), size(X-1), depending on what's legal
for the target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22978 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b942a3dd5f9318b2c57f137d2991440c2f0262ad 23-Aug-2005 Nate Begeman <natebegeman@mac.com> Teach Legalize how to turn setcc into select_cc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22977 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a411cbca5c081f0813ff507901be412903894423 22-Aug-2005 Chris Lattner <sabre@nondot.org> Try to avoid scanning the fixed list. On architectures with a non-stupid
number of regs (e.g. most riscs), many functions won't need to use callee
clobbered registers. Do a speculative check to see if we can get a free
register without processing the fixed list (which has all of these). This
saves a lot of time on machines with lots of callee clobbered regs (e.g.
ppc and itanium, also x86).

This reduces ppc llc compile time from 184s -> 172s on kc++. This is probably
worth FAR FAR more on itanium though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22972 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
a6c1750362ffb5e8c5b5b5232442cd4c49eafdc8 22-Aug-2005 Chris Lattner <sabre@nondot.org> Move some code in the register assignment case that only needs to happen if
we spill out of the fast path. The scan of active_ and the calls to
updateSpillWeights don't need to happen unless a spill occurs. This reduces
debug llc time of kc++ with ppc from 187.3s to 183.2s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22971 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
8f03405ee57094d627c342fb6087399a30009a02 22-Aug-2005 Chris Lattner <sabre@nondot.org> Fix a problem where constant expr shifts would not have their shift amount
promoted to the right type. This fixes: IA64/2005-08-22-LegalizerCrash.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f8355d9846ab9b24d052870ca19c23b332c95d1e 22-Aug-2005 Chris Lattner <sabre@nondot.org> Speed up this loop a bit, based on some observations that Nate made, and
add some comments. This loop really needs to be reevaluated!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22966 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
23553cfb4a7f859e0dbfef2f9fb739526bad8984 22-Aug-2005 Chris Lattner <sabre@nondot.org> Add a fast-path for register values. Add support for constant pool entries,
allowing us to compile this:

float %test2(float* %P) {
%Q = load float* %P
%R = add float %Q, 10.1
ret float %R
}

to this:

_test2:
lfs r2, 0(r3)
lis r3, ha16(.CPI_test2_0)
lfs r3, lo16(.CPI_test2_0)(r3)
fadds f1, r2, r3
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22962 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
c975e1dedcffd55894a14b41ccdb7255aaf19034 22-Aug-2005 Chris Lattner <sabre@nondot.org> add anew method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
81e72b13d778772738747b0d9fd2131855db42c4 21-Aug-2005 Chris Lattner <sabre@nondot.org> Add support for frame index nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22956 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
99baddaf57e0ae8eb7e09504262b47e7ed44520e 21-Aug-2005 Chris Lattner <sabre@nondot.org> add a method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22955 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6b09a296049d765ad663ae21ab1b26ce7c2c93ae 21-Aug-2005 Chris Lattner <sabre@nondot.org> add a method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22949 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f85ab15acfd44de684df7153f9c07ec67139f8d9 21-Aug-2005 Chris Lattner <sabre@nondot.org> Add support for basic blocks, fix a bug in result # computation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22948 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
550b1e59c4eb5db020766012b1406fc56833251d 21-Aug-2005 Chris Lattner <sabre@nondot.org> When legalizing brcond ->brcc or select -> selectcc, make sure to truncate
the old condition to a one bit value. The incoming value must have been
promoted, and the top bits are undefined. This causes us to generate:

_test:
rlwinm r2, r3, 0, 31, 31
li r3, 17
cmpwi cr0, r2, 0
bne .LBB_test_2 ;
.LBB_test_1: ;
li r3, 1
.LBB_test_2: ;
blr

instead of:

_test:
rlwinm r2, r3, 0, 31, 31
li r2, 17
cmpwi cr0, r3, 0
bne .LBB_test_2 ;
.LBB_test_1: ;
li r2, 1
.LBB_test_2: ;
or r3, r2, r2
blr

for:

int %test(bool %c) {
%retval = select bool %c, int 17, int 1
ret int %retval
}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22947 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fe0c2c8721fc448fec15e6361d727de70f5f61e2 20-Aug-2005 Chris Lattner <sabre@nondot.org> fix bogus warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22943 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
9b78db7f16193f4a4ad866ea4d98f482b70e3171 20-Aug-2005 Chris Lattner <sabre@nondot.org> Add support for global address nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22940 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
aaaa0b67dd0a943ee9275c42d7df4bd244d52c95 20-Aug-2005 Chris Lattner <sabre@nondot.org> Add support for TargetGlobalAddress nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22938 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7ef330478ff7f87fece5144ebeb5783894fa3f33 19-Aug-2005 Chris Lattner <sabre@nondot.org> Implement CopyFromReg, TokenFactor, and fix a bug in CopyToReg. This allows
us to compile stuff like this:

double %test(double %A, double %B, double %C, double %E) {
%F = mul double %A, %A
%G = add double %F, %B
%H = sub double -0.0, %G
%I = mul double %H, %C
%J = add double %I, %E
ret double %J
}

to:

_test:
fnmadd f0, f1, f1, f2
fmadd f1, f0, f3, f4
blr

woot!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22937 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
fa164b61d11a3fe4056c8e9b97209bfda6c0b61b 19-Aug-2005 Chris Lattner <sabre@nondot.org> Fix a bug in previous commit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22936 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7228aa78686c2920c0f8588628b1278698720d07 19-Aug-2005 Chris Lattner <sabre@nondot.org> Print physreg register nodes with target names (e.g. F1) instead of numbers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22934 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
0189197608d14f03437da889b87393d59cc5c66a 19-Aug-2005 Chris Lattner <sabre@nondot.org> Before implementing copyfromreg, we'll implement copytoreg correctly.
This gets us this for the previous testcase:

_test:
lis r2, 0
ori r3, r2, 65535
blr

Note that we actually write to r3 (the return reg) correctly now :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22933 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
4ccd406317942375c32b223625d757180867a547 19-Aug-2005 Chris Lattner <sabre@nondot.org> Now that we have operand info for machine instructions, use it to create
temporary registers for things that define a register. This allows dag->dag
isel to compile this:

int %test() { ret int 65535 }

into:

_test:
lis r2, 0
ori r2, r2, 65535
blr

Next up, getting CopyFromReg to work, allowing arguments and cross-bb values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22932 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
23c73a182353330f982eca95cf5e83d8e5ed7512 19-Aug-2005 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ constant truncation warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22907 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
a92b7c36e97c22bf528706bfceb568ff512de751 19-Aug-2005 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ precedence warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22902 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ca6aa2f70ca1325d8cc4af3d6a7d99ab693e5456 19-Aug-2005 Chris Lattner <sabre@nondot.org> Fix computation of # operands, add a temporary hack for CopyToReg


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22896 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
068ca15d5e1c55af57e2b0898c1ea6a5aee836c0 18-Aug-2005 Chris Lattner <sabre@nondot.org> add a new -view-sched-dags option to view dags as they are sent to the scheduler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22878 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
2d973e45b8a8d33f45ccb4940f599cadcfa5a19d 18-Aug-2005 Chris Lattner <sabre@nondot.org> Implement the first chunk of a code emitter. This is sophisticated enough to
codegen:

_empty:
.LBB_empty_0: ;
blr

but can't do anything more (yet). :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22876 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
d32b23690d9919a31ac6c56b2783efb622051e75 18-Aug-2005 Chris Lattner <sabre@nondot.org> new file, obviously just a stub


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22868 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/ScheduleDAG.cpp
36b708f05720c407f5e5657f2fd4b0677702ad46 18-Aug-2005 Chris Lattner <sabre@nondot.org> Enable critical edge splitting by default


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22863 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
294a0a103d561864f2089b9f5948fb1a49801918 18-Aug-2005 Nate Begeman <natebegeman@mac.com> Add support for target DAG nodes that take 4 operands, such as PowerPC's
rlwinm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22856 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a23e8154dc58a62225074bb4eb1633c363ce331b 18-Aug-2005 Chris Lattner <sabre@nondot.org> Fix printing of VTSDNodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22853 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
58b968be853ef02d0f448e5e2c31676e361c210f 17-Aug-2005 Jim Laskey <jlaskey@mac.com> Move the code dependency for MathExtras.h from SelectionDAGNodes.h.

Added some class dividers in SelectionDAG.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22841 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
cb6682fa44e13262bdef7dd22b4ba90f8c2e7b97 17-Aug-2005 Jim Laskey <jlaskey@mac.com> Culling out use of unions for converting FP to bits and vice versa.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22838 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
8b8749f367fd30a8a3d57284576a6d59b60b69eb 17-Aug-2005 Chris Lattner <sabre@nondot.org> Fix a bug in RemoveDeadNodes where it would crash when its "optional"
argument is not specified.

Implement ReplaceAllUsesWith.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22834 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
02659d23637f69f90640bfa3e66919517103c57a 17-Aug-2005 Jim Laskey <jlaskey@mac.com> Switched to using BitsToDouble for int_to_float to avoid aliasing problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22831 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
491dfa88e48ac48b1dae0adf89d2ff77c828c735 17-Aug-2005 Jim Laskey <jlaskey@mac.com> Change hex float constants for the sake of VC++.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22828 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
495a0b51915eb763576874f29192820b731edc22 17-Aug-2005 Chris Lattner <sabre@nondot.org> Add a new beta option for critical edge splitting, to avoid a problem that
Nate noticed in yacr2 (and I know occurs in other places as well).

This is still rough, as the critical edge blocks are not intelligently placed
but is added to get some idea to see if this improves performance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22825 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
fae59b99b8d1942f30a4be609423282c3fd62dd8 17-Aug-2005 Chris Lattner <sabre@nondot.org> Fix a regression on X86, where FP values can be promoted too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22822 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6269ed125fc492d81dc5e3f48482816fc9d47f49 17-Aug-2005 Jim Laskey <jlaskey@mac.com> Added generic code expansion for [signed|unsigned] i32 to [f32|f64] casts in the
legalizer. PowerPC now uses this expansion instead of ISel version.

Example:

// signed integer to double conversion
double f1(signed x) {
return (double)x;
}

// unsigned integer to double conversion
double f2(unsigned x) {
return (double)x;
}

// signed integer to float conversion
float f3(signed x) {
return (float)x;
}

// unsigned integer to float conversion
float f4(unsigned x) {
return (float)x;
}


Byte Code:

internal fastcc double %_Z2f1i(int %x) {
entry:
%tmp.1 = cast int %x to double ; <double> [#uses=1]
ret double %tmp.1
}

internal fastcc double %_Z2f2j(uint %x) {
entry:
%tmp.1 = cast uint %x to double ; <double> [#uses=1]
ret double %tmp.1
}

internal fastcc float %_Z2f3i(int %x) {
entry:
%tmp.1 = cast int %x to float ; <float> [#uses=1]
ret float %tmp.1
}

internal fastcc float %_Z2f4j(uint %x) {
entry:
%tmp.1 = cast uint %x to float ; <float> [#uses=1]
ret float %tmp.1
}

internal fastcc double %_Z2g1i(int %x) {
entry:
%buffer = alloca [2 x uint] ; <[2 x uint]*> [#uses=3]
%tmp.0 = getelementptr [2 x uint]* %buffer, int 0, int 0 ; <uint*> [#uses=1]
store uint 1127219200, uint* %tmp.0
%tmp.2 = cast int %x to uint ; <uint> [#uses=1]
%tmp.3 = xor uint %tmp.2, 2147483648 ; <uint> [#uses=1]
%tmp.5 = getelementptr [2 x uint]* %buffer, int 0, int 1 ; <uint*> [#uses=1]
store uint %tmp.3, uint* %tmp.5
%tmp.9 = cast [2 x uint]* %buffer to double* ; <double*> [#uses=1]
%tmp.10 = load double* %tmp.9 ; <double> [#uses=1]
%tmp.13 = load double* cast (long* %signed_bias to double*) ; <double> [#uses=1]
%tmp.14 = sub double %tmp.10, %tmp.13 ; <double> [#uses=1]
ret double %tmp.14
}

internal fastcc double %_Z2g2j(uint %x) {
entry:
%buffer = alloca [2 x uint] ; <[2 x uint]*> [#uses=3]
%tmp.0 = getelementptr [2 x uint]* %buffer, int 0, int 0 ; <uint*> [#uses=1]
store uint 1127219200, uint* %tmp.0
%tmp.1 = getelementptr [2 x uint]* %buffer, int 0, int 1 ; <uint*> [#uses=1]
store uint %x, uint* %tmp.1
%tmp.4 = cast [2 x uint]* %buffer to double* ; <double*> [#uses=1]
%tmp.5 = load double* %tmp.4 ; <double> [#uses=1]
%tmp.8 = load double* cast (long* %unsigned_bias to double*) ; <double> [#uses=1]
%tmp.9 = sub double %tmp.5, %tmp.8 ; <double> [#uses=1]
ret double %tmp.9
}

internal fastcc float %_Z2g3i(int %x) {
entry:
%buffer = alloca [2 x uint] ; <[2 x uint]*> [#uses=3]
%tmp.0 = getelementptr [2 x uint]* %buffer, int 0, int 0 ; <uint*> [#uses=1]
store uint 1127219200, uint* %tmp.0
%tmp.2 = cast int %x to uint ; <uint> [#uses=1]
%tmp.3 = xor uint %tmp.2, 2147483648 ; <uint> [#uses=1]
%tmp.5 = getelementptr [2 x uint]* %buffer, int 0, int 1 ; <uint*> [#uses=1]
store uint %tmp.3, uint* %tmp.5
%tmp.9 = cast [2 x uint]* %buffer to double* ; <double*> [#uses=1]
%tmp.10 = load double* %tmp.9 ; <double> [#uses=1]
%tmp.13 = load double* cast (long* %signed_bias to double*) ; <double> [#uses=1]
%tmp.14 = sub double %tmp.10, %tmp.13 ; <double> [#uses=1]
%tmp.16 = cast double %tmp.14 to float ; <float> [#uses=1]
ret float %tmp.16
}

internal fastcc float %_Z2g4j(uint %x) {
entry:
%buffer = alloca [2 x uint] ; <[2 x uint]*> [#uses=3]
%tmp.0 = getelementptr [2 x uint]* %buffer, int 0, int 0 ; <uint*> [#uses=1]
store uint 1127219200, uint* %tmp.0
%tmp.1 = getelementptr [2 x uint]* %buffer, int 0, int 1 ; <uint*> [#uses=1]
store uint %x, uint* %tmp.1
%tmp.4 = cast [2 x uint]* %buffer to double* ; <double*> [#uses=1]
%tmp.5 = load double* %tmp.4 ; <double> [#uses=1]
%tmp.8 = load double* cast (long* %unsigned_bias to double*) ; <double> [#uses=1]
%tmp.9 = sub double %tmp.5, %tmp.8 ; <double> [#uses=1]
%tmp.11 = cast double %tmp.9 to float ; <float> [#uses=1]
ret float %tmp.11
}


PowerPC Code:

.machine ppc970


.const
.align 2
.CPIl1__Z2f1i_0: ; float 0x4330000080000000
.long 1501560836 ; float 4.5036e+15
.text
.align 2
.globl l1__Z2f1i
l1__Z2f1i:
.LBBl1__Z2f1i_0: ; entry
xoris r2, r3, 32768
stw r2, -4(r1)
lis r2, 17200
stw r2, -8(r1)
lfd f0, -8(r1)
lis r2, ha16(.CPIl1__Z2f1i_0)
lfs f1, lo16(.CPIl1__Z2f1i_0)(r2)
fsub f1, f0, f1
blr


.const
.align 2
.CPIl2__Z2f2j_0: ; float 0x4330000000000000
.long 1501560832 ; float 4.5036e+15
.text
.align 2
.globl l2__Z2f2j
l2__Z2f2j:
.LBBl2__Z2f2j_0: ; entry
stw r3, -4(r1)
lis r2, 17200
stw r2, -8(r1)
lfd f0, -8(r1)
lis r2, ha16(.CPIl2__Z2f2j_0)
lfs f1, lo16(.CPIl2__Z2f2j_0)(r2)
fsub f1, f0, f1
blr


.const
.align 2
.CPIl3__Z2f3i_0: ; float 0x4330000080000000
.long 1501560836 ; float 4.5036e+15
.text
.align 2
.globl l3__Z2f3i
l3__Z2f3i:
.LBBl3__Z2f3i_0: ; entry
xoris r2, r3, 32768
stw r2, -4(r1)
lis r2, 17200
stw r2, -8(r1)
lfd f0, -8(r1)
lis r2, ha16(.CPIl3__Z2f3i_0)
lfs f1, lo16(.CPIl3__Z2f3i_0)(r2)
fsub f0, f0, f1
frsp f1, f0
blr


.const
.align 2
.CPIl4__Z2f4j_0: ; float 0x4330000000000000
.long 1501560832 ; float 4.5036e+15
.text
.align 2
.globl l4__Z2f4j
l4__Z2f4j:
.LBBl4__Z2f4j_0: ; entry
stw r3, -4(r1)
lis r2, 17200
stw r2, -8(r1)
lfd f0, -8(r1)
lis r2, ha16(.CPIl4__Z2f4j_0)
lfs f1, lo16(.CPIl4__Z2f4j_0)(r2)
fsub f0, f0, f1
frsp f1, f0
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22814 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
37bfbb47de5381704471af6178bfbba29260297c 17-Aug-2005 Chris Lattner <sabre@nondot.org> add a new TargetConstant node


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22813 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d5d0f9bd20d9df07d6b4d41b7e8ed6d33b6a649d 16-Aug-2005 Chris Lattner <sabre@nondot.org> Eliminate the RegSDNode class, which 3 nodes (CopyFromReg/CopyToReg/ImplicitDef)
used to tack a register number onto the node.

Instead of doing this, make a new node, RegisterSDNode, which is a leaf
containing a register number. These three operations just become normal
DAG nodes now, instead of requiring special handling.

Note that with this change, it is no longer correct to make illegal
CopyFromReg/CopyToReg nodes. The legalizer will not touch them, and this
is bad, so don't do it. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22806 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
7cbd525ba85ebe440d15fa359ec940e404d14906 16-Aug-2005 Nate Begeman <natebegeman@mac.com> Implement BR_CC and BRTWOWAY_CC. This allows the removal of a rather nasty
fixme from the PowerPC backend. Emit slightly better code for legalizing
select_cc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22805 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
f3e133a35f5aa6ed32ca29aa3675eff349d61008 16-Aug-2005 Chris Lattner <sabre@nondot.org> Allow passing a dag into dump and getOperationName. If one is available
when printing a node, use it to render target operations with their
target instruction name instead of "<<unknown>>".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22804 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ad95d6ab201bad53ae155a06d49cc16cfbebe507 16-Aug-2005 Chris Lattner <sabre@nondot.org> Use a extant helper to do this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22802 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
149c58ce0b94e64faf3c4ccdbf894061cf7d66e1 16-Aug-2005 Chris Lattner <sabre@nondot.org> Add some methods for dag->dag isel.
Split RemoveNodeFromCSEMaps out of DeleteNodesIfDead to do it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22801 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
2d56e72f09337a1cab3ba199a9467c159296f3fa 14-Aug-2005 Nate Begeman <natebegeman@mac.com> Fix last night's PPC32 regressions by
1. Not selecting the false value of a select_cc in the false arm, which
isn't legal for nested selects.
2. Actually returning the node we created and Legalized in the FP_TO_UINT
Expander.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22789 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d2558e3e4af2930730e2314868afd09ba005e282 14-Aug-2005 Nate Begeman <natebegeman@mac.com> Teach the legalizer how to legalize FP_TO_UINT.
Teach the legalizer to promote FP_TO_UINT to FP_TO_SINT if the wider
FP_TO_UINT is also illegal. This allows us on PPC to codegen
unsigned short foo(float a) { return a; }

as:
_foo:
.LBB_foo_0: ; entry
fctiwz f0, f1
stfd f0, -8(r1)
lwz r2, -4(r1)
rlwinm r3, r2, 0, 16, 31
blr

instead of:
_foo:
.LBB_foo_0: ; entry
fctiwz f0, f1
stfd f0, -8(r1)
lwz r2, -4(r1)
lis r3, ha16(.CPI_foo_0)
lfs f0, lo16(.CPI_foo_0)(r3)
fcmpu cr0, f1, f0
blt .LBB_foo_2 ; entry
.LBB_foo_1: ; entry
fsubs f0, f1, f0
fctiwz f0, f0
stfd f0, -16(r1)
lwz r2, -12(r1)
xoris r2, r2, 32768
.LBB_foo_2: ; entry
rlwinm r3, r2, 0, 16, 31
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22785 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ff66368a5f83ed62cb7817efc4a16b78c449a4c0 13-Aug-2005 Nate Begeman <natebegeman@mac.com> Remove an unncessary argument to SimplifySelectCC and add an additional
assert when creating a select_cc node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22780 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
32c392a3a5e397b5f1cc83aaedfab96368d11e8a 13-Aug-2005 Nate Begeman <natebegeman@mac.com> Fix the fabs regression on x86 by abstracting the select_cc optimization
out into SimplifySelectCC. This allows both ISD::SELECT and ISD::SELECT_CC
to use the same set of simplifying folds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
3e27b1f5c4bbbc5729a154b9b76b4231bb0ad9b9 13-Aug-2005 Chris Lattner <sabre@nondot.org> implement a couple of simple shift foldings.

e.g. (X & 7) >> 3 -> 0


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22774 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e1fae4a3aeeb1c0f349f9b02a4d6b8fc0a6a9934 11-Aug-2005 Nate Begeman <natebegeman@mac.com> Add a select_cc optimization for recognizing abs(int). This speeds up an
integer MPEG encoding loop by a factor of two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22758 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e5d63829fd62d815a330c21ea316e6b4cf943562 11-Aug-2005 Nate Begeman <natebegeman@mac.com> Some SELECT_CC cleanups:
1. move assertions for node creation to getNode()
2. legalize the values returned in ExpandOp immediately
3. Move select_cc optimizations from SELECT's getNode() to SELECT_CC's,
allowing them to be cleaned up significantly.

This paves the way to pick up additional optimizations on SELECT_CC, such
as sum-of-absolute-differences.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22757 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
9373a81e53ce5f9f2c06c4209b8b886605aece08 10-Aug-2005 Nate Begeman <natebegeman@mac.com> Add new node, SELECT_CC. This node is for targets that don't natively
implement SELECT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22755 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
7c6e452d4415abaeb562958bbae1ca1bc2eb6809 10-Aug-2005 Chris Lattner <sabre@nondot.org> Fix an oversight that may be causing PR617.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22753 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bd8625b062c468ccd62b713993a45e8dd40e67a7 10-Aug-2005 Chris Lattner <sabre@nondot.org> Fix spelling, fix some broken canonicalizations by my last patch


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22734 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
079a27a0deca2501485da55701632cf9ebe4e8c4 09-Aug-2005 Chris Lattner <sabre@nondot.org> add cc nodes to the AllNodes list so they show up in Graphviz output


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22731 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7cf7e3f33f25544d08492d47cc8a1cbba25dc8d7 09-Aug-2005 Chris Lattner <sabre@nondot.org> Eliminate the SetCCSDNode in favor of a CondCodeSDNode class. This pulls the
CC out of the SetCC operation, making SETCC a standard ternary operation and
CC's a standard DAG leaf. This will make it possible for other node to use
CC's as operands in the future...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22728 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
660538c8a5c4795926694a5d37b147315941933e 08-Aug-2005 Chris Lattner <sabre@nondot.org> Handle 64-bit constant exprs on 64-bit targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22696 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
bf3fa976ee85528712669c9513a4eed351fcb3bb 07-Aug-2005 Chris Lattner <sabre@nondot.org> add a small simplification that can be exposed after promotion/expansion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22691 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
82299e70977500209c951404e354510feffb8efa 05-Aug-2005 Chris Lattner <sabre@nondot.org> Change FindEarliestCallSeqEnd (used by libcall insertion) to use a set to
avoid revisiting nodes more than once. This eliminates a source of
potentially exponential behavior. For a small function in 191.fma3d
(hexah_stress_divergence_), this speeds up isel from taking > 20mins to
taking 0.07s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22680 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c534395cb22202e66f27abe99dd9c153b4a68b14 05-Aug-2005 Chris Lattner <sabre@nondot.org> Fix a use-of-dangling-pointer bug, from the introduction of SrcValue's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22679 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2f4eca30d11d634ac2a26eed4d80f8bc9584a4b3 05-Aug-2005 Chris Lattner <sabre@nondot.org> Fix a latent bug in the libcall inserter that was exposed by Nate's patch
yesterday. This fixes whetstone and a bunch of programs in the External tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22678 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2ac4fc032050ff1e0f06bd8e27126e979406effb 04-Aug-2005 Nate Begeman <natebegeman@mac.com> Fix a fixme in LegalizeDAG


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22661 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cd33eef1b2dc1e81ab57b4857cb63c47bb62a496 04-Aug-2005 Misha Brukman <brukman+llvm@gmail.com> * Unbreak release build
* Add comments to #endif pragmas for readability


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22647 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
4c64dd7977bc676399df0d5d2bf8016a3242780e 03-Aug-2005 Chris Lattner <sabre@nondot.org> Fix PR611, codegen'ing SREM of FP operands to fmod or fmodf instead of
the sequence used for integer ops


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22629 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
0561b3ff9fd08f9cda48551f2f91590ca5f60656 02-Aug-2005 Chris Lattner <sabre@nondot.org> Update to use the new MathExtras.h support for log2 computation.
Patch contributed by Jim Laskey!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22594 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e21c305ed85b2be4a27784ba52471f6b68fdd255 01-Aug-2005 Chris Lattner <sabre@nondot.org> Fix casts from long to sbyte on ppc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22570 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d29b6aa608d69f19b57ebd2ae630b040b1c4951d 30-Jul-2005 Jeff Cohen <jeffc@jolt-lang.org> Keep tabs and trailing spaces out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22565 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f20d183c2268553c738fefb014959ea924dd0555 30-Jul-2005 Chris Lattner <sabre@nondot.org> fix float->long conversions on x86


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22563 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f1fa74ee0d30dfdb854f7d3f5ee67437cc82e250 30-Jul-2005 Chris Lattner <sabre@nondot.org> Allow targets to have custom expanders for FP_TO_*INT conversions where
both the src and dest values are legal


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22555 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
80a3e94653574c69ac805d9684a23a94ed3e4b5d 29-Jul-2005 Chris Lattner <sabre@nondot.org> Allow targets to define custom expanders for FP_TO_*INT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22548 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1618bebcf6f9cd19c4e05de3bfffda28c246bb12 29-Jul-2005 Chris Lattner <sabre@nondot.org> allow a target to request that unknown FP_TO_*INT conversion be promoted to
a larger integer destination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22547 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fa9c801a6b42609dc2a934afb6535e3d51d61a3e 29-Jul-2005 Chris Lattner <sabre@nondot.org> instead of having all conversions be handled by one case value, and then have
subcases inside, break things out earlier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22546 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fe660397e14ecba84e792ada489f2bda7269b413 28-Jul-2005 Andrew Lenharth <andrewl@lenharth.org> new is not a valid default anywhere, so make this pure virtual


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22542 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
achineCodeEmitter.cpp
cef21c354408980eab7922c35af7523b08b5bec9 28-Jul-2005 Chris Lattner <sabre@nondot.org> Fix debug info to not print out recently freed memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22529 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
8e7a70976deee78a84099b916591d40f7a1cdc34 28-Jul-2005 Chris Lattner <sabre@nondot.org> Print symbolic register names in debug dumps


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22528 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
00b16889ab461b7ecef1c91ade101186b7f1fce2 27-Jul-2005 Jeff Cohen <jeffc@jolt-lang.org> Eliminate all remaining tabs and trailing spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22523 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
ntrinsicLowering.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
700a3c97e90dfdad049f460d4547bff6e48dd7e7 19-Jul-2005 Nate Begeman <natebegeman@mac.com> Remove unnecessary FP_EXTEND. This causes worse codegen for SSE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22469 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a0f5bf306c0e66ca5fc519fd3b0cb732d37d4a5e 19-Jul-2005 Reid Spencer <rspencer@reidspencer.com> For: memory operations -> stores
This is the first incremental patch to implement this feature. It adds no
functionality to LLVM but setup up the information needed from targets in
order to implement the optimization correctly. Each target needs to specify
the maximum number of store operations for conversion of the llvm.memset,
llvm.memcpy, and llvm.memmove intrinsics into a sequence of store operations.
The limit needs to be chosen at the threshold of performance for such an
optimization (generally smallish). The target also needs to specify whether
the target can support unaligned stores for multi-byte store operations.
This helps ensure the optimization doesn't generate code that will trap on
an alignment errors.
More patches to follow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22468 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
f4d32726e622c740b4befc803e604903eb1349df 18-Jul-2005 Chris Lattner <sabre@nondot.org> The assertion was wrong: the code only worked for i64. While we're at it,
expand the code to work for all integer datatypes. This should unbreak
alpha.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0589523525a156e096baf975c5e6e7e4112cb673 16-Jul-2005 Chris Lattner <sabre@nondot.org> Only get the .bss and .data sections when needed instead of unconditionally.
This allows is to not emit empty sections when .data or .bss is not used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22457 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
000339532046486632f50bb66ae75b3bbd38d387 16-Jul-2005 Chris Lattner <sabre@nondot.org> Refactor getSection() method to make it easier to use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22455 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
5f48ff7d1f27891f129ff09f1bbd0fced8c41f5a 16-Jul-2005 Chris Lattner <sabre@nondot.org> Major refactor of the ELFWriter code. Instead of building up one big
vector that represents the .o file at once, build up a vector for each
section of the .o file. This is needed because the .o file writer needs
to be able to switch between sections as it emits them (e.g. switch
between the .text section and the .rel section when emitting code).

This patch has no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22453 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
5a8441ea3fc145393d6274156bd05c4a006099ea 16-Jul-2005 Nate Begeman <natebegeman@mac.com> Teach the legalizer how to promote SINT_TO_FP to a wider SINT_TO_FP that
the target natively supports. This eliminates some special-case code from
the x86 backend and generates better code as well.

For an i8 to f64 conversion, before & after:

_x87 before:
subl $2, %esp
movb 6(%esp), %al
movsbw %al, %ax
movw %ax, (%esp)
filds (%esp)
addl $2, %esp
ret

_x87 after:
subl $2, %esp
movsbw 6(%esp), %ax
movw %ax, (%esp)
filds (%esp)
addl $2, %esp
ret

_sse before:
subl $12, %esp
movb 16(%esp), %al
movsbl %al, %eax
cvtsi2sd %eax, %xmm0
addl $12, %esp
ret

_sse after:
subl $12, %esp
movsbl 16(%esp), %eax
cvtsi2sd %eax, %xmm0
addl $12, %esp
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22452 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cad063f1a8ecda4fd556a733dc5eaa8a96acb80d 16-Jul-2005 Chris Lattner <sabre@nondot.org> Break the code for expanding UINT_TO_FP operations out into its own
SelectionDAGLegalize::ExpandLegalUINT_TO_FP method.

Add a new method, PromoteLegalUINT_TO_FP, which allows targets to request
that UINT_TO_FP operations be promoted to a larger input type. This is
useful for targets that have some UINT_TO_FP or SINT_TO_FP operations but
not all of them (like X86).

The same should be done with SINT_TO_FP, but this patch does not do that
yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22447 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6e741f8842b5570e30f25912dbdaaa2edf36110c 16-Jul-2005 Chris Lattner <sabre@nondot.org> You can't use config options without config.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22446 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
c5f44add43bf9ecb7f1f63a320e4440f8f0784c3 14-Jul-2005 Chris Lattner <sabre@nondot.org> Make this use the new autoconf support for finding the executables for
gv and Graphviz.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22434 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
e388b5ea2c599a1db72497bf2d2920895da28f47 14-Jul-2005 Chris Lattner <sabre@nondot.org> As discussed on IRC, this stuff is just for debugging.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22432 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
f1a2f15ed35c1cf987f6a1a703f855a3c61fdab6 14-Jul-2005 Chris Lattner <sabre@nondot.org> If the Graphviz program is available, use it to visualize dot graphs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22429 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
c087a435109cdc943da094a21371f7d66d5b0e54 13-Jul-2005 Chris Lattner <sabre@nondot.org> Fix Alpha/2005-07-12-TwoMallocCalls.ll and PR593.

It is not safe to call LegalizeOp on something that has already been legalized.
Instead, just force another iteration of legalization.

This could affect all platforms but X86, as this codepath is dynamically
dead on X86 (ISD::MEMSET and friends are legal).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6814f1522dd7cdeb4674a9ad199f482a2e7aaea1 13-Jul-2005 Chris Lattner <sabre@nondot.org> Fix test/Regression/CodeGen/Generic/2005-07-12-memcpy-i64-length.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
46c53054d0af0a99edf98309ff11affe92a17f19 12-Jul-2005 Chris Lattner <sabre@nondot.org> Add support for 64-bit elf files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22400 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
44213c95387eb6f87501b7675380c837149fbb0c 12-Jul-2005 Jeff Cohen <jeffc@jolt-lang.org> VC++ demands that the function returns a value


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22393 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
0e180507975c31d584e0a3ca992ead7709e74f13 11-Jul-2005 Chris Lattner <sabre@nondot.org> Clean up code, no functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22382 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
5fe7b6e2be1de7e77c183e221641387eab187f94 11-Jul-2005 Chris Lattner <sabre@nondot.org> Emit a symbol table entry for each function we output to the ELF file. This
allows objdump to know which function we are emitting to:

00000000 <foo>: <----
0: b8 01 00 00 00 mov $0x1,%eax
5: 03 44 24 04 add 0x4(%esp,1),%eax
9: c3 ret

... and allows .o files to be useful for linking :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22378 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
aa507db59e085b1a6c728c2becef76e6dd9ab03a 11-Jul-2005 Chris Lattner <sabre@nondot.org> add code to emit the .text section to the section header.

Add a *VERY INITIAL* machine code emitter class. This is enough to take
this C function:
int foo(int X) { return X +1; }

and make objdump produce the following:

$ objdump -d t-llvm.o

t-llvm.o: file format elf32-i386

Disassembly of section .text:

00000000 <.text>:
0: b8 01 00 00 00 mov $0x1,%eax
5: 03 44 24 04 add 0x4(%esp,1),%eax
9: c3 ret


Anything using branches or refering to the constant pool or requiring
relocations will not work yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22375 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
5acd120078bb7356d0c1792f293255bbded9c4c9 11-Jul-2005 Chris Lattner <sabre@nondot.org> Use a name mangler object to uniquify names and remove nonstandard
characters from them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22371 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
5f056bf4b862a7c31388a68711dd3b3ed5de2be8 10-Jul-2005 Chris Lattner <sabre@nondot.org> Change *EXTLOAD to use an VTSDNode operand instead of being an MVTSDNode.
This is the last MVTSDNode.

This allows us to eliminate a bunch of special case code for handling
MVTSDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22367 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
9fadb4c1c0a6d223aa468f9f72f8c2562dc66839 10-Jul-2005 Chris Lattner <sabre@nondot.org> Change TRUNCSTORE to use a VTSDNode operand instead of being an MVTSTDNode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22366 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
15e4b01920d6a0ffbe35d3e5aa88a4b42970b6a7 10-Jul-2005 Chris Lattner <sabre@nondot.org> Introduce a new VTSDNode class with the ultimate goal of eliminating the
MVTSDNode class. This class is used to provide an operand to operators
that require an extra type. We start by converting FP_ROUND_INREG and
SIGN_EXTEND_INREG over to using it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22364 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
4c47e3a1c598a2d9c4f0a52c611379fcd08cc6ab 08-Jul-2005 Chris Lattner <sabre@nondot.org> Add support for emitting a .data section and .bss section.
Add support for emitting external and .bss symbols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22358 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
80ed8faaea095ec269a06d97f1de1f04474bea66 07-Jul-2005 Chris Lattner <sabre@nondot.org> Add support for emitting the symbol table (and its string table) of the
module to the ELF file. Test it by adding support for emitting common
symbols. This allows us to compile this:

%X = weak global int 0
%Y = weak global int 0
%Z = weak global int 0

to an elf file that 'readelf's this:

Symbol table '.symtab' contains 4 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000004 4 OBJECT GLOBAL DEFAULT COM X
2: 00000004 4 OBJECT GLOBAL DEFAULT COM Y
3: 00000004 4 OBJECT GLOBAL DEFAULT COM Z


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22343 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
e64e72b794cfa385372436b3c88460aeee0acbf6 05-Jul-2005 Chris Lattner <sabre@nondot.org> Make several cleanups to Andrews varargs change:

1. Pass Value*'s into lowering methods so that the proper pointers can be
added to load/stores from the valist
2. Intrinsics that return void should only return a token chain, not a token
chain/retval pair.
3. Rename LowerVAArgNext -> LowerVAArg, because VANext is long gone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22338 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f2eb1396b8fe7b5b1c4bd5f27903209cfa4d20ae 05-Jul-2005 Andrew Lenharth <andrewl@lenharth.org> 2 fixes:

1: Legalize operand in UINT_TO_FP expanision

2: SRA x, const i8 was not promoting the constant to shift amount type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22337 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c6bead211b608c51270e821f28bb50eed71be6c9 02-Jul-2005 Andrew Lenharth <andrewl@lenharth.org> I really didn't think this was necessary. But, Legalize wasn't running again
and legalizing the extload. Strange. Should fix most alpha regressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22329 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
31559081a4285f4b7282e765aea4ec8a8e1d396c 30-Jun-2005 Andrew Lenharth <andrewl@lenharth.org> oops


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22320 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9d416f713e8b9e4f0c0c2b3f6f57ce2dd8993209 30-Jun-2005 Andrew Lenharth <andrewl@lenharth.org> FP EXTLOAD is not support on all archs, expand to LOAD and FP_EXTEND


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22319 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
06ef88472f7bac3512e224974e87a0a456471b82 29-Jun-2005 Andrew Lenharth <andrewl@lenharth.org> restore old srcValueNode behavior and try to to work around it


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22315 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
782ad62f334c732143047950dff4a1692538735d 29-Jun-2005 Andrew Lenharth <andrewl@lenharth.org> tracking the instructions causing loads and stores provides more information than just the pointer being loaded or stored


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22311 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
f4b3278aeba23efbeacf6be5c33273e2945be2f2 28-Jun-2005 Andrew Lenharth <andrewl@lenharth.org> Adapt the code for handling uint -> fp conversion for the 32 bit case to
handling it in the 64 bit case. The two code paths should probably be merged.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22302 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
35f0a4f24e1d7ded182bd557503a9035fb540a58 27-Jun-2005 Chris Lattner <sabre@nondot.org> iniital checkin of ELFWriter implementation

For now, the elf writer is only capable of emitting an empty elf file, with
a section table and a section table string table. This will be enhanced
in the future :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22291 91177308-0d34-0410-b5e6-96231b3b80d8
LFWriter.cpp
213e557cef3e653e2d3a00b07b137c143128430a 22-Jun-2005 Andrew Lenharth <andrewl@lenharth.org> If we support structs as va_list, we must pass pointers to them to va_copy
See last commit for LangRef, this implements it on all targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
558bc88a00930fce283b240b7c9555f649a18f1b 18-Jun-2005 Andrew Lenharth <andrewl@lenharth.org> core changes for varargs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22254 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
41aaf7016ebf205d8b02c857461f679a3e82f9d0 16-Jun-2005 Nate Begeman <natebegeman@mac.com> Fix bug 537 test 2, which checks to make sure that we fold A+(B-A) -> B for
integer types. Add a couple checks to not perform these kinds of transform
on floating point values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4560657b4c1bb90f899bf59a01a38742f41d9603 15-May-2005 Duraid Madina <duraid@octopus.com.au> aCC and STLport complained about this, because they're like that


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22053 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
e5eb6f829c983dfe0da6634f5ea46a2bf16f359e 15-May-2005 Chris Lattner <sabre@nondot.org> Add some simplifications for MULH[SU]. This allows us to compile this:

long %bar(long %X) {
%Y = mul long %X, 4294967297
ret long %Y
}

to this:

l1_bar:
mov %EAX, DWORD PTR [%ESP + 4]
mov %EDX, %EAX
add %EDX, DWORD PTR [%ESP + 8]
ret

instead of:

l1_bar:
mov %ECX, DWORD PTR [%ESP + 4]
mov %EDX, 1
mov %EAX, %ECX
mul %EDX
add %EDX, %ECX
add %EDX, DWORD PTR [%ESP + 8]
mov %EAX, %ECX
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22044 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4fc997941dde5c11e91a28c9b5b8fa331d053a18 15-May-2005 Chris Lattner <sabre@nondot.org> When inserting callee-save register reloads, make sure to skip over any
terminator instructions before the 'ret' in case the target has a
multi-instruction return sequence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22041 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
1ca85d567c8860a8a7cf0730107f4ee701fa4fd0 14-May-2005 Chris Lattner <sabre@nondot.org> Fix construction of ioport intrinsics, fixing X86/io.llx and io-port.llx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22026 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2789bde57f4245f4418a2d8d54e7f372b71f0a7d 14-May-2005 Chris Lattner <sabre@nondot.org> allow token chain at start or end of node


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22020 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3e01136f9fc2e1db9207d278002e76e6175783e9 14-May-2005 Chris Lattner <sabre@nondot.org> remove special case hacks for readport/readio from the binary operator
codepath


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22019 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
385328ce416e2b98d7113a75d9413a56a2b10318 14-May-2005 Chris Lattner <sabre@nondot.org> Implement fixme's by memoizing nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22018 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b7f7d514220693728b90dfc8293b964fadd58df2 14-May-2005 Chris Lattner <sabre@nondot.org> Turn this into a wrapper for a simpler version of getNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22016 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
adf6c2a0cb638e8b211200b57b927d16f6e1cfc4 14-May-2005 Chris Lattner <sabre@nondot.org> Eliminate special purpose hacks for dynamic_stack_alloc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22015 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
e89083a9300dc463e3b79eabe2b9913d85338d28 14-May-2005 Chris Lattner <sabre@nondot.org> Use the general mechanism for creating multi-value nodes instead of using
special case hacks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22014 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
5fa4fa4e0fde8aebc55a05258d2a274f3c7e1df6 14-May-2005 Chris Lattner <sabre@nondot.org> Wrap long line, actually add node to the graph.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d73cc5d0585e86bf6d350ab9fd9caf85bdfc8b52 14-May-2005 Chris Lattner <sabre@nondot.org> legalize target-specific operations


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22010 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
89c34637cb471609343c2e4f4b08a81779189aa7 14-May-2005 Chris Lattner <sabre@nondot.org> add a getNode() version that allows construction of any node type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22009 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
50381b6c4180e9a2b983d4623da2e485cd768632 14-May-2005 Chris Lattner <sabre@nondot.org> LowerOperation takes a dag


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22004 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
38135af219c48a8626d6af34a92e7e8bb957c81f 14-May-2005 Chris Lattner <sabre@nondot.org> Print the symbolic register name in a register allocator debug dump.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22002 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveInterval.h
iveIntervalAnalysis.cpp
a88a260dbd874a3bdd3e47f4f15ab0d7c7803044 14-May-2005 Chris Lattner <sabre@nondot.org> Allow targets to have a custom int64->fp expander if desired


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a8217e3000b5b01c4a95316aef078a9d02a9a119 14-May-2005 Chris Lattner <sabre@nondot.org> Align doubles on 8-byte boundaries if possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21993 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0db07092a7aaeeaa0722799d9f533be3b782d362 14-May-2005 Chris Lattner <sabre@nondot.org> print stack object alignment in -print-machineinstr dumps


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21992 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
2a82ef317c39ac436f80854c7ddbb06bfddeada1 13-May-2005 Chris Lattner <sabre@nondot.org> Tolerate instrs with extra args


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21982 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
adf6a965a321372c640845407195594835921eb4 13-May-2005 Chris Lattner <sabre@nondot.org> Add an isTailCall flag to LowerCallTo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21958 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
d71c04199c447de39a2cab240c2fb7f717973e20 13-May-2005 Chris Lattner <sabre@nondot.org> Handle TAILCALL node


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21957 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
405ef9e28d955c1b107c27bedfd4be8b9165af01 13-May-2005 Chris Lattner <sabre@nondot.org> Emit function entry code after lowering hte arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21931 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3aa7832c821c19a57aaf6ce87f16d8b49931e644 13-May-2005 Chris Lattner <sabre@nondot.org> Allow targets to emit code into the entry block of each function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21930 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
712ad0c36dcfacb30620c793a6ffe4e80bd5d569 13-May-2005 Chris Lattner <sabre@nondot.org> allow a virtual register to be associated with live-in values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21927 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
eb516e7f0aa3223eab7967f4c0f8132d82efd841 13-May-2005 Chris Lattner <sabre@nondot.org> Fix a problem that nate reduced for me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21923 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9530ddcc605cb65d0a19bbfbfb8b73b09c4e4cfa 13-May-2005 Chris Lattner <sabre@nondot.org> rename variables and functions to match renamed DAG nodes. Bonus feature:
I can actually remember which one is which now!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21922 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
66de05b606cf31f1f23ed0c4eb1f097738cd1506 13-May-2005 Chris Lattner <sabre@nondot.org> do not call expandop on the same value more than once. This fixes
X86/2004-02-22-Casts.llx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21919 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a364fa126a686035909d15a87c4dfd2abc60363c 13-May-2005 Chris Lattner <sabre@nondot.org> fix a bad typeo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21917 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
128b52d3d75f4b74367de43e891cd98b5a9b5483 13-May-2005 Chris Lattner <sabre@nondot.org> update comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21916 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
16cd04d26c53c6f81313cafb85f6c0e7a07cdff6 13-May-2005 Chris Lattner <sabre@nondot.org> rename the ADJCALLSTACKDOWN/ADJCALLSTACKUP nodes to be CALLSEQ_START/BEGIN.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21915 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
9092fa310c8b2b1645b0d448c4c34b1e8ddc131d 12-May-2005 Chris Lattner <sabre@nondot.org> Pass calling convention to use into lower call to


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21900 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
3becf2026bec881a60cbbe0031d8c51f4d6d4e28 12-May-2005 Chris Lattner <sabre@nondot.org> fix expansion of ct[lt]z nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21896 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
39a8f336305a492fc6d2625f39f08968185616d2 12-May-2005 Chris Lattner <sabre@nondot.org> Expand 64-bit ctlz/cttz nodes for 32-bit targets


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21895 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
383203b0036b8fdeef8119975fdbbd528b760adb 12-May-2005 Chris Lattner <sabre@nondot.org> Fix uint->fp casts on PPC, allowing UnitTests/2005-05-12-Int64ToFP to
work on it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21894 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
45982dad53cd184fe8947a1b0206b0b16964f359 12-May-2005 Chris Lattner <sabre@nondot.org> Allow something to be legalized multiple times. This can be used to reduce
legalization iteration


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21892 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
13689e2009e71f7982d1313ed699e0e6a50157d0 12-May-2005 Chris Lattner <sabre@nondot.org> Oops, don't do this after we figure out where to insert the call chains.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21890 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
44d105b7faf5672a2af61a3f0fdfed0d437d5777 12-May-2005 Chris Lattner <sabre@nondot.org> Make sure to expand all nodes, avoiding unintentional node duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21889 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6980d8295f415caa752b45c745c25a9be0079a9a 12-May-2005 Chris Lattner <sabre@nondot.org> handle a common case generated by the uint64 -> FP code path better


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21888 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e131e5b81e5853f3c2a8c63651898ecd37eaf6f8 12-May-2005 Chris Lattner <sabre@nondot.org> add fixme


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21887 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b9fa3bc8f39bf1e8df48b85eae4563032dd20bfc 12-May-2005 Chris Lattner <sabre@nondot.org> Fix a problem where early legalization can cause token chain problems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21885 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
88de6e77bfadea8962b017f372658204ab71448c 12-May-2005 Chris Lattner <sabre@nondot.org> Make legalize a bit more efficient, and canonicalize sub X, C -> add X, -C


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21882 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
d7c4a4a6c048d4174b8795598f50fd76c30731ed 12-May-2005 Nate Begeman <natebegeman@mac.com> Necessary changes to codegen cttz efficiently on PowerPC
1. Teach LegalizeDAG how to better legalize CTTZ if the target doesn't have
CTPOP, but does have CTLZ
2. Teach PPC32 how to do sub x, const -> add x, -const for valid consts
3. Teach PPC32 how to do and (xor a, -1) b -> andc b, a
4. Teach PPC32 that ISD::CTLZ -> PPC::CNTLZW


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
98cf45bbf6b6efc1b90d4744082149e9b5f3e17a 11-May-2005 Chris Lattner <sabre@nondot.org> Fix lowering of ctlz, so now UnitTests/2005-05-11-Popcount-ffs-fls passes
with the CBE


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21875 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
a801172e504b45b2266486ec68adb64f7fcf8e17 11-May-2005 Chris Lattner <sabre@nondot.org> Fix lowering of cttz to work with signed values


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21874 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
86f3e0c24e8834e6ad5ac61f2459fb335549bc24 11-May-2005 Chris Lattner <sabre@nondot.org> fix and concisify intinsic lowering for ctpop. Unfortunately, this code
looks completely untested. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21873 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
0d67f0c80f0295aa44f826ec1402ea73d6b4bd22 11-May-2005 Chris Lattner <sabre@nondot.org> Fix the last remaining bug preventing us from switching the X86 BE over
from the simple isel to the pattern isel. This forces inserted libcalls
to serialize against other function calls, which was breaking
UnitTests/2005-05-12-Int64ToFP. Hopefully this will fix issues on other
targets as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21872 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
27e9b4146417a9bdbade90d0ecc32c9567694a87 11-May-2005 Chris Lattner <sabre@nondot.org> Do not memoize ADJCALLSTACKDOWN nodes, provide a method to hack on them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21871 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
16ce0df92717cd1474029d87efe596d000dc2caa 11-May-2005 Chris Lattner <sabre@nondot.org> wrap long line


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21870 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5c33c9a166c2d68d64c68d8097598d09d9af6c20 11-May-2005 Chris Lattner <sabre@nondot.org> Make sure to legalize generated ctpop nodes, convert tabs to spaces


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21868 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
57ff7e5f6479b43828406a6723b7dde6f673f48c 11-May-2005 Duraid Madina <duraid@octopus.com.au> expand count-leading/trailing-zeros; the test 2005-05-11-Popcount-ffs-fls.c
should now pass (the "LLVM" and "REF" results should be identical)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
18aa680a96c49cf9e28b52f5ab3f2c4f98793636 11-May-2005 Chris Lattner <sabre@nondot.org> Add some notes for expanding clz/ctz


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21862 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e3ef0a8b9f79d77116e888ffe51730c8279b7363 11-May-2005 Chris Lattner <sabre@nondot.org> Simplify this code, use the proper shift amount


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21861 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9b583b49103f21888ac3de3f7941a98a63a23aea 11-May-2005 Chris Lattner <sabre@nondot.org> Legalize this correctly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21859 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
edb1add9a093efa266c94b6d0a34c26f5b2d5d7b 11-May-2005 Chris Lattner <sabre@nondot.org> implement expansion of ctpop nodes, implementing CodeGen/Generic/llvm-ct-intrinsics.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21856 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
276260b16d8771f96afb919a8ee0811254f5c275 11-May-2005 Chris Lattner <sabre@nondot.org> Print bit count nodes correctly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21855 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
19bb2283e6b3ce2bcb8bbbe76c61682caae3ddc7 10-May-2005 Jeff Cohen <jeffc@jolt-lang.org> Silence some VC++ warnings


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21838 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ef311aa7cf26ae0cbb6e784d767801b9058dd24b 10-May-2005 Chris Lattner <sabre@nondot.org> The semantics of cast X to bool are a comparison against zero, not a truncation!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21833 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
6d5b8e16462859333db9ad984f05ec2ed1f48f4a 09-May-2005 Chris Lattner <sabre@nondot.org> legalize readio/writeio into a load/store if requested


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21827 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
52d08bd9d8a8dcc06148525c7fad6f2ebcad0a42 09-May-2005 Chris Lattner <sabre@nondot.org> legalize READPORT, WRITEPORT, READIO, WRITEIO, at least in the basic cases
where they are directly supported by the architecture. Wrap a bunch of
long lines :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21826 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d0f6c1f52dddf11701406c31fd3e9448314a8366 09-May-2005 Chris Lattner <sabre@nondot.org> Add support for matching the READPORT, WRITEPORT, READIO, WRITEIO intrinsics


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21825 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3c6910153c2913ea3e566bbbeb4070f15bfae2f4 09-May-2005 Chris Lattner <sabre@nondot.org> Add support for READPORT, WRITEPORT, READIO, WRITEIO


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21824 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
57aa5961a92b633e668038963fc655d74afe679d 09-May-2005 Chris Lattner <sabre@nondot.org> Fold shifts into subsequent SHL's. These shifts often arise due to addrses
arithmetic lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21818 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
fd414a27fdc85e45af00ed4329cb0e6508470dea 09-May-2005 Chris Lattner <sabre@nondot.org> Don't use the load/store instruction as the source pointer, use the pointer
being stored/loaded through!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21806 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
0437cdd6dc204a77854a61bf19f33cd272224d10 09-May-2005 Chris Lattner <sabre@nondot.org> memoize all nodes, even null Value* nodes. Do not add two token chain outputs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21805 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
369e6db9b6033bb60519b0ad84afeacc9ec9b416 09-May-2005 Chris Lattner <sabre@nondot.org> wrap long lines


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21804 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2bf3c26b2bb783aada259f1c70be6dd0798f6126 09-May-2005 Chris Lattner <sabre@nondot.org> Print SrcValue nodes correctly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21803 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
1f243e9f43e3552c28331c2e17b7c19bdfc889f6 08-May-2005 Chris Lattner <sabre@nondot.org> Wrap long lines. Fix "warning: conflicting types for built-in function 'memset'"
warning from the CBE+GCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21779 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
d7a10c8566c1f2e979f8f3abcaab441297a0c44c 06-May-2005 Misha Brukman <brukman+llvm@gmail.com> * Order #includes alphabetically
* Remove commented-out debug printouts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21707 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
7ea0ade1b6a16b5836645b61da671715180ab039 05-May-2005 Chris Lattner <sabre@nondot.org> When hitting an unsupported intrinsic, actually print it
Lower debug info to noops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21698 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ded10bfb46aeacf02acec0018a0b970c1f932a32 05-May-2005 Andrew Lenharth <andrewl@lenharth.org> ctpop lowering in legalize


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21697 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fecf095292991bdf9396fec474011446107f9813 04-May-2005 Andrew Lenharth <andrewl@lenharth.org> Make promoteOp work for CT*

Proof?

ubyte %bar(ubyte %x) {
entry:
%tmp.1 = call ubyte %llvm.ctlz( ubyte %x )
ret ubyte %tmp.1
}

==>

zapnot $16,1,$0
CTLZ $0,$0
subq $0,56,$0
zapnot $0,1,$0
ret $31,($26),1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21691 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
691ef2ba066dda14ae4ac0ad645054fbc967785a 03-May-2005 Andrew Lenharth <andrewl@lenharth.org> Implement count leading zeros (ctlz), count trailing zeros (cttz), and count
population (ctpop). Generic lowering is implemented, however only promotion
is implemented for SelectionDAG at the moment.

More coming soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21676 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
b1beff0f0d5422d6e7a26a92b691a75367a352fe 30-Apr-2005 Alkis Evlogimenos <alkis@evlogimenos.com> Do not use deprecated APIs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21639 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
f76e7dc8d8ac1855ef59698e82c757548ef4ca65 30-Apr-2005 Chris Lattner <sabre@nondot.org> Codegen and legalize sin/cos/llvm.sqrt as FSIN/FCOS/FSQRT calls. This patch
was contributed by Morten Ofstad, with some minor tweaks and bug fixes added
by me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21636 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
b42a9ffbe9f5dc7dc0e54c6425dff10e926e1f3d 30-Apr-2005 Chris Lattner <sabre@nondot.org> Lower llvm.sqrt -> fsqrt/sqrt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21629 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
da6ba87d234a934409e8d8d5b131b7341ab4bf97 28-Apr-2005 Chris Lattner <sabre@nondot.org> Legalize FSQRT, FSIN, FCOS nodes, patch contributed by Morten Ofstad


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21606 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7f64464ff100bcb7661b65c74c13dc88e83eb65b 28-Apr-2005 Chris Lattner <sabre@nondot.org> Add FSQRT, FSIN, FCOS nodes, patch contributed by Morten Ofstad


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21605 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2d86ea21dd76647cb054fd5d27df9e49efc672b6 27-Apr-2005 Andrew Lenharth <andrewl@lenharth.org> Implement Value* tracking for loads and stores in the selection DAG. This enables one to use alias analysis in the backends.

(TRUNK)Stores and (EXT|ZEXT|SEXT)Loads have an extra SDOperand which is a SrcValueSDNode which contains the Value*. Note that if the operation is introduced by the backend, it will still have the operand, but the value* will be null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21599 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
d36f979085048f0d24dbe4a5584acd89153940a8 26-Apr-2005 Chris Lattner <sabre@nondot.org> Fold (X > -1) | (Y > -1) --> (X&Y > -1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21552 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
229ab2e7b24847ea0d248d3d8b3d83adc8e5f5fe 25-Apr-2005 Chris Lattner <sabre@nondot.org> implement some more logical compares with constants, so that:

int foo1(int x, int y) {
int t1 = x >= 0;
int t2 = y >= 0;
return t1 & t2;
}
int foo2(int x, int y) {
int t1 = x == -1;
int t2 = y == -1;
return t1 & t2;
}

produces:

_foo1:
or r2, r4, r3
srwi r2, r2, 31
xori r3, r2, 1
blr
_foo2:
and r2, r4, r3
addic r2, r2, 1
li r2, 0
addze r3, r2
blr

instead of:

_foo1:
srwi r2, r4, 31
xori r2, r2, 1
srwi r3, r3, 31
xori r3, r3, 1
and r3, r2, r3
blr
_foo2:
addic r2, r4, 1
li r2, 0
addze r2, r2
addic r3, r3, 1
li r3, 0
addze r3, r3
and r3, r2, r3
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21547 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
6ea927930433f5e22acd2316e34e7c7e48ac1a60 25-Apr-2005 Chris Lattner <sabre@nondot.org> Codegen x < 0 | y < 0 as (x|y) < 0. This allows us to compile this to:

_foo:
or r2, r4, r3
srwi r3, r2, 31
blr

instead of:

_foo:
srwi r2, r4, 31
srwi r3, r3, 31
or r3, r2, r3
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21544 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
dedf2bd5a34dac25e4245f58bb902ced6b64edd9 22-Apr-2005 Misha Brukman <brukman+llvm@gmail.com> Convert tabs to spaces


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21439 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
egAllocSimple.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
f976c856fcc5055f3fc7d9f070d72c2d027c1d9d 22-Apr-2005 Misha Brukman <brukman+llvm@gmail.com> Remove trailing whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21422 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
edf128a7fa90f2b0b7ee24741a04a7ae1ecd6f7e 22-Apr-2005 Misha Brukman <brukman+llvm@gmail.com> Remove trailing whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21420 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ranchFolding.cpp
ntrinsicLowering.cpp
iveInterval.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineCodeEmitter.cpp
achineFunction.cpp
achineInstr.cpp
HIElimination.cpp
asses.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
irtRegMap.h
588bbbffa1cf29201c72b8b3f04c6330f4bde2dd 21-Apr-2005 Chris Lattner <sabre@nondot.org> Improve and elimination. On PPC, for:

bool %test(int %X) {
%Y = and int %X, 8
%Z = setne int %Y, 0
ret bool %Z
}

we now generate this:

rlwinm r2, r3, 0, 28, 28
srwi r3, r2, 3

instead of this:

rlwinm r2, r3, 0, 28, 28
srwi r2, r2, 3
rlwinm r3, r2, 0, 31, 31

I'll leave it to Nate to get it down to one instruction. :)

---------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21391 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1c2a9b95dc73c6fd11052e384ea5b10d011abb66 21-Apr-2005 Chris Lattner <sabre@nondot.org> Fold (x & 8) != 0 and (x & 8) == 8 into (x & 8) >> 3.

This turns this PPC code:

rlwinm r2, r3, 0, 28, 28
cmpwi cr7, r2, 8
mfcr r2
rlwinm r3, r2, 31, 31, 31

into this:

rlwinm r2, r3, 0, 28, 28
srwi r2, r2, 3
rlwinm r3, r2, 0, 31, 31

Next up, nuking the extra and.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21390 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
fda2b55e1b169044828c8f7b2cba073bfd455dd5 18-Apr-2005 Chris Lattner <sabre@nondot.org> Fold setcc of MVT::i1 operands into logical operations


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21319 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4a44c8df1984ebcb253dda283bd2c117cbbb1929 18-Apr-2005 Chris Lattner <sabre@nondot.org> Another minor simplification: handle setcc (zero_extend x), c -> setcc(x, c')


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21318 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7467c9b086d3917333ece77e9fc8624922d42ef1 18-Apr-2005 Chris Lattner <sabre@nondot.org> Another simple xform


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21317 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
706aa9685ad74e4825544064bf28aa5b42578812 18-Apr-2005 Chris Lattner <sabre@nondot.org> Fold:
// (X != 0) | (Y != 0) -> (X|Y != 0)
// (X == 0) & (Y == 0) -> (X|Y == 0)

Compiling this:

int %bar(int %a, int %b) {
entry:
%tmp.1 = setne int %a, 0
%tmp.2 = setne int %b, 0
%tmp.3 = or bool %tmp.1, %tmp.2
%retval = cast bool %tmp.3 to int
ret int %retval
}

to this:

_bar:
or r2, r3, r4
addic r3, r2, -1
subfe r3, r3, r2
blr

instead of:

_bar:
addic r2, r3, -1
subfe r2, r2, r3
addic r3, r4, -1
subfe r3, r3, r4
or r3, r2, r3
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21316 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
36019aa5c66abfa0cd55a21004dfef79ab2a3cde 18-Apr-2005 Chris Lattner <sabre@nondot.org> Make the AND elimination operation recursive and significantly more powerful,
eliminating an and for Nate's testcase:

int %bar(int %a, int %b) {
entry:
%tmp.1 = setne int %a, 0
%tmp.2 = setne int %b, 0
%tmp.3 = or bool %tmp.1, %tmp.2
%retval = cast bool %tmp.3 to int
ret int %retval
}

generating:

_bar:
addic r2, r3, -1
subfe r2, r2, r3
addic r3, r4, -1
subfe r3, r3, r4
or r3, r2, r3
blr

instead of:

_bar:
addic r2, r3, -1
subfe r2, r2, r3
addic r3, r4, -1
subfe r3, r3, r4
or r2, r2, r3
rlwinm r3, r2, 0, 31, 31
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21315 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
72ea281d61c74abfa875d4d7ba614a993119df8a 14-Apr-2005 Nate Begeman <natebegeman@mac.com> Add a couple missing transforms in getSetCC that were triggering assertions
in the PPC Pattern ISel


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21297 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
eea805e74ce49f98e03c87a20cf2e6a6ff1b7c52 13-Apr-2005 Nate Begeman <natebegeman@mac.com> Disbale the broken fold of shift + sz[ext] for now
Move the transform for select (a < 0) ? b : 0 into the dag from ppc isel
Enable the dag to fold and (setcc, 1) -> setcc for targets where setcc
always produces zero or one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21291 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
97e001dec7d8972c2734ea63ca020d9136172ba0 13-Apr-2005 Chris Lattner <sabre@nondot.org> fix an infinite loop


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21289 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
fd8d389edef29f6442cb4e32ee4b7ffe1d0c71d7 13-Apr-2005 Chris Lattner <sabre@nondot.org> fix some serious miscompiles on ia64, alpha, and ppc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21288 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
51679c430f1c02cea0717bb20d9b7eac84adf9b2 13-Apr-2005 Chris Lattner <sabre@nondot.org> avoid work when possible, perhaps fix the problem nate and andrew are seeing
with != 0 comparisons vanishing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21287 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e9c35e7309a8293852ba71d874fa4dc99e07e6fe 13-Apr-2005 Chris Lattner <sabre@nondot.org> Implement expansion of unsigned i64 -> FP.

Note that this probably only works for little endian targets, but is enough
to get siod working :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21280 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ffe284c65137ac1d8e4421550bdc9979ed80e9ee 13-Apr-2005 Chris Lattner <sabre@nondot.org> Make expansion of uint->fp cast assert out instead of infinitely recurse.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21275 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e666fcfbdd1c2a8f47c4577ef4ff4a8280099e28 13-Apr-2005 Chris Lattner <sabre@nondot.org> add back the optimization that Nate added for shl X, (zext_inreg y)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21273 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8a8dbfa57cb8bf6bf98a5cfc434dff4d9bdf5e0b 13-Apr-2005 Chris Lattner <sabre@nondot.org> Oops, remove these too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21272 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
23993561e24b2a6eaf0e036062522ab825c30d3f 13-Apr-2005 Chris Lattner <sabre@nondot.org> Instead of making ZERO_EXTEND_INREG nodes, use the helper method in
SelectionDAG to do the job with AND. Don't legalize Z_E_I anymore as
it is gone


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21266 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0f2287baa18fb1c6a7e8ba42ba5163c2845b8654 13-Apr-2005 Chris Lattner <sabre@nondot.org> Remove all foldings of ZERO_EXTEND_INREG, moving them to work for AND nodes
instead. OVerall, this increases the amount of folding we can do.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21265 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
db81ebab89796551eb74100f0c294fae2446d6be 13-Apr-2005 Nate Begeman <natebegeman@mac.com> Fold shift x, [sz]ext(y) -> shift x, y


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21262 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b882752bd04602249d391699dc7183de007f8964 13-Apr-2005 Nate Begeman <natebegeman@mac.com> Fold shift by size larger than type size to undef
Make llvm undef values generate ISD::UNDEF nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21261 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
1c51c6ac13b5e68b099605021784c7f552dcce3c 12-Apr-2005 Chris Lattner <sabre@nondot.org> promote extload i1 -> extload i8


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21258 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fd1f1ee0baf9c808fdee14bdbfe76d4a5e66210d 12-Apr-2005 Chris Lattner <sabre@nondot.org> Remove some redundant checks, add a couple of new ones. This allows us to
compile this:

int foo (unsigned long a, unsigned long long g) {
return a >= g;
}

To:

foo:
movl 8(%esp), %eax
cmpl %eax, 4(%esp)
setae %al
cmpl $0, 12(%esp)
sete %cl
andb %al, %cl
movzbl %cl, %eax
ret

instead of:

foo:
movl 8(%esp), %eax
cmpl %eax, 4(%esp)
setae %al
movzbw %al, %cx
movl 12(%esp), %edx
cmpl $0, %edx
sete %al
movzbw %al, %ax
cmpl $0, %edx
cmove %cx, %ax
movzbl %al, %eax
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21244 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5b95ed652fcfe578aa8af4e21318fca989164e21 12-Apr-2005 Chris Lattner <sabre@nondot.org> Emit comparisons against the sign bit better. Codegen this:

bool %test1(long %X) {
%A = setlt long %X, 0
ret bool %A
}

like this:

test1:
cmpl $0, 8(%esp)
setl %al
movzbl %al, %eax
ret

instead of:

test1:
movl 8(%esp), %ecx
cmpl $0, %ecx
setl %al
movzbw %al, %ax
cmpl $0, 4(%esp)
setb %dl
movzbw %dl, %dx
cmpl $0, %ecx
cmove %dx, %ax
movzbl %al, %eax
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21243 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
08b698e38db5ab5db44c0472e2a7f4f780887629 12-Apr-2005 Chris Lattner <sabre@nondot.org> Emit long comparison against -1 better. Instead of this (x86):

test2:
movl 8(%esp), %eax
notl %eax
movl 4(%esp), %ecx
notl %ecx
orl %eax, %ecx
cmpl $0, %ecx
sete %al
movzbl %al, %eax
ret

or this (PPC):

_test2:
nor r2, r4, r4
nor r3, r3, r3
or r2, r2, r3
cntlzw r2, r2
srwi r3, r2, 5
blr

Emit this:

test2:
movl 8(%esp), %eax
andl 4(%esp), %eax
cmpl $-1, %eax
sete %al
movzbl %al, %eax
ret

or this:

_test2:
.LBB_test2_0: ;
and r2, r4, r3
cmpwi cr0, r2, -1
li r3, 1
li r2, 0
beq .LBB_test2_2 ;
.LBB_test2_1: ;
or r3, r2, r2
.LBB_test2_2: ;
blr

it seems like the PPC isel could do better for R32 == -1 case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21242 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3b2c1d95a27479a0d6ce2e6fcd1f81185568bb31 12-Apr-2005 Chris Lattner <sabre@nondot.org> canonicalize x <u 1 -> x == 0. On this testcase:

unsigned long long g;
unsigned long foo (unsigned long a) {
return (a >= g) ? 1 : 0;
}

It changes the ppc code from:

_foo:
.LBB_foo_0: ; entry
mflr r11
stw r11, 8(r1)
bl "L00000$pb"
"L00000$pb":
mflr r2
addis r2, r2, ha16(L_g$non_lazy_ptr-"L00000$pb")
lwz r2, lo16(L_g$non_lazy_ptr-"L00000$pb")(r2)
lwz r4, 0(r2)
lwz r2, 4(r2)
cmplw cr0, r3, r2
li r2, 1
li r3, 0
bge .LBB_foo_2 ; entry
.LBB_foo_1: ; entry
or r2, r3, r3
.LBB_foo_2: ; entry
cmplwi cr0, r4, 1
li r3, 1
li r5, 0
blt .LBB_foo_4 ; entry
.LBB_foo_3: ; entry
or r3, r5, r5
.LBB_foo_4: ; entry
cmpwi cr0, r4, 0
beq .LBB_foo_6 ; entry
.LBB_foo_5: ; entry
or r2, r3, r3
.LBB_foo_6: ; entry
rlwinm r3, r2, 0, 31, 31
lwz r11, 8(r1)
mtlr r11
blr


to:

_foo:
.LBB_foo_0: ; entry
mflr r11
stw r11, 8(r1)
bl "L00000$pb"
"L00000$pb":
mflr r2
addis r2, r2, ha16(L_g$non_lazy_ptr-"L00000$pb")
lwz r2, lo16(L_g$non_lazy_ptr-"L00000$pb")(r2)
lwz r4, 0(r2)
lwz r2, 4(r2)
cmplw cr0, r3, r2
li r2, 1
li r3, 0
bge .LBB_foo_2 ; entry
.LBB_foo_1: ; entry
or r2, r3, r3
.LBB_foo_2: ; entry
cntlzw r3, r4
srwi r3, r3, 5
cmpwi cr0, r4, 0
beq .LBB_foo_4 ; entry
.LBB_foo_3: ; entry
or r2, r3, r3
.LBB_foo_4: ; entry
rlwinm r3, r2, 0, 31, 31
lwz r11, 8(r1)
mtlr r11
blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21241 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
bd0781ed12dd817f760065e3ac2dcff12fb29440 11-Apr-2005 Chris Lattner <sabre@nondot.org> Teach the dag mechanism that this:

long long test2(unsigned A, unsigned B) {
return ((unsigned long long)A << 32) + B;
}

is equivalent to this:

long long test1(unsigned A, unsigned B) {
return ((unsigned long long)A << 32) | B;
}

Now they are both codegen'd to this on ppc:

_test2:
blr

or this on x86:

test2:
movl 4(%esp), %edx
movl 8(%esp), %eax
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21231 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ee27f57a6a4dd7fa9259b3604f563907da1f65ef 11-Apr-2005 Chris Lattner <sabre@nondot.org> Fix expansion of shifts by exactly NVT bits on arch's (like X86) that have
masking shifts.

This fixes the miscompilation of this:

long long test1(unsigned A, unsigned B) {
return ((unsigned long long)A << 32) | B;
}

into this:

test1:
movl 4(%esp), %edx
movl %edx, %eax
orl 8(%esp), %eax
ret

allowing us to generate this instead:

test1:
movl 4(%esp), %edx
movl 8(%esp), %eax
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21230 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c7c16575fea9aeffe8a63ddabe7c3c25f81ed799 11-Apr-2005 Nate Begeman <natebegeman@mac.com> Fix libcall code to not pass a NULL Chain to LowerCallTo
Fix libcall code to not crash or assert looking for an ADJCALLSTACKUP node
when it is known that there is no ADJCALLSTACKDOWN to match.
Expand i64 multiply when ISD::MULHU is legal for the target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21214 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
2bb6f412820cad829e1dd3ea4bd8a1b26c8c23b6 11-Apr-2005 Chris Lattner <sabre@nondot.org> Don't bother sign/zext_inreg'ing the result of an and operation if we know
the result does change as a result of the extend.

This improves codegen for Alpha on this testcase:

int %a(ushort* %i) {
%tmp.1 = load ushort* %i
%tmp.2 = cast ushort %tmp.1 to int
%tmp.4 = and int %tmp.2, 1
ret int %tmp.4
}

Generating:

a:
ldgp $29, 0($27)
ldwu $0,0($16)
and $0,1,$0
ret $31,($26),1

instead of:

a:
ldgp $29, 0($27)
ldwu $0,0($16)
and $0,1,$0
addl $0,0,$0
ret $31,($26),1

btw, alpha really should switch to livein/outs for args :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21213 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
01ff7216dd7829d4094754086baf28aa2d7149ac 11-Apr-2005 Chris Lattner <sabre@nondot.org> Teach legalize to deal with targets that don't support some SEXTLOAD/ZEXTLOADs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21212 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
6841dec8c1c071b5a417fb4172633c68301be36c 10-Apr-2005 Chris Lattner <sabre@nondot.org> don't zextload fp values!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21209 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
232ee95a09a583b7d66b90ee7ddf7fdb9c194a04 10-Apr-2005 Chris Lattner <sabre@nondot.org> Until we have a dag combiner, promote using zextload's instead of extloads.
This gives the optimizer a bit of information about the top-part of the
value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21205 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
45278e37eb9823ceabdaab6b27dabf3b5dcdcede 10-Apr-2005 Chris Lattner <sabre@nondot.org> Fold zext_inreg(zextload), likewise for sext's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21204 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
edeecfcbd5ae3fe6d7e65107203a93ed196aaf1b 10-Apr-2005 Chris Lattner <sabre@nondot.org> add a simple xform


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21203 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
dea29e25c32d2651e2efaff67bc30803ea24d991 10-Apr-2005 Chris Lattner <sabre@nondot.org> Fix a thinko. If the operand is promoted, pass the promoted value into
the new zero extend, not the original operand. This fixes cast bool -> long
on ppc.

Add an unrelated fixme


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21196 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
a2daa8c78d8749d6b4743e8bbfe4d522cd13a669 09-Apr-2005 Chris Lattner <sabre@nondot.org> add a little peephole optimization. This allows us to codegen:

int a(short i) {
return i & 1;
}

as

_a:
andi. r3, r3, 1
blr

instead of:

_a:
rlwinm r2, r3, 0, 16, 31
andi. r3, r2, 1
blr

on ppc. It should also help the other risc targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21189 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8e7d87b22867cc5add0c2e9fda4fddb340128403 09-Apr-2005 Chris Lattner <sabre@nondot.org> there is no need to remove this instruction, linscan does it already as it
removes noop moves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21183 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
799a919dbc03d8451434a1f3afc6fe571212d19c 09-Apr-2005 Chris Lattner <sabre@nondot.org> Adjust live intervals to support a livein set


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21182 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d493b34d31ddb37b2e2f0b24e00c4597cb1dcfd6 09-Apr-2005 Chris Lattner <sabre@nondot.org> Consider the livein/out set for a function, allowing targets to not have to
use ugly imp_def/imp_uses for arguments and return values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21180 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
59723e96987bdbfbada75fdbf1742f6a28d90d7d 09-Apr-2005 Chris Lattner <sabre@nondot.org> recognize some patterns as fabs operations, so that fabs at the source level
is deconstructed then reconstructed here. This catches 19 fabs's in 177.mesa
9 in 168.wupwise, 5 in 171.swim, 3 in 172.mgrid, and 14 in 173.applu out of
specfp2000.

This allows the X86 code generator to make MUCH better code than before for
each of these and saves one instr on ppc.

This depends on the previous CFE patch to expose these correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21171 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e7ccd4acd2ee9753e6d212efd522be5c7de154d7 09-Apr-2005 Chris Lattner <sabre@nondot.org> Emit BRCONDTWOWAY when possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21167 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
411e888c1b4155190c8cffe388631ee20693b309 09-Apr-2005 Chris Lattner <sabre@nondot.org> Legalize BRCONDTWOWAY into a BRCOND/BR pair if a target doesn't support it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21166 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ef847df0870b9e3407bdc24ccb9db9ba2df817e6 09-Apr-2005 Chris Lattner <sabre@nondot.org> print and fold BRCONDTWOWAY correctly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21165 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
485df9b84b5753154d3762b2a176b8b6684f716f 09-Apr-2005 Chris Lattner <sabre@nondot.org> canonicalize a bunch of operations involving fneg


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21160 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5a6bace3ab8db44e5412a773626fbb76fb316767 07-Apr-2005 Chris Lattner <sabre@nondot.org> If a target zero or sign extends the result of its setcc, allow folding of
this into sign/zero extension instructions later.

On PPC, for example, this testcase:

%G = external global sbyte
implementation
void %test(int %X, int %Y) {
%C = setlt int %X, %Y
%D = cast bool %C to sbyte
store sbyte %D, sbyte* %G
ret void
}

Now codegens to:

cmpw cr0, r3, r4
li r3, 1
li r4, 0
blt .LBB_test_2 ;
.LBB_test_1: ;
or r3, r4, r4
.LBB_test_2: ;
addis r2, r2, ha16(L_G$non_lazy_ptr-"L00000$pb")
lwz r2, lo16(L_G$non_lazy_ptr-"L00000$pb")(r2)
stb r3, 0(r2)

instead of:

cmpw cr0, r3, r4
li r3, 1
li r4, 0
blt .LBB_test_2 ;
.LBB_test_1: ;
or r3, r4, r4
.LBB_test_2: ;
*** rlwinm r3, r3, 0, 31, 31
addis r2, r2, ha16(L_G$non_lazy_ptr-"L00000$pb")
lwz r2, lo16(L_G$non_lazy_ptr-"L00000$pb")(r2)
stb r3, 0(r2)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21148 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2467392c5931579e2354b9e64e8ecf6cc5192d13 07-Apr-2005 Chris Lattner <sabre@nondot.org> Remove somethign I had for testing


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21144 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
67255a1d1783c126c1cbd4982670a61bc63aacce 07-Apr-2005 Chris Lattner <sabre@nondot.org> This patch does two things. First, it canonicalizes 'X >= C' -> 'X > C-1'
(likewise for <= >=u >=u).

Second, it implements a special case hack to turn 'X gtu SINTMAX' -> 'X lt 0'

On powerpc, for example, this changes this:

lis r2, 32767
ori r2, r2, 65535
cmplw cr0, r3, r2
bgt .LBB_test_2

into:

cmpwi cr0, r3, 0
blt .LBB_test_2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21142 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8e8bd656b3eeb69947719c3673f37756f1b2a466 07-Apr-2005 Chris Lattner <sabre@nondot.org> Fix a really scary bug that Nate found where we weren't deleting the right
elements auto of the autoCSE maps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21128 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f1fe32e337cf825a27a57bb3e9fb847bc91a26ce 06-Apr-2005 Nate Begeman <natebegeman@mac.com> Teach ExpandShift how to handle shifts by a constant. This allows targets
like PowerPC to codegen long shifts in many fewer instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21122 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c105e19864f2792c52bc6bb765d365308f38f461 06-Apr-2005 Nate Begeman <natebegeman@mac.com> Expand SREM and UREM for targets that claim not to have them, like PowerPC


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21103 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1867054643c20c3027421ab7711664b4d55fe4c6 06-Apr-2005 Nate Begeman <natebegeman@mac.com> Add MULHU and MULHS nodes for the high part of an (un)signed 32x32=64b
multiply.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21102 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
886dd9136f4c5b4523a0958e726955272eb9dfb2 04-Apr-2005 Chris Lattner <sabre@nondot.org> Make sure to notice that explicit physregs are used in the function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21084 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
79e46acd35df36477029e9f534ab1a366a98df56 04-Apr-2005 Nate Begeman <natebegeman@mac.com> Handle expanding arguments to ISD::TRUNCATE. This happens on PowerPC when
you have something like i16 = truncate i64. This fixes Regression/C/casts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21073 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
06098e0e9bd542f227aa3802768d1416e79e9f45 04-Apr-2005 Chris Lattner <sabre@nondot.org> Fix sign_extend and zero_extend of promoted value types to expanded value
types. This occurs when casting short to long on PPC for example.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21072 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
855a51974134e818232e52d63a2c3b2b48c8e244 02-Apr-2005 Duraid Madina <duraid@octopus.com.au> add support for prefix/suffix strings to go around GlobalValue(s)
(which may or be function pointers) in the asmprinter. For the moment,
this changes nothing, except the IA64 backend which can use this to write:

data8.ua @fptr(blah__blah__mangled_function_name)

(by setting FunctionAddrPrefix/Suffix to "@fptr(" / ")")


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21024 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
c0f18152d94bf65061fab4b80869998cfb0439e1 02-Apr-2005 Chris Lattner <sabre@nondot.org> transform fabs/fabsf calls into FABS nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21014 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4af6e0d7836126630f579b0a34f054321187f00b 02-Apr-2005 Chris Lattner <sabre@nondot.org> Expand fabs into fneg


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21013 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b9fccc41933648647e3f7669612c683eb5de0d58 02-Apr-2005 Chris Lattner <sabre@nondot.org> Turn -0.0 - X -> fneg


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21011 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
2c8086f4b9916b2d02842be5e375276023225fba 02-Apr-2005 Chris Lattner <sabre@nondot.org> Several changes mixed up here. First when legalizing a DAG with pcmarker,
dont' regen the whole dag if unneccesary. Second, fix and ugly bug with
the _PARTS nodes that caused legalize to produce multiples of them.
Finally, implement initial support for FABS and FNEG. Currently FNEG is
the only one to be trusted though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21009 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ff9fd0a99c00a5ec17b867365bd2c22fb4061363 02-Apr-2005 Chris Lattner <sabre@nondot.org> print fneg/fabs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21008 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5b359c6c4f052e41579ad7da9af37db4f54207d9 02-Apr-2005 Chris Lattner <sabre@nondot.org> fix some bugs in the implementation of SHL_PARTS and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21004 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
4759982a2d4ab597fb69d4a1113d0f35e673a4e1 02-Apr-2005 Chris Lattner <sabre@nondot.org> Turn expanded shift operations into (e.g.) SHL_PARTS if the target supports it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21002 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
41be951a47d2141a3c6693c0b598509c889f3f37 02-Apr-2005 Chris Lattner <sabre@nondot.org> Print some new nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21001 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f4b457987fca50a1dc86e1a60dad2cff2b060945 02-Apr-2005 Chris Lattner <sabre@nondot.org> Fix a bug when inserting a libcall into a function with no other calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20999 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ea19cd51aaf87c5cc19e7cdc2c32ddbefcac7b8f 02-Apr-2005 Nate Begeman <natebegeman@mac.com> Fix a warning about an unhandled switch case


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20994 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fc1b1dad88a256ab5ab16dd548ad82df8efa2ca9 02-Apr-2005 Nate Begeman <natebegeman@mac.com> Add ISD::UNDEF node
Teach the SelectionDAG code how to expand and promote it
Have PPC32 LowerCallTo generate ISD::UNDEF for int arg regs used up by fp
arguments, but not shadowing their value. This allows us to do the right
thing with both fixed and vararg floating point arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20988 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
380ae495996c84f348d12224ea9f4514f6471f59 01-Apr-2005 Chris Lattner <sabre@nondot.org> print the machine CFG in the -print-machineinstrs dump


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20976 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
95762124a1d781cc0f8cbc4c22e9c5c1358d7ea0 31-Mar-2005 Andrew Lenharth <andrewl@lenharth.org> PCMarker support for DAG and Alpha


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20965 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
a33ef4816d2c192e36e7c025d18c66e89ef9d311 30-Mar-2005 Chris Lattner <sabre@nondot.org> Instead of setting up the CFG edges at selectiondag construction time, set
them up after the code has been emitted. This allows targets to select one
mbb as multiple mbb's as needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20937 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
f51d3bd6769d46e7cf7beaa283d1ca449629bd32 29-Mar-2005 Chris Lattner <sabre@nondot.org> Fix a bug that andrew noticed where we do not correctly sign/zero extend
returned integer values all of the way to 64-bits (we only did it to 32-bits
leaving the top bits undefined). This causes problems for targets like alpha
whose ABI's define the top bits too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20926 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d4e50bb2e23b8f9ddde629a28dab3bcdaf0633e4 29-Mar-2005 Chris Lattner <sabre@nondot.org> implement legalization of build_pair for nate


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20901 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7f4ec3b2e3157e6a0798f3e95a3961bfa6ef66b6 28-Mar-2005 Andrew Lenharth <andrewl@lenharth.org> First step in adding pcmarker intrinsic. Second step (soon) is adding backend support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20900 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
8e21e71b248365c69c0f666518c378b5819ce6fb 26-Mar-2005 Nate Begeman <natebegeman@mac.com> Change interface to LowerCallTo to take a boolean isVarArg argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20842 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
5b3a4553c1da7e417a240379e2f510c77532c5c1 17-Mar-2005 Chris Lattner <sabre@nondot.org> Fix the missing symbols problem Bill was hitting. Patch contributed by
Bill Wendling!!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20649 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
e4d5c441e04bdc00ccf1804744af670655123b07 15-Mar-2005 Chris Lattner <sabre@nondot.org> This mega patch converts us from using Function::a{iterator|begin|end} to
using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*.

This patch is contributed by Gabor Greif, thanks!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20597 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
electionDAG/SelectionDAGISel.cpp
e97568c3c41e6de2b726d2cd99724659650e9614 10-Mar-2005 Chris Lattner <sabre@nondot.org> I didn't mean to check this in. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20555 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ee639f1760ea3d22c46b141393eab611a4de2200 10-Mar-2005 Chris Lattner <sabre@nondot.org> Fix a bug where we would incorrectly do a sign ext instead of a zero ext
because we were checking the wrong thing. Thanks to andrew for pointing
this out!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20554 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
f768bba43f5c036039851d2fcca8212edca18467 10-Mar-2005 Chris Lattner <sabre@nondot.org> Allow the live interval analysis pass to be a bit more aggressive about
numbering values in live ranges for physical registers.

The alpha backend currently generates code that looks like this:

vreg = preg
...
preg = vreg
use preg
...
preg = vreg
use preg

etc. Because vreg contains the value of preg coming in, each of the
copies back into preg contain that initial value as well.

In the case of the Alpha, this allows this testcase:

void "foo"(int %blah) {
store int 5, int *%MyVar
store int 12, int* %MyVar2
ret void
}

to compile to:

foo:
ldgp $29, 0($27)
ldiq $0,5
stl $0,MyVar
ldiq $0,12
stl $0,MyVar2
ret $31,($26),1

instead of:

foo:
ldgp $29, 0($27)
bis $29,$29,$0
ldiq $1,5
bis $0,$0,$29
stl $1,MyVar
ldiq $1,12
bis $0,$0,$29
stl $1,MyVar2
ret $31,($26),1

This does not seem to have any noticable effect on X86 code.

This fixes PR535.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20536 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
14723c264d26c9387e27b0e7d5deaf225effe484 09-Mar-2005 Chris Lattner <sabre@nondot.org> constant fold FP_ROUND_INREG, ZERO_EXTEND_INREG, and SIGN_EXTEND_INREG

This allows the alpha backend to compile:

bool %test(uint %P) {
%c = seteq uint %P, 0
ret bool %c
}

into:

test:
ldgp $29, 0($27)
ZAP $16,240,$0
CMPEQ $0,0,$0
AND $0,1,$0
ret $31,($26),1

instead of:

test:
ldgp $29, 0($27)
ZAP $16,240,$0
ldiq $1,0
ZAP $1,240,$1
CMPEQ $0,$1,$0
AND $0,1,$0
ret $31,($26),1

... and fixes PR534.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20534 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d0656fc94dbdbf87217812f68778963dbd6244eb 01-Mar-2005 Alkis Evlogimenos <alkis@evlogimenos.com> Lower llvm.isunordered(a, b) into a != a | b != b.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20382 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
0942b7caf1b5fde959301042129d25f1e7b86b28 28-Feb-2005 Chris Lattner <sabre@nondot.org> Lower prefetch to a noop, patch contributed by Justin Wick!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20375 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
84734ce8ef1a21eb347d4deca0bf32d59001f751 22-Feb-2005 Chris Lattner <sabre@nondot.org> Fix a bug in the 'store fpimm, ptr' -> 'store intimm, ptr' handling code.
Changing 'op' here caused us to not enter the store into a map, causing
reemission of the code!! In practice, a simple loop like this:

no_exit: ; preds = %no_exit, %entry
%indvar = phi uint [ %indvar.next, %no_exit ], [ 0, %entry ] ; <uint> [#uses=3]
%tmp.4 = getelementptr "complex long double"* %P, uint %indvar, uint 0 ; <double*> [#uses=1]
store double 0.000000e+00, double* %tmp.4
%indvar.next = add uint %indvar, 1 ; <uint> [#uses=2]
%exitcond = seteq uint %indvar.next, %N ; <bool> [#uses=1]
br bool %exitcond, label %return, label %no_exit

was being code gen'd to:

.LBBtest_1: # no_exit
movl %edx, %esi
shll $4, %esi
movl $0, 4(%eax,%esi)
movl $0, (%eax,%esi)
incl %edx
movl $0, (%eax,%esi)
movl $0, 4(%eax,%esi)
cmpl %ecx, %edx
jne .LBBtest_1 # no_exit

Note that we are doing 4 32-bit stores instead of 2. Now we generate:

.LBBtest_1: # no_exit
movl %edx, %esi
incl %esi
shll $4, %edx
movl $0, (%eax,%edx)
movl $0, 4(%eax,%edx)
cmpl %ecx, %esi
movl %esi, %edx
jne .LBBtest_1 # no_exit

This is much happier, though it would be even better if the increment of ESI
was scheduled after the compare :-/


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20265 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d3f03e4b50feb6abfa9fec8b0aa705d45134c59e 17-Feb-2005 Misha Brukman <brukman+llvm@gmail.com> Fix compilation errors with VS 2005, patch by Aaron Gray.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20231 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
d8658616cf8b6ad984974bb764dc9ee4b77499aa 17-Feb-2005 Chris Lattner <sabre@nondot.org> Don't rely on doubles comparing identical to each other, which doesn't work
for 0.0 and -0.0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20230 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
aa781b34040f07db00fb4b59cb567e6ad9ef5861 17-Feb-2005 Chris Lattner <sabre@nondot.org> Don't sink argument loads into loops or other bad places. This disables folding of argument loads with instructions that are not in the entry block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20228 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
27e192196fec42618c7fcbd865e8e0b541545671 14-Feb-2005 Chris Lattner <sabre@nondot.org> Print GEP offsets as signed values instead of unsigned values. On X86, this
prints:

getelementptr (int* %A, int -1)

as: "(A) - 4" instead of "(A) + 18446744073709551612", which makes the
assembler much happier.

This fixes test/Regression/CodeGen/X86/2005-02-14-IllegalAssembler.ll,
and Benchmarks/Prolangs-C/cdecl with LLC on X86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20183 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
595dc5408ad809b9a9a417db275c43242e54b8dc 04-Feb-2005 Chris Lattner <sabre@nondot.org> Fix a case where were incorrectly compiled cast from short to int on 64-bit
targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20030 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
571c9c314f2f02319ebf485b05dccd6d33bf87af 04-Feb-2005 Andrew Lenharth <andrewl@lenharth.org> fix constant pointer outputing on 64 bit machines


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20026 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
272455b404eabe70ce9e033ba19ec1b6cfe603a5 02-Feb-2005 Chris Lattner <sabre@nondot.org> Fix yet another memset issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19986 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
deb692e756cd3826e4ecc6eaec3397177c8b89ce 01-Feb-2005 Chris Lattner <sabre@nondot.org> Fix some bugs andrew noticed legalizing memset for alpha


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19969 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
bca81448ac8e19c588c9a4ad16fc70732b76327c 30-Jan-2005 Chris Lattner <sabre@nondot.org> Improve conformance with the Misha spelling benchmark suite


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19930 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineFunction.cpp
9d5d7598db72c00a0fb89dc77198e4f6ebc5294d 29-Jan-2005 Chris Lattner <sabre@nondot.org> adjust to ilist changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19924 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineFunction.cpp
99939d39c9555ebecbcd24c1b607eae52804ea37 28-Jan-2005 Chris Lattner <sabre@nondot.org> Alpha doesn't have a native f32 extload instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19880 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e76ad6de40b5e4c0399257b0438914c8c85ceaa1 28-Jan-2005 Chris Lattner <sabre@nondot.org> implement legalization of truncates whose results and sources need to be
truncated, e.g. (truncate:i8 something:i16) on a 32 or 64-bit RISC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19879 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e560521f1af300a10717ca5c73d42df9ffb1b121 28-Jan-2005 Chris Lattner <sabre@nondot.org> Get alpha working with memset/memcpy/memmove


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19878 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
13c184de29c09294ed63b01ac43e1b46c049278e 28-Jan-2005 Chris Lattner <sabre@nondot.org> CopyFromReg produces two values. Make sure that we remember that both are
legalized, and actually return the correct result when we legalize the chain first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19866 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fed5577066aa13948745415316ebad1c2e72507e 24-Jan-2005 Chris Lattner <sabre@nondot.org> Silence optimized warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19797 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3563015b0df358cfc4ec310eb0df195015ea54a5 24-Jan-2005 Chris Lattner <sabre@nondot.org> Simplify/speedup the PEI by not having to scan for uses of the callee saved
registers. This information is computed directly by the register allocator
now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19795 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
786116337e1717e79c77339cfc13d3bf2b854ae6 23-Jan-2005 Chris Lattner <sabre@nondot.org> Update physregsused info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19793 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
0648b16c486388c1b58b7a2d0f865d08bdfcd3a9 23-Jan-2005 Chris Lattner <sabre@nondot.org> Update this pass to set PhysRegsUsed info in MachineFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19792 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
b0f31bf19b9cd0107900728123d4848eae462e6c 23-Jan-2005 Chris Lattner <sabre@nondot.org> Update these register allocators to set the PhysRegUsed info in MachineFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19791 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
irtRegMap.cpp
ce9c41e77a2ec75d48a173b9baf0f4a3bf49fac7 23-Jan-2005 Chris Lattner <sabre@nondot.org> Add support for the PhysRegsUsed array.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19789 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
92b9fcea7b3180ed18f379212d14bd5cea7a1954 23-Jan-2005 Chris Lattner <sabre@nondot.org> Speed this up a bit by making ModifiedRegs a vector<char> not vector<bool>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19787 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
9c32d3b798dc6caeebe6cea2effe80ca5e84e66e 23-Jan-2005 Chris Lattner <sabre@nondot.org> Adjust to changes in SelectionDAG interfaces
The first half of correct chain insertion for libcalls. This is not enough
to fix Fhourstones yet though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19781 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
b48da3953642d3d006edebd7fc6c1ca5bcfdb5cd 23-Jan-2005 Chris Lattner <sabre@nondot.org> Remove the 3 HACK HACK HACKs I put in before, fixing them properly with
the new TLI that is available.

Implement support for handling out of range shifts. This allows us to
compile this code (a 64-bit rotate):

unsigned long long f3(unsigned long long x) {
return (x << 32) | (x >> (64-32));
}

into this:

f3:
mov %EDX, DWORD PTR [%ESP + 4]
mov %EAX, DWORD PTR [%ESP + 8]
ret

GCC produces this:

$ gcc t.c -masm=intel -O3 -S -o - -fomit-frame-pointer
..
f3:
push %ebx
mov %ebx, DWORD PTR [%esp+12]
mov %ecx, DWORD PTR [%esp+8]
mov %eax, %ebx
mov %edx, %ecx
pop %ebx
ret

The Simple ISEL produces (eww gross):

f3:
sub %ESP, 4
mov DWORD PTR [%ESP], %ESI
mov %EDX, DWORD PTR [%ESP + 8]
mov %ECX, DWORD PTR [%ESP + 12]
mov %EAX, 0
mov %ESI, 0
or %EAX, %ECX
or %EDX, %ESI
mov %ESI, DWORD PTR [%ESP]
add %ESP, 4
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19780 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ac9dc08c7f0ae60c125624d72c3022025d79ee9e 23-Jan-2005 Chris Lattner <sabre@nondot.org> Adjust to changes in SelectionDAG interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19779 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
68cd65ea689907fb8a4aa80d72d182921e94607f 23-Jan-2005 Chris Lattner <sabre@nondot.org> Get this to work for 64-bit systems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19763 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
5037a1591070247af4f83316ec479829846cc734 22-Jan-2005 Chris Lattner <sabre@nondot.org> Implicitly defined registers can clobber callee saved registers too!
This fixes the return-address-not-being-saved problem in the Alpha backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19741 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
7cd50cf286c5f16ca633080b3d78ee4dd2094a9f 22-Jan-2005 Chris Lattner <sabre@nondot.org> More bugfixes for IA64 shifts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19739 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
27ff112948d059524e5f4ebe249a1da0b7c710e8 22-Jan-2005 Chris Lattner <sabre@nondot.org> Fix problems with non-x86 targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19738 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
a7306db5f7cb7376da77237ada0bd624f99fec6c 22-Jan-2005 Chris Lattner <sabre@nondot.org> Add a nasty hack to fix Alpha/IA64 multiplies by a power of two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19737 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
9bb86f46e134bf75d1dd76d9865156fb67eb24eb 22-Jan-2005 Chris Lattner <sabre@nondot.org> Remove unneeded line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19736 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
1e7ceaf0a0ff966725957f123bd6958f6884d674 22-Jan-2005 Chris Lattner <sabre@nondot.org> test commit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19735 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
a93ec3ebfb2b6382c79e577cff4c05c204ed4544 21-Jan-2005 Chris Lattner <sabre@nondot.org> Unary token factor nodes are unneeded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19727 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
77e77a6aa0ab25a812947aed477220dd11220a18 21-Jan-2005 Chris Lattner <sabre@nondot.org> Refactor libcall code a bit. Initial implementation of expanding int -> FP
operations for 64-bit integers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19724 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e5544f851a2a3f7b06339b132e60ad2f2d53e7b8 20-Jan-2005 Chris Lattner <sabre@nondot.org> Simplify the shift-expansion code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19721 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
84f6788044f9b1b47945e98ce23a6cf4d7d32579 20-Jan-2005 Chris Lattner <sabre@nondot.org> Expand add/sub into ADD_PARTS/SUB_PARTS instead of a non-existant libcall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19715 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
17eee18f40c79cd6ed00985201d395f8da50c417 20-Jan-2005 Chris Lattner <sabre@nondot.org> implement add_parts/sub_parts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19714 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2c49f2795514a7c56b680ba0310d7eb0a8a43289 19-Jan-2005 Chris Lattner <sabre@nondot.org> Support targets that do not use i8 shift amounts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19707 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
3ca6a2c72c9ab8c5df00fc473abcc12f526b9f6a 19-Jan-2005 Chris Lattner <sabre@nondot.org> Add an assertion that would have made more sense to duraid


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19704 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
3d9dffc5863d0319aa9c5cb156045ae6778cba01 19-Jan-2005 Chris Lattner <sabre@nondot.org> Add support for targets that pass args in registers to calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19703 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1e81b9e5112c40c23ecca9a64b6ab2ce97c8c6d4 19-Jan-2005 Chris Lattner <sabre@nondot.org> Fold single use token factor nodes into other token factor nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19701 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ec39a45bdb1eca0cfe77be6a05cc43e16f2338eb 19-Jan-2005 Chris Lattner <sabre@nondot.org> Realize the individual pieces of an expanded copytoreg/store/load are
independent of each other.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19700 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
39908e0ce0d8bd9de3c53271f0d27ab9d75816ad 19-Jan-2005 Chris Lattner <sabre@nondot.org> Know some identities about tokenfactor nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19699 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
88218ef706ba6fffc3b3f3c894910eea0f59abb1 19-Jan-2005 Chris Lattner <sabre@nondot.org> Know some simple identities. This improves codegen for (1LL << N).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19698 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2a6e163edc2f5c81ad1f4c527c354b1a727676b7 19-Jan-2005 Chris Lattner <sabre@nondot.org> Just in case, handle something that is both a use and a def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19696 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
d45be36965470710eb18662fc716243ea384bf2f 19-Jan-2005 Chris Lattner <sabre@nondot.org> When an instruction moves, make sure to update the VarInfo::Kills list as
well as all of teh other stuff in livevar. This fixes the compiler crash
on fourinarow last night.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19695 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
c71d6949b91e19610f0f85f57b402b4df43019a5 19-Jan-2005 Chris Lattner <sabre@nondot.org> Use the TargetInstrInfo::commuteInstruction method to commute instructions
instead of doing it manually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19685 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
e34b396ab7d28469bf3d9679a748b643d8e30458 19-Jan-2005 Chris Lattner <sabre@nondot.org> Implement a way of expanding shifts. This applies to targets that offer
select operations or to shifts that are by a constant. This automatically
implements (with no special code) all of the special cases for shift by 32,
shift by < 32 and shift by > 32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19679 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
d6e496732b9cc2c4b4986d015c7dba9032aaa14c 19-Jan-2005 Chris Lattner <sabre@nondot.org> Add a hook to find out how the target handles shift amounts that are out of
range. Either they are undefined (the default), they mask the shift amount
to the size of the register (X86, Alpha, etc), or they extend the shift (PPC).

This defaults to undefined, which is conservatively correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19677 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
d5d56825123665b60d4eada0a4ad7d0adc5cf3a3 18-Jan-2005 Chris Lattner <sabre@nondot.org> Zero is cheaper than sign extend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19675 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
47e9223e06390897c3834f8c527001df392570ff 18-Jan-2005 Chris Lattner <sabre@nondot.org> Fix some fixmes (promoting bools for select and brcond), fix promotion
of zero and sign extends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19671 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4a9b4f1943c6c56c749c8709ed28680408afc577 18-Jan-2005 Chris Lattner <sabre@nondot.org> Keep track of the retval type as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19670 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ef5cd1d3cf7d0b20987a545fcd2d0af2bfe6c422 18-Jan-2005 Chris Lattner <sabre@nondot.org> Teach legalize to promote copy(from|to)reg, instead of making the isel pass
do it. This results in better code on X86 for floats (because if strict
precision is not required, we can elide some more expensive double -> float
conversions like the old isel did), and allows other targets to emit
CopyFromRegs that are not legal for arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19668 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
82fbfb6984c1feb7d44a077ac2dc031f4a950005 18-Jan-2005 Chris Lattner <sabre@nondot.org> Teach legalize to promote SetCC results.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19657 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f30b73b1c6b6ca8453dc61eb3777b4e4414d3839 18-Jan-2005 Chris Lattner <sabre@nondot.org> Allow setcc operations to have nonbool types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19656 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
6e4e7652d8c671d83b6332d0189e93f2920c04ff 18-Jan-2005 Chris Lattner <sabre@nondot.org> Fix the completely broken FP constant folds for setcc's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19651 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
d3948116b81b11e82246c11389a9b4ce7e619fbb 17-Jan-2005 Chris Lattner <sabre@nondot.org> Non-volatile loads can be freely reordered against each other. This fixes
X86/reg-pressure.ll again, and allows us to do nice things in other cases.
For example, we now codegen this sort of thing:

int %loadload(int *%X, int* %Y) {
%Z = load int* %Y
%Y = load int* %X ;; load between %Z and store
%Q = add int %Z, 1
store int %Q, int* %Y
ret int %Y
}

Into this:

loadload:
mov %EAX, DWORD PTR [%ESP + 4]
mov %EAX, DWORD PTR [%EAX]
mov %ECX, DWORD PTR [%ESP + 8]
inc DWORD PTR [%ECX]
ret

where we weren't able to form the 'inc [mem]' before. This also lets the
instruction selector emit loads in any order it wants to, which can be good
for register pressure as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19644 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a651cf67b77cd477dd7da4baa8688af2ccd4f7f6 17-Jan-2005 Chris Lattner <sabre@nondot.org> Don't call SelectionDAG.getRoot() directly, go through a forwarding method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19642 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
0afa8e348eab21d3e09ae3240544886d61879266 17-Jan-2005 Chris Lattner <sabre@nondot.org> Implement a target independent optimization to codegen arguments only into
the basic block that uses them if possible. This is a big win on X86, as it
lets us fold the argument loads into instructions and reduce register pressure
(by not loading all of the arguments in the entry block).

For this (contrived to show the optimization) testcase:

int %argtest(int %A, int %B) {
%X = sub int 12345, %A
br label %L
L:
%Y = add int %X, %B
ret int %Y
}

we used to produce:

argtest:
mov %ECX, DWORD PTR [%ESP + 4]
mov %EAX, 12345
sub %EAX, %ECX
mov %EDX, DWORD PTR [%ESP + 8]
.LBBargtest_1: # L
add %EAX, %EDX
ret


now we produce:

argtest:
mov %EAX, 12345
sub %EAX, DWORD PTR [%ESP + 4]
.LBBargtest_1: # L
add %EAX, DWORD PTR [%ESP + 8]
ret

This also fixes the FIXME in the code.

BTW, this occurs in real code. 164.gzip shrinks from 8623 to 8608 lines of
.s file. The stack frame in huft_build shrinks from 1644->1628 bytes,
inflate_codes shrinks from 116->108 bytes, and inflate_block from 2620->2612,
due to fewer spills.

Take that alkis. :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19639 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
068a81e9fca511b9a3b3a0f28a8988a57f994652 17-Jan-2005 Chris Lattner <sabre@nondot.org> Refactor code into a new method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19635 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
714b69d0479e0fab36195e36da4578742ed4b63d 17-Jan-2005 Chris Lattner <sabre@nondot.org> Shift and setcc types default to the pointer type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19619 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
8ac532c55eb7f8698466f25d1a8a01240c44ec7d 16-Jan-2005 Chris Lattner <sabre@nondot.org> Implement legalize of call nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19617 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
55ba8fba750ee0a51a9d74fa33b7242d24a4ff35 16-Jan-2005 Chris Lattner <sabre@nondot.org> Revamp supported ops. Instead of just being supported or not, we now keep
track of how to deal with it, and provide the target with a hook that they
can use to legalize arbitrary operations in arbitrary ways.

Implement custom lowering for a couple of ops, implement promotion for select
operations (which x86 needs).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19613 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
171453a284b097f1ee89fb87ff495c3a6c7b6297 16-Jan-2005 Chris Lattner <sabre@nondot.org> add method stub


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19612 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
4b7899343eb492b70868fc73450b708834a3cf99 16-Jan-2005 Chris Lattner <sabre@nondot.org> Don't mash stuff together.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19611 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
cba82f9339566cef76ecb062980e40913e6ccc23 16-Jan-2005 Chris Lattner <sabre@nondot.org> Use enums, move virtual dtor out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19610 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
f8161d83f0201a32a33a0c875eb43df81d8586ab 16-Jan-2005 Chris Lattner <sabre@nondot.org> Implement some more missing promotions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19606 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
9467497ae2aef3534623ca20d01f49f3441ea154 16-Jan-2005 Chris Lattner <sabre@nondot.org> Clarify assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19597 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7636512f59e61429eae8839aa5c472c5e2f24b85 16-Jan-2005 Chris Lattner <sabre@nondot.org> Add assertions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19596 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c8ea3c47103656a0924909f41651bf5d396c26cd 16-Jan-2005 Chris Lattner <sabre@nondot.org> Add support for promoted registers being live across blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19595 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
cfdfe4ce4afba6e6d2ef22bf07068ca6bf5bd75a 16-Jan-2005 Chris Lattner <sabre@nondot.org> Set up identity transforms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19584 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
71c42a0190300a8903aaea80467b88f15f327ea9 16-Jan-2005 Chris Lattner <sabre@nondot.org> Move some information into the TargetLowering object.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19583 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
98e5c0e5e4c5be1b531d287d0a1373a62fe562e2 16-Jan-2005 Chris Lattner <sabre@nondot.org> Use the new TLI method to get this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19582 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
bb97d81cc873e2c0914f2ece43832723cc936d24 16-Jan-2005 Chris Lattner <sabre@nondot.org> Move some information out of LegalizeDAG into the generic Target interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19581 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
1713e73b8ac53f045150cb2a7d7ba9781dc35ef8 16-Jan-2005 Chris Lattner <sabre@nondot.org> legalize a bunch of operations that I missed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19580 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fb849800ea2040c188365c265421ad54fbdcf219 16-Jan-2005 Chris Lattner <sabre@nondot.org> Add support for targets that require promotions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19579 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ff3e50cc39db6939b637165997283f59412387bb 16-Jan-2005 Chris Lattner <sabre@nondot.org> Fix some serious bugs in promotion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19578 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
950aa3ca2c60863510bee45ec1b9180f975b8e79 16-Jan-2005 Chris Lattner <sabre@nondot.org> Eliminate unneeded extensions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19577 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8b6fa22e722e1de7522aae51d6cdd0f552d489da 15-Jan-2005 Chris Lattner <sabre@nondot.org> Implement promotion of a whole bunch more operators. I think that this is
basically everything.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19576 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8a389bb37603fa99a980475a4f5cdc27fa4014f1 15-Jan-2005 Chris Lattner <sabre@nondot.org> Print extra type for nodes with extra type info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19575 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGPrinter.cpp
45b8caf1c5a1fd8337038d64c6da8fba2d299fdf 15-Jan-2005 Chris Lattner <sabre@nondot.org> Add support for legalizing FP_ROUND_INREG, SIGN_EXTEND_INREG, and
ZERO_EXTEND_INREG for targets that don't support them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19573 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4ea6924444d73a0b5f6207e05b4229b49a284f06 15-Jan-2005 Chris Lattner <sabre@nondot.org> Common code factored out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19572 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
0f69b2910810b7c0971a739f18b37fae2a20eca5 15-Jan-2005 Chris Lattner <sabre@nondot.org> Add support for promoting ADD/MUL.
Add support for new SIGN_EXTEND_INREG, ZERO_EXTEND_INREG, and FP_ROUND_INREG operators.
Realize that if we do any promotions, we need to iterate SelectionDAG
construction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19569 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
859157daee6a4b49e99921832e1dde065167b317 15-Jan-2005 Chris Lattner <sabre@nondot.org> Add new SIGN_EXTEND_INREG, ZERO_EXTEND_INREG, and FP_ROUND_INREG operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19568 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
03c8546ec57523970874917854a2fb77b1ff598e 15-Jan-2005 Chris Lattner <sabre@nondot.org> Add intitial support for promoting some operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19565 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
69a52155d2eff066b49dbac385113002fd9dba14 14-Jan-2005 Chris Lattner <sabre@nondot.org> Adjust to CopyFromReg changes, implement deletion of truncating/extending
stores/loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19562 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
2ee743ff9be43c350075a2fa15d11a79bff36775 14-Jan-2005 Chris Lattner <sabre@nondot.org> Start implementing truncating stores and extending loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19559 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
8f1d6402ba73b96993ffd1eb9434b28c828d8856 14-Jan-2005 Chris Lattner <sabre@nondot.org> Improve compatibility with acc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19549 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
18c2f13e0f9d0e5d6227cf6d1881e9ee3d1b6109 13-Jan-2005 Chris Lattner <sabre@nondot.org> Add new ImplicitDef node, rename CopyRegSDNode class to RegSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19535 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
electionDAG/SelectionDAGPrinter.cpp
5a6c6d98d561df671350a56c8031a3611f1c46fa 13-Jan-2005 Chris Lattner <sabre@nondot.org> Don't forget the existing root.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19531 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ddb870b065984007a0df645ad97c6ad6a6f12de0 13-Jan-2005 Chris Lattner <sabre@nondot.org> Codegen independent ops as being independent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19528 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a385e9b20fa7d37d3842ce15afd412f617d83a27 13-Jan-2005 Chris Lattner <sabre@nondot.org> Legalize new node, add assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19527 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
282c5cae89986a5722ef59f6787108bdd668289d 13-Jan-2005 Chris Lattner <sabre@nondot.org> Print new node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19526 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2f0ca79a7504a91b16156b199b6f07857f3782c6 12-Jan-2005 Chris Lattner <sabre@nondot.org> Do not fold (zero_ext (sign_ext V)) -> (sign_ext V), they are not the same.

This fixes llvm-test/SingleSource/Regression/C/casts.c


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19519 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5c884562279927757cbe0ae718ab18af730ddb35 12-Jan-2005 Chris Lattner <sabre@nondot.org> New method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19517 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
2dad454af674cb41a14a85ad6ce5c85c43959acd 12-Jan-2005 Chris Lattner <sabre@nondot.org> Fix sign extend to long. When coming from sbyte, we used to generate:

movsbl 4(%esp), %eax
movl %eax, %edx
sarl $7, %edx

Now we generate:

movsbl 4(%esp), %eax
movl %eax, %edx
sarl $31, %edx

Which is right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19515 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
3bfbf4ea990930d153e58e153f319408341a94fe 12-Jan-2005 Reid Spencer <rspencer@reidspencer.com> Shut up warnings with GCC 3.4.3 about uninitialized variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19512 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7944d9d9957db1efe085d9df3ea89826f50029b7 12-Jan-2005 Chris Lattner <sabre@nondot.org> Add an option to view the selection dags as they are generated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19498 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
c871e1d56fa9e4c73f01419d4f1fef6d47f24d29 11-Jan-2005 Chris Lattner <sabre@nondot.org> Print the value types in the nodes of the graph


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19485 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
f1fdacae8c1bd9e5ff4619546b3a28e93fb75ab5 11-Jan-2005 Chris Lattner <sabre@nondot.org> add an assertion, avoid creating copyfromreg/copytoreg pairs that are the
same for PHI nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19484 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
7abf8201827be0c65272ca76d8afca0e46062be1 11-Jan-2005 Chris Lattner <sabre@nondot.org> Clear the whole array, always.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19482 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
64da653ba916509757daa47424d2a8217d82ba76 11-Jan-2005 Chris Lattner <sabre@nondot.org> Squelch optimized warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19475 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
e1bd822ddb0099406d9f280535461033dfeeb190 11-Jan-2005 Chris Lattner <sabre@nondot.org> Teach legalize to lower MEMSET/MEMCPY/MEMMOVE operations if the target
does not support them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19465 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
4c633e82f6041f452e451904ec0de670e7f143e4 11-Jan-2005 Chris Lattner <sabre@nondot.org> Print new operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19464 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7041ee35adecb864e3e8df490aa73b0605fbfb5a 11-Jan-2005 Chris Lattner <sabre@nondot.org> Turn memset/memcpy/memmove into the corresponding operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19463 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
a8d9cc870593d3e915ac9184dc0daf1783d4f8a4 11-Jan-2005 Chris Lattner <sabre@nondot.org> shift X, 0 -> X


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19453 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
e9c44cdf18b1235841a5d8bfeb07bee9f5699b9a 11-Jan-2005 Chris Lattner <sabre@nondot.org> Print SelectionDAGs bottom up, include extra info in the node labels


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19447 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
fc08d9c789b6698fe5f5904d573bb03fcc52a32d 11-Jan-2005 Chris Lattner <sabre@nondot.org> Add a marker for the graph root.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19445 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
e0646b86e3cdc35c5dd0e1c10b7ac564066e3bd6 11-Jan-2005 Chris Lattner <sabre@nondot.org> Put the operation name in each node, put the function name on the graph.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19444 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
d75f19fa42e6f6ee8f159aa8964baf8b0bbd2dee 11-Jan-2005 Chris Lattner <sabre@nondot.org> Split out SDNode::getOperationName into its own method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19443 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
66328480bb3eb6aa52e2c155657f3d19d4efea7a 11-Jan-2005 Chris Lattner <sabre@nondot.org> Implement initial selectiondag printing support. This gets us a nice
graph with no labels! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19441 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGPrinter.cpp
6b7598b9955520af8942740acda96a99b005c839 10-Jan-2005 Chris Lattner <sabre@nondot.org> Lower to the correct functions. This fixes FreeBench/fourinarow


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19436 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
68dc3109420f38d639fb2e9fed6f1a29df60795b 10-Jan-2005 Chris Lattner <sabre@nondot.org> Implement a couple of more simplifications. This lets us codegen:

int test2(int * P, int* Q, int A, int B) {
return P+A == P;
}

into:

test2:
movl 4(%esp), %eax
movl 12(%esp), %eax
shll $2, %eax
cmpl $0, %eax
sete %al
movzbl %al, %eax
ret

instead of:

test2:
movl 4(%esp), %eax
movl 12(%esp), %ecx
leal (%eax,%ecx,4), %ecx
cmpl %eax, %ecx
sete %al
movzbl %al, %eax
ret

ICC is producing worse code:

test2:
movl 4(%esp), %eax #8.5
movl 12(%esp), %edx #8.5
lea (%edx,%edx), %ecx #9.9
addl %ecx, %ecx #9.9
addl %eax, %ecx #9.9
cmpl %eax, %ecx #9.16
movl $0, %eax #9.16
sete %al #9.16
ret #9.16

as is GCC (looks like our old code):

test2:
movl 4(%esp), %edx
movl 12(%esp), %eax
leal (%edx,%eax,4), %ecx
cmpl %edx, %ecx
sete %al
movzbl %al, %eax
ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19430 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
87ae6ae41cde4548b55bcc19da36dc0ad7e021df 10-Jan-2005 Chris Lattner <sabre@nondot.org> Fix incorrect constant folds, fixing Stepanov after the SHR patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19429 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
8136d1f8cb8c6d89460ab9750b6d91a157659831 10-Jan-2005 Chris Lattner <sabre@nondot.org> Constant fold shifts, turning this loop:

.LBB_Z5test0PdS__3: # no_exit.1
fldl data(,%eax,8)
fldl 24(%esp)
faddp %st(1)
fstl 24(%esp)
incl %eax
movl $16000, %ecx
sarl $3, %ecx
cmpl %eax, %ecx
fstpl 16(%esp)
#FP_REG_KILL
jg .LBB_Z5test0PdS__3 # no_exit.1

into:

.LBB_Z5test0PdS__3: # no_exit.1
fldl data(,%eax,8)
fldl 24(%esp)
faddp %st(1)
fstl 24(%esp)
incl %eax
cmpl $2000, %eax
fstpl 16(%esp)
#FP_REG_KILL
jl .LBB_Z5test0PdS__3 # no_exit.1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19427 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5cdcc58d51c792d329202bab97c34aefbc043b15 09-Jan-2005 Chris Lattner <sabre@nondot.org> Add some folds for == and != comparisons. This allows us to
codegen this loop in stepanov:

no_exit.i: ; preds = %entry, %no_exit.i, %then.i, %_Z5checkd.exit
%i.0.0 = phi int [ 0, %entry ], [ %i.0.0, %no_exit.i ], [ %inc.0, %_Z5checkd.exit ], [ %inc.012, %then.i ] ; <int> [#uses=3]
%indvar = phi uint [ %indvar.next, %no_exit.i ], [ 0, %entry ], [ 0, %then.i ], [ 0, %_Z5checkd.exit ] ; <uint> [#uses=3]
%result_addr.i.0 = phi double [ %tmp.4.i.i, %no_exit.i ], [ 0.000000e+00, %entry ], [ 0.000000e+00, %then.i ], [ 0.000000e+00, %_Z5checkd.exit ] ; <double> [#uses=1]
%first_addr.0.i.2.rec = cast uint %indvar to int ; <int> [#uses=1]
%first_addr.0.i.2 = getelementptr [2000 x double]* %data, int 0, uint %indvar ; <double*> [#uses=1]
%inc.i.rec = add int %first_addr.0.i.2.rec, 1 ; <int> [#uses=1]
%inc.i = getelementptr [2000 x double]* %data, int 0, int %inc.i.rec ; <double*> [#uses=1]
%tmp.3.i.i = load double* %first_addr.0.i.2 ; <double> [#uses=1]
%tmp.4.i.i = add double %result_addr.i.0, %tmp.3.i.i ; <double> [#uses=2]
%tmp.2.i = seteq double* %inc.i, getelementptr ([2000 x double]* %data, int 0, int 2000) ; <bool> [#uses=1]
%indvar.next = add uint %indvar, 1 ; <uint> [#uses=1]
br bool %tmp.2.i, label %_Z10accumulateIPddET0_T_S2_S1_.exit, label %no_exit.i

To this:

.LBB_Z4testIPddEvT_S1_T0__1: # no_exit.i
fldl data(,%eax,8)
fldl 16(%esp)
faddp %st(1)
fstpl 16(%esp)
incl %eax
movl %eax, %ecx
shll $3, %ecx
cmpl $16000, %ecx
#FP_REG_KILL
jne .LBB_Z4testIPddEvT_S1_T0__1 # no_exit.i

instead of this:

.LBB_Z4testIPddEvT_S1_T0__1: # no_exit.i
fldl data(,%eax,8)
fldl 16(%esp)
faddp %st(1)
fstpl 16(%esp)
incl %eax
leal data(,%eax,8), %ecx
leal data+16000, %edx
cmpl %edx, %ecx
#FP_REG_KILL
jne .LBB_Z4testIPddEvT_S1_T0__1 # no_exit.i


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19425 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
fd161e964aa02636c00364ae4d46bf4e384df096 09-Jan-2005 Jeff Cohen <jeffc@jolt-lang.org> Fix VC++ compilation error


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19423 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
ea946cdb1b16827a5f19a2593d054953e51b9fb6 09-Jan-2005 Chris Lattner <sabre@nondot.org> Print the DAG out more like a DAG in nested format.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19422 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
49d24716a4398fc249d2b5ac993ff97a421f0635 09-Jan-2005 Chris Lattner <sabre@nondot.org> Print out nodes sorted by their address to make it easier to find them in a list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19421 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
abd21828752667fdff5a0c20d591f66de102b3c3 09-Jan-2005 Chris Lattner <sabre@nondot.org> Add a simple transformation. This allows us to compile one of the inner
loops in stepanov to this:

.LBB_Z5test0PdS__2: # no_exit.1
fldl data(,%eax,8)
fldl 24(%esp)
faddp %st(1)
fstl 24(%esp)
incl %eax
cmpl $2000, %eax
fstpl 16(%esp)
#FP_REG_KILL
jl .LBB_Z5test0PdS__2

instead of this:

.LBB_Z5test0PdS__2: # no_exit.1
fldl data(,%eax,8)
fldl 24(%esp)
faddp %st(1)
fstl 24(%esp)
incl %eax
movl $data, %ecx
movl %ecx, %edx
addl $16000, %edx
subl %ecx, %edx
movl %edx, %ecx
sarl $2, %ecx
shrl $29, %ecx
addl %ecx, %edx
sarl $3, %edx
cmpl %edx, %eax
fstpl 16(%esp)
#FP_REG_KILL
jl .LBB_Z5test0PdS__2

The old instruction selector produced:

.LBB_Z5test0PdS__2: # no_exit.1
fldl 24(%esp)
faddl data(,%eax,8)
fstl 24(%esp)
movl %eax, %ecx
incl %ecx
incl %eax
leal data+16000, %edx
movl $data, %edi
subl %edi, %edx
movl %edx, %edi
sarl $2, %edi
shrl $29, %edi
addl %edi, %edx
sarl $3, %edx
cmpl %edx, %ecx
fstpl 16(%esp)
#FP_REG_KILL
jl .LBB_Z5test0PdS__2 # no_exit.1

Which is even worse!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19419 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
38d6be5d49e61e4be9bb12ee3cedf2a4fcddb8f3 09-Jan-2005 Chris Lattner <sabre@nondot.org> Fix a bug legalizing call instructions (make sure to remember all result
values), and eliminate some switch statements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19417 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
513e52ec4e20048a8f491498d219a2669283f3bd 09-Jan-2005 Chris Lattner <sabre@nondot.org> Fix a minor bug legalizing dynamic_stackalloc. This allows us to compile
std::__pad<wchar_t, std::char_traits<wchar_t> >::_S_pad(std::ios_base&, wchar_t, wchar_t*, wchar_t const*, int, int, bool)

from libstdc++


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19416 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fa404e8a76abfdafefb8806b35f596d288609496 09-Jan-2005 Chris Lattner <sabre@nondot.org> Teach legalize to deal with DYNAMIC_STACKALLOC (aka a dynamic llvm alloca)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19415 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
ee749d7488bd42df0f67e2d80048c63415943785 09-Jan-2005 Chris Lattner <sabre@nondot.org> Handle static alloca arguments to PHI nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19409 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
39ae3622791986a0232f7e4797b633f8fa9e54d2 09-Jan-2005 Chris Lattner <sabre@nondot.org> Use new interfaces to correctly lower varargs and return/frame address intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19407 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
64e14b1679fa3649b286402ea254d663ac43ef91 08-Jan-2005 Chris Lattner <sabre@nondot.org> Add support for llvm.setjmp and longjmp. Only 3 SingleSource/UnitTests fail now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19404 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
e3304a3d24afc952d3cb415d1b504d973573c5c5 08-Jan-2005 Chris Lattner <sabre@nondot.org> Tighten up assertions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19397 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
dea18b6c0ddc037a0c6334b5582ffc27d098edcb 08-Jan-2005 Chris Lattner <sabre@nondot.org> Silence VS warnings


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19388 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
28696bee024805a6b191cfe12e1a24784dae8aa7 08-Jan-2005 Chris Lattner <sabre@nondot.org> Silence warnings from VS


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19386 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineFunction.cpp
5e5fb942e6bcdb5436c60f0343cefaa73b82d2f8 08-Jan-2005 Chris Lattner <sabre@nondot.org> Silence VS warnings


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19385 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
f26bc8ef4827cf0023a7052b62b920b41813d473 08-Jan-2005 Chris Lattner <sabre@nondot.org> Silence VS warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19384 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
4e6c74689944be1de80c99dc0688ec0bcbd743aa 08-Jan-2005 Chris Lattner <sabre@nondot.org> Implement handling of most long operators through libcalls.
Fix a bug legalizing "ret (Val,Val)"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19375 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
cf5734dddd66af9388a171b44996505ede47feed 08-Jan-2005 Chris Lattner <sabre@nondot.org> Adjust to changes in LowerCAllTo interfaces


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19374 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ae0aacb8331e1227abea6601e531a10d0e65fdca 08-Jan-2005 Chris Lattner <sabre@nondot.org> Add support for FP->INT conversions and back.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19369 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAG.cpp
electionDAG/SelectionDAGISel.cpp
5d2c6c784bdc3d572a553ed7aa48dcf27a45b1a3 08-Jan-2005 Chris Lattner <sabre@nondot.org> Implement the 'store FPIMM, Ptr' -> 'store INTIMM, Ptr' optimization for
all targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19366 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
623f70dd4c5525888aca400c27832282913b539e 08-Jan-2005 Chris Lattner <sabre@nondot.org> 1ULL << 64 is undefined, don't do it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19365 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
7c68ec6b70c765edec1e850331c30a7b65c6ebda 08-Jan-2005 Chris Lattner <sabre@nondot.org> Fix a pointer invalidation problem. This fixes Generic/badarg6.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19361 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
5351e9b172962a4f51e6d3b12018dd2de34b2f97 07-Jan-2005 Chris Lattner <sabre@nondot.org> Fold conditional branches on constants away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19360 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
4287d5e355c7dafcb8d674a236eabcccb895c892 07-Jan-2005 Chris Lattner <sabre@nondot.org> Fix a thinko in the reassociation code, fixing Generic/badlive.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19359 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
b00a6425de1ef8668b63f29927c38da8a19ce904 07-Jan-2005 Chris Lattner <sabre@nondot.org> Add support for truncating integer casts from long.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19358 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
8afc48e44ad8868c1d41511db645e2ba1a4b894e 07-Jan-2005 Chris Lattner <sabre@nondot.org> Fix a bug in load expansion legalization and ret legalization. This fixes
CodeGen/Generic/select.ll:castconst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19357 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c7af17923e3bb6053f529679ef0be5399d3519ed 07-Jan-2005 Chris Lattner <sabre@nondot.org> Legalize unconditional branches too


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19356 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
7cc4777a263f6a52877d29201311fde5f6edb632 07-Jan-2005 Chris Lattner <sabre@nondot.org> Implement support for long GEP indices on 32-bit archs and support for
int GEP indices on 64-bit archs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19354 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
electionDAG/SelectionDAGISel.cpp
fd8c39b77331fbb6f994665b45eba1b2cc6ced6d 07-Jan-2005 Chris Lattner <sabre@nondot.org> Simplify: truncate ({zero|sign}_extend (X))


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19353 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
03c0cf822e9a57109d1b4e6a2705d68852c93e1d 07-Jan-2005 Chris Lattner <sabre@nondot.org> implement legalization of a bunch more operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19352 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
fad71ebe1ebdc8d59c26e4e45a7c7579a2ca58b7 07-Jan-2005 Chris Lattner <sabre@nondot.org> Fix another bug legalizing calls!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19350 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
f44fd88e9cdd7b47acb71ac78e3dccb91319c72d 07-Jan-2005 Chris Lattner <sabre@nondot.org> Fix handling of dead PHI nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19349 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
ebda942efcb86634a6581aae76a0d0c92c4a232e 07-Jan-2005 Chris Lattner <sabre@nondot.org> Fix a bug legalizing calls


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19348 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
62fd269c146d9023efe32644e44cd97b88631d4f 07-Jan-2005 Chris Lattner <sabre@nondot.org> After legalizing a DAG, delete dead nodes to save space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19346 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
0e12e6e0418564d4b2e83138fe2044be29a6f6d5 07-Jan-2005 Chris Lattner <sabre@nondot.org> Implement RemoveDeadNodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19345 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
c18ae4cb6a263cf31283c0ef51ace24350f8d72b 07-Jan-2005 Chris Lattner <sabre@nondot.org> Teach legalize how to handle condbranches


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19339 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
1c08c714bb3d07c3b39f06bfcbb4559fefca73f9 07-Jan-2005 Chris Lattner <sabre@nondot.org> Initial implementation of the SelectionDAGISel class. This contains most
of the code for lowering from LLVM code to a SelectionDAG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19331 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAGISel.cpp
b75c12de6792ca269e8099f317332c7d3f1528c2 07-Jan-2005 Chris Lattner <sabre@nondot.org> This file is obsolete


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19330 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGBuilder.cpp
3e928bbd6153eb08641cbd0ad7d8487378a8b12a 07-Jan-2005 Chris Lattner <sabre@nondot.org> Initial implementation of the DAG legalization. This still has a long way
to go, but it does work for some non-trivial cases now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19329 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/LegalizeDAG.cpp
c3aae25116e66c177579b0b79182b09340b19753 07-Jan-2005 Chris Lattner <sabre@nondot.org> Complete rewrite of the SelectionDAG class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19327 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
310968cbbb564c4141d4bd418a746e8103560222 07-Jan-2005 Chris Lattner <sabre@nondot.org> First draft of new Target interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19324 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/TargetLowering.cpp
cfa0f2edd31a32d58ffa6e5224c6f476932d82b5 02-Jan-2005 Chris Lattner <sabre@nondot.org> Make the 2-address instruction lowering pass smarter in two ways:

1. If we are two-addressing a commutable instruction and the LHS is not the
last use of the variable, see if the instruction is the last use of the
RHS. If so, commute the instruction, allowing us to avoid a
register-register copy in many cases for common instructions like ADD, OR,
AND, etc on X86.
2. If #1 doesn't hold, and if this is an instruction that also existing in
3-address form, promote the instruction to a 3-address instruction to
avoid the register-register copy. We can do this for several common
instructions in X86, including ADDrr, INC, DEC, etc.

This patch implements test/Regression/CodeGen/X86/commute-two-addr.ll,
overlap-add.ll, and overlap-shift.ll when I check in the X86 support for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19245 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
5b2103405b55c8b9960d28f59df27040db39813f 15-Dec-2004 Chris Lattner <sabre@nondot.org> Move virtual method call out of loop


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18955 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
80ad87d2271673b4f9148d64c91ee6338978c9fc 07-Dec-2004 Nate Begeman <natebegeman@mac.com> Move virtual function call out of loop to speed up getFreePhysReg by about
20%, shaving 0.1s off hbd compile time on my g5. Yay.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18592 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
ce9653ce449f1409815547e1bf60abcd1332d2c9 07-Dec-2004 Reid Spencer <rspencer@reidspencer.com> For PR387:\
Make only one print method to avoid overloaded virtual warnings when \
compiled with -Woverloaded-virtual


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18589 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
ead1b3f0bb70cd9c1ba7a853a79070cb47db9344 04-Dec-2004 Chris Lattner <sabre@nondot.org> Prevent accessing past the end of the intervals vector, this fixes
Prolang-C/bison in the JIT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18477 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
63eb93025d78d4745ece7c63bee77934380ee599 28-Nov-2004 Chris Lattner <sabre@nondot.org> Fix SingleSource/UnitTests/2004-11-28-GlobalBoolLayout.c, and hopefully
PR449


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18306 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
cf88d324a892c8f93ccdac55788afb48b17c728b 22-Nov-2004 Chris Lattner <sabre@nondot.org> Fix the FIXME, nuke the JIT specific forceCompilationOf method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18131 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
6f71720be3c67f6bffd3976805e577995d779a2f 22-Nov-2004 Chris Lattner <sabre@nondot.org> These methods are obsolete


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18129 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
3bf285a6765438ac1c73638814cae6201ae26a3a 21-Nov-2004 Chris Lattner <sabre@nondot.org> Adjust to changed interfaces


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18064 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
47012c0c711fd10901fb30643def557af7bbb4a9 20-Nov-2004 Chris Lattner <sabre@nondot.org> Add getCurrentPCOffset() and addRelocation() methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18034 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
45730d71b69646afe0876dd03446b4df8b8d11f2 19-Nov-2004 Chris Lattner <sabre@nondot.org> Match change in MachineCodeEmitter prototype.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18009 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
c8b9f33ac08e15dc1eb675cff70bf85b34b68fdd 18-Nov-2004 Chris Lattner <sabre@nondot.org> * There is no reason for SpillWeights to be an instance var
* Do not put fixed registers into the unhandled set. This means they will
never find their way into the inactive, active, or handled sets, so we
can simplify a bunch of code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17945 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
9fddc12c9b16a5526b0ee2e6f1da252f7974d7d0 18-Nov-2004 Chris Lattner <sabre@nondot.org> There is no need to check to see if j overflowed in this loop as we're only
incrementing i.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17944 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
1e409bfd2adf441b92f84e09706b768513f42c85 18-Nov-2004 Chris Lattner <sabre@nondot.org> Moderate head scratching reveals that this conditional is not needed. If
i->start == j->start, then certainly i->end > j->start.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17943 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
f348e3abfcca1b6366638ba8aa617118d090a305 18-Nov-2004 Chris Lattner <sabre@nondot.org> Fix a couple of bugs where we considered physregs past their range as possibly
intersecting an interval.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17939 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
1a3a48776340c96df5df673df1c159391d1a1cb7 18-Nov-2004 Chris Lattner <sabre@nondot.org> Fix typeo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17938 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.h
365b95fbbc80c58d9d40a44b6d8a0330cc9d1bfe 18-Nov-2004 Chris Lattner <sabre@nondot.org> Start using the iterators in the fixed_ intervals to avoid having to binary
search physreg intervals every time we access it. This takes another
half second off of linscan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17937 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
8c68b6a226ce46b35eafda972e04bf53128c2615 18-Nov-2004 Chris Lattner <sabre@nondot.org> Take another .7 seconds off of linear scan time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17936 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
19828d46f665e24b26c2a5d603c961abfd84cd0f 18-Nov-2004 Chris Lattner <sabre@nondot.org> Add a counter for the number of times linscan has to backtrack. Start using
the iterator hints we have to speed up overlaps(). This speeds linscan up
by about .2s (out of 8.7) on 175.vpr for PPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17935 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
bae74d9192f04d8185c7b4580565d56cc4ef53f2 18-Nov-2004 Chris Lattner <sabre@nondot.org> Add ability to give hints to the overlaps routines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17934 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveInterval.h
cbb5625cecc4f051094fc3afdc5d78fc703cb644 18-Nov-2004 Chris Lattner <sabre@nondot.org> * Improve comments/documentation substantially
* Eliminate the releaseMemory method, this is not an analysis
* Change the fixed, active, and inactive lists of intervals to maintain an
iterator for the current position in the interval. This allows us to do
constant time increments of the iterator instead of having to do a binary
search to find our liverange in our liveinterval all of the time, which
substantially speeds up cases where LiveIntervals have many LiveRanges
- which is very common for physical registers. On targets with many
physregs, this can make a noticable difference.

With a release build of LLC for PPC, this halves the time in
processInactiveIntervals and processActiveIntervals, from 1.5s to .75s.

This also lays the ground for more to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17933 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
743ef6d70e710353c1e2b6a4b23af1262f4a475b 18-Nov-2004 Chris Lattner <sabre@nondot.org> Add new advanceTo method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17932 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.h
8d8d513d4dcd4d98b92ccce10a9907086af28f1e 18-Nov-2004 Chris Lattner <sabre@nondot.org> Fix a minor bug in expiredAt. endNumber() is the first number that is not valid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17931 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.h
23b71c1e1e33219327b1c0edf43034dbe4c3ae90 18-Nov-2004 Chris Lattner <sabre@nondot.org> Rename some methods, use 'begin' instead of 'start', add new LiveInterval
iterator/begin/end members.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17930 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.h
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
8311befb6968a581a3abdce1e13b5d63922662f7 16-Nov-2004 Brian Gaeke <gaeke@uiuc.edu> Give a better message for a common assertion failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17887 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
41ffe4b5313fe9c25a2aa91f01a9824d22c5351e 05-Nov-2004 Chris Lattner <sabre@nondot.org> Do not make i have bigger scope that we need


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17483 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
6cb21d443eff9369e4f9035af28efd627e8f3909 28-Oct-2004 Reid Spencer <rspencer@reidspencer.com> Change Library Names Not To Conflict With Others When Installed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17286 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
electionDAG/Makefile
52c09d76564d6fb24444c4d56bc8978e042e72f9 26-Oct-2004 Chris Lattner <sabre@nondot.org> Move method bodies that depend on <algorithm> from MBB.h to MBB.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17253 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
27f291600b04c382c390b16fdacd52b910b9164d 26-Oct-2004 Chris Lattner <sabre@nondot.org> Clean up the MachineBasicBlock.h file, percolating #includes into this file.
Patch contributed by Morten Ofstad


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17251 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
irtRegMap.cpp
ad3c74fc9b52b652859807580c8e40b67394d689 26-Oct-2004 Chris Lattner <sabre@nondot.org> Reduce usage of MRegisterInfo::getRegClass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17238 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6fcd8d848dc722537c32b91daea59f50b78a4eba 25-Oct-2004 Chris Lattner <sabre@nondot.org> Do not use variable sized arrays in C++, they are non-portable. Patch
contributed by Morten Ofstad


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17217 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
7a36ae8b0103088328e3a4992ac08b3dce312248 25-Oct-2004 Chris Lattner <sabre@nondot.org> Patch to support MSVC better, contributed by Morten Ofstad


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17215 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cac731ecbe6a80e0c607ece2833525a92601db99 22-Oct-2004 Reid Spencer <rspencer@reidspencer.com> We won't use automake


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17155 91177308-0d34-0410-b5e6-96231b3b80d8
akefile.am
akefile.in
electionDAG/Makefile.am
electionDAG/Makefile.in
86d341b204171d53a470c361ee58811bfc22bf1a 19-Oct-2004 Reid Spencer <rspencer@reidspencer.com> Initial automake generated Makefile template


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17136 91177308-0d34-0410-b5e6-96231b3b80d8
akefile.in
electionDAG/Makefile.in
bd1d382cc47dfc43ee758714bc22ab5a750bad15 16-Oct-2004 Chris Lattner <sabre@nondot.org> Add support for undef


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17055 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ca4f6ebefc4dc55d13a0182a0be5b02e92fc63ea 15-Oct-2004 Chris Lattner <sabre@nondot.org> Allow machine operands to represent global variables with offsets. This is
useful when you have a reference like:

int A[100];

void foo() { A[10] = 1; }

In this case, &A[10] is a single constant and should be treated as such.

Only MO_GlobalAddress and MO_ExternalSymbol are allowed to use this field, no
other operand type is.

This is another fine patch contributed by Jeff Cohen!!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17007 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
47eb6567e22ecf87ebeabc566fac6c02c975a9a4 15-Oct-2004 Chris Lattner <sabre@nondot.org> This patch fixes the nasty bug that caused 175.vpr to fail for X86 last night.

The problem occurred when trying to reload this instruction:

MOV32mr %reg2326, 8, %reg2297, 4, %reg2295

The value of reg2326 was available in EBX, so it was reused from there, instead
of reloading it into EDX.

The value of reg2297 was available in EDX, so it was reused from there, instead
of reloading it into EDI.

The value of reg2295 was not available, so we tried reloading it into EBX, its
assigned register. However, we checked and saw that we already reloaded
something into EBX, so we chose what reg2326 was assigned to (EDX) and reloaded
into that register instead.

Unfortunately EDX had already been used by reg2297, so reloading into EDX
clobbered the value used by the reg2326 operand, breaking the program.

The fix for this is to check that the newly picked register is ok. In this
case we now find that EDX is already used and try using EDI, which succeeds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17006 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
8df6a594d2781777cd25fe2d00818419a8b10e5c 15-Oct-2004 Chris Lattner <sabre@nondot.org> This patch adds and improves debugging output. No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17005 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
d96cb6eaa0a878467d9594a12dfe3a55466706f0 13-Oct-2004 Reid Spencer <rspencer@reidspencer.com> Update to reflect changes in Makefile rules.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16950 91177308-0d34-0410-b5e6-96231b3b80d8
akefile.am
electionDAG/Makefile.am
de2a9432f9b4015959bd791866a2a1d838ca1688 11-Oct-2004 Misha Brukman <brukman+llvm@gmail.com> ModuloScheduling has moved to lib/Target/SparcV9


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16906 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
akefile.am
f60a149df6d6e10503e49075da455104eb489f5a 11-Oct-2004 Misha Brukman <brukman+llvm@gmail.com> ModuloScheduling moved to lib/Target/SparcV9 as it is SparcV9-specific


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16902 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/MSSchedule.cpp
oduloScheduling/MSSchedule.h
oduloScheduling/MSchedGraph.cpp
oduloScheduling/MSchedGraph.h
oduloScheduling/Makefile
oduloScheduling/Makefile.am
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
420025b04f4ca81ea1fa29a6ab995864a2dce7b6 11-Oct-2004 Tanya Lattner <tonic@nondot.org> Added debug information. Fixed several bugs in the reconstruct loop function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16895 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/MSSchedule.cpp
oduloScheduling/MSSchedule.h
oduloScheduling/MSchedGraph.cpp
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
01930c48918fc9fef5f9a3bda98e96bf337814fa 10-Oct-2004 Reid Spencer <rspencer@reidspencer.com> Remove the InstrSched directory (moved to SparcV9)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16887 91177308-0d34-0410-b5e6-96231b3b80d8
akefile.am
d9a9925f87e2971af7b5613a820a1e1e4180cbe9 10-Oct-2004 Reid Spencer <rspencer@reidspencer.com> Directory no long exists (moved to Targets/SparcV9).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16886 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/Makefile.am
9f41a5fe8534ab5a76d2925f31a20782c135b7d2 10-Oct-2004 Reid Spencer <rspencer@reidspencer.com> Initial version of automake Makefile.am file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16885 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/Makefile.am
akefile.am
oduloScheduling/Makefile.am
electionDAG/Makefile.am
6a134dedf6d3ac71670ad35de2387a54e40198f3 08-Oct-2004 Misha Brukman <brukman+llvm@gmail.com> Hyphenate target-(in)dependent for more tasty grammar goodness (tm)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16854 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGBuilder.cpp
6b68973617b8c4d5842595f1c77ef716807f629b 08-Oct-2004 Misha Brukman <brukman+llvm@gmail.com> InstrSched has been moved to lib/Target/SparcV9


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16850 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
c8e049124e1e10475217d406990dbc1d34f2d15c 08-Oct-2004 Misha Brukman <brukman+llvm@gmail.com> InstrSched is SparcV9-specific and so has been moved to lib/Target/SparcV9/


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16849 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/Makefile
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedGraphCommon.cpp
nstrSched/SchedPriorities.cpp
nstrSched/SchedPriorities.h
1481a5c4c7040ba96025c4e4e41b40c7da7843b4 08-Oct-2004 Misha Brukman <brukman+llvm@gmail.com> Single-space instead of double-spacing in the Makefile


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16845 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/Makefile
7cf34908920dc714eba7525d38747de2cdc81402 02-Oct-2004 Chris Lattner <sabre@nondot.org> Do not repeat the map lookup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16633 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
bec6a9ea1281a0b3b37aece91ab0df21e086af61 02-Oct-2004 Chris Lattner <sabre@nondot.org> When a virtual register is folded into an instruction, keep track of whether
it was a use, def, or both. This allows us to be less pessimistic in our
analysis of them. In practice, this doesn't make a big difference, but it
doesn't hurt either.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16632 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
irtRegMap.h
52b25db3ef9390271bbfa0b5c6efe0a72ce7cb8e 01-Oct-2004 Chris Lattner <sabre@nondot.org> Add a simple little improvement to the local spiller to keep track of stores
and delete them if they turn out to be dead. This is a useful little hack
that even speeds up some programs. For example, it speeds up Ptrdist/ks
from 17.53s to 15.59s, and 188.ammp from 149s to 146s.

This also speeds up llc :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16630 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
7fb64347d7d1310b5f3f06f7ae97031c73a21797 01-Oct-2004 Chris Lattner <sabre@nondot.org> Substantially revamp the local spiller, causing it to actually improve the
generated code over the simple spiller. The new local spiller generates
substantially better code than the simple one in some cases, by reusing
values that are loaded out of stack slots and kept available in registers.

This primarily helps programs that are spilling a lot, and there is still
stuff that can be done to improve it. This patch makes the local spiller
the default, as it's only a tiny bit slower than the simple spiller (it
increases the runtime of llc by < 1%).

Here are some numbers with speedups.

Program #reuse old(s) new(s) Speedup

Povray: 3452, 16.87 -> 15.93 (5.5%)
177.mesa: 2176, 2.77 -> 2.76 (0%)
179.art: 35, 28.43 -> 28.01 (1.5%)
183.equake: 55, 61.44 -> 61.41 (0%)
188.ammp: 869, 174 -> 149 (15%)

164.gzip: 43, 40.73 -> 40.71 (0%)
175.vpr: 351, 18.54 -> 17.34 (6.5%)
176.gcc: 2471, 5.01 -> 4.92 (1.8%)
181.mcf 42, 79.30 -> 75.20 (5.2%)
186.crafty: 484, 29.73 -> 30.04 (-1%)
197.parser: 251, 10.47 -> 10.67 (-1%)
252.eon: 1501, 1.98 -> 1.75 (12%)
253.perlbm: 1183, 14.83 -> 14.42 (2.8%)
254.gap: 825, 7.46 -> 7.29 (2.3%)
255.vortex: 285, 10.51 -> 10.27 (2.3%)
256.bzip2: 63, 55.70 -> 55.20 (0.9%)
300.twolf: 830, 21.63 -> 22.00 (-1%)

PtrDist/ks 14, 32.75 -> 17.53 (46.5%)
Olden/tsp 46, 8.71 -> 8.24 (5.4%)
Free/distray 70, 1.09 -> 0.99 (9.2%)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16629 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
ef0543689ff90337af358add9dad74a1e23e9d74 01-Oct-2004 Chris Lattner <sabre@nondot.org> Pretty print a bit nicer :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16628 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c736b3a37aa8959f9011bf0773288ba35c3f08b3 01-Oct-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Document this class a bit :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16626 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.h
dbea9731b12e62f70d9da40cf273cdd9105f987c 30-Sep-2004 Chris Lattner <sabre@nondot.org> Use more efficient map operations. Fix a bug that would affect hypothetical
targets that supported multiple memory operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16614 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
477e4555de341c5de780de3720d6f115ec133c4e 30-Sep-2004 Chris Lattner <sabre@nondot.org> There is no need to call MachineInstr::print directly, just send the MI& to an ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16613 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
irtRegMap.cpp
70ca358b7d540b6061236ddf757085042873c12c 30-Sep-2004 Chris Lattner <sabre@nondot.org> * Wrap some comments to 80 cols
* Add const_iterator stuff
* Add a print method, which means that I can now call dump() from the
debugger.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16612 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
0fc27ccdd374799c8d65b61e89db53ba1ea47358 30-Sep-2004 Chris Lattner <sabre@nondot.org> Simplify the logic in the simple spiller and capitalize some variables


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16609 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
5f7d2d45fdd7a62611b94d404aa925a8609b5ed6 30-Sep-2004 Chris Lattner <sabre@nondot.org> Switch from defaulting to the 'local' spiller to the 'simple' spiller. The
two spillers produce perfectly identical code (at least on povray and eon),
but the simple spiller is substantially faster than the local spiller. Once
the local spiller is improved, we can switch back.

Switching cuts 5.2% off of the llc time for povray (about 1.3s).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16608 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
4ea1b828ebc5d2e8711acf13c2a3fdd7c14fe339 30-Sep-2004 Chris Lattner <sabre@nondot.org> Don't use a densemap for keeping track of which vregs are already loaded, just
use a simple vector. This speeds up -spiller=simple from taking 22s to taking
.1s on povray (debug build). This change does not modify the generated code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16607 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
7f690e625807b9320bf4ae437b8f35258acc99de 30-Sep-2004 Chris Lattner <sabre@nondot.org> Use longer and more explicit names for instance vars (particularly important
data structures). Fix the print method to send to the right ostream, not
always cerr. Delete typedefs that are only used once.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16606 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
510a3ea646c6f42a565de273b20766e6946ed691 30-Sep-2004 Chris Lattner <sabre@nondot.org> Free the VirtRegMap at the end of MachineFunction processing instead of at
the beginning of processing the next one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16605 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
8c4d88d3697835371ecf6823f4142af13603ad2d 30-Sep-2004 Chris Lattner <sabre@nondot.org> Reindent code, improve comments, move huge nested methods out of classes,
prune #includes, add print/dump methods, etc. No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16604 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
c72c617a4ea3784c9a9f634478dc405ef6b2866b 28-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add includes and use std:: for standard library calls to make code
compile on windows. This patch was contributed by Paolo Invernizzi.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16539 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraphCommon.cpp
oduloScheduling/MSchedGraph.cpp
oduloScheduling/ModuloScheduling.cpp
c4d3b918165461bc6f5d395bca8d9d9d8a84413d 28-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix includes. Patch contributed by Paolo Invernizzi!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16533 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
2c4f7b5faaeedd97058ec4cfa44177124c42b9e1 09-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Grow the map on entry so that we don't crash if joinIntervals never
runs (if coalescing is disabled for example).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16259 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5d0d1e350a30772fd70798b5733bb060febd7b0d 08-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use a DenseMap for mapping reg->reg. This improves the LiveInterval
analysis running time from 2.7869secs to 2.5226secs on 176.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16244 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
76d9daccebc589dbf0f9cbb23326c7d50a26f17d 05-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Indent to 2 spaces and cleanup excess whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16188 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
a63828619feaeee7a7468ab00c50c3d678afae55 05-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Indent to 2 spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16187 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
08a6c7614be9793754b17930ba619e875aef9585 03-Sep-2004 Misha Brukman <brukman+llvm@gmail.com> Order #includes alphabetically, local .h files first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16153 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
20aa474f8fbebde588edc101b90e834df28ce4ce 03-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fixes to make LLVM compile with vc7.1.

Patch contributed by Paolo Invernizzi!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16152 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
70619fae28414db54e00be2f9052a66cd245a9c8 02-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Change the way we choose a free register: instead of picking the first
free allocatable register, we prefer the a free one with the most uses
of inactive intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16148 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
84f5bcb0139789010eb4a4509fddf811def8794e 02-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Change the way we choose a free register: instead of picking the first
free allocatable register, we prefer the a free one with the most uses
of inactive intervals. This causes less spills and performes a bit
better compared to gcc:

Program | GCC/LLC (Before)| GCC/LLC (After)
164.gzip/164.gzip | 0.59 | 0.60
175.vpr/175.vpr | 0.57 | 0.58
176.gcc/176.gcc | 0.59 | 0.61
181.mcf/181.mcf | 0.94 | 0.95
186.crafty/186.crafty | 0.62 | 0.62
197.parser/197.parser | 0.89 | 0.88
252.eon/252.eon | 0.61 | 0.66
253.perlbmk/253.perlbmk | 0.79 | 0.84
254.gap/254.gap | 0.81 | 0.81
255.vortex/255.vortex | 0.92 | 0.93
256.bzip2/256.bzip2 | 0.69 | 0.69
300.twolf/300.twolf | 0.91 | 0.90


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16147 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
82b4955f96035e4c29a2d477dbf3d8cf6dc1bf28 02-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> We don't need to sort the added vector as unhandled intervals are
stored in a binary heap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16143 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
551ccae044b0ff658fe629dd67edd5ffe75d10e8 02-Sep-2004 Reid Spencer <rspencer@reidspencer.com> Changes For Bug 352
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16137 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedGraphCommon.cpp
nstrSched/SchedPriorities.cpp
nstrSched/SchedPriorities.h
iveInterval.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
oduloScheduling/MSSchedule.cpp
oduloScheduling/MSchedGraph.cpp
oduloScheduling/MSchedGraph.h
oduloScheduling/ModuloScheduling.cpp
HIElimination.cpp
asses.cpp
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
woAddressInstructionPass.cpp
nreachableBlockElim.cpp
irtRegMap.cpp
irtRegMap.h
ed543731fb385b55750d0c514d130a810339d739 02-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Be a bit more efficient when processing the active and inactive
lists. Instead of scanning the vector backwards, scan it forward and
swap each element we want to erase. Then at the end erase all removed
intervals at once. This doesn't save much: 0.08s out of 4s when
compiling 176.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16136 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
2e58a410896ffbee3d856b113c3718bc4a5462e8 02-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Give a better assertion if we see a use before a def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16135 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
d19e2901c1b79d287d01079659684f3a4951a69e 31-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Minor code clarity changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16123 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
81ab877a0c8fbbdc903762bcc891c50e5bb98204 30-Aug-2004 Nate Begeman <natebegeman@mac.com> Put this change back in after testing from Reid proved its innocence. getSpillSize now returns value in bits


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16102 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
81bc6e377e06c358747f59bce781aba25c60fb56 29-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16077 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
ca5d1c378ce17c24404514dcdd4ee9c28ecc721a 27-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Now that LiveIntervals::addIntervalsForSpills is fixed, do not require
LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16076 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
d8d26b3268acf7f157028f0cb60a545b185e8905 27-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Only update LiveVariables if it is available. addIntervalsForSpills
runs after the initial run of the live interval analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16075 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ccdf21af1fe3cd0f2d8485e9da25e10c0cab7a9b 27-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Back out this change as it broke the build last night. This should be
investicated further as the linearscan variants don't really need
LiveVariables...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16074 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
bd2efb96005c51f9088701843c5ee9032bd1ca76 27-Aug-2004 Nate Begeman <natebegeman@mac.com> Back out change to divide getSpillSize by 8 until I figure out why it breaks x86, which has register sizes in bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16073 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
3f06e687836528dc5b1f30bfe0ae2173f2f66468 27-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> The linear scan variants do not require the LiveVariables analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16071 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
5709998993cade99e4aeda1c9d44a1bdf54aa720 27-Aug-2004 Nate Begeman <natebegeman@mac.com> Register sizes are in bits, not bytes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16070 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
22a2f6d5b05631a21b62e3e103aa1b9469ad0c5c 27-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use newly added API in MRegisterInfo and don't expose the allocatable
register set anymore. Its users now use the MRegisterInfo API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16061 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
5327801fb87e3eda52a33f82e6211181030ecb93 27-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use newly added API in MRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16060 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
d0d0a1a08f9e27f4c950e846e0a21c3c3f11e40c 24-Aug-2004 Chris Lattner <sabre@nondot.org> Fix a bug in a previous checkin of mine, correcting
Regression.CodeGen.Generic.2004-04-09-SameValueCoalescing.llx and the
code size problem.

This bug prevented us from doing most register coallesces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16031 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7af2865fc6f15e7c94b1bee5cf04116a2f09c296 24-Aug-2004 Chris Lattner <sabre@nondot.org> Do not use .xword and friends to emit zeros on V9. Apparently there are issues
with emitting .xwords when not on an 8-byte boundary (.xword 0 is not the
same as 8 .byte 0's). Because we do not know when or when we are not aligned,
just emit bytes like the old V9 asmprinter did.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16006 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
7008034c9f5e69af92496308e176752dfc8e4297 21-Aug-2004 Chris Lattner <sabre@nondot.org> Register info alignment is in bits, frame object alignment is (currently) in
bytes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15970 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
fa1face30a1943aa17560f6f6e10bb667b257065 21-Aug-2004 Chris Lattner <sabre@nondot.org> Now that we have per-register spill size/alignment info, remove more uses
of getRegClass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15967 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
418379e229dc491050f7f6292aa8364c29b71301 18-Aug-2004 Brian Gaeke <gaeke@uiuc.edu> Instead of using isDummyPhiInstr, we just compare the opcode with V9::PHI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15906 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
oduloScheduling/ModuloScheduling.cpp
e058b27faf9ba0df1582fddda55c3bcbd96de9a0 18-Aug-2004 Brian Gaeke <gaeke@uiuc.edu> Instead of using isDummyPhiInstr, we just compare the opcode with V9::PHI.
Also, squash a use of TargetInstrInfo::isNop().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15905 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
f746a7d09b219619b16ffa875e762d6e24868d6f 18-Aug-2004 Chris Lattner <sabre@nondot.org> Rename var


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15897 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
7d057a3fd579a57d9f16a3e366b56df0aff4f486 17-Aug-2004 Chris Lattner <sabre@nondot.org> Add support for targets without a .zero directive


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15894 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
bfddc2030a7e67b9e0c42276525d6932375ff261 17-Aug-2004 Chris Lattner <sabre@nondot.org> Add support for alignment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15888 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
0554fb6b9cf10717bd6ec099cd8193e9bb079a8d 17-Aug-2004 Chris Lattner <sabre@nondot.org> Use a designated comment character when printing comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15880 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
e85a5a9f40eb78ea002b47b9d70e66404b3eb52f 17-Aug-2004 Chris Lattner <sabre@nondot.org> Add support for targets that have .quad, drop extra tab inserted


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15870 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
1b7e2356ace23af872cc7d66cf45c56b10e77c4d 17-Aug-2004 Chris Lattner <sabre@nondot.org> Implement emitGlobalConstant


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15868 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
af2bf0ab306f7a9a3fe2af028656514f7ef53143 17-Aug-2004 Chris Lattner <sabre@nondot.org> We now allow targets to use any prefix they want for global symbols. Lets
hear it for ".".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15863 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ed1ff01639f8c0ea63131662568c82699447b6b3 17-Aug-2004 Chris Lattner <sabre@nondot.org> Some asmwriters want an _ prefix


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15845 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
a80ba71efe5be5012128e2db0dd29b024e00105a 17-Aug-2004 Chris Lattner <sabre@nondot.org> Initial implementation of the asmprinter base class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15838 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter.cpp
ad8281607f066c2cce5c3625009d8ee0761dbf35 17-Aug-2004 Chris Lattner <sabre@nondot.org> Move this code to lib/Target/SparcV9/MachineFunctionInfo.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15834 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
e7f372703a87f3bafb74078c5ac5aeae61959789 17-Aug-2004 Chris Lattner <sabre@nondot.org> This file is moving to lib/Target/SparcV9


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15833 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
85015a0891d4d23d0215511c7b302747e1438ad2 16-Aug-2004 Chris Lattner <sabre@nondot.org> Move MachineCodeForInstruction.h and MachineFunctionInfo.h into lib/Target/SparcV9


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15830 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
achineCodeForInstruction.cpp
achineFunction.cpp
oduloScheduling/ModuloScheduling.cpp
753c16c9cb50c1a6f034d851d4bcf25f3af013e7 16-Aug-2004 Chris Lattner <sabre@nondot.org> Nuke this file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15829 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrAnnot.cpp
e97db86e1717c60e4f11e53f7b2550add7859f39 16-Aug-2004 Chris Lattner <sabre@nondot.org> Fold MachineInstrAnnot.cpp into this file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15828 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
e6c3dc88ca209cd754c604f18f1d63d172ed36a0 16-Aug-2004 Brian Gaeke <gaeke@uiuc.edu> Add a note that people shouldn't use MachineFunctionInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15823 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
3bba026994f01b2b5bdcdf4b628fa93a8ae9d6ef 16-Aug-2004 Chris Lattner <sabre@nondot.org> Reduce usage of MRegisterInfo::getRegClass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15784 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLocal.cpp
078fee3f2e62d50f6c38fdb4e0f6aefaf385963d 16-Aug-2004 Chris Lattner <sabre@nondot.org> The insertion method returns void now


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15779 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
3cc03be51ad00b65cb7b8e4f678cbd4e2c0e699f 16-Aug-2004 Chris Lattner <sabre@nondot.org> Nuke ifdef'd out code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15777 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
26eb14ba51c8eccdb3ac69370c6ac859d3be34a4 16-Aug-2004 Chris Lattner <sabre@nondot.org> Stop using CreateStackObject(RegClass*)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15775 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
egAllocSimple.cpp
irtRegMap.cpp
57f1b67c347b9ba1f8a1cdc3a55362d4f2aa8653 15-Aug-2004 Chris Lattner <sabre@nondot.org> These methods no longer take a TargetRegisterClass* operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15774 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
egAllocLocal.cpp
egAllocSimple.cpp
irtRegMap.cpp
8c9b4de5744ea6c4ce8b79e8a55130df268761cd 15-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Make this compile on gc 3.4.1 (static_cast to non-const type was not
allowed).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15766 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
5de0f7aa14f15f463cedf6391bc4823e79d342b5 15-Aug-2004 Nate Begeman <natebegeman@mac.com> Elminiate MachineFunction& argument from eliminateFrameIndex


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15736 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c330b68fb7f1cb7f05a60ab4d811bba397538840 12-Aug-2004 Chris Lattner <sabre@nondot.org> Split saveCallerSavedRegisters into two methods for clarity, and add comments.
Add support for targets that must spill certain physregs at certain locations.

Patch contributed by Nate Begeman, slightly hacked by me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15701 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
4f65fb38c64621952263b78d3a5e00b578155237 12-Aug-2004 Chris Lattner <sabre@nondot.org> Forward substitute some constants into their users


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15693 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
3927af8d70c0809c6286b3d14b350a2f04bd024b 12-Aug-2004 Chris Lattner <sabre@nondot.org> The only target that uses this code (v9) always has argsOnStackHaveFixedSize
set to true (obviously)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15692 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
b814e2d1c00c4a1abea1997ba76577e2952c37ec 07-Aug-2004 Reid Spencer <rspencer@reidspencer.com> Get rid of a warning when compiling optimized. Uninitialized variable has
been initialized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15565 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/MSSchedule.cpp
ecf8afdc2065dec1ca739e2b6a96f8e72dc34533 07-Aug-2004 Chris Lattner <sabre@nondot.org> Ok get rid of the REST of the tabs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15564 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
d555da52f4301f0a221845d5a549848f5ae84577 07-Aug-2004 Chris Lattner <sabre@nondot.org> Death to tabs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15563 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
706515727c6d024015fffded2b3109a4f0ac5299 04-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Clean up whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15490 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
1a8ea01f01b30e28e4e3ac0e3a344c4a4d579270 04-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Convert indentation to 2 spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15489 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
57195d1321d959b4745429f0d43f8724050829d1 04-Aug-2004 Brian Gaeke <gaeke@uiuc.edu> Include SparcV9TmpInstr.h to pick up the def. of TmpInstruction,
instead of InstrSelection.h, which is dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15476 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloScheduling.cpp
f7d4efb3ed35dd12509c1248aa9b14f02bea87bd 04-Aug-2004 Brian Gaeke <gaeke@uiuc.edu> Tighten up some whitespace. Include SparcV9TmpInstr.h to pick up
the def. of TmpInstruction, instead of InstrSelection.h, which is
dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15475 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrAnnot.cpp
46c2b3a5eca387bdfcbc3213584ab88aff1e974d 04-Aug-2004 Chris Lattner <sabre@nondot.org> Squelch warnings in release mode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15460 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloScheduling.cpp
6a90f8202b0a0043de21130b1ba9d8006ba866ba 02-Aug-2004 Misha Brukman <brukman+llvm@gmail.com> Add #include <cstdlib> and abort() to silence a warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15413 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/MSchedGraph.cpp
82fd8d8cdd207c6c48295dc5dcdc74b0a15ab978 02-Aug-2004 Misha Brukman <brukman+llvm@gmail.com> * ceil() requires #include <cmath> for compilation
* Alphabetize #includes
* Fix some lines to fit within 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15412 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloScheduling.cpp
e0b531cc400aba4dd2c7dbf2694b71c3ea66dfd0 01-Aug-2004 Tanya Lattner <tonic@nondot.org> Adding ModuloScheduling so that it compiles for everyone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15408 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
4ae131e5da124bb5f7455133fefb1fa3b336192b 01-Aug-2004 Chris Lattner <sabre@nondot.org> Dereferencing end() is bad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15402 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
f978a1db517749e91210b7df17b7f11b9a30ae47 31-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Make OptimizeBlock take a MachineFunction::iterator instead of a
MachineBasicBlock* as a parameter so that nxext() and prior() helper
functions can work naturally on it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15376 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
7f74340733967255cf45f6514cf0f18a1f325371 31-Jul-2004 Chris Lattner <sabre@nondot.org> Next on a pointer increments the pointer, not an iterator


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15375 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
9fd332392c184b13eeb2bd3ffc4347034bc7408a 31-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use next() helper to make code more readable. Use
MachineFunction::iterator instead of MachineBasicBlock* to avoid
dereferencing end iterators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15373 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
dd0458378128b748d4ac6c6035cd47d021faf507 31-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use MachineFunction::iterator instead of a MachineBasicBlock* because
FallThrough maybe == to MF.end().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15372 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
21ab22e47592d8a4046cfdac844d76b2cb76d711 31-Jul-2004 Chris Lattner <sabre@nondot.org> Implement a simple target-independent CFG cleanup pass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15368 91177308-0d34-0410-b5e6-96231b3b80d8
ranchFolding.cpp
0a88d2d8b96aa02449afb94761d67c3b59aade5c 31-Jul-2004 Tanya Lattner <tonic@nondot.org> Updated ModuloScheduling. It makes it all the wya through register allocation on the new code!!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15351 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/MSSchedule.cpp
oduloScheduling/MSchedGraph.cpp
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
365f54c7bc32c13e9c3919bbc37f32192b5cb354 29-Jul-2004 Brian Gaeke <gaeke@uiuc.edu> Convert a few assertions with side-effects into regular old runtime checks.
These side-effects seem to make a difference when using llc -march=sparcv9
in Release mode (i.e., with -DNDEBUG); when they are left out, lots of
instructions just get dropped on the floor, because they never end up
in the schedule.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15339 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
47b14a4a6a455c7be169cfd312fcbe796f0ad426 29-Jul-2004 Misha Brukman <brukman+llvm@gmail.com> Fix #includes of i*.h => Instructions.h as per PR403.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15334 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
achineFunction.cpp
achineInstrAnnot.cpp
879313ae3aa2052cc40ba6f0f25c17e7a5a6f0da 29-Jul-2004 Chris Lattner <sabre@nondot.org> Fix #includes of i*.h => Instructions.h as per PR403:
http://llvm.cs.uiuc.edu/PR403 .


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15333 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
9670eecf33dbe09f0e5edc1f4ce4e56f7ae2cf10 29-Jul-2004 Chris Lattner <sabre@nondot.org> Fix #includes of i*.h => Instructions.h as per PR403:
http://llvm.cs.uiuc.edu/PR403 .


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15331 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
b2f30a3792c84790fcf7f20bf581b963bb0a25d3 28-Jul-2004 Brian Gaeke <gaeke@uiuc.edu> TargetInstrInfo::hasOperandInterlock() is always true, because it is
never overridden by any target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15308 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
5a0a1c2cba48c24a81fb4f786fb25dccfcf0e335 25-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add some comments to the backtracking code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15200 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
c25b55a5b237772bbd7cc55988d3ca0ec569aede 25-Jul-2004 Chris Lattner <sabre@nondot.org> Fix the sense of joinable


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15196 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveIntervalAnalysis.cpp
f542649f1b374b1bae845e4e4f6d1e82f90a9e31 25-Jul-2004 Chris Lattner <sabre@nondot.org> This patch makes use of the infrastructure implemented before to safely and
aggressively coallesce live ranges even if they overlap. Consider this LLVM
code for example:

int %test(int %X) {
%Y = mul int %X, 1 ;; Codegens to Y = X
%Z = add int %X, %Y
ret int %Z
}

The mul is just there to get a copy into the code stream. This produces
this machine code:

(0x869e5a8, LLVM BB @0x869b9a0):
%reg1024 = mov <fi#-2>, 1, %NOREG, 0 ;; "X"
%reg1025 = mov %reg1024 ;; "Y" (subsumed by X)
%reg1026 = add %reg1024, %reg1025
%EAX = mov %reg1026
ret

Note that the life times of reg1024 and reg1025 overlap, even though they
contain the same value. This results in this machine code:

test:
mov %EAX, DWORD PTR [%ESP + 4]
mov %ECX, %EAX
add %EAX, %ECX
ret

Another, worse case involves loops and PHI nodes. Consider this trivial loop:
testcase:

int %test2(int %X) {
entry:
br label %Loop
Loop:
%Y = phi int [%X, %entry], [%Z, %Loop]
%Z = add int %Y, 1
%cond = seteq int %Z, 100
br bool %cond, label %Out, label %Loop
Out:
ret int %Z
}

Because of interactions between the PHI elimination pass and the register
allocator, this got compiled to this code:

test2:
mov %ECX, DWORD PTR [%ESP + 4]
.LBBtest2_1:
*** mov %EAX, %ECX
inc %EAX
cmp %EAX, 100
*** mov %ECX, %EAX
jne .LBBtest2_1

ret

Or on powerpc, this code:

_test2:
mflr r0
stw r0, 8(r1)
stwu r1, -60(r1)
.LBB_test2_1:
addi r2, r3, 1
cmpwi cr0, r2, 100
*** or r3, r2, r2
bne cr0, .LBB_test2_1

*** or r3, r2, r2
lwz r0, 68(r1)
mtlr r0
addi r1, r1, 60
blr 0



With this improvement in place, we now generate this code for these two
testcases, which is what we want:


test:
mov %EAX, DWORD PTR [%ESP + 4]
add %EAX, %EAX
ret

test2:
mov %EAX, DWORD PTR [%ESP + 4]
.LBBtest2_1:
inc %EAX
cmp %EAX, 100
jne .LBBtest2_1 # Loop
ret

Or on PPC:

_test2:
mflr r0
stw r0, 8(r1)
stwu r1, -60(r1)
.LBB_test2_1:
addi r3, r3, 1
cmpwi cr0, r3, 100
bne cr0, .LBB_test2_1

lwz r0, 68(r1)
mtlr r0
addi r1, r1, 60
blr 0


Static numbers for spill code loads/stores/reg-reg copies (smaller is better):

em3d: before: 47/25/26 after: 44/22/24
164.gzip: before: 433/245/310 after: 403/231/278
175.vpr: before: 3721/2189/1581 after: 4144/2081/1423
176.gcc: before: 26195/8866/9235 after: 25942/8082/8275
186.crafty: before: 4295/2587/3079 after: 4119/2519/2916
252.eon: before: 12754/7585/5803 after: 12508/7425/5643
256.bzip2: before: 463/226/315 after: 482:241/309


Runtime perf number samples on X86:

gzip: before: 41.09 after: 39.86
bzip2: runtime: before: 56.71s after: 57.07s
gcc: before: 6.16 after: 6.12
eon: before: 2.03s after: 2.00s


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15194 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
d3a205eab5761298ccfb320834b5f0ea0184ab27 25-Jul-2004 Chris Lattner <sabre@nondot.org> Make a method const, no functionality changes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15193 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveInterval.h
62d4e16a059b5bbcd49b1bcab0d4854e784821f9 25-Jul-2004 Chris Lattner <sabre@nondot.org> Fix a bug where we incorrectly value numbered the first PHI definition the
same as the PHI use. This is not correct as the PHI use value is different
depending on which branch is taken. This fixes espresso with aggressive
coallescing, and perhaps others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15189 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6925a9f9cc0b9d34cfbc19d9208c416e293ca516 25-Jul-2004 Chris Lattner <sabre@nondot.org> Fix a bug in the range remover


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15188 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
c83e40d1b6582155286f1044623d544dea20202e 25-Jul-2004 Chris Lattner <sabre@nondot.org> Add debugging output for joining assignments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15187 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3f86193cd2153595f0e32d8a8d8a0e7d4ec97faf 24-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove implementation of operator= and make it private so that it is
not used accidentally.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15172 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.h
a1613db62fec94845aa8306232fb665273615bad 24-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Change std::map<unsigned, LiveInterval*> into a std::map<unsigned,
LiveInterval>. This saves some space and removes the pointer
indirection caused by following the pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15167 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveInterval.h
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
060913cce42d8b746194c7ebd8b19c9789a03909 24-Jul-2004 Chris Lattner <sabre@nondot.org> whoops, didn't mean to remove this


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15157 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
deb9971061cfb9c57930724fcf8d62fb26dc2213 24-Jul-2004 Chris Lattner <sabre@nondot.org> In the joiner, merge the small interval into the large interval. This restores
us back to taking about 10.5s on gcc, instead of taking 15.6s! The net result
is that my big patches have hand no significant effect on compile time or code
quality. heh.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15156 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
4df98e546dd0cca214df661ae1072e1a3f6eff98 24-Jul-2004 Chris Lattner <sabre@nondot.org> Completely eliminate the intervals_ list. instead, the r2iMap_ maintains
ownership of the intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15155 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
7ac2d3146a196fa0120c579ecd2ddd69652ad230 24-Jul-2004 Chris Lattner <sabre@nondot.org> Big change to compute logical value numbers for each LiveRange added to an
Interval. This generalizes the isDefinedOnce mechanism that we used before
to help us coallesce ranges that overlap. As part of this, every logical
range with a different value is assigned a different number in the interval.
For example, for code that looks like this:

0 X = ...
4 X += ...
...
N = X

We now generate a live interval that contains two ranges: [2,6:0),[6,?:1)
reflecting the fact that there are two different values in the range at
different positions in the code.

Currently we are not using this information at all, so this just slows down
liveintervals. In the future, this will change.

Note that this change also substantially refactors the joinIntervalsInMachineBB
method to merge the cases for virt-virt and phys-virt joining into a single
case, adds comments, and makes the code a bit easier to follow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15154 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
0f4c076140cbd9360650f75a896c88dcfacc526e 24-Jul-2004 Chris Lattner <sabre@nondot.org> Add a new differingRegisterClasses method
make overlapsAliases take pointers instead of references
fix indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15153 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.h
abf295fc6cfb438617e8b105022ce506f56674d8 24-Jul-2004 Chris Lattner <sabre@nondot.org> Little stuff:

* Fix comment typeo
* add dump() methods
* add a few new methods like getLiveRangeContaining, removeRange & joinable
(which is currently the same as overlaps)
* Remove the unused operator==

Bigger change:

* In LiveInterval, instead of using a boolean isDefinedOnce to keep track of
if there are > 1 definitions in a particular interval, keep a counter,
NumValues to keep track of exactly how many there are.
* In LiveRange, add a new ValId element to indicate which of the numbered
values each LiveRange belongs to. We now no longer merge LiveRanges if
they are of differing value ID's even if they are neighbors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15152 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveInterval.h
f35fef7060c465dd7b578bf6339a18e8a8911888 23-Jul-2004 Chris Lattner <sabre@nondot.org> More minor changes:
* Inline some functions
* Eliminate some comparisons from the release build

This is good for another .3 on gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15144 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
b26c215c059d4674bd6a9a8b94da86e497e64844 23-Jul-2004 Chris Lattner <sabre@nondot.org> Change addRange and join to be a little bit smarter. In particular, we don't
want to insert a new range into the middle of the vector, then delete ranges
one at a time next to the inserted one as they are merged.

Instead, if the inserted interval overlaps, just start merging. The only time
we insert into the middle of the vector is when we don't overlap at all. Also
delete blocks of live ranges if we overlap with many of them.

This patch speeds up joining by .7 seconds on a large testcase, but more
importantly gets all of the range adding code into addRangeFrom.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15141 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveInterval.h
aa14147cd6401e9c66dc9f81d1a47a90a5477159 23-Jul-2004 Chris Lattner <sabre@nondot.org> Search by the start point, not by the whole interval. This saves some
comparisons, reducing linscan by another .1 seconds :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15139 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
e6ad392802d8643ec7efad9bb80c0c429edda499 23-Jul-2004 Chris Lattner <sabre@nondot.org> New helper method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15138 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.h
4dc54ae0d950764443ee6a475cc9212d37074747 23-Jul-2004 Chris Lattner <sabre@nondot.org> Speedup debug builds a bit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15137 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.h
ebd7e6c54dce754a88d8f38df4ac2f388f35435e 23-Jul-2004 Chris Lattner <sabre@nondot.org> Instead of searching for a live interval pair, search for a location. This gives
a very modest speedup of .3 seconds compiling 176.gcc (out of 20s).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15136 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveInterval.h
a3b8b5c0e0a1d0942288568b2012592184ca67c5 23-Jul-2004 Chris Lattner <sabre@nondot.org> Rename LiveIntervals.(cpp|h) -> LiveIntervalAnalysis.(cpp|h)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15135 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
fb449b9ea5a37fb411aee7d42f6a76119602288d 23-Jul-2004 Chris Lattner <sabre@nondot.org> Pull the LiveRange and LiveInterval classes out of LiveIntervals.h (which
will soon be renamed) into their own file. The new file should not emit
DEBUG output or have other side effects. The LiveInterval class also now
doesn't know whether its working on registers or some other thing.

In the future we will want to use the LiveInterval class and friends to do
stack packing. In addition to a code simplification, this will allow us to
do it more easily.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15134 91177308-0d34-0410-b5e6-96231b3b80d8
iveInterval.cpp
iveInterval.h
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
ec2bc645053e9051ada01fac6a555df17a85c91d 23-Jul-2004 Chris Lattner <sabre@nondot.org> Improve comments a bit

Use an explicit LiveRange class to represent ranges instead of an std::pair.
This is a minor cleanup, but is really intended to make a future patch simpler
and less invasive.

Alkis, could you please take a look at LiveInterval::liveAt? I suspect that
you can add an operator<(unsigned) to LiveRange, allowing us to speed up the
upper_bound call by quite a bit (this would also apply to other callers of
upper/lower_bound). I would do it myself, but I still don't understand that
crazy liveAt function, despite the comment. :)

Basically I would like to see this:
LiveRange dummy(index, index+1);
Ranges::const_iterator r = std::upper_bound(ranges.begin(),
ranges.end(),
dummy);

Turn into:
Ranges::const_iterator r = std::upper_bound(ranges.begin(),
ranges.end(),
index);


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15130 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
94881e8c4522e368df38275d28c8ececdd1e171e 23-Jul-2004 Chris Lattner <sabre@nondot.org> Update live intervals more accurately for PHI elim. This slightly reduces
the live intervals for some registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15125 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
fe1630b43ef3e9506fde9780108c2af0431393e9 23-Jul-2004 Chris Lattner <sabre@nondot.org> Force coallescing of live ranges that have a single definition, even if they
interfere. Because these intervals have a single definition, and one of them
is a copy instruction, they are always safe to merge even if their lifetimes
interfere. This slightly reduces the amount of spill code, for example on
252.eon, from:

12837 spiller - Number of loads added
7604 spiller - Number of stores added
5842 spiller - Number of register spills
18155 liveintervals - Number of identity moves eliminated after coalescing

to:

12754 spiller - Number of loads added
7585 spiller - Number of stores added
5803 spiller - Number of register spills
18262 liveintervals - Number of identity moves eliminated after coalescing

The much much bigger win would be to merge intervals with multiple definitions
(aka phi nodes) but this is not that day.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15124 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
a7bfbba856f6fc99803c9a670fd110d7a72f4843 23-Jul-2004 Chris Lattner <sabre@nondot.org> costmetic changes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15118 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
e8850f476eba1b839b24bd926bab2dfd8b452307 22-Jul-2004 Chris Lattner <sabre@nondot.org> Fix broken -debug printing


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15115 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4951d48a16d46880e7dd57580d8dda7a27820778 22-Jul-2004 Chris Lattner <sabre@nondot.org> The default has not been 'simple' for AGES!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15114 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
0bafa9818baafc969359a668245cff7d95268931 22-Jul-2004 Chris Lattner <sabre@nondot.org> Make linear scan the default


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15111 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
77c4c4da24a7dc4906eed82a8f0944dee9e2367f 22-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Put variable name to a separate line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15108 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
75fa4e4f99bd9c89be190e65155b0b78ad7f0106 22-Jul-2004 Misha Brukman <brukman+llvm@gmail.com> Fix indentation and wrap code at 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15107 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
d3014edc51af0751e7f05180e9f48162433fb4ba 22-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Sorting is now handled by both linearscan and iterative scan so live
intervals need not be sorted anymore. Removing this redundant step
improves LiveIntervals running time by 5% on 176.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15106 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
82c24fba8a096ade6875451894340a75fd3c27f4 22-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fit to 80 columns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15105 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
53eb37340c02a06f5927852db978586ceab0525c 22-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Some compile time improvements resulting in a 1sec speedup in the 5sec
compilation of gcc:

* Use vectors instead of lists for the intervals sets
* Use a heap for the unhandled set to keep intervals always sorted and
makes insertions back to the heap very fast (compared to scanning a
list)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15103 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
199edde70774ecb69922230fcde65acc51c21d89 22-Jul-2004 Chris Lattner <sabre@nondot.org> Remove extraneous punctuation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15098 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
10e169b0386d4fd93dca648b1188be0df0d9d405 22-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use reverse iterators when updating the vector, since scanning from
the end will reduce erase() runtimes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15093 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
6beef3e1a085a0f3693fa6eff1b0b702e2c246e7 22-Jul-2004 Chris Lattner <sabre@nondot.org> That funny 2-address lowering pass can also cause multiple definitions,
fortunately, they are easy to handle if we know about them. This patch fixes
some serious pessimization of code produced by the linscan register allocator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15092 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1e31363a9ee6b4e83703da7501fba19ca31395d7 22-Jul-2004 Chris Lattner <sabre@nondot.org> Minor cleanups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15091 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
7848e68c1635ccba5a08d55314d4e5aed5ab54b9 21-Jul-2004 Brian Gaeke <gaeke@uiuc.edu> These files don't need to include <iostream> since they include "Support/Debug.h".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15089 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
oduloScheduling/MSSchedule.cpp
oduloScheduling/MSchedGraph.cpp
oduloScheduling/ModuloScheduling.cpp
egAllocIterativeScan.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
d03451ef475de49edea840ab95d3d8bf0245f6bd 21-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix analysis name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15078 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
fc29e63afec1e8f4636c13bd9723b27efc2d4c73 21-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Clear spilled list at once. Remove unused vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15073 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
2d54705c4b8c83b47cb7d03d488b3eda34158ada 21-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Change std::list into a std::vector for IntervalSets. This reduces
compile time for 176.gcc from 5.6 secs to 4.7 secs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15072 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
3b1af0b3fc492dee8d1cd993e6d22142fe2ee7d3 21-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Improve file comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15069 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocIterativeScan.cpp
910d0d6066f55fba7c67f2b42dd7eb4f971ca49a 21-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add Iterative scan register allocator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15068 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
egAllocIterativeScan.cpp
c8dec2c23e7b31e4f7a40d686d95513a442a0b6e 21-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Linearscan is no longer experimental.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15067 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
a39fc0efcf1ccaf18f1b8eb095433e37ac9ec425 20-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add function to clear all virtual->physical mappings but not assigned
stack slots. This is in preparation for the iterative linear scan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15032 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.h
6bd23c083290ab0f68388397f213323f386fc36e 20-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove unneeded functor. LiveInterval has a < operator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15031 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
da77c44c2c008271d802954706350518b2683e76 20-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15011 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
8640f4e666086cc6e7447dc164105e428e6cb81a 19-Jul-2004 Chris Lattner <sabre@nondot.org> Fix a bug that occurs when the last instruction in a range is dead


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15005 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cc0d156f7bca0811aade0a95b0e7419176383c90 19-Jul-2004 Chris Lattner <sabre@nondot.org> When joining intervals, join intervals in deeply nested loops first. This
is a simple change, but seems to improve code a little. For example, on
256.bzip2, we went from 75.0s -> 73.33s (2% speedup).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15004 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1c5c0444f1326b58cf05015651f36f2b04ca322d 19-Jul-2004 Chris Lattner <sabre@nondot.org> Split joinIntervals into two methods


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15003 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
74de8b1b26b12fda3364382946e519a2e37b6709 19-Jul-2004 Chris Lattner <sabre@nondot.org> There is no need to store the MBB along with the MI any more, we can now
ask instructions for their parent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14998 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
HIElimination.cpp
472405e0dc05f6fb8c09af00713ff893fff25b94 19-Jul-2004 Chris Lattner <sabre@nondot.org> Simplify the interface to LiveVariables::addVirtualRegister(Killed|Dead)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14997 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
HIElimination.cpp
woAddressInstructionPass.cpp
73d4adfb1e5d6c0ce834b331e6099b14d3341dd7 19-Jul-2004 Chris Lattner <sabre@nondot.org> Remove the DefBlock element of VarInfo. DefBlock is always DefInst->getParent()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14996 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
8ea13c6233d7dded98d933b435f2727a38149a70 19-Jul-2004 Chris Lattner <sabre@nondot.org> Two changes, both very significant:

* vreg <-> vreg joining now works, enable it unconditionally when joining
is enabled (which is the default).
* Fix a serious pessimization of spill code where we were saying that a
spilled DEF operand was live into the subsequent instruction. This allows
for substantially better code when spilling starts to happen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14993 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
57eb15e316c8f186b988dea7f8962ffa827d4a71 19-Jul-2004 Chris Lattner <sabre@nondot.org> See comments. The live intervals were not coming out of the spiller in sorted
order, causing the inactive list in the linearscan list to get unsorted, which
basically fuxored everything up severely.

These seems to fix the joiner, so with more testing I will enable it by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14992 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
331cb7dde1bf0c52bfd17570d36e56b934d559f5 19-Jul-2004 Chris Lattner <sabre@nondot.org> Fix assertion to not dereference end!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14991 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
59073e02ccd79c8728e439dfe6869091b84d669c 19-Jul-2004 Chris Lattner <sabre@nondot.org> Add some asserts that the list of intervals returned by addIntervalsForSpills
is sorted. This is not the case currently, which is causing no end of
problems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14990 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
6097d13b2a624048dbe02e39e2dfb23bfa269b64 19-Jul-2004 Chris Lattner <sabre@nondot.org> remove the mbbi2mbbMap_, which was just keeping track of mbb order anyway.

Heavily refactor handleVirtualRegisterDef, adding comments and making it more
efficient. It is also much easier to follow and convince ones self that it is
correct :)

Add -debug output to the joine, showing the result of joining the intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14989 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
6b929060107fe9bd04931436a5d959c13eb39584 19-Jul-2004 Chris Lattner <sabre@nondot.org> fill comment to 80 cols

remove map that is not needed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14988 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.h
e1b9536d546b78f8cffc7efbb2ff75d7e15f9749 17-Jul-2004 Chris Lattner <sabre@nondot.org> It looks like physref->virtreg joining is working fine. Enable it by default
but make virtreg->virtreg joining stay off by default


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14916 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b8edf61fa9f558ccd68b4b5ac970e3d403d870ea 16-Jul-2004 Chris Lattner <sabre@nondot.org> Fix IA64 compatibility


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14866 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
irtRegMap.cpp
23f9ef062a361d77a51a563c0f03e36db6c4b6ba 16-Jul-2004 Chris Lattner <sabre@nondot.org> Use new macro


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14865 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
f51c7f56caea364e4ad7adecff0413dc74686bb3 15-Jul-2004 Chris Lattner <sabre@nondot.org> Fix for PR341


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14845 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
9fb6cf1d82617994cd6dad33ecd45c1e913534aa 09-Jul-2004 Chris Lattner <sabre@nondot.org> Add checks to ensure that there are no unreachable blocks in the function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14725 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
ce22e76996d3ff0930716fa60c29df60a7e0481b 09-Jul-2004 Misha Brukman <brukman+llvm@gmail.com> * Doxygenify comments
* Fix spacing, grammar in comment
* Make code layout consistent
* Wrap code at 80 cols
* Delete spurious blank lines

No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14721 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
80b27ced2d5e6340bb62d75a8c6f23198e69a1af 09-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14720 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
607baea7d2f3155a4ca391a1d9fb1f4b0178ebb2 09-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Improve code comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14719 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
71bf404e9b69122c276ad7ce66f38bf1e57cafeb 08-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add viewCFG() and viewCFGOnly() APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14679 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
3877652e683cc85dd3cd512d6af0accbce84cad5 07-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Disable coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14655 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5de868b0b2daf145d7991bc9b3bf25807bcc7ca7 06-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Do not crash when joining two intervals of registers of different
classes: just ignore that move. Thanks to Vladimir Prus who found the
bug!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14644 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7f0566c1233ba4378c2c5531ddbc9eb8ad1868da 06-Jul-2004 Chris Lattner <sabre@nondot.org> Fix a bug in the unreachable block elim pass. Dropping all references on a
basic block clear()'s all of the operands lists, including phis. This
caused removePredecessor to get confused later. Because of this, we just
nuke (without prejudice) PHI nodes in unreachable blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14635 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
c156095b174987226a94583cb7e10c426dddaea6 04-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Correctly compute the ration of iterations/#intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14626 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
954da37bb492b519f5c31dc360f2a142567e08b4 04-Jul-2004 Reid Spencer <rspencer@reidspencer.com> Add #include <iostream> since Value.h does not #include it any more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14622 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraphCommon.cpp
nstrSched/SchedPriorities.cpp
ntrinsicLowering.cpp
achineBasicBlock.cpp
achineCodeEmitter.cpp
achineFunction.cpp
achineInstr.cpp
electionDAG/DAGBuilder.cpp
electionDAG/SelectionDAG.cpp
d55b2b1067248fff5696229adf31d214d864ccaf 04-Jul-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add efficiency statistic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14590 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
230b4fb8a0d7b2b0e0d533cf37b05a084d140a5c 02-Jul-2004 Chris Lattner <sabre@nondot.org> Revert patches 1.79 and 1.80 which had to do with dead MBB's. Now that they
don't exist, we don't have to pretend to handle them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14567 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
fc3c82a804c9b5eda24d96c21f7e6ff66bc2c529 02-Jul-2004 Chris Lattner <sabre@nondot.org> Add a trivially simple pass to delete unreachable blocks from the CFG. This
pass is required to paper over problems in the code generator (primarily
live variables and its clients) which doesn't really have any well defined
semantics for unreachable code.

The proper solution to this problem is to have instruction selectors not
select blocks that are unreachable. Until we have a instruction selection
framework available for use, however, we can't expect all instruction
selector writers to do this. Until then, this pass should be used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14563 91177308-0d34-0410-b5e6-96231b3b80d8
nreachableBlockElim.cpp
4b9a4006748b8d72a04504a5fc1f5daa73bf69f9 01-Jul-2004 Chris Lattner <sabre@nondot.org> Make sure that we destroy the MBB's, with all of their instructions, before
any other data structures


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14524 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
8490f9c92e354fd9cd242bae89b24e6c59e5c794 01-Jul-2004 Chris Lattner <sabre@nondot.org> Now that MachineFunction/MachineBasicBlock keep a mapping of blocks to ID #'s
use them instead of a local LiveVariables numbering


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14523 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
ca48eb9f5175058a55c1818cb1d5d06052f0092d 01-Jul-2004 Chris Lattner <sabre@nondot.org> Change MBB autonumber a bit to get the reverse mapping as well as a forward
mapping


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14521 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
51289aa520c9839a0396eb3e76f5e0174dc67c09 01-Jul-2004 Chris Lattner <sabre@nondot.org> Instance var no longer exists


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14520 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
8ba9771549bcff6109ad45ff3944a1b6c3c54b46 01-Jul-2004 Chris Lattner <sabre@nondot.org> Start using MBB numbers directly instead of going through the live variables
map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14518 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
HIElimination.cpp
a5287a63762fbf0976e333fb7787ec135fdc2061 01-Jul-2004 Chris Lattner <sabre@nondot.org> Instead of building a private numbering of MBB's use brg's nifty auto-numbering.
Also convert df_iterator -> df_ext_iterator for subsequent stuff I'm doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14517 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
91a350ddd13de9c972c583b4a1ad3ac114c117e7 29-Jun-2004 Chris Lattner <sabre@nondot.org> In line with the previous patch, do not assert out if analyzing a dead basic block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14475 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
59850a8f8f94c59e8894edcbf8629a5d88624dc6 29-Jun-2004 Chris Lattner <sabre@nondot.org> Do not dereference end iterators. It hurts when you do that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14474 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4e7244e68e617f6ba23e547fdf2593eeee2af8f2 27-Jun-2004 Chris Lattner <sabre@nondot.org> Do not find these ugly sparc-specific objects by using the annotation API on
instructions. Instead, keep a map of instructions -> MCFI objects in the
already sparc-specific class MachineFunctionInfo. This will slow down the
sparc backend a bit, but it does not penalize the rest of LLVM!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14438 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
b140762a45d21aaed054f15adaff0fc2274d939d 25-Jun-2004 Tanya Lattner <tonic@nondot.org> Made a fix so that you can print out MachineInstrs that belong to a MachineBasicBlock that is not yet attached to a MachineFunction. This change includes changing the third operand (TargetMachine) to a pointer for the MachineInstr::print function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14389 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
achineBasicBlock.cpp
achineInstr.cpp
egAllocSimple.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
09ba906cf55b165550aecefbd6286939be84b8d1 24-Jun-2004 Misha Brukman <brukman+llvm@gmail.com> Convert tabs to spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14373 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
cc6543cb51bfbb62b89f7c98ff31fbe9c4b4bd3a 22-Jun-2004 Misha Brukman <brukman+llvm@gmail.com> Making an archive version of the CodeGen library is unnecessary if we just
move InstructionLowering itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14324 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
68fd0cae5233f3a37ec840e0b381da281ff838a0 22-Jun-2004 Misha Brukman <brukman+llvm@gmail.com> Provide archive version of CodeGen library (for those tools that only need
IntrinsicLowering, for instance).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14323 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
418da55c89c9ba355b51dceecb16f4388ef35119 21-Jun-2004 Chris Lattner <sabre@nondot.org> Rename Interval class to LiveInterval to avoid conflicting with the already
existing llvm::Interval class.

Patch contributed by Vladimir Prus!
http://mail.cs.uiuc.edu/pipermail/llvmbugs/2004-June/000710.html


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14281 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocLinearScan.cpp
30483737486d00e5c1c37f51138419aa08d8b5e3 20-Jun-2004 Chris Lattner <sabre@nondot.org> Move the IntrinsicLowering header into the CodeGen directory, as per PR346


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14266 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
988b7ba5bad830379a7108c1f9ea36fb29073245 18-Jun-2004 Brian Gaeke <gaeke@uiuc.edu> Make debugging dumps w/ multiple MachineBBs for a given LLVM BB readable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14205 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineInstr.cpp
f70c22b019494723d0e706f93d6542dfaa6e73a5 17-Jun-2004 Chris Lattner <sabre@nondot.org> Rename Type::PrimitiveID to TypeId and ::getPrimitiveID() to ::getTypeID()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14201 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/SelectionDAG.cpp
aebcce840429a2f9dd0a17c300a91901528cb953 16-Jun-2004 Chris Lattner <sabre@nondot.org> Fix a recent regression in Applications/sgefa that Alkis pointed out to me.
The vector may actually be empty if the register that we are marking as
recently used is not actually allocatable. This happens for physical registers
that are not allocatable, like the ST(x) registers on X86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14195 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
be78ac442216ef87b13f9ac3da365a693417c693 15-Jun-2004 Chris Lattner <sabre@nondot.org> Remove isnan support, correct isunordered support


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14187 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
9685372062a07c49d6c940d9094df07850092cd2 12-Jun-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add the isunordered intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14159 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
7f7bbc2fdb833485ac3d865a405fd948e58e8ddb 11-Jun-2004 Chris Lattner <sabre@nondot.org> Fix fallout from getOffsetOfLocalArea() being negated. Debugging dumps were being
printed incorrectly, and we were reserving 8 extra bytes of stack space for functions
on X86.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14152 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
02348caffc6a0ca6e00960767152b6b7422ab450 11-Jun-2004 Chris Lattner <sabre@nondot.org> Fix lowering to work correctly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14134 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
137cc4fc8c549c805e817095e2d82776a2af8095 11-Jun-2004 Chris Lattner <sabre@nondot.org> I misled Alkis: LLVM should have isnan, not isunordered.
isunordered(X, Y) === isnan(X) | isnan(Y)

Remove isunordered, add isnan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14132 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
f616f22e816ce7f7ba3414cf3d91c9410aa03223 11-Jun-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add the isunordered intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14127 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
577aec14288b86ab1fb07e164375ebc7d3038cb7 10-Jun-2004 Chris Lattner <sabre@nondot.org> Fix the prolog epilog code inserter to match the documentation and support
targets whose stack grows up.

Patch contributed by Vladimir Prus


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14111 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
f0a3e6c21cc24ebbec701bd8f6b1253b49498457 05-Jun-2004 Chris Lattner <sabre@nondot.org> Remove an unused variable.
Work around for bogus errors: no those static functions don't need to
be executed to be initialized!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14040 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
6bc24419b69deeaaa7bc4f77086f8e0155304e3a 02-Jun-2004 Chris Lattner <sabre@nondot.org> Oops, this was not to go in


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13958 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
98107ffd1e5bb8d99d1e72995330b667a1018cf7 02-Jun-2004 Chris Lattner <sabre@nondot.org> Adjust to the new TargetMachine interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13957 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
9bcdcd17c7219dbc68de2f11ca2de86471c8c390 02-Jun-2004 Chris Lattner <sabre@nondot.org> Adjust to new TargetMachine interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13956 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
achineBasicBlock.cpp
achineInstr.cpp
akefile
HIElimination.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
egAllocSimple.cpp
woAddressInstructionPass.cpp
irtRegMap.cpp
62d6ad2cee0e6b7fa653c8903a951f8497b6da3a 02-Jun-2004 Chris Lattner <sabre@nondot.org> Inline findOptimalStorageSize into it's caller, both of which are sparc specific


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13955 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
e25738cab63977282f8ebc26012142debfbd1d20 02-Jun-2004 Chris Lattner <sabre@nondot.org> Finegrainify namespacification


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13948 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGBuilder.cpp
electionDAG/SelectionDAG.cpp
fd0f7b113120a7eed61c721aa74222fa85fdd571 02-Jun-2004 Chris Lattner <sabre@nondot.org> Fix a trivial but blatant bug


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13947 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGBuilder.cpp
6924063bf2fdcc455bcb87807ab452ab7fc69773 30-May-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Pull Interval class out of LiveIntervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13910 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocLinearScan.cpp
26f5a69e52b64e035d26c135979a39b39fd6ba3e 30-May-2004 Alkis Evlogimenos <alkis@evlogimenos.com> When spilling an register, introduce a new temporary for each of its
spills. This allows for more flexibility when allocating registers for
spill code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13907 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocLinearScan.cpp
cdd69e6719bed79fb2756725814c49b85efa37e6 30-May-2004 Brian Gaeke <gaeke@uiuc.edu> Fix typo in head-of-file comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13903 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
38af59a43c4176d8f34bd26faeb18b23080a1d9b 29-May-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add method to assign stack slot to virtual register without creating a
new one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13895 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
irtRegMap.h
f174cc303ba0f37ceaed75c3ea751ebd0fb3a4cd 29-May-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add grow() member that grows the maps when the number of virtual
registers in the function has changed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13893 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.h
f717a0569886be297903078bcd779e84254d0010 29-May-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove defs vector from live intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13892 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
20890832ead867e78a3e9b074caecaa62983b33d 28-May-2004 Tanya Lattner <tonic@nondot.org> updates to ModuloSched


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13881 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
ebac64534ca8f7dbaddc7569d01f190ff57ce0ea 26-May-2004 Tanya Lattner <tonic@nondot.org> Adding scheduling class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13783 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/MSSchedule.cpp
oduloScheduling/MSSchedule.h
4cffb588f5fafe4b288d4361e115bedefe979495 26-May-2004 Tanya Lattner <tonic@nondot.org> Updating my cvs versions. THis is still in progress and much will be changed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13782 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/MSchedGraph.cpp
oduloScheduling/MSchedGraph.h
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
17fb34bf8cd10a798c9206eeef3bff151b4d3688 24-May-2004 Tanya Lattner <tonic@nondot.org> Moved MachineBasicBlock deconstructor to cpp file and removed it from LeakDetector to fix memory leak bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13718 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineFunction.cpp
792699c46ef9bfc47dd459bbfa7e71bcb2cee29a 24-May-2004 Tanya Lattner <tonic@nondot.org> Added MachineFunction parent* to MachineBasicBlock. Customized ilist template
to set the parent when a MachineBasicBlock is added to a MachineFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13716 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineFunction.cpp
5bf3ce2b7cffb9dcd793ecde117f767e96020664 24-May-2004 Chris Lattner <sabre@nondot.org> Eliminate an explicit use of the LLVM basic block, using getParent instead,
which simplifies the code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13707 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
0c63e03e04d3982e1913479bba404c3debc9a27e 24-May-2004 Tanya Lattner <tonic@nondot.org> Changed clone to be const.
Changed copy constructor to set parent, prev, and next pointers to null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13706 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b5159ed0cb7943e5938782f7693beb18342165ce 23-May-2004 Tanya Lattner <tonic@nondot.org> Fixed up my changes to add support for cloning Machine Instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13665 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
466b534a570f574ed485d875bbca8454f68dcb52 23-May-2004 Tanya Lattner <tonic@nondot.org> Adding support to clone MachineInstr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13661 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
bee887211b603a7e19bf72a4c04e120b47ad82e9 12-May-2004 Chris Lattner <sabre@nondot.org> Fix a really nasty bug from my changes on Monday to PHIElim. These changes
broke obsequi and a lot of other things. It all boiled down to MBB being
overloaded in an inner scope and me confusing it with the one in the outer
scope. Ugh!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13517 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
d657c42dce0a6568500dc19cc900adf5ccdc4efb 12-May-2004 Brian Gaeke <gaeke@uiuc.edu> Start NextMBBNumber out at zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13515 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
0bcb1ad7be8515492ba02f64c0e43113ecdf8e32 12-May-2004 Brian Gaeke <gaeke@uiuc.edu> Add non-const MachineBasicBlock::getParent() accessor method.

MBBs start out as #-1. When a MBB is added to a MachineFunction, it
gets the next available unique MBB number. If it is removed from a
MachineFunction, it goes back to being #-1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13514 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
8abf69374e9c34068ddc970817738c0eb24ece2b 10-May-2004 Chris Lattner <sabre@nondot.org> Switch this from using an std::map to using a DenseMap. This speeds up
phi-elimination from 0.6 to 0.54s on kc++.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13454 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
80e20eb487e5e7bc41a7a52d5e985d332c552ef9 10-May-2004 Chris Lattner <sabre@nondot.org> Use a new VRegPHIUseCount to compute uses of PHI values by other phi values
in the basic block being processed. This fixes PhiElimination on kimwitu++
from taking 105s to taking a much more reasonable 0.6s (in a debug build).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13453 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
791f896d9f8a38b3806878867d61c114069b6195 10-May-2004 Chris Lattner <sabre@nondot.org> Now that we use an ilist of machine instructions, iterators are more robust
than before. Because this is the case, we can compute the first non-phi
instruction once when de-phi'ing a block. This shaves ~4s off of
phielimination of _Z7yyparsev in kimwitu++ from 109s -> 105s. There are
still much more important gains to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13452 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
6d3848df7e1f2d773ed7ae1a225944810d8510ad 10-May-2004 Chris Lattner <sabre@nondot.org> Patch to fix PR337. Make sure to mark all aliased physical registers as used
when we see a read of a register. This is important in cases like:

AL = ...
AH = ...

= AX

The read of AX must make both the AL and AH defs live until the use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13444 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
0979ca7e3e8ff1bb3f38f7b93a02db2e1704333c 09-May-2004 Chris Lattner <sabre@nondot.org> Implement the AddPrototypes method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13432 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
73e3e2e10f6a83f72651bb9e7d0a6ad107676ab9 08-May-2004 Tanya Lattner <tonic@nondot.org> Updating my versions of ModuloScheduling in cvs. Still not complete.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13424 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/MSchedGraph.cpp
oduloScheduling/MSchedGraph.h
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
880e8e4b4cc0dc6d5d93690a36d6c6f564d0a795 08-May-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add required header


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13417 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
feab248c93eeb1028ac014fa9546a02013dd3396 08-May-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove unneeded header


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13416 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
a19eedeb7aafc418ef2f017b8215ceafa7f1a76c 06-May-2004 Chris Lattner <sabre@nondot.org> numeric_limits::infinity() apparently does not work on all systems. As a
workaround, use the C HUGE_VAL macro instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13377 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
015959ee38e4fd4a920f6b0065c50e524762f580 01-May-2004 Chris Lattner <sabre@nondot.org> Operate on the Machine CFG instead of on the LLVM CFG


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13302 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
HIElimination.cpp
f25fb4bc640340c60793a3e2bbf2510dea0e15f4 01-May-2004 Chris Lattner <sabre@nondot.org> Stop LiveVariables from using BasicBlocks as part of the mapping, instead
use MachineBasicBlocks. To do this, we traverse the Machine CFG instead of
the LLVM CFG, which is also *MUCH* more efficient by having fewer levels of
indirections and mappings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13301 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
35450d2aaa139ea94714a20a370df61179c63ce3 23-Apr-2004 Brian Gaeke <gaeke@uiuc.edu> Include SparcV9RegInfo.h instead of TargetRegInfo.h. This serves as a bit of
documentation that this module needs to be made independent of the
register file description of the current target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13125 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
da8246bb71a8ade10d603fa11f1465bcd0e2fc84 23-Apr-2004 Brian Gaeke <gaeke@uiuc.edu> Implement emitWordAt() for the debug emitter and the file printer emitter. (I
am not so sure about the file printer emitter, but the debug emitter change
should be harmless.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13117 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
6e4d0d6546774d21a8f4f55c591df42557ca6c62 12-Apr-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix bug introduced in previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12872 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
43b61f724ef68810c63fc54c99e88f9b278f05c0 12-Apr-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Correctly compute spill weights


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12869 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e633352fd57d54612f8986978b6fe3cb9ba2f620 12-Apr-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Print def lists a bit more compactly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12866 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9a8b490735d216435862a3d52e669357f165550f 09-Apr-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add definition list to each live interval.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12791 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
b4186e0ccd8dd8630078147e022142a8b65c9383 31-Mar-2004 Chris Lattner <sabre@nondot.org> MBB::remove should not modify the iterator passed in


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12572 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
4f6410f5cb1c9ad8cbe4f5a96dd706023ff4dbc5 31-Mar-2004 Chris Lattner <sabre@nondot.org> MachineBasicBlock::remove should not modify the iterator passed in


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12571 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
a8db01ac8353f00b519211e6e9e7d53feb1b2923 31-Mar-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Correctly update LiveVariables when an instruction changes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12561 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
47b716483ef2d057c8a0015af20685755e606d0d 29-Mar-2004 Brian Gaeke <gaeke@uiuc.edu> Change how the beginnings and ends of MachineFunctions are printed. Get
rid of the funny cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12537 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
eee91172fb2cd4553bb5d0f4ca6241509e7b1f7c 17-Mar-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Make the set of fixed (preallocated) intervals be a fixed superset of
unhandled + handled. So unhandled is now including all fixed intervals
and fixed intervals never changes when processing a function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12462 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
6ae9eb1566685241eb8eced2b0ebfb8dbb3d5b3f 16-Mar-2004 Chris Lattner <sabre@nondot.org> Fix PR294


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12425 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
39354c99a158685d8bc91b0836c283e936a29cb2 14-Mar-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Change MRegisterInfo::foldMemoryOperand to return the folded
instruction to make the API more flexible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12386 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLocal.cpp
6a367f33f333b09b3cad83d06ca88abcaf0c66b0 09-Mar-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Spill explicit physical register defs as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12260 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
5ae00066c6fca3ec479245191f1766a553acb1ec 07-Mar-2004 Alkis Evlogimenos <alkis@evlogimenos.com> As I wrote in the docs, simple is the default spiller :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12189 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
499b2bad27307f9117656d58effb585f4744a44f 06-Mar-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add simple spiller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12188 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
c54839573cd9ffa6af33dc5190cc40d498534585 03-Mar-2004 Brian Gaeke <gaeke@uiuc.edu> Make MachineOperand's value named 'contents'. Make really, really sure
it is always completely initialized and copied.
Also, fix up many comments and asserts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12100 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
dd420e060accd1d773c731e77335cff65ca34013 02-Mar-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add a spiller option to llc. A simple spiller will come soon. When we get CFG in the machine code represenation a global spiller will also be possible. Also document the linear scan register allocator but mark it as experimental for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12062 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
egAllocLinearScan.cpp
irtRegMap.cpp
irtRegMap.h
5f37502bfbadfa65de087627bd67fd58bb03725c 01-Mar-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add the long awaited memory operand folding support for linear scan


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12058 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocLinearScan.cpp
irtRegMap.cpp
irtRegMap.h
05b15fb075307d55a61694ebcb19bbc9b13aa9f8 01-Mar-2004 Brian Gaeke <gaeke@uiuc.edu> TargetCacheInfo has been removed; its only uses were to propagate a constant
(16) into certain areas of the SPARC V9 back-end. I'm fairly sure the US IIIi's
dcache has 32-byte lines, so I'm not sure where the 16 came from. However, in
the interest of not breaking things any more than they already are, I'm going
to leave the constant alone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12043 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
9b3cbdbedbbd56a6f4e01ad31c641ef9f01dd8b0 01-Mar-2004 Tanya Lattner <tonic@nondot.org> Adding new Modulo Scheduling graph files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12031 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/MSchedGraph.cpp
oduloScheduling/MSchedGraph.h
oduloScheduling/ModuloScheduling.h
d14b83733ee8d85e06866838aa6a73fb595b1a8c 01-Mar-2004 Tanya Lattner <tonic@nondot.org> Removing old graph files with new graph files that I wrote. Updated ModuloScheduling pass, but still in progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12030 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloSchedGraph.h
oduloScheduling/ModuloScheduling.cpp
92bc3bc11c2d439264b1cf9e7fc5bc79f4215a54 29-Feb-2004 Chris Lattner <sabre@nondot.org> Add an assert


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12010 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
c81295ab24ab3ea3d8203f4b798fa05c1b602a96 29-Feb-2004 Chris Lattner <sabre@nondot.org> Add back #include I messed up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12009 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
e8d43fdced3432405ae8cbacc4b1ff2b7bc49e14 29-Feb-2004 Chris Lattner <sabre@nondot.org> Urg, forgot to check this in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12007 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
08d4963d49348b4fd0593dbff0153975f251596c 29-Feb-2004 Chris Lattner <sabre@nondot.org> Move the private MachineInstrAnnot.h into a private directory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12003 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrAnnot.cpp
78827e9f8be2d5681a03e8dc59194a185d0a6eeb 29-Feb-2004 Chris Lattner <sabre@nondot.org> Remove use of an ugly header


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12002 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
585911ee21a12c4bf57aafe10cf949877c2dbd0b 29-Feb-2004 Chris Lattner <sabre@nondot.org> Move methods out of .h file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12001 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
bceb68807fdb86c794bc8d8f8aef0940f12c2ceb 29-Feb-2004 Chris Lattner <sabre@nondot.org> Eliminate the distinction between "real" and "unreal" instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11986 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
561c0107b20e9be4a02bad57a68ae9e4f96461a9 29-Feb-2004 Chris Lattner <sabre@nondot.org> int64_t -> int


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11977 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
fc54e83cea9c8bdc924981576caac92da690dbe6 27-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Rename member function to be consistent with the rest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11898 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
irtRegMap.h
57af2cf6f3b1ae250891fb60272bcdb3a964fbf9 27-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Make spiller push stores right after the definition of a register so
that they are as far away from the loads as possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11895 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
ddcfd9e6fafdbbe5c973477e537119e73c115ee4 27-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix crash caused by passing register 0 to
MRegisterInfo::isPhysicalRegister().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11894 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
8fa16e47f88975b577fe1cafce1a366b78b2c340 27-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Clear maps right after basic block is processed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11892 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
71e353ed3530a5da48c3dd3257c410f6c4ce2e3e 26-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Uncomment assertions that register# != 0 on calls to
MRegisterInfo::is{Physical,Virtual}Register. Apply appropriate fixes
to relevant files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11882 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
egAllocLocal.cpp
7b1af15612e614feef08ab91a2692214a287555e 26-Feb-2004 Chris Lattner <sabre@nondot.org> No need to clear the map here, it will always be empty


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11868 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
e3fcabe0681fe0d759593b1bcfab527f730778d8 26-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix bugs found with recent addition of assertions in
MRegisterInfo::is{Physical,Virtual}Register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11849 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.cpp
367b91d1bd0a6abf6dbf4052ff3125e485a154f8 25-Feb-2004 Brian Gaeke <gaeke@uiuc.edu> Great sparc renaming fallout IV: Sparc --> SparcV9.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11844 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedPriorities.cpp
1d8b28a35761a22b6d90d01d79364bd59374a2ef 25-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove asssert since it is breaking cases that it shouldn't.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11841 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
4d0d864be3d9a698c4edfe36961a22126f041298 25-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add DenseMap template and actually use it for for mapping virtual regs
to objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11840 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
irtRegMap.cpp
irtRegMap.h
95c34f2efd5051a4b7bc872435807c0b114b459c 25-Feb-2004 Chris Lattner <sabre@nondot.org> Add an assertion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11830 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
748fba141fc81dc15dbe94d88ada5da9fcad196d 24-Feb-2004 Brian Gaeke <gaeke@uiuc.edu> FunctionLiveVarInfo.h moved: include/llvm/CodeGen -> lib/Target/Sparc/LiveVar


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11804 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedPriorities.cpp
0d6c5b6489b9abb634a1506d183ba47f1bf4d1f0 24-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Move machine code rewriter and spiller outside the register
allocator.

The implementation is completely rewritten and now employs several
optimizations not exercised before. For example for 164.gzip we have
997 loads and 699 stores vs the 1221 loads and 880 stores we have
before.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11798 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
irtRegMap.cpp
irtRegMap.h
ec8b8bb9abffdcc22373a7f28803c18ed8efa102 24-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add predicates for checking if a virtual register has a physical
register mapping or a stack slot mapping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11795 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.h
e8124b9ddb332c8db5c9961323e6da3daf7251a3 24-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Make enum private as it is an implementation detail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11782 91177308-0d34-0410-b5e6-96231b3b80d8
irtRegMap.h
797428719f7001086b3c308b71c89cfca77d52b7 24-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove '4Virt' from member function names as it is obvious.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11781 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
irtRegMap.h
34d9bc9f168d17c52eb57e024580bd9499695f91 24-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Refactor VirtRegMap out of RegAllocLinearScan as the first part of bug
251 (providing a generic machine code rewriter/spiller).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11780 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
irtRegMap.cpp
irtRegMap.h
575649322f390f20d08c5f2577820091d120dfd9 23-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add number of spilled registers statistic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11759 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
11d1f21e1d400826ccc3cae5702d6a626baa906b 23-Feb-2004 Chris Lattner <sabre@nondot.org> Fix bugs in finegrainification


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11758 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
0742b59913a7760eb26f08121cd244a37e83e3b3 23-Feb-2004 Chris Lattner <sabre@nondot.org> Finegrainify namespacification


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11757 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
achineInstr.cpp
achineInstrAnnot.cpp
HIElimination.cpp
e699b16a76859fa98c00b95978f8cc81d270292d 23-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use MachineBasicBlock::getParent().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11756 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
e6394e2b625c369e9ac33c8113067d8626932fbe 23-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove implementation of default constructor as it is useless now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11755 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
743d0a1f831f1d5a3141a6ca730558f40c35690a 23-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Refactor rewinding code for finding the first terminator of a basic
block into MachineBasicBlock::getFirstTerminator().

This also fixes a bug in the implementation of the above in both
RegAllocLocal and InstrSched, where instructions where added after the
terminator if the basic block's only instruction was a terminator (it
shouldn't matter for RegAllocLocal since this case never occurs in
practice).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11748 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
HIElimination.cpp
egAllocLocal.cpp
12edc7ef3d7c43a2ed90e51b834cea35751299a8 23-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Improved PhysRegTracker interface. RegAlloc lazily allocates the register tracker using a std::auto_ptr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11738 91177308-0d34-0410-b5e6-96231b3b80d8
hysRegTracker.h
egAllocLinearScan.cpp
fc2b449a17c540285af2c358b31126c2ad666dec 23-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Simplify iterator usage now that we have next(). Also don't pass iterators by reference now that MachineInstr* are in an ilist


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11732 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
25d9d5800c77dd5f6e249a3dfb61b597c1a93c2c 23-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Some code cleanups from Chris


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11724 91177308-0d34-0410-b5e6-96231b3b80d8
hysRegTracker.h
534f545ef15a22533933af853894f3516ba2eed5 23-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix comments in PhysRegTracker and rename isPhysRegAvail to isRegAvail to be consistent with the other two


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11723 91177308-0d34-0410-b5e6-96231b3b80d8
hysRegTracker.h
egAllocLinearScan.cpp
98e17cf54345a4e9ab0ded690cdb41c0cd219c8e 23-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Move LiveIntervals.h up to be the first included header


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11721 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
888b1a6ccdd0b12a71a38c6318b9e773006d5564 23-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Pull PhysRegTracker out of RegAllocLinearScan as it can be used by other allocators as well


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11720 91177308-0d34-0410-b5e6-96231b3b80d8
hysRegTracker.h
egAllocLinearScan.cpp
a2f6a408dc6616713b2e63425cf8cf7792c66c80 23-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Move LiveIntervals.h to lib/CodeGen since it shouldn't be exposed to other parts of the compiler


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11719 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
d0d1c8f830afbdbb708096be27d35101e13414a6 22-Feb-2004 Chris Lattner <sabre@nondot.org> Another bug fix for empty MBB's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11716 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
688c8252d216659360325b25a7441861bbf9552d 22-Feb-2004 Chris Lattner <sabre@nondot.org> Fix a bug where we were implicitly assuming that there would be at least
one terminator instruction in each basic block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11714 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
0f338a1e8cd8167d22e2d011e0bec7eaadc6154a 22-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Print basic block boundaries in machine instruction debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11704 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
7200c6b82acb8401048a2bc8a423f23b48db6731 22-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Abstract merging of ranges away from number of slots per instruction.

Also make it less aggressive as the current implementation breaks in
some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11696 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
d6f6d1a80daf89ad0bddc4b8335e1b2ae1ec3410 21-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Make 'fold' statistic's description the same in both allocators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11687 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLocal.cpp
007726ca6f64ea74c20ddb90093ee8d6801733af 20-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Some more statistics improvements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11676 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
df158c7e3f09c05805e129fc2e8e661ccbc21f54 20-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Disambiguate statistic descriptions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11675 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
cea44711203cfcb3b18528401ac1ad170677ebfe 20-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Rename statistic and add another one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11674 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
fa510c4af587799e3cd430006a5125bbe1374dd0 20-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix crash in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11659 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
537fa9838d3995be09bd40dfd7825861a92da4ce 20-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix instruction numbering in debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11655 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
39a0d5c1123cfe4ddf826690b6744cc7248e3149 20-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Too many changes in one commit:

1. LiveIntervals now implement a 4 slot per instruction model. Load,
Use, Def and a Store slot. This is required in order to correctly
represent caller saved register clobbering on function calls,
register reuse in the same instruction (def resues last use) and
also spill code added later by the allocator. The previous
representation (2 slots per instruction) was insufficient and as a
result was causing subtle bugs.

2. Fixes in spill code generation. This was the major cause of
failures in the test suite.

3. Linear scan now has core support for folding memory operands. This
is untested and not enabled (the live interval update function does
not attempt to fold loads/stores in instructions).

4. Lots of improvements in the debugging output of both live intervals
and linear scan. Give it a try... it is beautiful :-)

In summary the above fixes all the issues with the recent reserved
register elimination changes and get the allocator very close to the
next big step: folding memory operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11654 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocLinearScan.cpp
d195e99bc8c6ca5fed506239e298d023df20e942 19-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix RA::verifyAssignment()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11629 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
d368c6163a54190c852838b370a62a86caafde3a 19-Feb-2004 Chris Lattner <sabre@nondot.org> Fix problem fusing spill code into instructions: we didn't update the live
variable information to take into account the change of instruction
address.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11628 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
a96478d7d6b2aee1aecad4af23506167ec16752c 19-Feb-2004 Chris Lattner <sabre@nondot.org> Fix an iterator invalidation problem. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11627 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
5ed001b6afe2225343ec79f58645a9aaf35c1fd2 19-Feb-2004 Chris Lattner <sabre@nondot.org> Add method to update livevar when an instruction moves


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11625 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
8517e1f0beea9b5e47974f083396d53294c390ad 19-Feb-2004 Chris Lattner <sabre@nondot.org> Fix a __LONG__ term annoyance of mine: symbolic registers weren't being printed
by operator<< on MachineInstr's, and looking up what register "24" is all of the
time was greatly annoying.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11623 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
5e61fa95196b85281eec655787e9c73267532bd1 19-Feb-2004 Chris Lattner <sabre@nondot.org> Add a MachineBasicBlock::getParent() method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11622 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
2acef2da068763d7a48934de96a2fbef440beee5 19-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Rename reloads/spills to loads/stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11619 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
779e640657e14420f8e796b7b179948038fc0707 19-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Implement assignment correctness verification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11609 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
52f8f56ef4efaceee7535d804bf0a844cf530c57 19-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Move unused typedefs in private section. Add method to return interval
given a register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11608 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.h
e6d04f1a99f522be95ea45c4acb614f7e366d0d7 18-Feb-2004 Chris Lattner <sabre@nondot.org> Eliminate operator[] is deprecated warnings


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11578 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
fdc01cedd489ffa01faca3548e8b738781537a0e 18-Feb-2004 Chris Lattner <sabre@nondot.org> Fix deprecated operator[] warnings


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11577 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
23c114fd3bec342ac1a2a45801b892d6b4517afc 18-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Be more agressive when joining ranges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11575 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
99d9923608bfd0feff288d667c3e4f94c4132c26 18-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix overly conservative spill interval computation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11574 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3a9986f5d8432d2c8228311cabd9768ffaa23487 18-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Beautify debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11573 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
56ddada278aa768a6cc32782b6f92986d160d78b 17-Feb-2004 Chris Lattner <sabre@nondot.org> Remove the -disable-kill option. The register allocator is buggy with it,
and it was only for debugging in the first place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11557 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
11390e76e73d36e62c981069a67d1d33823262de 17-Feb-2004 Chris Lattner <sabre@nondot.org> Add support to the local allocator for fusing spill code into the instructions
that need them. This is very useful on CISCy targets like the X86 because it
reduces the total spill pressure, and makes better use of it's (large)
instruction set. Though the X86 backend doesn't know how to rewrite many
instructions yet, this already makes a substantial difference on 176.gcc for
example:

Before:
Time:
8.0099 ( 31.2%) 0.0100 ( 12.5%) 8.0199 ( 31.2%) 7.7186 ( 30.0%) Local Register Allocator

Code quality:
734559 asm-printer - Number of machine instrs printed
111395 ra-local - Number of registers reloaded
79902 ra-local - Number of registers spilled
231554 x86-peephole - Number of peephole optimization performed

After:
Time:
7.8700 ( 30.6%) 0.0099 ( 19.9%) 7.8800 ( 30.6%) 7.7892 ( 30.2%) Local Register Allocator
Code quality:
733083 asm-printer - Number of machine instrs printed
2379 ra-local - Number of reloads fused into instructions
109046 ra-local - Number of registers reloaded
79881 ra-local - Number of registers spilled
230658 x86-peephole - Number of peephole optimization performed

So by fusing 2300 instructions, we reduced the static number of instructions
by 1500, and reduces the number of peepholes (and thus the work) by about 900.
This also clearly reduces the number of reload/spill instructions that are
emitted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11542 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
cdee28724ed8adb40b1aabb1cb0cf96215b38b36 17-Feb-2004 Chris Lattner <sabre@nondot.org> Fix a bug in my previous refactoring change... arg!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11535 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
7093d37304cd9f4b8208e50a0f68a0a507a18ac2 17-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add LiveIntervals::Interval::empty() member function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11520 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.h
1e3812c1c539e973102efc52cb65a4b838173f4d 17-Feb-2004 Chris Lattner <sabre@nondot.org> Once we have a way to fold spill code reloads into instructions, we have a way to use it. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11517 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
355a724bd8366b982950ac913b0589d40eaf379b 17-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix spilled interval update. It was too conservative.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11516 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
42e0a8fded2c22b45a351afb88bf7ee233d61258 17-Feb-2004 Chris Lattner <sabre@nondot.org> Refactor code a bit. No functionality changes, though the comment hints at things to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11515 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
aad5c0505183a5b7913f1a443a1f0650122551cc 16-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add LeakDetection to MachineInstr.

Move out of line member functions of MachineBasicBlock to
MachineBasicBlock.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11497 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineFunction.cpp
achineInstr.cpp
9b700f7951b07cb7be885c7560066c73733ef101 15-Feb-2004 Chris Lattner <sabre@nondot.org> By default, llvm.setjmp/llvm.longjmp intrinsics get lowered to their libc counterparts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11483 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
588e72db75649e8f9f79d73c24156c9611aeacf3 15-Feb-2004 Chris Lattner <sabre@nondot.org> Refactor code. Now the intrinsic lowering pass tries to recycle preexisting
prototypes, even if they don't precisely match what it would prefer to use.
This fixes: CBackend/2004-02-15-PreexistingExternals.llx compiling it into:

ltmp_0_30 = memcpy(l14_C, 4u, 17);
ltmp_1_30 = memcpy(((int *)l27_A), ((unsigned )(long)l27_B), ((int )123u));

instead of:

ltmp_0_30 = memcpy(l14_C, 4u, 17);
ltmp_1_27 = l43_memcpy(l27_A, l27_B, 123u);

Which does the wrong thing as you could imagine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11481 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
f11800b718909a334a1130997523419ae3e0f06e 15-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> This pass should not require phi elimination or live variable
analysis. It should only preserve them and update LiveVariables if it
already ran.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11479 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
5aaf1d28209db546534c5ea69a78b68fa150af16 15-Feb-2004 Chris Lattner <sabre@nondot.org> Finegrainify namespacification
Remove one of the operands of a two operand instruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11478 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
859a18b5833f3566799313ecba8db4916500485b 15-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Make dense maps keyed on physical registers smallerusing
MRegisterInfo::getNumRegs() instead of
MRegisterInfo::FirstVirtualRegister.

Also use MRegisterInfo::is{Physical,Virtual}Register where
appropriate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11477 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
egAllocSimple.cpp
843b160a2040b3ec4d3452678450afa11704c473 15-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Eliminate the use of spill (reserved) registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11476 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocLinearScan.cpp
05d8350c12d8d81de1d8af6f7da155bc1c1da50e 15-Feb-2004 Chris Lattner <sabre@nondot.org> Allow for fixed objects to reside in the local area, and if they don't to not
clobber them by allocating other objects in the same space!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11454 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
c81efdc59cd2ce5410cefd7ab5cb52cfd7ac3aad 15-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add back machine code deleter pass until we get a MachineCode pass
that will be responsible for the creation of MachineFunctions and will
be required by all MachineFunctionPass passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11453 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
93799292c1c04c53ff077a427737b3ffbd0445ab 14-Feb-2004 Chris Lattner <sabre@nondot.org> There is no reason to align the stack pointer if there are no callees of this function!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11449 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
cc42d2c3ccd17a82c3c0abc95a720e183e84dbdd 14-Feb-2004 Chris Lattner <sabre@nondot.org> A target that doesn't support these intrinsics will still meet spec (the
intrinsic will always produce zero), but it will behave unexpectedly, so
warn like GCC does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11444 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
cf8990838143fcfa91dd6276af523ac6c23517c2 14-Feb-2004 Chris Lattner <sabre@nondot.org> Add llvm.memset/frameaddress/returnaddress intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11431 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
f81af21caf9c0f62c60b72762d9a927e8c24f679 14-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use newly added next() and prior() utility functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11430 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
woAddressInstructionPass.cpp
6ab5c15962cb16402713747f1fbe85e001318e7d 14-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use std::numeric_limits<float>::infinity() instead of
std::numeric_limits<float>::max() for weighting preallocated
intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11427 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
be766c72464116a445a02b542a450c4274bab5d0 13-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove getAllocatedRegNum(). Use getReg() instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11393 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
iveIntervalAnalysis.cpp
achineInstr.cpp
HIElimination.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
woAddressInstructionPass.cpp
4de473bc594deee7bfe9dee65184f6e8ae91bbbf 13-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use getNumVirtualRegs().

Whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11389 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
90421cd8f982b4fe38d8f5992423e4f63074869f 13-Feb-2004 Brian Gaeke <gaeke@uiuc.edu> Refactor MachineFunction::print() into MachineBasicBlock::print().
Add MachineBasicBlock::dump().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11364 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
21326fc2ad47ee7e73a8c0b03a4a0cc0b0a0c4e8 13-Feb-2004 Brian Gaeke <gaeke@uiuc.edu> Add head-of-file comments and Doxygen comments. Tighten up a lot of whitespace.
Rename SetMachineOperandConst's formal parameters to match other methods here.
Mark some methods as being used only by the SPARC back-end.
Fix a missing-paren bug in OutputValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11363 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ab8672c8bb83e722b856eac67863542ea7e0cbb2 12-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add parent pointer to MachineInstr that points to owning
MachineBasicBlock. Also change opcode to a short and numImplicitRefs
to an unsigned char so that overall MachineInstr's size stays the
same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11357 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
2751e76a709738590242adce47a3b55bc77fd36d 12-Feb-2004 Chris Lattner <sabre@nondot.org> Add support for the llvm.memmove intrinsic

Patch graciously contributed by Reid Spencer!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11355 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
5fe51cc2c46afca64638597cdef3bdafa6cd0a8c 12-Feb-2004 Chris Lattner <sabre@nondot.org> Implement the llvm.memcpy intrinsic


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11349 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
2a90ba60175f93e7438165d8423100aa573c16c5 12-Feb-2004 Chris Lattner <sabre@nondot.org> Rename the opCode instance variable to Opcode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11348 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
3081db8d01aaac5b3f9e9a30b36cb3eeb8c3cb0a 12-Feb-2004 Chris Lattner <sabre@nondot.org> This field is never read


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11346 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
c0b9dc5be79f009d260edb5cd5e1d8346587aaa2 12-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Change MachineBasicBlock's vector of MachineInstr pointers into an
ilist of MachineInstr objects. This allows constant time removal and
insertion of MachineInstr instances from anywhere in each
MachineBasicBlock. It also allows for constant time splicing of
MachineInstrs into or out of MachineBasicBlocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11340 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineCodeForInstruction.cpp
achineFunction.cpp
HIElimination.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
woAddressInstructionPass.cpp
918cdd420b52a4745ce7d4495759c87fd1b32fd5 12-Feb-2004 Brian Gaeke <gaeke@uiuc.edu> getOpCode() --> getOpcode().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11339 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.cpp
61b08f193a6e84db44d3032a822e324ebb42a584 10-Feb-2004 Chris Lattner <sabre@nondot.org> Add #include


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11285 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
1cbe4d0ad0888e50858cca83cf2a0d3083709513 10-Feb-2004 Chris Lattner <sabre@nondot.org> Do not use MachineOperand::isVirtualRegister either!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11283 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
HIElimination.cpp
rologEpilogInserter.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
3d878d80d67452865e286069ceefe918c0f65acb 10-Feb-2004 Chris Lattner <sabre@nondot.org> Eliminate users of MachineOperand::isPhysicalRegister


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11278 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
f738db08186b379b58d88511f726ed7ecfb47629 09-Feb-2004 Brian Gaeke <gaeke@uiuc.edu> Move InstrSchedule's iterator begin/end methods inline.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11239 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
0dc5753f2b3e2f2f4be1439ba57a3f749bbe51cb 09-Feb-2004 Brian Gaeke <gaeke@uiuc.edu> Make SchedGraph::dump() use SchedGraphNodeCommon's const_iterator
instead of randomly groping about inside its outEdges array.
Make SchedGraph::addDummyEdges() use getNumOutEdges() instead of
outEdges.size().
Get rid of ifdefed-out code in SchedGraph::buildGraph().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11238 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
ecea5635f85fc5db3a69d657e39046828538e80a 09-Feb-2004 Chris Lattner <sabre@nondot.org> Another nice speedup for the register allocator. This time, we replace
the Virt2PhysRegMap std::map with an std::vector. This speeds up the
register allocator another (almost) 40%, from .72->.45s in a release build
of LLC on 253.perlbmk.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11219 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
499487742ec4299852f7ae8962acebf7bc2a22a4 09-Feb-2004 Chris Lattner <sabre@nondot.org> Ugh, perform an optimization that GCC should be able to do itself. This
speeds up livevar from .48/.32s -> .45/.31s in LLC on perlbmk


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11217 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
96aef893383a6ffcc6d6955c5d969f0fd57831c2 09-Feb-2004 Chris Lattner <sabre@nondot.org> Only do stuff for the REAL number of physical registers we have, not 1024.
This speeds up live variables a lot, from .60/.39s -> .47/.26s in LLC, for
the first/second pass respectively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11216 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
64667b6418786edd2fceb022b3da0d3ad38221c2 09-Feb-2004 Chris Lattner <sabre@nondot.org> Change the PhysRegsUsed map into a dense array. Seeing that this is a mapping
from physical registers, and they are always dense, it makes sense to not have
a ton of RBtree overhead. This change speeds up regalloclocal about ~30% on
253.perlbmk, from .35s -> .27s in the JIT (in LLC, it goes from .74 -> .55).

Now live variable analysis is the slowest codegen pass. Of course it doesn't
help that we have to run it twice, because regalloclocal doesn't update it,
but even if it did it would be the slowest pass (now it's just the 2x slowest
pass :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11215 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
f5eaf16b94357057f4ef2db5d3c9c4f190c01576 06-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Increase code clarity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11151 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
54d23c754a4ace687c9712a88159afc1277702e7 06-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Eliminate uneeded lookups by passing a Virt2PhysMap::iterator instead
of the virtual register to certain functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11143 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
0b8cb2bc47a6bee59c8c3f46d4cc047badf7f8ac 05-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Change live interval representation. Machine instructions now have two
slots each. As a concequence they get numbered as 0, 2, 4 and so
on. The first slot is used for operand uses and the second for
defs. Here's an example:

0: A = ...
2: B = ...
4: C = A + B ;; last use of A

The live intervals should look like:

A = [1, 5)
B = [3, x)
C = [5, y)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11141 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ad48cd6327df13ad4b8530733bbf115224bf9562 05-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> We don't need to scan the blocks that we are live-in on every
access. Rather we only have to do it on the creation of the interval.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11135 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5a5960978a0d64f65a54aa2d6b23f4c8a22fef62 05-Feb-2004 Tanya Lattner <tonic@nondot.org> Added missing include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11129 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
14be64018fb38d1fa535b9cd12d11371f4eba3b5 04-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Modify the two address instruction pass to remove the duplicate
operand of the instruction and thus simplify the register allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11124 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
egAllocLinearScan.cpp
woAddressInstructionPass.cpp
4e7854407ced8e2160592675918312a20cfb7cde 03-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> When an instruction like: A += B had both A and B virtual registers
spilled, A was loaded from its stack location twice. This fixes the bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11093 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
egAllocLinearScan.cpp
9fe7602862328c0081106709e0a8f03316dc845b 03-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Revert changes. Will implement this using a different set of primitives


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11091 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
cc6a1290fc91716f7d81a637171cae59678f1f6c 02-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix debugging output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11088 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
eea81bafd624c36d396a08bea87bafd996e6bf43 02-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Correctly update def/use information for modified machine operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11087 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
b606eaca1b149ef74c578a6a11d65339c125edab 02-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Should be more careful. The previously applied change made all counts
outside of loops = 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11085 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
22b7e44bb00e534573d7a2f2b4b96706f7ad6c4c 02-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Create an object for tracking physical register usage. This will look
much better when I get rid of the reserved registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11066 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
04667297afe523b4bbab94bd1b6cec6d66267ca4 01-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Change weight array into a vector and make it as big as the number of
registers (not as the max number of registers).

Change toSpill from a std::set into a std::vector<bool>.

Use the reverse iterator adapter to do a reverse scan of allocatable
registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11061 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
f440cc19c931120630c75af142d7c4737ae67a56 01-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use std::map::count() instead of std::map::find() != std::map::end()
where appropriate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11060 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
b180e3e92ba8783b1f93995c98dfe1634c5f9205 01-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Change string for joined intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11057 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
b0b0ebaac09a930f7cbd302255fa23c5d8107e66 01-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Change xor to ^.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11054 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
d4baf0f74ca54dcbb61d199f4b184d6012d7179f 01-Feb-2004 Chris Lattner <sabre@nondot.org> Fix a bug in a recent checkin


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11050 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
676cf8cb1d613d626f826a45b44658ae35f58c7c 01-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Missed one silly assert :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11048 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
01e74a2aab64c5901a62d9ba9e1c263759929390 01-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Simplify joinIntervals() code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11047 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4f67b8664889d9e93b452a9a5f099d41d1bd235a 01-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use MRegisterInfo::isPhysicalRegister and
MRegisterInfo::isVirtualRegister.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11045 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
52220f61bba91ab787d4cc0aee47df4e2ca55c04 01-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Apply final part of Chris' patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11040 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
02ba13c9897ae2b19f9201e57460d7ee2b753a0b 01-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Be a little smarter on the way we handle physical register defs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11038 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
ef09c63e7ba5dd5410655f71d35eb7245893b1f1 31-Jan-2004 Chris Lattner <sabre@nondot.org> Finegrainify namespacification, use new MRegisterInfo::isVirtualRegister
method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11037 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
egAllocLocal.cpp
6b5076790579476f4e4325e25332dacd8fc3d088 31-Jan-2004 Chris Lattner <sabre@nondot.org> Fix, correctly this time, the computation of the return value
Fix a spello
Tighten up the assertion checking

No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11036 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
163c1e7a69d721e321b1d00a57f3565e30f08ec9 31-Jan-2004 Chris Lattner <sabre@nondot.org> * Fix incorrect computation of the runOnMachineFunction return value
* Turn a bunch of instance variables into automatic variables


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11035 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
bd91c1c37641fef20a467d5c85f89a99a1969979 31-Jan-2004 Chris Lattner <sabre@nondot.org> Remove unneeded #includes
Move Passes.h (which defines the interface to this file) to the top.
Move statistics to the top of the file.
Add a comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11034 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
08cec00588ec1a8fa85b208555f006d7396ae7a4 31-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Merge safe parts from last night's buggy commit. These do not break
any test cases :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11032 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
97017de1872e08ffcdde2fccdfd399647c1ccc4a 31-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Optimize liveAt() and overlaps(). We now use a binary search instead
of a linear search to find the first range for comparisons. This cuts
down the linear scan register allocator running time by a factor of 3
in 254.perlbmk and by a factor of 2.2 in 176.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11030 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4d46e1e521c0df1990ea50f8146d22bd77ea71a6 31-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Revert last night's changes as they broke some tests. Will remerge parts of the patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11029 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
32bdd4ea65f58e3227176b9a5a43013fb13f06a5 31-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Several performance enhancements and cleanups from Chris.

Simplification of LiveIntervals::Interval::overlaps() and addition of
examples to overlaps() and liveAt() to make them clearer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11028 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
49a5aaacef127970f91648ac468de1cd2b6f462f 30-Jan-2004 Chris Lattner <sabre@nondot.org> Finegrainify namespacification
Implement LiveVariables::getIndexMachineBasicBlock


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11018 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
09caa3751f3c53a8c8a7a81c2a60d6c8ddf5a980 30-Jan-2004 Brian Gaeke <gaeke@uiuc.edu> Give clients of MachineFunctionPrinter the ability to specify a banner and
choose an ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11016 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
79b0c3f0b9d91bbda354a2c6f22b6578655a5143 23-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix failing test cases with joined live intervals. It turns out that
when joining we need to check if we overlap with the second interval
or any of its aliases.

Also make joining intervals the default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10973 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
e88280a4224730dcf8076e0d9a20973c5761fd06 23-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add option to join live intervals. Two intervals are joined if there
is a move between two registers, at least one of the registers is
virtual and the two live intervals do not overlap.

This results in about 40% reduction in intervals, 30% decrease in the
register allocators running time and a 20% increase in peephole
optimizations (mainly move eliminations).

The option can be enabled by passing -join-liveintervals where
appropriate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10965 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocLinearScan.cpp
84dc5fb6ba3c131ed707b03fcd1603c1efca2802 22-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove unneeded check. An interval in active, by definition overlaps
with the current one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10959 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
ce501150061cc011d955368513b6b0604a1026c5 22-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Improve debugging output. Remove unneeded virtReg->0 mapping when
virtReg lives on the stack. Now a virtual register has an entry in the
virtual->physical map or the virtual->stack slot map but never in
both.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10958 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
1075ecd32f53b7bc12e4a8f6917d7d1aebd4672a 22-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Revert previous change. The code was correct...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10957 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
e1a210777d4950fa47817e61a81118351c9a2311 22-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix incorrect negatives in LiveIntervals::Interval::liveAt().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10956 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
06723077ed440bb25b25908aa93002d7ac49d94f 20-Jan-2004 Tanya Lattner <tonic@nondot.org> Moved iterators around.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10926 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraphCommon.cpp
a105c802b2eb7a3fae9340bbb43be52399fc4548 20-Jan-2004 Tanya Lattner <tonic@nondot.org> Moved iterators to common file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10925 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
a12c7bb06f42fe41f09a1addafcf8c126e673ff3 16-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Handle printing of intervals that are not assign to any physical
register yet (2nd try).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10896 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
a6d8c3f8456e05b3bf0b42aa8050912ce7e92c07 16-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Handle printing of intervals that are not assign to any physical
register yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10895 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
3b02cbe75224d91899e91a7688cac3052be4e516 16-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fold open interval ends handling into
LiveIntervals::Interval::expiredAt() and simplify regalloc code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10894 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.h
egAllocLinearScan.cpp
1893a05b28bf03e0ded1ed651cc1d71c7854ad93 16-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add asserts to previous change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10893 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
f5f1689ed28025cef601034052ef9c214797e8af 16-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use a list instead of a vector to store intervals. This will be needed
when we join intervals and one of the two will need to be removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10892 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
f907bac06887abf84fd7b46cd54f8d53ff0272c5 14-Jan-2004 Chris Lattner <sabre@nondot.org> Hrm, apparently I missed lowering this intrinsic. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10858 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
d6e40a6cbced8265334ee0375f5996098dfdccb2 14-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Properly update #intervals statistic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10847 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
9739736b94b1116be2043e05567aa8899593ab29 14-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix bug in LiveIntervals::Interval::overlaps and
LiveIntervals::Interval::liveAt. Both were considering the live ranges
closed in the end, when they are actually open.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10835 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
5ab20273a4cc08f3d2451e97a74e6caad50a7efd 14-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Improve debugging output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10834 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
af25473d5e99e0c0968746e12d8827e4b712bd31 13-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix miscomputation of live intervals. The catch is that registers can
be dead at the defining instruction but can only be killed in
subsequent ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10833 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
1a119e24106810310825f44c7bfd232d3272e639 13-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove allocatable registers vector. It is already provided by
LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10830 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
a3a6524965416647883bc0b78ff6f18fb3f7b5fc 13-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Cleanup debugging output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10824 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
63841bc85d15ca0ce1b3208084f4262f3d33ef21 13-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix output of live intervals to show correctly its closed, open
ranges, i.e. [a,b)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10822 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
c55640f0194511d2c44f4d8bea099e373199ae9d 13-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove unneeded check (with the recent change in live variables a use
of a physical register is always dominated by a def).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10821 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
b7be11514049d13f331743ac8c1a851cea9c6d70 13-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Indentation and whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10820 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
f7df173e3bf03c0d91adfa695fd9845583fb9d49 13-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix bug introduced by previous commit: check if fixed intervals
overlap before adding their spill weight.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10819 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
19b6486d3891c8a02a301aa1b44348a420772fcf 13-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Correctly compute live variable information for physical registers
when an implicitely defined register is later used by an alias. For example:

call foo
%reg1024 = mov %AL

The call implicitely defines EAX but only AL is used. Before this fix
no information was available on AL. Now EAX and all its aliases except
AL get defined and die at the call instruction whereas AL lives to be
killed by the assignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10813 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveVariables.cpp
egAllocLocal.cpp
b08bdc4a161313bb09a73e6c61f0cb0669e291c7 11-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Make LiveVariables::HandlePhysRegUse and
LiveVariables::HandlePhysRegDef private they use information that is
not in memory when LiveVariables finishes the analysis.

Also update the TwoAddressInstructionPass to not use this interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10755 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
ae7fc3aede6205be456739f35e1ebfb7bfd2bd40 10-Jan-2004 Chris Lattner <sabre@nondot.org> Remove use of llvm/CodeGen/InstrSelection.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10749 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
d5da19707139e6236855d9e76d348c68272db0af 09-Jan-2004 Chris Lattner <sabre@nondot.org> Finegrainify namespacification.
This should get hunked over to the Sparc backend, along with
MachineCodeForInstruction and a bunch of files in include/llvm/Codegen,
but those battles will have to wait for a later time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10731 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
2abcf524a15ec2db5a93d70b834ba10900f1ca0a 09-Jan-2004 Chris Lattner <sabre@nondot.org> Move InstrSelection into lib/Target/Sparc, as it's sparc specific


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10730 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
nstrSelection/Makefile
akefile
75e260990d81fdddd8660bbee854cb2c0d4c42c9 09-Jan-2004 Chris Lattner <sabre@nondot.org> Move lib/Codegen/RegAlloc into lib/Target/Sparc, as it is sparc specific


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10728 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
egAlloc/AllocInfo.h
egAlloc/IGNode.cpp
egAlloc/IGNode.h
egAlloc/InterferenceGraph.cpp
egAlloc/InterferenceGraph.h
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.cpp
egAlloc/LiveRangeInfo.h
egAlloc/Makefile
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
egAlloc/RegAllocCommon.h
egAlloc/RegClass.cpp
egAlloc/RegClass.h
7d629b50a582290bcbdf0ae04a05b7ec64c5584f 07-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add a separate list of fixed intervals. This improves the running time
of the register allocator as follows:

before after
mesa 2.3790 1.5994
vpr 2.6008 1.2078
gcc 1.9840 0.5273
mcf 0.2569 0.0470
eon 1.8468 1.4359
twolf 0.9475 0.2004
burg 1.6807 1.3300
lambda 1.2191 0.3764

Speedups range anyware from 30% to over 400% :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10712 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
1283d86b63a424be993dffa25616567376bced1e 07-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Minor cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10711 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
75ca6a3e828332de32caac572275e889a2848bf0 07-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove declared but undefined method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10710 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
80b378cf7c3dce77029dc3118e1f63bc6d389da1 07-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Change implementation of LiveIntervals::overlap(). This results in a
30-50% decrease in running time of the linear scan register allocator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10707 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
63caedf046bcce1f2981c5305d297c2b1890bfc7 05-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove simple coalescing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10695 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
8c2403631b9c83b6bb80ef61a7f6d5a34975e6a9 05-Jan-2004 Chris Lattner <sabre@nondot.org> fix warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10692 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
77b1330ece6ea40b3b7700fe13e2ca64bd494203 05-Jan-2004 Chris Lattner <sabre@nondot.org> Add VMCore and code generator support for debugging intrinsics. By default
code generators completely ignore them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10691 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
271bd2d7f1c8dca9906a9b9b9d3081b9040e2f48 05-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Currently we cannot handle two-address instructions of the form:
A = B op C where A == C, but this cannot really occur in practice
because of SSA form. Add an assert to check that just to be safe.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10682 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
50c047d159a7f6d9a22e17178576c7ac5178356a 05-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Update description.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10681 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
f70e0c216c074bd2ae2b08178f5512849545db4e 28-Dec-2003 Chris Lattner <sabre@nondot.org> Clean up a lot of the code I added yesterday by exposing the IntrinsicLowering
implementation from the TargetMachine directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10636 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
ntrinsicLowering.cpp
27490a6fcc8e24be0ee4ddfcdbdf7e9da9e5af41 28-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Reserve ECX and EDI instead of EBX and EDI. Since EBX is a callee
saved register it has a longer free range than ECX (which is defined
every time there is a fnuction call) which makes ECX a better register
to reserve.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10635 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
26bfc08b80c904c71487ac1ab49a8b3a15a8d3e9 28-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Add coalescing to register allocator. A hint is added to each interval
which denotes the register we would like to be assigned to (virtual or
physical). In register allocation, if this hint exists and we can map
it to a physical register (it is either a physical register or it is a
virtual register that already got assigned to a physical one) we use
that register if it is available instead of a random one in the free
pool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10634 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocLinearScan.cpp
aed386e6b0216722af654d822d0a0e9ffb571c3b 28-Dec-2003 Chris Lattner <sabre@nondot.org> Whoops, don't try to lower non intrinsic calls


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10632 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
f8742b3e033ff69649a3a76c12e28a1428858880 28-Dec-2003 Chris Lattner <sabre@nondot.org> Use the intrinsic lowering functionality


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10626 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
42450d8a5fe3809d75b9e40641e551fb7d9aa2a4 28-Dec-2003 Chris Lattner <sabre@nondot.org> Move into the VMCore library


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10623 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
3b66ecb05fedbfe0a70b39d73b1ea5998bc8c31b 28-Dec-2003 Chris Lattner <sabre@nondot.org> Implement the default implementation of the intrinsic lowering class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10621 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicLowering.cpp
aa4c91ff9669244b873cadd37e86fb7e19c5e82c 28-Dec-2003 Chris Lattner <sabre@nondot.org> finegrainify namespacification
minor cleanups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10619 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
843397c2372cf5bd5dbd6d6d305b45eb4454b66b 24-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Improve debugging output when choosing a register to spill.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10604 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
7a40eaaceec0af76d5b97610f3d4e7a47a19d245 24-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Do a separate pass to compute spill weights because doing it inline
with live intervals was missing registers that were used before they
were defined (in the arbitrary order live intervals numbers
instructions).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10603 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
3bf564a95fc5732c0e48adb4c369ac2563dabe2a 23-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Change the way free regusters are computed and perform better
allocation in the presence of preallocated intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10595 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
056063e2645d86b11a441abfff4bfd96dc4edf8c 22-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Fix crash when compiling twolf.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10584 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4de1fefd7cb973003799c949e9c4fd8d7150d856 21-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Remove verifyIntervals() since it doesn't actually work right now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10570 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
6b4edbaaf9021e0434f0ce0c3724eb43ed41b770 21-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Change weight into a float so that we can take into account the
nesting level when computing it. Right now the allocator uses:

w = sum_over_defs_uses( 10 ^ nesting level );


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10569 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocLinearScan.cpp
169cfd01964fc03828a7f2cad5d710890fbb08d8 21-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Add support for inactive intervals. This effectively reuses registers
for live ranges that fall into assigned registers' holes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10566 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
egAllocLinearScan.cpp
16c45e9de896ea37d48d093dbe02fc9a4c1b9f8f 20-Dec-2003 Chris Lattner <sabre@nondot.org> Add a new target-independent machine code freeing pass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10560 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
07f32d48f1e16bcdc621985549548a5849215238 20-Dec-2003 Chris Lattner <sabre@nondot.org> * Finegrainify namespacification
* Move sparc specific code out of generic code
* Eliminate the getOffset() method which made INVALID_FRAME_OFFSET
necessary, which made pulling in MAX_INT as a sentinal necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10553 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
4c080863de86448d905beab27686da823b6d44c1 18-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Remove TwoAddressInstruction from the public headers and add an ID
instead, since this pass doesn't expose any state to its users.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10520 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLocal.cpp
woAddressInstructionPass.cpp
5e46b513f36d69ba280e16500089b3b6af0e3b5f 18-Dec-2003 Chris Lattner <sabre@nondot.org> Prune some #includes
Add a statistic for # reloads


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10518 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
a71e05acdd7c6a8e815db46b5fb6dc1d87826aab 18-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Modify linear scan register allocator to use the two-address
instruction pass. This also fixes all remaining bugs for this new
allocator to pass all tests under test/Programs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10515 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
egAllocLinearScan.cpp
a3d0e5c2b257a19a0de03a98a4991f5168027129 18-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Fix bug in reserved registers. DH actually aliases DX and EDX which
are not reserved registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10514 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
9af9dbde7d8b7c1e8ba8548bc5dc44927857b9f3 18-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Modify local register allocator to use the two-address instruction pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10513 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
71499ded4d76233f3b605638b539548bea8bb2f1 18-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Add TwoAddressInstructionPass to handle instructions that have two or
more operands and the two first operands are constrained to be the
same. The pass takes an instruction of the form:

a = b op c

and transforms it into:

a = b
a = a op c

and also preserves live variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10512 91177308-0d34-0410-b5e6-96231b3b80d8
woAddressInstructionPass.cpp
485ec3c21efcb6388911f654a187c49ad04e86e6 18-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Rename LiveIntervals::expired() to LiveIntervals::expiredAt().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10511 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.h
egAllocLinearScan.cpp
43f692f90f6b27304570e1b1807542dff4b8e847 18-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> When a variable is killed and redifined in a basic block only one
killing instruction is tracked. This causes the LiveIntervals to
create bogus intervals. The workaound is to add a range to the
interval from the redefinition to the end of the basic block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10510 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
dd2cc65f34f9b7bfda1cd0c42becedfc361d46f8 18-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Handle multiple virtual register definitions gracefully.

Move some of the longer LiveIntervals::Interval method out of the
header and add debug information to them. Fix bug and simplify range
merging code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10509 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
f6f91bf6680668990ff3804b14cf05beedc56ec4 15-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Change preserve all claim to just preserve live variables and phielimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10469 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
4d7af65903cbc858464362e70a6adf499982ec8a 14-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Change interface of MachineOperand as follows:

a) remove opIsUse(), opIsDefOnly(), opIsDefAndUse()
b) add isUse(), isDef()
c) rename opHiBits32() to isHiBits32(),
opLoBits32() to isLoBits32(),
opHiBits64() to isHiBits64(),
opLoBits64() to isLoBits64().

This results to much more readable code, for example compare
"op.opIsDef() || op.opIsDefAndUse()" to "op.isDef()" a pattern used
very often in the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10461 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSelection/InstrSelectionSupport.cpp
iveIntervalAnalysis.cpp
iveVariables.cpp
achineInstr.cpp
HIElimination.cpp
rologEpilogInserter.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAllocLinearScan.cpp
egAllocLocal.cpp
egAllocSimple.cpp
94743e4915eb9a7d9c2dd57862e6634e9ece8eb5 13-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> When reserving a preallocated register spill the aliases of this
register too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10450 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
4c214d2bf0da92a7973bb7902c0d6d055b1fa991 13-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Ignore non-allocatable physical registers in live interval analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10449 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
7d65a12fe660b10c5a10a3f0a655aa4e4a7fe365 13-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Expire any active intervals left when register allocation is done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10448 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
f6e610c27dcc681a427862a8bcd63908eb31fa3c 13-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Add instruction numbers to debugging output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10447 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
9435eda6993944e74419d2f586fdd25635293760 13-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Handle explicit physical register defs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10445 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
efe995a4063dd3f414f60c6ee2f4704dbb0fad34 13-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Remove unecessary if statements when looping on ImplicitDefs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10444 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
egAllocLocal.cpp
f5ba89df1fb9d52bf6b7ba1def6bd00b8b668336 10-Dec-2003 John Criswell <criswell@uiuc.edu> This appears to fix Bug 172 and does not break any other feature tests or
regression tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10388 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
a327e7fea987769152e06c10e58fea81ca2bc556 05-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Make assertion stricter. Since the source operands are allocated at
this point, the second operand must be a physical register (it cannot
be a virtual one).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10292 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
49787e35c3eebb7afce81829d426114451f8a597 05-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Fix bug in register spilling when a preallocated live range overlaps a
potential register assignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10291 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
b27ef248f579b354aab434f63c417ab1103e47e2 05-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Move operator<<(std::ostream&, const LiveInterval&) out of the header file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10290 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
91ceae6d2060367a5212b15b26faa804ea0448a5 05-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Sort live intervals by increasing start point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10289 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
69546d5f840250455202e487ec42d8655d209775 04-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Improve debugging output and clean up some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10288 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
585870759b321b2c5e664bb767ad64615fa1cb4e 01-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Print instructions before register allocation is performed. Also fix
bug where spill instructions were added to the next basic block
instead of the end of the current one if the instruction that required
the spill was the last in the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10272 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
99d1a8f048a1bd215fcaca2bf3913c018237e134 30-Nov-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Remove "numReloaded" statistic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10268 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLinearScan.cpp
ff0cbe175df40e0d2b36e59c6fb72f211f1cba4c 20-Nov-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Merging the linear scan register allocator in trunk. It currently passes most tests under test/Programs/SingleSource/Benchmarks/Shootout so development will continue on trunk. The allocator is not enabled by default. You will need to pass -regallo=linearscan to lli or llc to use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10103 91177308-0d34-0410-b5e6-96231b3b80d8
iveIntervalAnalysis.cpp
iveIntervalAnalysis.h
asses.cpp
egAllocLinearScan.cpp
d0fde30ce850b78371fd1386338350591f9ff494 11-Nov-2003 Brian Gaeke <gaeke@uiuc.edu> Put all LLVM code into the llvm namespace, as per bug 109.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedGraphCommon.cpp
nstrSched/SchedPriorities.cpp
nstrSched/SchedPriorities.h
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
iveVariables.cpp
achineCodeEmitter.cpp
achineCodeForInstruction.cpp
achineFunction.cpp
achineInstr.cpp
achineInstrAnnot.cpp
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloSchedGraph.h
oduloScheduling/ModuloScheduling.cpp
HIElimination.cpp
asses.cpp
rologEpilogInserter.cpp
egAlloc/AllocInfo.h
egAlloc/IGNode.cpp
egAlloc/IGNode.h
egAlloc/InterferenceGraph.cpp
egAlloc/InterferenceGraph.h
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.cpp
egAlloc/LiveRangeInfo.h
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
egAlloc/RegAllocCommon.h
egAlloc/RegClass.cpp
egAlloc/RegClass.h
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/DAGBuilder.cpp
electionDAG/SelectionDAG.cpp
e9414cab00e5d1ff37edf25cbc422ba8de63d4ff 10-Nov-2003 Brian Gaeke <gaeke@uiuc.edu> Fix problems linking against the reoptimizer; _llvm_regAllocState must have
externally-visible linkage, and SaveStateToModule must default to true for llc.
I don't remember why I made it const; perhaps it should be deconstified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9858 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
213904133d0ee6cae7ebd025bfc4c5f0677cc214 10-Nov-2003 Brian Gaeke <gaeke@uiuc.edu> Operand numbers are now ints. Save the register allocation of the value
each instruction produces as "operand" -1, and the other operands as 0
.. n, as before. PhyRegAlloc::saveState() is refactored into
PhyRegAlloc::saveStateForValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9842 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/AllocInfo.h
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
e2bf0a2c36105dcee6bb9adb2306358ac1f936b5 06-Nov-2003 Misha Brukman <brukman+llvm@gmail.com> Let's not forget about our friends -- Constant Pool indices.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9750 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
414d9d270754a2bb4b5875e8c85078047ebfbea5 05-Nov-2003 Chris Lattner <sabre@nondot.org> Do not use a class before it is defined.
Be gcc 3.4 clean


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9727 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
55766e139a2eae8d44e703c1933d1084c1d5a586 04-Nov-2003 Brian Gaeke <gaeke@uiuc.edu> Update verifySavedState()'s comment, so that it reflects its current
status. In doFinalization(), skip over external functions, just like
Anand's mapping info does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9703 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
cce4e7a1b12fcb7b0f4bc63b7515b4abc147a512 04-Nov-2003 Brian Gaeke <gaeke@uiuc.edu> Add comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9697 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
3ceac85296b5b0d6dd40daa49d529a56021dd51a 30-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Include llvm/CodeGen/MachineCodeForInstruction.h. Use it to start
implementing verifySavedState().

In saveState(), use the new AllocInfo::AllocStateTy enum, and increment
Insn each time through the loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9617 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
82c5eb7bc8f0cfe77938bbe107cf926680fc8c4d 30-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Make AllocState an enum.
Move the stringifying method for that enum into class AllocInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9616 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/AllocInfo.h
8fc493430c2265da5b7c46cf50ab93a75a00b2f3 24-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Publicize the type of FnAllocState.
Prototype option to save state in a global instead of as a Constant in
the Module. (Turned off, for now, with the on/off switch welded in the off
position. You get the idea.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9500 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
3e43026095f273919daed6633cc838700f837a77 24-Oct-2003 Chris Lattner <sabre@nondot.org> standardize command line option names


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9496 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
232db6e8d645360a9773e2617af9546ed32ac82c 23-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Move the implementations of ==, != on AllocInfos here, from UnpackTraceFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9452 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/AllocInfo.h
537132bf129163343200fe6805ce43077fda233b 23-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Move AllocInfo structure to a private AllocInfo.h header file.
Make FnAllocState contain vectors of AllocInfo, instead of LLVM Constants.
Give doFinalization a method comment, and let it do the work of converting
AllocInfos to LLVM Constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9451 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
b8dbbcee25f2c2c6e3bc8fd81a89c087cd5e9a3d 23-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Make FnAllocState contain vectors of AllocInfo, instead of LLVM Constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9450 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
3d7125cd6665a303e315aad36794314c1481e1c0 23-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> New file, containing AllocInfo structure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9449 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/AllocInfo.h
f54c437714d676c939bdcb4941d2527018d661e5 23-Oct-2003 Misha Brukman <brukman+llvm@gmail.com> * Eliminate `using' directive
* Fix order of #includes
* Make code layout more consistent
* Eliminate extraneous whitespace and comment-lines


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9433 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.cpp
egAlloc/RegClass.cpp
396c8c34edac7fa93168a8b57a9af3ea93567369 23-Oct-2003 Misha Brukman <brukman+llvm@gmail.com> * Fix order of #include files
* Doxygen-ify method comments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9432 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
0d82a54bb9f9105c7b77a792e502cd194f4de509 23-Oct-2003 Misha Brukman <brukman+llvm@gmail.com> * Order #includes as per style guide
* Doxygen-ify comments
* Make code layout more consistent


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9431 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.cpp
egAlloc/LiveRangeInfo.h
a1f64355d79ce9c14a06c014df9d1054410d65ee 23-Oct-2003 Misha Brukman <brukman+llvm@gmail.com> * Use C++ style comments instead of C-style
* Make file description more readable
* Make code layout more consistent, include comment in assert so it's visible
during execution if it hits


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9430 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.cpp
egAlloc/IGNode.h
0849f5ace979a4827befcaff54535381fca12d89 23-Oct-2003 Misha Brukman <brukman+llvm@gmail.com> * Eliminate `using' directive
* Make code layout more consistent


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9427 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.cpp
5e152593e05f93882b1f5ee46288d19d24544e4b 23-Oct-2003 Misha Brukman <brukman+llvm@gmail.com> Make code layout more consistent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9426 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
3692fd97a6fb832f010bd269a7c65d010c518440 22-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Change the type of FnAllocState.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9388 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
60a3c55c4f98a3bdf43e85113eb0f4536b15f30e 22-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Don't worry about converting each function's reg. alloc. state into One Big
Constant early on, because we can do it in doFinalization.

Tighten up a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9387 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
b8dc21e1e246a311f0c9b22847315dbd0ba0c751 22-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Add prototype for verifySavedState().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9386 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
af84370908bc3d498d53a1e02ab4e5bf511433b8 22-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Doxygenify method comments.
Try to improve method comments a little.
Get rid of some excess whitespace; put braces on previous line when possible.
Add stub for method to verify the work of saveState().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9385 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
aefb666d07fdf695809fc92ef8497586674590d8 21-Oct-2003 John Criswell <criswell@uiuc.edu> Added LLVM copyright notice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9324 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
egAlloc/InterferenceGraph.h
egAlloc/RegClass.h
856ba76200ec2302f2fe500bc507f426c7d566c8 21-Oct-2003 John Criswell <criswell@uiuc.edu> Added LLVM copyright header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9321 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.h
oduloScheduling/ModuloSchedGraph.h
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.h
egAlloc/PhyRegAlloc.h
egAlloc/RegAllocCommon.h
e488e9360b1a865ba604330965edcf139e590b65 21-Oct-2003 John Criswell <criswell@uiuc.edu> Added LLVM copyright notice to Makefiles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9312 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/Makefile
nstrSelection/Makefile
akefile
oduloScheduling/Makefile
egAlloc/Makefile
electionDAG/Makefile
b576c94c15af9a440f69d9d03c2afead7971118c 20-Oct-2003 John Criswell <criswell@uiuc.edu> Added LLVM project notice to the top of every C++ source file.
Header files will be on the way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraphCommon.cpp
nstrSched/SchedPriorities.cpp
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
iveVariables.cpp
achineCodeEmitter.cpp
achineCodeForInstruction.cpp
achineFunction.cpp
achineInstr.cpp
achineInstrAnnot.cpp
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloScheduling.cpp
HIElimination.cpp
asses.cpp
rologEpilogInserter.cpp
egAlloc/IGNode.cpp
egAlloc/InterferenceGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
egAllocLocal.cpp
egAllocSimple.cpp
electionDAG/DAGBuilder.cpp
electionDAG/SelectionDAG.cpp
3b237fcd385a734b49bb54893ce256ba181e36f9 19-Oct-2003 Chris Lattner <sabre@nondot.org> Change the Opcode enum for PHI nodes from "Instruction::PHINode" to "Instruction::PHI" to be more consistent with the other instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9269 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
60fa583545ca11c3d67faca90f6411c3f822942e 16-Oct-2003 Chris Lattner <sabre@nondot.org> #include vector which we will need here soon


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9144 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
fd05924946ebfcfb3409b21996cfd0836e4ddb31 15-Oct-2003 Chris Lattner <sabre@nondot.org> Decrease usage of use_size()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9135 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
cf3056db0fee1db7921214b1f25cea04e959e105 13-Oct-2003 Chris Lattner <sabre@nondot.org> Regularize header file comments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9071 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
oduloScheduling/ModuloScheduling.cpp
aa41c3ca20df402e1626be590ff5c784afb734cc 10-Oct-2003 Misha Brukman <brukman+llvm@gmail.com> * Doxygenified comments
* Wrap code at 80 columns
* Ordered includes according to LLVM style guide


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9020 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloScheduling.cpp
73ff5120eb8b8c0ccbfed8a17f1024c67a75f319 08-Oct-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Change MRegisterDesc::AliasSet, TargetInstrDescriptor::ImplicitDefs
and TargetInstrDescriptor::ImplicitUses to always point to a null
terminated array and never be null. So there is no need to check for
pointer validity when iterating over those sets. Code that looked
like:

if (const unsigned* AS = TID.ImplicitDefs) {
for (int i = 0; AS[i]; ++i) {
// use AS[i]
}
}

was changed to:

for (const unsigned* AS = TID.ImplicitDefs; *AS; ++AS) {
// use *AS
}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8960 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
egAllocSimple.cpp
7237ecef134cd88aad13190f078ff23057bfcb71 02-Oct-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Moved enum and command-line option in separate file. Also added function that returns the user selected register allocator to the caller.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8819 91177308-0d34-0410-b5e6-96231b3b80d8
asses.cpp
797c1366070b8c5f9a409fe39811c99f82af6261 30-Sep-2003 Chris Lattner <sabre@nondot.org> include passes.h which defines the interface this file exposes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8793 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
222bd53c2c25d5612f3c56f791fefa3096de7872 24-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Update head-of-file comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8699 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
6a256cc37cc4b1b6b7e19be8eede976fc75c15ca 24-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Untabify tabs in stuff I've recently added.
Check in my register allocator state-saving code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8698 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
59b1c566c9abd02745a3f73f1dbceb8d65a1ac77 24-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Use getRegClassID() instead of getRegClass()->getID(), since it's there.
Shorten the markSuggestedColorUsable method.
Add a switch for saving reg. alloc. state (coming soon).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8697 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
eefaeb84f1299c2ea2d1b06537880f1683e2161d 24-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Remove some unused methods of class IGNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8696 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
8474f6fcda95068c373e68a43fb0cf5a12662f97 23-Sep-2003 Chris Lattner <sabre@nondot.org> Move getAnalysisUsage method from header to .cpp file. Add a normal file
header comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8679 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
bd353fb6625db70e902bb0c1eec2caac1ac243b1 21-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Use C++ math header instead of C version.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8648 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
37bc4cce9baf500162ef2b94a2eebb3175fd6ed5 21-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Erase now-unused prototypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8647 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
874f423f54c4a01e4ccf07780593d7f894fc8422 21-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Rearrange #includes ... since there are fewer now I guess it's a win.
(I also zapped printMachineCode() and printLabel() at the previous checkin,
but forgot to mention it.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8646 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
5779ef2ce0a7f8d5969e9e10acdc43965731b577 21-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Standardize the names of include guards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8645 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.h
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.h
egAlloc/RegAllocCommon.h
egAlloc/RegClass.h
fdb2596c7730b4416c3c4bcd588a3d1a400781be 21-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Standardize the names of include guards.
Remove more excess whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8644 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
6264fb70c14562266e3d3973ddd108e962f5eb92 21-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Standardize the names of include guards.
Fix typos in file header comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8643 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
43ce8fe477eb15674ba09eb1a7622de38e7d0f8a 21-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> I tried to standardize the formatting and tidy up the huge amount of
excess whitespace a little. Also improved some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8642 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
4efe342424898fb37027040676b96c41a536c361 21-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Convert PhyRegAlloc into a proper pass.

PhyRegAlloc.cpp:
Don't include TargetMachine.h or TargetRegInfo.h, because these are provided
by PhyRegAlloc.h.
Merge class RegisterAllocator into class PhyRegAlloc.
Simplify & move ctor, dtor to PhyRegAlloc.h.
Make some of PhyRegAlloc's reference members into pointer members,
so they can be more easily messed with.
MarkAllocatedRegs() becomes a member method, with fewer args.

PhyRegAlloc.h:
Include Pass.h, TargetMachine.h and TargetRegInfo.h. Don't declare
TargetRegInfo forward.
Give AddedInstrns the obvious clear() method.
Make some of PhyRegAlloc's reference members into pointer members,
so they can be more easily messed with.
Add prototype for markAllocatedRegs().
Remove unused inline void constructLiveRanges().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8641 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
6eba07a6a3dacec09aefa54a305b06c98b0c86c1 17-Sep-2003 Misha Brukman <brukman+llvm@gmail.com> Fixed spelling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8588 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
achineInstr.cpp
305f02dd6494147904f684621138cf0fe55bc41e 16-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Fix typo in comment. Take out some random whitespace.
(Partial merge from my working file)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8564 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
d0534a863afaac3f6b2bbcc8c5fcf3ce257cdcf8 16-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Edit comment for accuracy


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8562 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
bed4effb84cb0834d01f9f8b1f9e87313520335f 16-Sep-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Add flag to control whether or not delay slots are filled during
instruction scheduling (this is off by default).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8553 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
41de073b0482c1b9cf40f0a80c24b17333f0d9c9 15-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Fix typos in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8523 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.h
37f92e25689bacd2308c92f33d01163478cf5ad1 12-Sep-2003 Misha Brukman <brukman+llvm@gmail.com> Fixed spelling and grammar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8489 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
be4063babd31bc6e47f04dfcb32697408f3d44ea 01-Sep-2003 Chris Lattner <sabre@nondot.org> Don't build dead directories


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8308 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
79a4e8e2d62c57e729656eb8ff8744a726b82e14 01-Sep-2003 Chris Lattner <sabre@nondot.org> Remove dead library makefile


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8304 91177308-0d34-0410-b5e6-96231b3b80d8
reOpts/Makefile
02b81351f983f21a420a69319c69860d2180ebdb 01-Sep-2003 Chris Lattner <sabre@nondot.org> Remove makefile for dead library


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8303 91177308-0d34-0410-b5e6-96231b3b80d8
ostOpts/Makefile
84681f1184af38d9f6c56024f0079b7075133a9f 01-Sep-2003 Chris Lattner <sabre@nondot.org> LiveRange.h is now in lib/CodeGen/RegAlloc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8299 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
893f9541dc09ff450415ca5cb28320d928511cf2 01-Sep-2003 Chris Lattner <sabre@nondot.org> LiveRangeInfo got moved into the lib/CodeGen/RegAlloc directory


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8297 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.h
70b2f56e76b254c2d4a136ecd37623ad27981903 01-Sep-2003 Chris Lattner <sabre@nondot.org> PhyRegAlloc.h got moved to lib/CodeGen/RegAlloc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8296 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
c083dcccbf6da2830914ba691824cf780badef32 01-Sep-2003 Chris Lattner <sabre@nondot.org> Move IGNode from public include directory to here. Minor cleanups like adding std:: namespace qualifiers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8295 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.cpp
egAlloc/InterferenceGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
c9afb499f67a92c70ce349e84081f5bb41fab591 28-Aug-2003 John Criswell <criswell@uiuc.edu> Fixed two double free bugs that caused llc to segfault or run forever.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8191 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
3b6b6ba4be1fc67809e81f750f664363f947aa1c 28-Aug-2003 Tanya Lattner <tonic@nondot.org> Removing README


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8180 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/README
4f839ccf4905906f6cb4327614c043aa4cafe554 28-Aug-2003 Tanya Lattner <tonic@nondot.org> Putting my revised version of ModuloScheduling in cvs. This is not complete...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8179 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloSchedGraph.h
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
8dc9982e2e65fa2a2105c31d389f09bae7e5fc7c 28-Aug-2003 Tanya Lattner <tonic@nondot.org> Moved index into BB to common graph class because its needed by ModuloSchedGraph.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8174 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
d6d863392fdc7649fd3f68d0779f1178db91e1ef 27-Aug-2003 Tanya Lattner <tonic@nondot.org> Added/removed header file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8160 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
c50ee556e5ecda3fc33d27f83b39f890010dee12 27-Aug-2003 Tanya Lattner <tonic@nondot.org> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8153 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedGraphCommon.cpp
b6489f3153926655770e5a0d5b72dbc81a87267f 26-Aug-2003 Tanya Lattner <tonic@nondot.org> First version of SchedGraph common class and refactoring of SchedGraph.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8148 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedGraphCommon.cpp
nstrSched/SchedPriorities.cpp
41822c790f7f0502e604fa2fa26e8edb022fda8c 24-Aug-2003 Chris Lattner <sabre@nondot.org> Fix bug: Jello/2003-08-23-RegisterAllocatePhysReg.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8095 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
ef6a6a69ff1e1b709d0acb315b9f6c926c67a778 22-Aug-2003 Misha Brukman <brukman+llvm@gmail.com> The word `dependent' has no `a'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8030 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
egAlloc/RegClass.h
e287cfdfd0815ac5c80c72c0913a45ca98993a28 22-Aug-2003 Chris Lattner <sabre@nondot.org> Fix spello


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8029 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.cpp
5560c9d49ccae132cabf1155f18aa0480dce3eda 18-Aug-2003 Misha Brukman <brukman+llvm@gmail.com> Spell `necessary' correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7944 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
128c2aa49332123d7c89477efca73b8bac233dd7 17-Aug-2003 Chris Lattner <sabre@nondot.org> Fix bug: Jello/2003-08-15-AllocaAssertion.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7916 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
53b99a0fe74b3cc272d7aad4d43a25f09c4979e4 15-Aug-2003 Brian Gaeke <gaeke@uiuc.edu> Fix typo in comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7906 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
e3561c23c2fd64712ed1ec7dfdd0bfbcf84356d5 15-Aug-2003 Chris Lattner <sabre@nondot.org> Remove uses of the NonCopyable class, to make the doxygen output look better


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7880 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
79ba7c1aee433775f77fb5892b0aa764b39d8511 15-Aug-2003 Chris Lattner <sabre@nondot.org> rename selection directory and library to SelectionDAG


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7877 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
electionDAG/Makefile
7dc97ff18023935880082d84a0004ac111859357 15-Aug-2003 Chris Lattner <sabre@nondot.org> Add a bunch of new node types, etc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7875 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGBuilder.cpp
electionDAG/SelectionDAG.cpp
bf3c4cfaad706db21ac82a4376e1899d0d7f0935 14-Aug-2003 Brian Gaeke <gaeke@uiuc.edu> Factory methods for function passes now return type FunctionPass *.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7839 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
egAlloc/PhyRegAlloc.cpp
277aad2655b87402ecc48a0de8ad780d2816bc3a 14-Aug-2003 Brian Gaeke <gaeke@uiuc.edu> Factory methods for function passes now return type FunctionPass *.
Get rid of RegisterLLC, which can't handle FunctionPasses anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7836 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
19df3876e6dce016ec4c5ab28320a246ab285001 13-Aug-2003 Brian Gaeke <gaeke@uiuc.edu> Factory methods for FunctionPasses now return type FunctionPass *.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7823 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
egAllocSimple.cpp
7f2438f1700789278ebd28362c41646165b5ce00 13-Aug-2003 Chris Lattner <sabre@nondot.org> Mapping directory no longer exists


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7801 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
c09f429499c07ccb4eb527e26fd229812c9f9e68 13-Aug-2003 Chris Lattner <sabre@nondot.org> Obsolete file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7799 91177308-0d34-0410-b5e6-96231b3b80d8
apping/Makefile
feb3298fca84eaae664281e04b23f1fbe7ade856 13-Aug-2003 Vikram S. Adve <vadve@cs.uiuc.edu> For instructions in a delay slot of another instruction,
we no longer need to find the live-before set of the delayed
branch since that set is now included the live-before/after
set of the instructions in each delay slot. Just assert that instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7796 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
fa7ed53f32917ef632b21753a772548dde8c2eed 11-Aug-2003 Chris Lattner <sabre@nondot.org> Build the SelectionDAG library


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7718 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
78ec311bd5fcdf44ed64841a0f5df1124b3a9b17 11-Aug-2003 Chris Lattner <sabre@nondot.org> Initial checkin of SelectionDAG implementation. This is still rough and
unfinished


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7717 91177308-0d34-0410-b5e6-96231b3b80d8
electionDAG/DAGBuilder.cpp
electionDAG/Makefile
electionDAG/SelectionDAG.cpp
2010f7baec18914b8a5d1b2b4c3c21511fa6e25d 07-Aug-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Fix assertion in MachineInstr::substituteValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7675 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
3fd1f5bb6af4616f72f6e7920c2fc4b334277416 06-Aug-2003 Chris Lattner <sabre@nondot.org> Use a new local data structure instead of the MachineInstr::regsUsed set


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7621 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
c393c57afc971f88f2ad4618a921c359c0c57969 06-Aug-2003 Chris Lattner <sabre@nondot.org> Add a map


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7620 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
6ae3117582a12ecb92b8c38c13a0b3bf267139b8 06-Aug-2003 Chris Lattner <sabre@nondot.org> Minor cleanups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7619 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
3bed95b628308f9cd7fa060a4438425557dad76d 05-Aug-2003 Chris Lattner <sabre@nondot.org> Physical registers no longer live in the regsUsed set for each machine instr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7618 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
610234d5c9582e2645738ad9c347b855962122b7 05-Aug-2003 Chris Lattner <sabre@nondot.org> Do not insert physical regsiters into the regsUsed set


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7617 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
a2dd745613fdb9deff6037285f4efc20248c7b3d 05-Aug-2003 Chris Lattner <sabre@nondot.org> All callers of these methods actually wanted them to preserve the flags,
so get rid of the def/use parameters that were getting passed in.

**** This now changes the semantics of these methods to preserve the flags,
not clobber them!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7602 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
8c8194500d3e06a7200a7a49508a6dc766d6e00a 05-Aug-2003 Chris Lattner <sabre@nondot.org> Fix bugs handling ESP in alloca references


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7591 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
d9ac6a7d3b6a022a2b3d0170c1a20c523c67b436 05-Aug-2003 Chris Lattner <sabre@nondot.org> Revert previous change, and be really anal about what physical registers can do.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7588 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
27615d7f2159ef219167cfc3e804d17105a62e78 05-Aug-2003 Chris Lattner <sabre@nondot.org> Don't bother calculating info unless its needed. May reduce number of stack slots created.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7584 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
b8822ad224d4eb5dc1b8b770bee11a2160e79141 05-Aug-2003 Chris Lattner <sabre@nondot.org> * Fix spelling of 'necessary'
* Add a lot more DEBUG output, which is better structured than before
* Fix bug: Jello/2003-08-04-PhysRegLiveFailure.llx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7583 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
e109de3166484d9d2e111efd44bc05a60bd8b056 03-Aug-2003 Chris Lattner <sabre@nondot.org> Simplify code, eliminating the need for the X86 isVoid target instr flag


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7534 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
4cc662b0ef29bd0201e49a841e0c3a8acaa3753e 03-Aug-2003 Chris Lattner <sabre@nondot.org> Set debug types


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7533 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
egAllocSimple.cpp
925b771dc378d6c88da44cd5b6650f2758c3c0a7 03-Aug-2003 Chris Lattner <sabre@nondot.org> Remove using decl


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7531 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
d3fd79f699c50d6098ea59a357ed29473467340e 03-Aug-2003 Chris Lattner <sabre@nondot.org> Wrap at 80 columns


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7503 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
a11136b16c6c3cf26fc6185447458a1c4b300107 02-Aug-2003 Chris Lattner <sabre@nondot.org> Move DEBUG to Debug.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7497 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
egAllocSimple.cpp
b5161b60c2fdc832b203b93bc9ff1cf91134884e 29-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> All constant-evaluation code now unified into
TargetInstrInfo::ConvertConstantToIntType().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7390 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
814030a0c588732e3bbb281e4a0139628e49802a 29-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> 1. Bug fix: Don't use branch operand reg. as temp. reg. when
spilling values used by an instruction in the delay slot of the branch
(which will eventually be moved before the branch).
2. Bug fix: Delete the delay slot instr, not the branch instr, when
moving delay slot instr. out!!!!
3. Move code to insert caller-saves moved here from SparcRegInfo:
it is now machine-independent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7389 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
b403b2c0193aa2226069faa1208676d3f6380bde 29-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Add const version of getLiveRangeForValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7386 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.h
102f295114d57dc9624741516382ef47dd799a9c 29-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Code to insert caller-saves moved here from SparcRegInfo: it is now
machine-independent.
Fix problem with using branch operand reg. as temp. reg. when
spilling values used by an instruction in the delay slot of the branch
(which will eventually be moved before the branch).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7385 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
8d3f8e226d6cac7882e9ffe7482602a7521400c3 27-Jul-2003 Chris Lattner <sabre@nondot.org> Making this code const-correct would be a pain, so I'll hack it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7350 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
egAlloc/PhyRegAlloc.cpp
9e2dd8f8d7c995721584d8c7add309e5d9cb1051 27-Jul-2003 Chris Lattner <sabre@nondot.org> Const correctness fixes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7349 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
HIElimination.cpp
9cdaa63f576de1a1bcb31b3436280a15c7d97c4d 27-Jul-2003 Chris Lattner <sabre@nondot.org> Be const correct


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7348 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
e5a61ccdc5fdb5d3410a41a4f45071f5adb7d40d 27-Jul-2003 Chris Lattner <sabre@nondot.org> Hrm, another necesary one :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7347 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
1d598fa25adc3f821f87f544d8ba20036879aed4 27-Jul-2003 Chris Lattner <sabre@nondot.org> Remove #include


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7342 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.h
bae47e5691fbdbbb1560542bd355f3e3ba282fb6 27-Jul-2003 Chris Lattner <sabre@nondot.org> Remove extraneous #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7341 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
egAlloc/LiveRangeInfo.h
bc001b24a17a2329dfd96bc22b8862b645603058 25-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> (1) Change the way unused regs. are marked and found to consider regType
info (since multiple reg types may share the same reg class).
(2) Remove machine-specific regalloc. methods that are no longer needed.
In particular, arguments and return value from a call do not need
machine-specific code for allocation.
(3) Rename TargetRegInfo::getRegType variants to avoid unintentional
overloading when an include file is omitted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7329 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
egAlloc/RegClass.h
34a856749fd5563c201e91ce1cd2dfc345f6f49c 25-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Remove unused field. Change the way unused regs. are marked and
found to consider regType info (since multiple reg types may share
the same reg class, e.g., single and double on Sparc).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7327 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
c8bf87af3efe766440d0df259a038a0b6998e6e9 23-Jul-2003 Chris Lattner <sabre@nondot.org> Remove unnecessary casts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7250 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
9daa8a12d33412d3d7c78f7b5a00f0883e388b58 23-Jul-2003 Chris Lattner <sabre@nondot.org> Random cleanups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7247 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloScheduling.cpp
1815383276d5068e4c1a336cefb0579953d05138 23-Jul-2003 Chris Lattner <sabre@nondot.org> Remove using decl


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7246 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
4d2faf630712f7a70d0d595f412a501a5e8cd3a8 10-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Values stored in CallArgsDescriptor cannot be const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7156 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrAnnot.cpp
24d0410db074192fc8d9a60a168f6ec9d1b41edd 10-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> isMarkedForSpill() should be const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7155 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
627eb31cd791f808eaa048478d01222577a30a1a 10-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Change interface to MachineInstr::substituteValue to specify more precisely
which args can be substituted: defsOnly, defsAndUses or usesOnly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7154 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
51bda6fccbbea7b88ecf6a69c567085fd64eeb5f 10-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Print out all neighbors in interference graph, not just higher-numbered ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7153 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.cpp
3bf089227bb8470310481c21a3327146963714e5 10-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Several fixes to handling of int CC register:

(1) An int CC live range must be spilled if there are any interferences,
even if no other "neighbour" in the interf. graph has been allocated
that reg. yet. This is actually true of any class with only one reg!

(2) SparcIntCCRegClass::colorIGNode sets the color even if the LR must
be spilled so that the machine-independent spill code doesn't have to
make the machine-dependent decision of which CC name to use based on
operand type: %xcc or %icc. (These are two halves of the same
register.)

(3) LR->isMarkedForSpill() is no longer the same as LR->hasColor().
These should never have been the same, and this is necessary now for #2.

(4) All RDCCR and WRCCR instructions are directly generated with the
phony number for %ccr so that EmitAssembly/EmitBinary doesn't have to
deal with this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7152 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
97539fc4b63031495cbee5441de7a3a583e5ec77 06-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Choose register instead of immediate for ConstantExpr in ChooseRegOrImmed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7112 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
65b2f401afbaa4a87f0dd4a51cd1f177c7c15e40 02-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Minor beautification: fold a couple of lines of code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7054 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
74d15d36f5ae146853b6089ed4a76a381b11cbb3 02-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> A def. operand of a machine instruction may be an ordinary Value*,
not just an Instruction*, at least in one unfortunate case:
the first operand to the va_arg instruction.
Modify ValueToDefVecMap to map from Value*, not Instruction*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7052 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
7a73b80b9052136c8cd2234eb3433a07df7cf38e 30-Jun-2003 John Criswell <criswell@uiuc.edu> Merged in autoconf branch. This provides configuration via the autoconf
system.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7014 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
achineFunction.cpp
3889a2cb05c36f30050941679d5fd55d45e6a3ed 22-Jun-2003 Chris Lattner <sabre@nondot.org> Remove a ton of extraneous #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6842 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
egAlloc/LiveRange.h
2eb9a257c86d6194ec572d8556f86af97452bebe 17-Jun-2003 Chris Lattner <sabre@nondot.org> Actually, change it to use explicit new/delete, which is more likely to be
optimized INTO an alloca


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6727 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
0bf94767018f15be77b7295215b7ffbffb7ebc7f 17-Jun-2003 Chris Lattner <sabre@nondot.org> Remove two using decls
Remove usage of alloca


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6725 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
ad95d9ef50cbd789025dbff8a1e018650cbcdc7f 16-Jun-2003 Brian Gaeke <gaeke@uiuc.edu> Isolate machine-dependent use of <alloca.h> in "Support/Alloca.h",
so that we can easily change its use to be conditional on the result of
an autoconf test later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6723 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
be583b914d8156b99d3da264d5adca37fee8dbc9 11-Jun-2003 John Criswell <criswell@uiuc.edu> Included assert.h so that the code compiles under newer versions of GCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6682 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
egAlloc/LiveRange.h
0e93687ccae0a10497effff417cf360740684514 10-Jun-2003 Guochun Shi <gshi1@uiuc.edu> add some comments
add a function ModuloScheduling::dumpFinalSchedule() to print out final schedule


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6677 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
e95b827db25376f41fb0ecd1ff9649d22f382f64 10-Jun-2003 Guochun Shi <gshi1@uiuc.edu> add an brief instruction what this pass is


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6676 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/README
0b970dad72c63ba99820b2a437aecee31ebdbc9f 10-Jun-2003 Guochun Shi <gshi1@uiuc.edu> a simple introduction to this pass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6675 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/README
f325261856a16dfa34d323db7c15cf85a8ea3f4e 10-Jun-2003 Guochun Shi <gshi1@uiuc.edu> cleaned code
add some comments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6674 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloSchedGraph.h
oduloScheduling/ModuloScheduling.cpp
8f1d4ab409253e665a4cbd92401d345010bdc561 09-Jun-2003 Guochun Shi <gshi1@uiuc.edu> delete useless functions
add comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6673 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloSchedGraph.h
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
33280524f4882a3e6a7fa011a62595ba3a65c8ec 08-Jun-2003 Guochun Shi <gshi1@uiuc.edu> change DEBUG to DEBUG_PRINT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6672 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
6fe6905df2e23e284faa9b368fbce096476d7e09 07-Jun-2003 Misha Brukman <brukman+llvm@gmail.com> Do not hastily change the Opcode from 'r' to 'i' type if we're not actually
SETTING the operand to be an immediate or have verified that one of the operands
is really a SignExtended or Unextended immediate value already, which warrants
an 'i' opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6662 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
08d2e4e09adc53aa93c08c8327d2f5f2814acb74 05-Jun-2003 Chris Lattner <sabre@nondot.org> Fix bug: Jello/2003-06-04-bzip2-bug.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6624 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
d15cd2752fc2dba5155f7f5588e80449919dd424 04-Jun-2003 Misha Brukman <brukman+llvm@gmail.com> I have finally seen the light. The code to change the opcode must live higher in
the loop, and in both cases. In the first case, it is a VReg that is a constant
so it may be actually converted to a constant. In the second case, it is already
a constant, but then if it doesn't change its type (e.g. to become a register
and have the value loaded from memory if it is too large to live in its
instruction field), we must change the opcode BEFORE the 'continue', otherwise
we miss the opportunity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6602 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
d720da23dbe2f2b4f9293a2edecd8b74ebd4b188 03-Jun-2003 Misha Brukman <brukman+llvm@gmail.com> Pass through the emitConstantPool() call to the real emitter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6590 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
c740aae220cb74debc08e2e244f6f97d6c04785e 03-Jun-2003 Misha Brukman <brukman+llvm@gmail.com> Moved code to modify the opcode from 'reg' to 'imm' form to a more logical place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6563 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
0ee48d24fe0a6de9b06bf122c4deaa9f570c8d8b 03-Jun-2003 Misha Brukman <brukman+llvm@gmail.com> Moved FInfo.cpp to lib/Target/Sparc as it is Sparc-specific.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6554 91177308-0d34-0410-b5e6-96231b3b80d8
apping/FInfo.cpp
78ddcd7b03c84aef48b8996ca427da64eaa4f035 03-Jun-2003 Chris Lattner <sabre@nondot.org> Minor cleanups.
This pass should be moved to lib/Target/Sparc since it's sparc specific
It also needs a file comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6553 91177308-0d34-0410-b5e6-96231b3b80d8
apping/FInfo.cpp
9efc4d6aaaa0153c94a661c44198d514d4f83282 03-Jun-2003 Chris Lattner <sabre@nondot.org> Remove usage of noncopyable classes to clean up doxygen output.

In particular these classes are the last that link the noncopyable classes
with the hash_map, vector, and list classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6552 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.h
747a04455072a1dac9e333f1dd10abc16687d5ff 03-Jun-2003 Chris Lattner <sabre@nondot.org> Add #include


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6550 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
e6aa9e30b1df8bb92116faf5070b88ca5c6a03bd 02-Jun-2003 Misha Brukman <brukman+llvm@gmail.com> Removed a useless ofstream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6547 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
099b064a464d091f6800e2cd19e67cb4354952ec 02-Jun-2003 Guochun Shi <gshi1@uiuc.edu> compiled with the new SchedGraphCommon


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6545 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloSchedGraph.h
oduloScheduling/ModuloScheduling.h
53a7ba851d445ada2fa9e293542912b9ccf6f7c0 02-Jun-2003 Misha Brukman <brukman+llvm@gmail.com> Remove spurious assert()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6529 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
efc84a4082e46c8e8f26517ea0c7bf5626f42e7f 02-Jun-2003 Chris Lattner <sabre@nondot.org> Changes to be compatible with MachineCodeEmitter.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6515 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
5cdb12f95819c38e81d51791c79058660f078e4c 31-May-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Minor changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6470 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
f3d3ca18b5a36f3a331367aa9ff0c3bcbd86ca82 31-May-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Added MachineCodeForInstruction object as an argument to
TmpInstruction constructors because every TmpInstruction object has
to be registered with a MachineCodeForInstruction to prevent leaks.
This simplifies the user's code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6469 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
3497782f3843007de3be0c43e3ff206a01e2ccac 31-May-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Allow explicit physical registers for implicit operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6468 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
7952d6088ec936aec621ea1ba9141731a7810d93 31-May-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Changes to allow explicit physical register arguments that have been
preallocated. While reg-to-reg dependences were already handled, this
change required new code for adding edges to/from call instructions.
This was part of the extensive changes to the way code generation occurs
for function call arguments and return values.
See log for CodeGen/PhyRegAlloc.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6467 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
d0d06ad4f3b2db53e68a9615b282a7474c61820b 31-May-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Extensive changes to the way code generation occurs for function
call arguments and return values:
Now all copy operations before and after a call are generated during
selection instead of during register allocation.
The values are copied to virtual registers (or to the stack), but
in the former case these operands are marked with the correct physical
registers according to the calling convention.
Although this complicates scheduling and does not work well with
live range analysis, it simplifies the machine-dependent part of
register allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6465 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
88ba25444c0542f43dc678392c7fc39fda7488e2 30-May-2003 Misha Brukman <brukman+llvm@gmail.com> When converting virtual registers to immediate constants, change the opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6452 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
da3a8b19ce08670fdc19464963f436eb01a306a4 30-May-2003 Misha Brukman <brukman+llvm@gmail.com> Added saveBBreferences() for BasicBlock resolution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6451 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
139f0c279d460d770ee784a05e70e08717907d45 30-May-2003 Guochun Shi <gshi1@uiuc.edu> so far everything compiles


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6423 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
eae77de8690d9e53a695ae0286e289266716772e 28-May-2003 Misha Brukman <brukman+llvm@gmail.com> Correctly write out binary data as chars, before they're cast to ints.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6385 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
3432d1d1d5684098cdfd6e16f0ab6f209d0973b4 28-May-2003 Misha Brukman <brukman+llvm@gmail.com> Added a debugging code emitter that prints code to a file, debug to std::cerr,
and passes the real code to a memory-outputting code emitter. This may be
removed at a later point in development.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6379 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
5f2180c53330502eb2f0f5bf3f21a838ad800906 27-May-2003 Vikram S. Adve <vadve@cs.uiuc.edu> (1) Added special register class containing (for now) %fsr.
Fixed spilling of %fcc[0-3] which are part of %fsr.

(2) Moved some machine-independent reg-class code to class TargetRegInfo
from SparcReg{Class,}Info.

(3) Renamed MachienOperand::opIsDef to MachineOperand::opIsDefOnly()
and related functions and flags. Fixed several bugs where only
"isDef" was being checked, not "isDefAndUse".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6341 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
iveVariables.cpp
achineInstr.cpp
HIElimination.cpp
rologEpilogInserter.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAllocLocal.cpp
egAllocSimple.cpp
6b77ec415662b92ea49e614ee568be556ea27899 22-May-2003 Misha Brukman <brukman+llvm@gmail.com> Cleaned up code layout. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6304 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
c2312df45cd10b580c500e1fc8f93b9693d73fe4 22-May-2003 Misha Brukman <brukman+llvm@gmail.com> Kill `using' directives.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6301 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
b52e0241c03a257f96bd9c77788eff5b1a7fd437 12-May-2003 Chris Lattner <sabre@nondot.org> Use a kill, not a dead definition, update comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6131 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
572c77066808fc0e9ee1d212dab227f28bf5e28a 12-May-2003 Chris Lattner <sabre@nondot.org> * Keep LiveVariable information more up-to-date and consistent
* *** Finally mark values that are inputs to PHIs as killed when appropriate.
This should make the generated code quite a bit better. For example, the
local-ra will not have to spill PHI inputs at the end of predecessor BB's
anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6117 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
a13f0d3f4159b1f54bcfc733ccd94977b020ea56 12-May-2003 Chris Lattner <sabre@nondot.org> Fix bug where we could iterate off the end of a basic block


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6116 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
fb2cb69dc55c1e1d7754186cd1c8a9d543f54bdd 12-May-2003 Chris Lattner <sabre@nondot.org> * Keep the BBMap around as long as the pass is live
* Change getVarInfo to take real virtual register numbers and offset them
itself. This has caused me so much grief, it's not even funny.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6115 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
98719d7cdc693c077d179fe3461ce625d6faef34 12-May-2003 Chris Lattner <sabre@nondot.org> Fix N^2 algorithm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6112 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
927ce5dfaea00453889080cd1c6daf3eb197ad74 12-May-2003 Chris Lattner <sabre@nondot.org> * Fix several comments
* Update LiveVar info better, fixing bug: Jello/2003-05-11-PHIRegAllocBug.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6110 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
d5725631c52e8033bcf03bc040309af031a54825 12-May-2003 Chris Lattner <sabre@nondot.org> Fix tab infestation!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6109 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
e0e72177c0ca447d1d2acab798a7ca2786d5618d 09-May-2003 Chris Lattner <sabre@nondot.org> Allow const functions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6056 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
fd33fb8726d4b824d82851f57e37e2df394aad0b 08-May-2003 Chris Lattner <sabre@nondot.org> Add methods for stub function generation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6054 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
5cdfbad72d76864325260f134d58294c290a4886 07-May-2003 Chris Lattner <sabre@nondot.org> Add a vector to keep track of which registers are allocatable. Remove FIXMEs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6015 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
dff780f0466d824e775dd748d9880f0389be7260 06-May-2003 Chris Lattner <sabre@nondot.org> Re-add gross hack, it's still necessary. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6012 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
82a4d207aaa18f2df6649ec747ec0d10edf0e1dc 06-May-2003 Chris Lattner <sabre@nondot.org> Remove hideously nasty hack


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6011 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
15b55e20cc3ca89d77b3e5c2833b569eb33aa4f9 05-May-2003 Misha Brukman <brukman+llvm@gmail.com> Debug output should go to cerr, not cout, because that's where bytecode goes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6002 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
b589bf7d77a57e961a871ae5ffee2381722d8c0f 02-May-2003 Chris Lattner <sabre@nondot.org> Fix a bug which occurred with empty basic blocks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5982 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
f98358efc7be57d1984c11ba2b3b02d92b530030 01-May-2003 Chris Lattner <sabre@nondot.org> Minor cleanup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5976 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
2ee82e05e3e41fa23951d3503db5483a36dc3ae3 23-Apr-2003 Chris Lattner <sabre@nondot.org> Remove unneccesary &*


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5871 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
achineFunction.cpp
63e04f3ccbfff4537458db8d99c323c00fc8b6ac 23-Apr-2003 Misha Brukman <brukman+llvm@gmail.com> Just some code beautification changes I had sitting around in my tree.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5859 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloSchedGraph.h
2c821cc06e0a94704ce4eef72d3ebfcb561ba1ff 10-Apr-2003 Misha Brukman <brukman+llvm@gmail.com> Fixed compilation errors, command-line argument declarations, cleaned up code to
look nicer and removed useless stuff.

Also renamed a few variables, moved them into namespaces, converted outputting
to a file into a print to std::cerr with a DEBUG() guard, as all passes should
do anyway.

No functional changes have been made. However, this code now compiles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5769 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloSchedGraph.h
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
8baa01c1d79d8cff13634a48339cf551e30eaf14 09-Apr-2003 Misha Brukman <brukman+llvm@gmail.com> Made the code readable:

* Lines must be wrapped at 80 chars. This is a hard limit.
* Consistent style on functions, braces, if, for, etc. Code must be readable.

No functional changes have been made, even though I added a new typedef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5768 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloSchedGraph.h
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
6fbe5fbce1f3ff901eb3685290e19f5973ff588a 07-Apr-2003 Guochun Shi <gshi1@uiuc.edu> change the include file names and some class names to make it compile


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5764 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloSchedGraph.h
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
f1c154f5e69fdd11426b4e2a5cdea98fcab1606b 27-Mar-2003 Guochun Shi <gshi1@uiuc.edu> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5755 91177308-0d34-0410-b5e6-96231b3b80d8
oduloScheduling/Makefile
oduloScheduling/ModuloSchedGraph.cpp
oduloScheduling/ModuloSchedGraph.h
oduloScheduling/ModuloScheduling.cpp
oduloScheduling/ModuloScheduling.h
9085d8a9a9000eeaa7cf337ccbdca41d528c99c2 16-Jan-2003 Chris Lattner <sabre@nondot.org> Print machine frame objects with the frame offset intrinsic to the machine


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5329 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
0416d2a70aea644c3e0c06301c29f3b81ec1e42d 16-Jan-2003 Chris Lattner <sabre@nondot.org> Fix problems with empty basic blocks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5326 91177308-0d34-0410-b5e6-96231b3b80d8
HIElimination.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
f85249ca7336cda5bd491c161cb163847774e868 16-Jan-2003 Chris Lattner <sabre@nondot.org> Arg, fix bugs in previous checkin...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5322 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
78d6db5627bdf41ab3ffd96133821647dbc60d53 16-Jan-2003 Chris Lattner <sabre@nondot.org> Add assertion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5321 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
4ac7d7302b36a5d20f71b5c290c63a7f6c345289 15-Jan-2003 Chris Lattner <sabre@nondot.org> * Insert prolog/epilog code before rewriting indexes
* Fix calculation of frame offsets when there is an offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5318 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
795ba6cabdbba32cdf9912fbd9091e6b3cfbd3c6 15-Jan-2003 Chris Lattner <sabre@nondot.org> Move sparc specific code into the Sparc backend


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5317 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
9d4ed15c9ec97573703247fb4e0d3d8816eb0ef0 15-Jan-2003 Chris Lattner <sabre@nondot.org> Adjust to new interfaces


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5314 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
af3cdcf9b06f34077f2a5d654019f19815918d6e 15-Jan-2003 Chris Lattner <sabre@nondot.org> Move headers around


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5312 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegClass.cpp
egAlloc/RegClass.h
4cfd622252d7b9cd1cd37fc6807631388e045655 15-Jan-2003 Chris Lattner <sabre@nondot.org> Header is moved into local directory


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5311 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.cpp
c7c7b7ab75634145506b08e3f1cdd7a4405aad29 15-Jan-2003 Chris Lattner <sabre@nondot.org> Fix bug in previous checkin


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5310 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
c520feb6f03d1fded623f81a71f6625728ebfab8 15-Jan-2003 Chris Lattner <sabre@nondot.org> Add new method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5309 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
4309e736c136f1c956e96ecfa4ce6747bfef387f 15-Jan-2003 Chris Lattner <sabre@nondot.org> #include RegClass.h explicitly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5307 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
abb9c08a0585dfb1b61f3b87be4962178b5a55fa 15-Jan-2003 Chris Lattner <sabre@nondot.org> Remvoe dependency on RegClass.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5306 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
a9b19b9002cea9fd338df58856777f85b1c9a01b 15-Jan-2003 Chris Lattner <sabre@nondot.org> Prune #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5303 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrAnnot.cpp
0412077faf0cc7e7e159e67b6d69e653137ddfe2 15-Jan-2003 Chris Lattner <sabre@nondot.org> Minor changes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5302 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
b66fdc2934133872db1407bee749b69a4b59b2b7 15-Jan-2003 Chris Lattner <sabre@nondot.org> Remove obsolete ctor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5301 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1531b6342151762b4f55e2a5c09f093e3e95fd78 15-Jan-2003 Chris Lattner <sabre@nondot.org> Remove dead code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5298 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
f6ee49fcf0ac86d3b39376939fe731b34c9ae6cb 15-Jan-2003 Chris Lattner <sabre@nondot.org> Use buildmi not MI ctor directly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5293 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
92ba2aaa58fa550490d1ace999750b3f75c2cf32 15-Jan-2003 Chris Lattner <sabre@nondot.org> Rename llvm/Analysis/LiveVar/FunctionLiveVarInfo.h -> llvm/CodeGen/FunctionLiveVarInfo.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5284 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedPriorities.cpp
egAlloc/PhyRegAlloc.cpp
8143d8f91a7768007e80841ac3c29f938e470900 14-Jan-2003 Chris Lattner <sabre@nondot.org> Move llvm/Analysis/LiveVar/ValueSet.h to CodeGen/ValueSet.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5282 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.h
3501feab811c86c9659248a4875fc31a3165f84d 14-Jan-2003 Chris Lattner <sabre@nondot.org> Rename MachineInstrInfo -> TargetInstrInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5272 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSelection/InstrSelectionSupport.cpp
iveVariables.cpp
achineInstr.cpp
HIElimination.cpp
rologEpilogInserter.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAllocLocal.cpp
egAllocSimple.cpp
bc40e898e153c9b81f246a7971eaac7b14446c49 13-Jan-2003 Chris Lattner <sabre@nondot.org> New files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5262 91177308-0d34-0410-b5e6-96231b3b80d8
iveVariables.cpp
HIElimination.cpp
80a0478bbb337391eb5fd217afced41b2f2f1e9a 13-Jan-2003 Chris Lattner <sabre@nondot.org> * Use the PHI Elimination pass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5220 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
91a452b3822a3facb2191a01b58e370284ad9c19 13-Jan-2003 Chris Lattner <sabre@nondot.org> * Convert to use LiveVariable analysis
* Convert to use PHIElimination pass
* Don't spill values which have just been reloaded (big win reducing spills)
* Add experimental support for eliminating spills before TwoAddress
instructions. It currently is broken so it is #ifdef'd out.
* Use new "is terminator" flag on instructions instead of looking for
branches and returns explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5219 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
f00a3f905e8cd99ab4d3dbbde1a9d510516e0fa2 13-Jan-2003 Chris Lattner <sabre@nondot.org> Convert to MachineFunctionPass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5218 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
8d95ef4973226044cefdd6dc237d3c326ffc15b3 13-Jan-2003 Chris Lattner <sabre@nondot.org> Add support for 3 new forms of MachineOperand


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5217 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
4d149cdae1553426f49623fdae215d481d56d955 13-Jan-2003 Chris Lattner <sabre@nondot.org> Add support for constant pool
Add helper methods for MachineFrameInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5216 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
7775df1a6c499bb24479d1f0e1420ba89f686fbb 13-Jan-2003 Chris Lattner <sabre@nondot.org> Add support for global address by string and constant pool values


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5215 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
d0f166a4868c957041fa0ca0a35adde97aa10c91 29-Dec-2002 Chris Lattner <sabre@nondot.org> More renamings of Target/Machine*Info to Target/Target*Info


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5204 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedPriorities.h
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
egAlloc/LiveRangeInfo.h
egAlloc/PhyRegAlloc.h
egAlloc/RegClass.cpp
egAlloc/RegClass.h
f27eeea54fb0176986f76731c499176345047dff 29-Dec-2002 Chris Lattner <sabre@nondot.org> Rename MachineOptInfo to TargetoptInfo
Rename MachineCacheInfo to TargetCacheInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5203 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
eb24db9727a7babe863d5afe70c7bda3a460da18 28-Dec-2002 Chris Lattner <sabre@nondot.org> Rename FunctionFrameInfo to MachineFrameInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5200 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
egAllocLocal.cpp
egAllocSimple.cpp
8bd66e690779c838db51f55cf0b31d7206b3b659 28-Dec-2002 Chris Lattner <sabre@nondot.org> Rename MachineFrameInfo to TargetFrameInfo.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5199 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
rologEpilogInserter.cpp
egAlloc/PhyRegAlloc.cpp
58b3328ac709a5706a8bfa522012ed90f1b4d4bd 28-Dec-2002 Chris Lattner <sabre@nondot.org> Initial checkin of Prolog/Epilog code inserter, which is an important part
of the abstract frame representation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5198 91177308-0d34-0410-b5e6-96231b3b80d8
rologEpilogInserter.cpp
600dee4aaee093b6b45011c5461f43fd7855a5d6 28-Dec-2002 Chris Lattner <sabre@nondot.org> * Convert to be a MachineFunctionPass instance
* Use new FunctionFrameInfo object to manage stack slots instead of doing
it directly
* Adjust to new MRegisterInfo API
* Don't take a TM as a ctor argument
* Don't keep track of which callee saved registers are modified
* Don't emit prolog/epilog code or spill/restore code for callee saved regs
* Use new allocation_order_begin/end iterators to simplify dramatically the
logic for picking registers to allocate
* Machine PHI nodes can no longer contain constant arguments

* Use a bitvector to keep track of registers used instead of a set
* Fix problem where explicitly referenced registers would be added to
regsused set and never removed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5196 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
580f9be7ff6ddbdf6914fc9243ab21fa21ffd34e 28-Dec-2002 Chris Lattner <sabre@nondot.org> * Convert to be a MachineFunctionPass instance
* Use new FunctionFrameInfo object to manage stack slots instead of doing
it directly
* Adjust to new MRegisterInfo API
* Don't take a TM as a ctor argument
* Don't keep track of which callee saved registers are modified
* Don't emit prolog/epilog code or spill/restore code for callee saved regs
* Use new allocation_order_begin/end iterators to simplify dramatically the
logic for picking registers to allocate
* Machine PHI nodes can no longer contain constant arguments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5195 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
10cb79b48430ea7679e83ae045aaeadea04a0cc5 28-Dec-2002 Chris Lattner <sabre@nondot.org> * Add printing support for FrameIndex operands


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5194 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
955fad1f99dd174023a1b2e6a1795958147b077d 28-Dec-2002 Chris Lattner <sabre@nondot.org> * A bunch of functionality and data was removed from MachineFunction and put
into a new MachineFunctionInfo class
* Implement new FunctionFrameInfo class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5193 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
e90fcb739a5b2778981ae70b63fc566e469e2014 28-Dec-2002 Chris Lattner <sabre@nondot.org> Frame info moved out of MachineFunction into a seperate object


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5192 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
ff863ba610cd577e8589fbc94b2fc00d74f8294a 25-Dec-2002 Chris Lattner <sabre@nondot.org> Adjust to simpler spill interface
Only spill and reload caller saved registers that are actually modified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5145 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
5124aec32fd492f473e9fdb8a2314c0a5b46e3ff 25-Dec-2002 Chris Lattner <sabre@nondot.org> Adjustments to work with the simpler spill interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5144 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
831fdcf0177a4eef66129cd6fb4138922c492bf0 25-Dec-2002 Chris Lattner <sabre@nondot.org> Remove dependency on SSARegMap.h by MachineFunction.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5143 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
0eb172cc4a398b7c3107c3711512933ea67b0a27 24-Dec-2002 Chris Lattner <sabre@nondot.org> Substantial fixes to live range handling, fixing several problems, getting
strtol to not miscompile, and fixing bug: 2002-12-23-LocalRAProblem.llx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5132 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
e500864619a0ff4cfd2b41e404e262b2e2891913 24-Dec-2002 Chris Lattner <sabre@nondot.org> Fix compilation on GCC 2.96


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5113 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
82bee0f2c89affbb8cd768d106d39ee7241944af 18-Dec-2002 Chris Lattner <sabre@nondot.org> * Fix several register aliasing bugs
* Add a new option to eliminate spilling of registers that are only used
within a basic block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5106 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
aed967cc9ebeaa02220d0652954dcf71dce842f2 18-Dec-2002 Chris Lattner <sabre@nondot.org> Implicit defs/uses list may be empty.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5103 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
e7d361d15a9fdf02e7c491c9bc6e8615f4464914 17-Dec-2002 Chris Lattner <sabre@nondot.org> Use new reginfo interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5099 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
egAllocSimple.cpp
86c69a6cbe0c4c08ab3f57bcd47b11b0479849fc 17-Dec-2002 Chris Lattner <sabre@nondot.org> Add prolog/epilog spills/reloads to counters
Move X86 specific alignment gunk to X86 files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5096 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
ae6404373715c776b50ee11dc91d5a008ddb9a64 17-Dec-2002 Chris Lattner <sabre@nondot.org> Fix many bugs, regallocator now saves callee-save registers instead of target


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5093 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
c21be922bf78bb8a90b0d572c02fdb051e0486b2 16-Dec-2002 Chris Lattner <sabre@nondot.org> * Fix a gross X86 hack that was intended to avoid allocating SP and BP
* Implement register alias set support


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5082 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
69c198863db1daccb2c80c2122c335a169d6b573 16-Dec-2002 Chris Lattner <sabre@nondot.org> Keep the stack frame aligned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5081 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
b74e83c89872a80f505bd7a83d1a21d159889c79 16-Dec-2002 Chris Lattner <sabre@nondot.org> Initial checkin of "local" register allocator. Bugs are still present.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5078 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocLocal.cpp
1d62cea90baad4bf98dbab94a158ae69523a0cf3 16-Dec-2002 Chris Lattner <sabre@nondot.org> Rename createSimpleX86RegisterAllocator to createSimpleRegisterAllocator.
Remvoe some dead code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5070 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
b167c04e626b7ee9609330a8ffa397a85611d49d 16-Dec-2002 Chris Lattner <sabre@nondot.org> Some simpliciations to the spill/reload interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5067 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
8ed9eb5ca3bbbb90dad28e5e21f0359c4710e478 15-Dec-2002 Chris Lattner <sabre@nondot.org> Simplify PHI node elimination significantly by doing it as a prepass to
register allocation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5066 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
9f366d7ab63d7c3427c570f249a32707d728a512 15-Dec-2002 Chris Lattner <sabre@nondot.org> Variety of small or trivial simplifications to the code, completely eliminated
the dependence on PhysRegClassMap


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5064 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
f60505599407e0b01b28412bd4c1e88ff80be435 15-Dec-2002 Chris Lattner <sabre@nondot.org> Remove unused savePhysRegToStack method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5061 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
01b08c59b46b1aaea6fd1d9204ed4f60e5b048a7 15-Dec-2002 Chris Lattner <sabre@nondot.org> Localize a map, remove another


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5060 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
8233e2fe01b76071a1875d8ffb9252c87ca4675b 15-Dec-2002 Chris Lattner <sabre@nondot.org> Give simple reg allocator a nice Pass Name


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5058 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
15f96db4d91eba096b7eaa36d8f891131412e064 15-Dec-2002 Chris Lattner <sabre@nondot.org> Add a big assert making sure 2 address instructions are formed right


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5057 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
3f91ad7ba72777e338a657900ce5536d4a0a68e3 15-Dec-2002 Chris Lattner <sabre@nondot.org> Fix a problem that occurs when PHI nodes have multiple entries for the same predecessor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5055 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
da7e453aac1af4a533dd73fc9e92911c863429a3 15-Dec-2002 Chris Lattner <sabre@nondot.org> Grab bag of minor cleanups. Export some statistics about the number of
spills and reloads emitted


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5054 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
2109f502d646a1bafc7b21a14347a71771a7b4cf 15-Dec-2002 Chris Lattner <sabre@nondot.org> Implement printing of MBB arguments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5053 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
198ab640bbb0b8e1cdda518b7f8b348764e4402c 15-Dec-2002 Chris Lattner <sabre@nondot.org> Simplify interfaces used by regalloc to insert code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5052 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
c2db1a95df09e30f190e51be98ed34fcbbbb7aec 15-Dec-2002 Chris Lattner <sabre@nondot.org> * Simplify code a bit by breaking the PHI node handling stuff out into a seperate
function from normal regalloc code
* Make the regalloc for a block a function instead of part of runOnMachineBB, which
makes it easier to see what's going on in runOnMBB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5051 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
9593fb1503067c16b4e21dd2b8af676d64ca0440 15-Dec-2002 Chris Lattner <sabre@nondot.org> * Remove some unneccesary instance variables
* Make allocateStackSpaceFor only allocate the right amount of space


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5048 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
dd444f9242df810c36a98663904b9ecdcb36284d 15-Dec-2002 Chris Lattner <sabre@nondot.org> pull inverse reg class mapping into a class that is sharable and out of the
target register description classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5045 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
abe8dd592d1c2e4e604e39fcf4598642fd6ea197 15-Dec-2002 Chris Lattner <sabre@nondot.org> Prune #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5044 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
ad44bd99ff32d996c7b1598129f069437d5bfc61 15-Dec-2002 Chris Lattner <sabre@nondot.org> Remove extraneous #includes, perform FIXME


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5043 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
71c83728b4940379ce969297bca99fd16f8e16ac 15-Dec-2002 Chris Lattner <sabre@nondot.org> Fix borkness with not using MachineBasicBlocks in PHI nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5035 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
0868667f78bb712a1b307cf525df105b35699924 13-Dec-2002 Misha Brukman <brukman+llvm@gmail.com> Fixed a bug where moves due to phis were being neglected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5019 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
74676da6f122bd7abfd2ba47c5291bc9092cee55 13-Dec-2002 Misha Brukman <brukman+llvm@gmail.com> Need to insert all moves due to PHI nodes before *ALL* jumps in a predecessor
basic block, as there could be multiple.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5016 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
972b03fa53ef2053172415f2d05cfc444c492e55 13-Dec-2002 Misha Brukman <brukman+llvm@gmail.com> This should be more correct: invalidates physical registers that are used in
an instruction to avoid using them to allocate to other virtual registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5013 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
59b3eedf31e0320d24060e064527c95457df5512 13-Dec-2002 Misha Brukman <brukman+llvm@gmail.com> Fixed bug with running out of registers. Also, reinstated namespace which
disappeared during the last checkin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5007 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
203b769b208d553684488d00cb01d5e09b57998a 13-Dec-2002 Misha Brukman <brukman+llvm@gmail.com> This should handle register allocating PHI nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5002 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
cea2245f04556ad718a7f18cb286b3150d5631a7 13-Dec-2002 Misha Brukman <brukman+llvm@gmail.com> Start allocating stack space at [ebp-4] to not overwrite the return address.
Also make all loads & stores 4-byte aligned for performance. ;)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4982 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
d1bedcced2882f5c23dc3c5c8d0587ad5513345d 13-Dec-2002 Misha Brukman <brukman+llvm@gmail.com> Take advantage of our knowledge of 2-address X86 instructions and
register-allocated them appropriately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4976 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
dd46e2a81d32778d1ad1421185261aafd7cffae4 05-Dec-2002 Misha Brukman <brukman+llvm@gmail.com> Added code generation for function prologues and epilogues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4930 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
06f8aecc882b90d23206233fe95b2df6078f987c 04-Dec-2002 Misha Brukman <brukman+llvm@gmail.com> Fun arithmetic with iterators aimed at fixing a bug: inserting instructions
after the *current* instruction while keeping the iterator in the same
'logical' place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4923 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
b72d221d619211335780b90f43bb129cf15fe0e7 04-Dec-2002 Chris Lattner <sabre@nondot.org> Print out direct global references


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4906 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
dc2ec004f1f29e0f61c60c71ef8bc94ae96694b8 04-Dec-2002 Misha Brukman <brukman+llvm@gmail.com> This should fix the bug seen with some registers not being allocated
correctly: skipping instructions by incorrectly incrementing the pointer.

Also adds support for building a reg-to-regclass map, and splits the function
for saving register to stack into two, one suitable for virtual registers
(which also assigns it a physical register) and one for simply storing back
physical registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4898 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
f815aebd20823698fca5db54dc8e0332f93e7ca8 03-Dec-2002 Chris Lattner <sabre@nondot.org> Checkin debug implementation of MCE


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4893 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeEmitter.cpp
f514d51b208cff16f750e6a11cc6eb652f1a23d3 02-Dec-2002 Misha Brukman <brukman+llvm@gmail.com> * Abstracted out stack space allocation into its own function
* Added saving of register values to the stack


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4858 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
0721867c8db12995c9db9abe095bf88d5acb9fca 22-Nov-2002 Misha Brukman <brukman+llvm@gmail.com> A simple (spilling) register allocator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4828 91177308-0d34-0410-b5e6-96231b3b80d8
egAllocSimple.cpp
b7825bc72534573c444e646dd1c3999ff787bbad 20-Nov-2002 Misha Brukman <brukman+llvm@gmail.com> Initialize the SSARegMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4782 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
af55be15dfa5321f470ce9734fabd858f5af7a88 18-Nov-2002 Chris Lattner <sabre@nondot.org> Print is const!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4737 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
570f55de8d9f53a0d8a5dc6dcbb6aaba46b1b6db 17-Nov-2002 Chris Lattner <sabre@nondot.org> Remove only uses of markDef/markDefAndUse methods


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4719 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
0006bd75201f340b95c1dbf71e50dc5de5ed9425 09-Nov-2002 Chris Lattner <sabre@nondot.org> Fix warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4649 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
5da2e6ac7016f61e3475cf6e982b2517a2294ca4 02-Nov-2002 Chris Lattner <sabre@nondot.org> Move function to cpp file from header


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4510 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.cpp
nstrSched/SchedPriorities.h
ec3e2f41cdba2a46fae92a6ab3ed5e03c67a5e74 01-Nov-2002 Chris Lattner <sabre@nondot.org> New iostream definitions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4482 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.h
26fbcec43bd4e32f44849ea1bb2889eb9f5ed0f4 31-Oct-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Restore support for indirect function calls (which briefly wasn't working
after I removed annotations on MachineInstr for the CallDescriptor).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4469 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrAnnot.cpp
188732c971e06823a6dcd3320d5f8429642acedb 30-Oct-2002 Chris Lattner <sabre@nondot.org> Remove fixme


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4447 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
6a592271fb2946a0704b06fd66199987cdd40b3c 30-Oct-2002 Chris Lattner <sabre@nondot.org> Add special code to make printing SSA form machine instructions nicer


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4446 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
2a79a0927c479b69316aa275c1f79c74d20e8040 30-Oct-2002 Chris Lattner <sabre@nondot.org> Use MRegisterInfo, if available, to print symbolic register names


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4438 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1049164aa6b06d91d9b3b557a9a213eaf3f6319a 30-Oct-2002 Chris Lattner <sabre@nondot.org> Implement structured machine code printing


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4435 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
achineInstr.cpp
88726188fe9a3e30ec9bdd9f2449905c0d8cedcf 30-Oct-2002 Chris Lattner <sabre@nondot.org> Make argsize calculation stuff optional, so that Targets without FrameInfo
objects yet don't die


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4427 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
ddd7fcb887be752ec8167276a697994ad9cb9c4e 30-Oct-2002 Chris Lattner <sabre@nondot.org> Implement autoinserting ctor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4426 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e316efc0e74442cffdda4889d30dca4fffcad749 30-Oct-2002 Chris Lattner <sabre@nondot.org> Rename annotation id


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4425 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
ba64363562a4e01a689cc1cca2a80fced530956a 29-Oct-2002 Chris Lattner <sabre@nondot.org> Merge with sparc backend


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4403 91177308-0d34-0410-b5e6-96231b3b80d8
Instruction.cpp
495fe2e087c5f4ec4372d8f6d2fdc27ff93c61c5 29-Oct-2002 Chris Lattner <sabre@nondot.org> X86 merge is complete, eliminate unused code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4400 91177308-0d34-0410-b5e6-96231b3b80d8
Function.cpp
a2bae305fb5a870c4ef753ed290a7ddea73ec82b 29-Oct-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Remove separate vector of implicit refs from MachineInstr, and
instead record them as extra operands in the operands[] vector.
Also, move CallArgsDescriptor into this class instead of making it an
annotation on the machine instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4399 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
achineInstrAnnot.cpp
e68a3435ee6a695f1fd4b80c3d482e396001e0f5 29-Oct-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Move CallArgsDescriptor into this class instead of making it an
annotation on the machine instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4398 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
f1757c414cbf7d1b7a11cc8287fd26c2ce13fb41 29-Oct-2002 Chris Lattner <sabre@nondot.org> Move TargetInstrDescriptors extern to the one .cpp file that refers to it:
MachineInstr.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4392 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
d9512caca8ec1e5488cdc94b34986c8ab2d447bb 29-Oct-2002 Chris Lattner <sabre@nondot.org> Use higher level methods, don't use TargetInstrDescriptors directly!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4389 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
egAlloc/PhyRegAlloc.cpp
8f7802727f796b60fed79bb76f908ff289ad382c 29-Oct-2002 Chris Lattner <sabre@nondot.org> Use higher level method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4386 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
ea9d2495956123c307d21893047b541f1dc3d061 29-Oct-2002 Chris Lattner <sabre@nondot.org> Remove #include, misleading comment, and a typedef used only once


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4383 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
88da77c7394144f8179a16a33eead31ea7168faa 29-Oct-2002 Chris Lattner <sabre@nondot.org> Inline typedef, eliminate unused method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4382 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/LiveRangeInfo.h
67eaf73c89649d3b3af6e092fae742d018a233b5 29-Oct-2002 Chris Lattner <sabre@nondot.org> Remove long dead #if 0


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4381 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
cb6b4bd1c6245ce78214210655eecf12cd8a4db2 29-Oct-2002 Chris Lattner <sabre@nondot.org> Add #includes that were eliminated from headers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4380 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
770feb4bfcd920498ec24296685495678579bb65 29-Oct-2002 Chris Lattner <sabre@nondot.org> De-inline methods


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4379 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegClass.h
a80848704ab0eb2cc7429bd3e2a8a4cc6246921b 29-Oct-2002 Chris Lattner <sabre@nondot.org> Remove #include


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4378 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
97d688515efd7719f1aa324f83f7c853700789a2 29-Oct-2002 Chris Lattner <sabre@nondot.org> Remove unneeded #include


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4377 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.h
9538cecf273fc6c8951b3f6bbbdef040fdbcf4df 29-Oct-2002 Chris Lattner <sabre@nondot.org> Remove forward decl


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4376 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
28760f4e77cd7d63859337c872df9e648faea062 29-Oct-2002 Chris Lattner <sabre@nondot.org> Make assertIGNode be private to the InterferenceGraph.cpp file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4375 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.cpp
egAlloc/InterferenceGraph.h
c5b8b1a0404d3a57d6fd7e4af5e0e6b2f3b51633 29-Oct-2002 Chris Lattner <sabre@nondot.org> MachineInstrInfo no longer #includes this header, so we must


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4366 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
9a8e4121aa4121100fb562134c098aeb38f70b37 28-Oct-2002 Chris Lattner <sabre@nondot.org> Remove all traces of the "Opcode Mask" field in the MachineInstr class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4359 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b98a53f201fd3652f4b7e37d1f2cb3b9b0775d45 28-Oct-2002 Chris Lattner <sabre@nondot.org> Remove more default arguments that are never used


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4358 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
7279122e668816bed0d4f38d3392bbab0140fad0 28-Oct-2002 Chris Lattner <sabre@nondot.org> Remove default operands that are never used


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4357 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
413746e9833d97a8b463ef6a788aa326cf3829a2 28-Oct-2002 Chris Lattner <sabre@nondot.org> * Make MachineOperand ctors private, so MachineOperand can only be created
by MachineInstr.
* Add a bunch of new methods to allow incremental addition of operands to the
machine instr instance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4356 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b7551ef115cc25d9abc87cabf67ad1717c8e69c9 28-Oct-2002 Misha Brukman <brukman+llvm@gmail.com> Replaced uses of deprecated `MachineFunction::get(BasicBlock *BB)'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4351 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
2f305989b395a0a8bf00c4b9dc140a6df051245e 28-Oct-2002 Chris Lattner <sabre@nondot.org> Remove two arguments that are never specified


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4348 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ccdf23ebbb4755f6e9c935618c1fa49f31d5c58c 28-Oct-2002 Chris Lattner <sabre@nondot.org> Rename some regalloc fields


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4346 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
f726e776b8a64df31499c25eabf052cae2a11809 28-Oct-2002 Chris Lattner <sabre@nondot.org> Eliminate usage of MachineBasicBlock::get


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4344 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
fcffe865f9003e592e09f1eea13da213eb1781e3 28-Oct-2002 Chris Lattner <sabre@nondot.org> Remove usage of MachineBasicBlock::get


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4342 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
fb3a0aed9b4225c653eb20313c4411dbb6c1c8c4 28-Oct-2002 Chris Lattner <sabre@nondot.org> Remove usage of MachineBasicBlock::get


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4341 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.cpp
b84a2ba877c670af013056c514fc80a56845fb87 28-Oct-2002 Chris Lattner <sabre@nondot.org> Eliminate unneccesary use of MachineBasicBlock::get


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4339 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
335d5c399b52c2507ad11048310edc51462f4811 28-Oct-2002 Chris Lattner <sabre@nondot.org> s/method/function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4338 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
d0aa0cdbc6fee00f2b2019633a9b9d00d301ac68 28-Oct-2002 Chris Lattner <sabre@nondot.org> Change MachineBasicBlock's to not be Annotations, instead they are kept as
part of a linked list tracked by MachineFunction. MachineBasicBlock::get
is now linear time instead of constant time, and thus is deprecated!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4337 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
achineBasicBlock.cpp
achineFunction.cpp
c5ddc8b74b1ab5f7e068a6db8071fef75527f0e7 28-Oct-2002 Chris Lattner <sabre@nondot.org> Make Scheduling Class variables be 'unsigned' instead of 'int'


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4333 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
133f079c8cf966d2222c2dda2de56d2cc600497e 28-Oct-2002 Chris Lattner <sabre@nondot.org> Rename the redundant MachineOperand::getOperandType() to MachineOperand::getType()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4331 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSelection/InstrSelectionSupport.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
572f5c8c0cf66cd6f53dda255cd8c4d8f27d8505 28-Oct-2002 Chris Lattner <sabre@nondot.org> Fairly major overhaul of MachineInstr & Operand classes
- Inline methods that are mostly a single line anyway
- Eliminate several methods that were never called
- Group methods a bit more consistently


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4329 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
0be79c6c1bc4fca31599f396528511506e3a1378 28-Oct-2002 Chris Lattner <sabre@nondot.org> Add #includes now that MachineInstr.h doesn't include llvm/Target/MachineInstrInfo.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4327 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSelection/InstrSelectionSupport.cpp
achineInstr.cpp
achineInstrAnnot.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
4a63b72df95b5c0d4af064cef19377f811ba6060 28-Oct-2002 Chris Lattner <sabre@nondot.org> Don't #include <Support/*>, #include "Support/*"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4325 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.h
e61a584f98b1133ca1b8e3b411a3c6fb892542e4 28-Oct-2002 Chris Lattner <sabre@nondot.org> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4323 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSelection/InstrSelection.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
e7d27fa00b3cd5b33f66a8180cea7edcc79f255a 28-Oct-2002 Chris Lattner <sabre@nondot.org> MachineFunction now includes MachineBasicBlock so there is no need to
reinclude it


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4322 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
55291ead559c902e46ddcebad50dbfefe50ec2d6 28-Oct-2002 Chris Lattner <sabre@nondot.org> Rename MachineCodeForBasicBlock to MachineBasicBlock


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4318 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSelection/InstrSelection.cpp
achineBasicBlock.cpp
achineFunction.cpp
32be9f6cd4e8803e169eee827afb548b85c24ace 28-Oct-2002 Chris Lattner <sabre@nondot.org> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4317 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
51a8d8528135ba4e3e4cf7cd711a9e47b19078a3 28-Oct-2002 Chris Lattner <sabre@nondot.org> Inline some methods from .cpp files into .h files, minor cleanups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4313 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
achineCodeForInstruction.cpp
6b9445389a226b4ac97ceb89a34ee1a5bf921714 28-Oct-2002 Chris Lattner <sabre@nondot.org> Minor cleanups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4312 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
227c3d355b017393963a690f9f27d1de7fa359bc 28-Oct-2002 Chris Lattner <sabre@nondot.org> Move machine code generation/destruction passes out of Sparc.cpp because
they are generic


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4310 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
1febf88ef422dd0fa2f9e0f0cb464c8cc6f97936 28-Oct-2002 Chris Lattner <sabre@nondot.org> Prune #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4307 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
0c68e8ce6e68c45d6b4cc55f3044cec8687c1702 28-Oct-2002 Chris Lattner <sabre@nondot.org> Updates to match misha's changes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4302 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
fce1143bcfa73f61845002fa50473d1a01384202 28-Oct-2002 Misha Brukman <brukman+llvm@gmail.com> Changed `MachineCodeForMethod' to `MachineFunction'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4301 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.h
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
achineFunction.cpp
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
78cee7e7ab9fde0453d3f1b7a317b1c1b41a1b4c 26-Oct-2002 Chris Lattner <sabre@nondot.org> Initial checkin of codegen infrastructure for LLVM-JIT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4282 91177308-0d34-0410-b5e6-96231b3b80d8
Function.cpp
Instruction.cpp
akefile
a0877726df7b62bea4cf81625cae6c34345efdc7 23-Oct-2002 Chris Lattner <sabre@nondot.org> Tell PassManager that this pass does not invalidate the CFG so that dominator
information and Loop info will not have to be recomputed after this runs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4269 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSelection/InstrSelection.cpp
0ceeb42c9701d995267a04899b3a6acfceb8fb9e 23-Oct-2002 Chris Lattner <sabre@nondot.org> Ensure definate initialization


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4263 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegClass.cpp
27a08935ca4ccf2121c2cf4bfbf148e2382c7762 23-Oct-2002 Chris Lattner <sabre@nondot.org> - Two minor improvements to the MachineInstr class to reduce footprint and
overhead: Merge 3 parallel vectors into 1, change regsUsed hash_set to be a
bitvector. Sped up LLC a little less than 10% in a debug build!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4261 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
egAlloc/PhyRegAlloc.cpp
cf911de3c61db9291e9338f09b435e9a4868c2de 14-Oct-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Significant improvement: GEP used by a load or store no longer generates
a separate ADD; instead just use the indexed load/store instruction!
Also, a bug fix: folding a GEP with a leading non-zero index with
its predecessor was incorrect: now it only happens if the predecessor
is pointing to an indexable type (aka SequentialType).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4168 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
1632e882f1a4a0a18be5821020a1bd2029656d80 13-Oct-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Use vectors instead of hash_maps for issueGaps and conflictLists.
These hash lookups were a major sink of time because they happen so often!
Also, add option to disable scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4138 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
acf0f704f91ec826049fd706883397086ae6d324 13-Oct-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Major bug fix: was not adding CD edges for RETURNs!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4137 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
cb202e3de51a82d72bc88823199f5cdcc1ceae2c 11-Oct-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Major bug fix: spill code for an instruction in a delay slot was
merrily being inserted before/after the instruction!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4116 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
cde3982b022c91736418eeb8a4ae6b76b39bf568 11-Oct-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Don't pad variables in stack slots for performance!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4115 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
aebdbe69886a196cfb509a9eb77a01aa13cb83b2 30-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Bug fix in folding getElementPtr instructions: don't fold one into
a predecessor if it has a non-zero first index and the predecessor
ends with a struct index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3982 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
41174595670a6d51671f174f44e376ada78d1841 29-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Convert DIRS to PARALLEL_DIRS. They can be built independently.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3972 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
1c397aae8ed24d4c589a846a52058274dea615ed 28-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Added a couple of helper methods for live range construction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3970 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.h
9d67cd1468fa99bf98c52d85a9462f18e63133f3 28-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Live ranges for Return value and return address of a Call are now
created here, simply by handling all implicit operands (which should
have been done anyway).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3969 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
f425884e275c66f975a68e56f24b33a2d1c6e5c6 28-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Fixed method getReturnValue(): it should return NULL if the
callee does not return a value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3968 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrAnnot.cpp
ad9c978874e02deff86257ad23de8e60069f84d9 28-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Fixed incorrect assertion: spill code for function ptr should be
handled like normal operands, not like other call arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3967 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
1c10f17552c4794d65c8d0019a4111b367518be6 27-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Sign-extend integer constants from original type size to 64 bits!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3958 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
0efb50761dfb9b925888f94d7eadaad12249c1f6 20-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add method IGNode::getCombinedDegree to count the sum of the degrees
of two nodes, excluding duplicates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3848 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
57e14bd75735b79b189d85f25c5b86983845ff15 20-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add PostOpts/ and rename PreSelection/ to PreOpts/.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3847 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
e8b57ef2603ed522083dc18e559ca4e20abf22ae 20-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add method MachineInstr::replace to rewrite a machine instruction in place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3843 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
32f81a3469bd132116f892269c64682845d54e86 20-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Allow copy coalescing in more cases: if sum of node degrees is more than
than #available regs, compute the sum excluding duplicates and if that
is less than #regs, go ahead and coalesce.
Add method IGNode::getCombinedDegree to count excluding duplicates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3842 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.cpp
egAlloc/LiveRangeInfo.cpp
25d80cdcc68080342aa65c037a4e9ebc67d3e256 20-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Peephole optimization pass on final machine code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3840 91177308-0d34-0410-b5e6-96231b3b80d8
ostOpts/Makefile
fafda59f0815b9cf2dadbbe871d5a02a5cf78dd7 20-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Files moved to CodeGen/PreOpts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3839 91177308-0d34-0410-b5e6-96231b3b80d8
reSelection/Makefile
reSelection/PreSelection.cpp
abf055c69857b62aa67fe159b23f03c7186ed726 20-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Moving these files from Code/PreSelection to here.
Original logs for PreSelection.cpp:

revision 1.2
date: 2002/09/17 23:50:32; author: lattner; state: Exp; lines: +1 -3
Don't put default parameter values into .cpp files, it breaks 3.x compilers

revision 1.1
date: 2002/09/16 15:31:13; author: vadve; state: Exp;
New preselection pass that specializes LLVM code for a target machine,
while remaining in legal portable LLVM form and preserving type
information and type safety.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3838 91177308-0d34-0410-b5e6-96231b3b80d8
reOpts/Makefile
5fda99744ecd82de0e8e044a5a3693808d2bc188 18-Sep-2002 Chris Lattner <sabre@nondot.org> Don't put default parameter values into .cpp files, it breaks 3.x compilers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3799 91177308-0d34-0410-b5e6-96231b3b80d8
reSelection/PreSelection.cpp
82f05d86106c712097986b2563d3b66f867db8ac 17-Sep-2002 Chris Lattner <sabre@nondot.org> Add support for GCC 2.96


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3777 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
00020d3d01ef91080ca6ba9790b2b198e8543895 16-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add subdirectory PreSelection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3739 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
7f90ea209aa1634f4be225d7603197c3b546292b 16-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> New preselection pass that specializes LLVM code for a target machine,
while remaining in legal portable LLVM form and preserving type
information and type safety.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3738 91177308-0d34-0410-b5e6-96231b3b80d8
reSelection/Makefile
reSelection/PreSelection.cpp
8c6936a58b75d7d185014839ea95377eb2fbd878 16-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Dump routine now writes out allocated register numbers if available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3737 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1318bed20c52792913405c0d41766f69829cf944 16-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Improve and fix error in allocating stack slots: adjust alignment after adding
base address of the relevant region (instead of assuming that each region
is maximally aligned).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3736 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
fd0ec8019769087f7618cbbd6e571e110290d24f 16-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add a version of ChooseRegOrImmed to handle numerical constants
introduced by InstrSelection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3735 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
87fbcd99b406a5154c65e4f8ac3712b6c3136d84 16-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add an assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3734 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
993243e599887bbe9b19ed2fae98fa94e0861b96 15-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Fix typos in previous checkin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3726 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.cpp
4bc23480087be69a227edc847624b35ab672a33d 15-Sep-2002 Chris Lattner <sabre@nondot.org> RegAllocCommon no longer includes CommandLine.h so we have to include it
here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3725 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
39c94e105fcfdb59555e8c3b5e6798a81bc3ea6b 15-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Break RA_DEBUG option into several levels to get better control over
debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3724 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.cpp
egAlloc/InterferenceGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/Makefile
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
521758fb79e439b33793f0adc2f455b487034bbd 15-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Remove unnecessary include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3723 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegAllocCommon.h
7e914a967dff2495ccc9f8f0da9fa855e812088d 15-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Break RA_DEBUG option into several levels to get better output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3722 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegAllocCommon.h
7c268984010494658aae70cb3e6bbbceb2ca9855 14-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Moving to lib/CodeGen/RegAlloc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3718 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegAllocCommon.h
597f81fea26716ea024072bc154395d773b08567 12-Sep-2002 Chris Lattner <sabre@nondot.org> Fix a bug I introduced into the code generator. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3694 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
106ff4551c9c35bb6bcbdd6ca50543b100a7658e 11-Sep-2002 Chris Lattner <sabre@nondot.org> - Change getelementptr instruction to use long indexes instead of uint
indexes for sequential types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3681 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
823c4abb58bbe2a502657e068b011d864cc6d896 08-Sep-2002 Chris Lattner <sabre@nondot.org> Make sure the leakdetector is told about temporary Phi nodes also, so it doesn't
erroneously report them as leaks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3624 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
a175ed419459f9d2e3cee67d43de3ced28b2341d 08-Sep-2002 Chris Lattner <sabre@nondot.org> Inform the memory leak detector that TmpInstruction objects should not be
subject to memory leak checking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3623 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
0c4e886dbf1cf7736819a49d5143ae1c2a0cfb79 03-Sep-2002 Chris Lattner <sabre@nondot.org> - Renamed Type::isIntegral() to Type::isInteger()
- Added new method Type::isIntegral() that is the same as isInteger, but
also accepts bool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3574 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
b85d265b16110454a466db9e909a727b746e6c30 28-Aug-2002 Anand Shukla <ashukla@cs.uiuc.edu> moved this file from lib/Reoptimizer/Mapping


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3519 91177308-0d34-0410-b5e6-96231b3b80d8
apping/FInfo.cpp
894e83010014ac3f3a59a8e5362fa454e37994b3 28-Aug-2002 Anand Shukla <ashukla@cs.uiuc.edu> Makefile for new sub directory


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3518 91177308-0d34-0410-b5e6-96231b3b80d8
apping/Makefile
2caa9204b2e667297ad32615ec3363ce2c6b9d74 28-Aug-2002 Anand Shukla <ashukla@cs.uiuc.edu> Added Mapping subdir


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3517 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
74c83e44fa1f6ef545be4b0ccbfc903818ef6ae9 24-Aug-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Use newly-added type inspection support in InstTreeNode subclasses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3501 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
685133382d214b0ea7a2cf40e4cd2d2c5cff8dd4 24-Aug-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Moved code here to extract memory instruction indices and to check
whether FoldGetElemNodes should be called. This is machine-independent
but was in the Sparc directory. This is in a new function: GetMemInstArgs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3500 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
6656c43ac725861bf2d8ee3a73714f5f0fbb3955 23-Aug-2002 Anand Shukla <ashukla@cs.uiuc.edu> Added #include <alloca.h>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3491 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
cc63f1c67456f41b25e8ccb8c1dce72067ddbadf 23-Aug-2002 Chris Lattner <sabre@nondot.org> Eliminated the MemAccessInst class, folding contents into GEP class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3487 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelectionSupport.cpp
da920aa55bcc779aef1dd3fa6e7e29c99b4e03c7 22-Aug-2002 Vikram S. Adve <vadve@cs.uiuc.edu> dumpNode() does not need to print MachineInstrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3444 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
85af131d9e76e57244c8704792647f173443ffb6 15-Aug-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Unary Not (boolean and bitwise) is no longer a separate LLVM instruction
but is instead implemented with XOR. Note that the InstrForest opLabels
for Not and BNot remain the same, i.e., the XOR is recognized and
represented as a (boolean or bitwise) Not when building the instruction
trees. But these tree nodes are now binary, not unary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3343 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
e2a78e31862c2b6142491db5a67065756d6870be 14-Aug-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add method MachineInstr::substituteValue() which substitutes
one Value with another one in all operands and implicit references
of the machine instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3306 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
035dfbe7f2d109008d2d62d9f2a67efb477a7ab6 09-Aug-2002 Chris Lattner <sabre@nondot.org> * Removed extraneous #includes
* Fixed file headers to be consistent with the rest of LLVM
* Other minor fixes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3278 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelectionSupport.cpp
achineInstr.cpp
achineInstrAnnot.cpp
179cdfb5c844005ed94409e9405473029f2296a6 09-Aug-2002 Chris Lattner <sabre@nondot.org> * Removed extraneous #includes
* Fixed file headers to be consistent with the rest of LLVM
* Other minor fixes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3277 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.cpp
nstrSched/SchedPriorities.h
egAlloc/PhyRegAlloc.cpp
b91b31c12df168816702a5e58ecdc56031b27ef6 09-Aug-2002 Chris Lattner <sabre@nondot.org> We are using std::vector, so remove extraneous namespace prefixes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3275 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
b0cfa6dfecc882866a45353466a57db4ea937d95 09-Aug-2002 Chris Lattner <sabre@nondot.org> Very minor cleanups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3271 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
5f0eb8da62308126d5b61e3eee5bee75b9dc5194 08-Aug-2002 Chris Lattner <sabre@nondot.org> - Cleaned up the interface to AnalysisUsage to take analysis class names
instead of ::ID's.
- Pass::getAnalysis<> now no longer takes an optional argument


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3265 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
dd5b49512976df3225b67f9685642253186cde3d 08-Aug-2002 Chris Lattner <sabre@nondot.org> - Cleaned up the interface to AnalysisUsage to take analysis class names
instead of ::ID's.
- Pass::getAnalysis<> now no longer takes an optional argument


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3264 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
1b51b1b4f9c191c070554df5d1f86b5aeefd0453 04-Aug-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add function GetConstantValueAsUnsignedInt.
Fix 2 bugs in FoldGetElemChain so index vector is not modified
when no GEPs are folded in, and so a hasLeadingZero is computed
only for the last folded GEP, not the one after that if any.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3244 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
2e1749bbf8c25a99c6b951e4d2fb771f906434ea 30-Jul-2002 Chris Lattner <sabre@nondot.org> * Move InstructionSelection Pass here instead of living in Sparc.cpp. It
is platform independant afterall.
* Object orientize the functions, cleanup code a bit. Instead of static
global functions, the helpers for instruction selection are now part of
the InstructionSelection Pass class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3147 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
67fcce2b1968494d776f79413c216777c3f30d7e 30-Jul-2002 Chris Lattner <sabre@nondot.org> Remove unused vector


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3143 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
d8bbc06c8782866ec2fa3226b0fe2f77c4897b09 25-Jul-2002 Chris Lattner <sabre@nondot.org> Refix stuff for GCC 2.95, 3.0.4 & 3.1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3094 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
e95ce74b80c5b366abfa1f67254219bf24b05ea3 25-Jul-2002 Mehwish Nagda <nagda@cs.uiuc.edu> now removes deleted nops from MachineCodeForInstruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3090 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
0c0edf8afc35a42b15a24ebb5fa5f3fc674290ae 25-Jul-2002 Chris Lattner <sabre@nondot.org> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3075 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
achineFunction.cpp
achineInstr.cpp
cb6289a73d8caaad87da1b26f03b9b63b7b712cc 24-Jul-2002 Chris Lattner <sabre@nondot.org> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3058 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.h
1089790546ae7c5e8bcce99e60b19b3b23546bf3 24-Jul-2002 Chris Lattner <sabre@nondot.org> Non-standard hash classes are not in the std:: namespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3057 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.h
09ff1126dab045d68be7d9e8ae7ad0601002a718 24-Jul-2002 Chris Lattner <sabre@nondot.org> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3056 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.cpp
nstrSched/SchedPriorities.h
achineFunction.cpp
6cf7849c1ab6782c583d2d13a4bab5760e9c202d 23-Jul-2002 Mehwish Nagda <nagda@cs.uiuc.edu> moving to the Reoptimizer/Mapping dir


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2993 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/MappingInfo.cpp
5ff62e90d0bc321206023897edc1e2691cb0fbb6 22-Jul-2002 Chris Lattner <sabre@nondot.org> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2985 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSelection/InstrSelection.cpp
egAlloc/PhyRegAlloc.cpp
cafc0d20bb68d539c46dcbb560616240225634a8 20-Jul-2002 Mehwish Nagda <nagda@cs.uiuc.edu> changed size computation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2974 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/MappingInfo.cpp
e01166591f7c0d0a560c9c71e07eb1d5a2f02bef 18-Jul-2002 Mehwish Nagda <nagda@cs.uiuc.edu> added check for Function with 0 BB


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2942 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/MappingInfo.cpp
3115540870939b2bd7100c6552339c3d30ac0fef 16-Jul-2002 Mehwish Nagda <nagda@cs.uiuc.edu> Now will profile all Basic Blocks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2922 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/MappingInfo.cpp
b43086b4b7a3e79f71fc19d150803ca3c912975c 16-Jul-2002 Mehwish Nagda <nagda@cs.uiuc.edu> Initial checking : Writes LLVM - MI mappiing to the .s file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2911 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/MappingInfo.cpp
e683f773a47423bbbaf90980cefea6f19c6f6d83 11-Jul-2002 Anand Shukla <ashukla@cs.uiuc.edu> added std:: to endl


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2875 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
cd13e7a5ee81dd4de7fc6d98f65b256a5eb3f994 10-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Fix print of BB name in dump().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2861 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
3bc9ef9317982cd7157ff29fb6bc3a60a11c3f78 10-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add support for marking each operand as a %hh, %hm, %lm or %lo.
Represent previous bools and these ones with flags in a single byte
per operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2860 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
d58290ed3b0bba30954a16db47a932d2e9716083 09-Jul-2002 Anand Shukla <ashukla@cs.uiuc.edu> changed mem_fun to std::mem_fun


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2847 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
f5af636dbeb516e2d929e026d997841ffb431948 09-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Significant changes to correctly spill CC registers and to correctly
handle conditional move instructions:
-- cpMem<->Reg functions now support CC registers (int and FP) correctly.
-- Scratch registers must be explicitly provided to cpMem<->Reg when
needed, since CC regs need one to be copied to/from memory.
-- CC regs are saved to a scratch register instead of stack.
-- All regs used by a instruction are now recorded in MachineInstr::regsUsed,
since regs used to save values *across* an instruction are not obvious
either from the operands or from the LiveVar sets.
-- An (explicit or implicit) operand may now be both a def and a use.
This is needed for conditional move operations.
So an operand may need spill code both before and after the instruction.
-- class MachineCodeForBasicBlock is now an annotation on BasicBlock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2833 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
c9a0ca5171f8244270310a757a13190d5555c6bf 09-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> MachineInstr* in vector are not const (and never really were)
because operands may be modified directly to set register.
Also, class MachineCodeForBasicBlock is now an annotation on BasicBlock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2832 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
45c3877b5c7a42454e78c35b24f973508cfa3738 09-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Rename static struct Initializer to avoid name conflict with BB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2831 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
432e1ca621af9a3d51fe658d8c9460828bdd8524 09-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Fix printing of BB in dump.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2830 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
1dcfd3c1a6af9e118d42c54a7d8e680fb6aae4ff 09-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Moved class MachineCodeForBasicBlock to MachineCodeForBasicBlock.h.
This class is now an annotation on BasicBlock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2829 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
bf82a42d1c325b235923bddcd9b7f995027cc91c 09-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> MachineInstr::dump() now takes no arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2828 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
11991ac70f25d8224d026e76af4f1ed41576eac9 09-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Implementation of class MachineCodeForBasicBlock.
Moved here from MachineInstr.cpp to make it an annotation on BasicBlock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2827 91177308-0d34-0410-b5e6-96231b3b80d8
achineBasicBlock.cpp
0baf1c0911017be6626cf4fe4cc78d345fdc9a27 09-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> A single MachineInstr operand may now be both a def and a use,
so additional dep. edges have to be added.
This was needed to correctly handle conditional move instructions!
MachineCodeForBasicBlock is now an annotation on BasicBlock.
Renamed "earliestForNode" to "earliestReadyTimeForNode".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2826 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.cpp
nstrSched/SchedPriorities.h
c2580ddb0888c0b823dab5e0b9f27bbf4afdd705 09-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> getUsableUniRegAtMI interface simplified slightly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2822 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
7a4be9580e095ca4bffd16ec6ec4882f6270fb09 09-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Moved class MachineCodeForBasicBlock to MachineCodeForBasicBlock.{cpp,h}.
An (explicit or implicit) operand may now be both a def and a use.
Also add a set of regs used by each instruction.
dump() no longer takes an optional argument, which doesn't work in gdb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2821 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1871b2f1c23b522870aa69fd908bbaccced22e71 09-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> MachineInstr* in vector are not const (and never really were)
because operands may be modified directly to set register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2820 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.h
000f60d1b14f9b39a39f86b8100d2c77f851ce08 30-Jun-2002 Chris Lattner <sabre@nondot.org> Remove tag that just clutters diffs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2807 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
cfb22d3c14b53bc73ec90f7d471c2d2d2453cf03 25-Jun-2002 Anand Shukla <ashukla@cs.uiuc.edu> changes to make it compatible with 64bit gcc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2791 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
egAlloc/PhyRegAlloc.cpp
7e70829632f82de15db187845666aaca6e04b792 25-Jun-2002 Chris Lattner <sabre@nondot.org> MEGAPATCH checkin.

For details, See: docs/2002-06-25-MegaPatchInfo.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2779 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
0b12b5f50ec77a8bd01b92d287c52d748619bb4b 25-Jun-2002 Chris Lattner <sabre@nondot.org> MEGAPATCH checkin.

For details, See: docs/2002-06-25-MegaPatchInfo.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2778 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
achineFunction.cpp
85c5465e072b3bbebb1f5e112fb2db46f7fba148 23-May-2002 Chris Lattner <sabre@nondot.org> Convert RegClass::IsColorUsedArr from a dynamically allocated array to
a vector. This makes asserting on array bounds easier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2731 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
egAlloc/RegClass.h
70e60cbd4dd59b61e3e9d0a55f24cf92b0dc8724 22-May-2002 Chris Lattner <sabre@nondot.org> Move debug options out of header files so that the header does not have
to #include CommandLine.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2712 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedPriorities.h
egAlloc/PhyRegAlloc.cpp
e87adaac31aff4c442c793012f9cb1508e4aecad 22-May-2002 Chris Lattner <sabre@nondot.org> Avoid #including CommandLine.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2710 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegAllocCommon.h
ad86b74bafe3f25000d0172fda4479c0a305ff3a 20-May-2002 Chris Lattner <sabre@nondot.org> Hide debugging options


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2676 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSelection/InstrSelection.cpp
egAlloc/PhyRegAlloc.cpp
5245f853c54e422b3004d5f80d2aaaebbceb8468 20-May-2002 Chris Lattner <sabre@nondot.org> Don't lose namespace qualifications on previous patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2664 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
0243ff9e62c3c2c5d230a24b9901ecce7807bb38 19-May-2002 Vikram S. Adve <vadve@cs.uiuc.edu> InstrnsBefore and InstrnsAfter are now vectors instead of deques.
May be slightly less efficient but significantly reduces special
cases interfaces in code generation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2649 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
36f0a9e5a63fd6f31ae47fd285ce133bde0c5a1e 19-May-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Better folding getelementptr operations with mixed
array and struct indexes.
Update operand values in CallArgsDescriptor (a new class)
when replacing constant values with immediates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2645 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
629b70f274deb5d8ff19d7046b10df0fe1c84dc3 19-May-2002 Vikram S. Adve <vadve@cs.uiuc.edu> cpValue2Value now needs a vector of MachineInstr to store return values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2644 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
7e684a956a70980160ff038047fd5f6696461db4 19-May-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Annotation class for MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2643 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstrAnnot.cpp
dabb41d93de9b2d8f2d506caf611311bce6a188c 19-May-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Numerous bug fixes:
-- passing FP arguments to functions with more than 6 arguments
-- passing FP arguments to varargs functions
-- passing FP arguments to functions with no prototypes
-- incorrect coloring for CC registers (both int and FP): interferences
were being completely ignored for int CC and were considered but no
spills were marked for fp CC!

Also some code improvements:
-- better interface to generating machine instr for common cases
(many places still need to be updated to use this interface)
-- annotations on MachineInstr to communicate information from
one codegen phase to another (now used to pass information about
CALL/JMPLCALL operands from selection to register allocation)
-- all sizes and offests in class TargetData are uint64_t instead of uint


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2642 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
9b625030c8427a3bc56f5993c0b5b214c393042f 06-May-2002 Chris Lattner <sabre@nondot.org> Replace all usages of Type::isPointerType with isa<PointerType>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2486 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
86e9187dccd1ef73cc2d498bb4828162d11dd650 29-Apr-2002 Chris Lattner <sabre@nondot.org> Add neccesary #include


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2406 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
c6f3ae5c66c8e0dab6a2bd9601d0e253ef9ba794 29-Apr-2002 Chris Lattner <sabre@nondot.org> Eliminate duplicate or unneccesary #include's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2397 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.cpp
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
achineCodeForInstruction.cpp
egAlloc/IGNode.h
egAlloc/InterferenceGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
egAlloc/RegClass.h
96c466b06ab0c830b07329c1b16037f585ccbe40 29-Apr-2002 Chris Lattner <sabre@nondot.org> Add new optional getPassName() virtual function that a Pass can override
to make debugging output a lot nicer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2395 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
egAlloc/PhyRegAlloc.cpp
97453d60c6d7a3235d974e755bd9736c4da6588a 28-Apr-2002 Chris Lattner <sabre@nondot.org> Include appropriate file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2379 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
31bcdb822fe9133b1973de51519d34e5813a6184 28-Apr-2002 Chris Lattner <sabre@nondot.org> Split ConstantVals.h into Constant.h and Constants.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2378 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelectionSupport.cpp
1b7f7dc4b45a900fae2e9b062d588a995935727a 28-Apr-2002 Chris Lattner <sabre@nondot.org> Eliminate the cfg namespace, moving LoopInfo, Dominators, Interval* classes
to the global namespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2370 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
8fc2f2072de83665ae20e06929e28317f449bcdf 28-Apr-2002 Chris Lattner <sabre@nondot.org> Remove all contents of the cfg namespace to the global namespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2369 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
483e14ee0412a98db1fb0121528d8d621ae3dfdb 27-Apr-2002 Chris Lattner <sabre@nondot.org> s/Method/Function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2336 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedPriorities.cpp
nstrSched/SchedPriorities.h
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
f57b845547302d24ecb6a9e79d7bc386f761a6c9 27-Apr-2002 Chris Lattner <sabre@nondot.org> * Rename MethodPass class to FunctionPass
- Rename runOnMethod to runOnFunction
* Transform getAnalysisUsageInfo into getAnalysisUsage
- Method is now const
- It now takes one AnalysisUsage object to fill in instead of 3 vectors
to fill in
- Pass's now specify which other passes they _preserve_ not which ones
they modify (be conservative!)
- A pass can specify that it preserves all analyses (because it never
modifies the underlying program)
* s/Method/Function/g in other random places as well


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2333 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
egAlloc/PhyRegAlloc.cpp
d23a229c4cd4019ecfdd18b855c32146922d1b14 25-Apr-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Don't record instructions for copying method arguments in the
AddedInstrns sets for the first machine instruction. It is hard
to ensure that the right order is preserved, and sure enough, the
order was broken. Instead, use a separate set for the function entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2318 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
4876209aa6ac2db626ab21e996b37005c03600da 25-Apr-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Don't record instructions for copying method arguments in the
AddedInstrns sets for the first machine instruction. It is hard
to ensure that the right order is preserved, and sure enough, the
order was broken. Instead, use a separate set for the function entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2312 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
93240fe6b1f79e9ccb271a214a01141f8c2c123a 25-Apr-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Improve printing during dumps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2311 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
03d33bd2640806ce8e661acf7bcfa3726a14d606 25-Apr-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Optional args are no longer allocated as they are discovered.
(This can be improved to avoid making the initial pass over the method.)
Also, ensure automatic vars and reg. spills areas are not extended
if their sizes are used for computing some other offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2310 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
167b9629e18bace3e735b87e21ecf7b967672a4b 15-Apr-2002 Chris Lattner <sabre@nondot.org> Only emit message if DEBUG_RA is on


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2252 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegClass.cpp
73e214244f2403b5ba0ef81b8839600f3c8ffebc 09-Apr-2002 Chris Lattner <sabre@nondot.org> Move FunctionArgument out of iOther.h into Argument.h and rename class to
be 'Argument' instead of FunctionArgument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2216 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
9bbf99de5faa3565d4b6cf22e50d07437f0d2328 09-Apr-2002 Chris Lattner <sabre@nondot.org> No need to reserve space, erasing does not change the size of the container.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2201 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
af50d00829b8d9ddbaf819619cd14758c6b96e21 09-Apr-2002 Chris Lattner <sabre@nondot.org> * Add a file header with some information
* Delete the DelaySlotInfo objects created by the SchedulingManager class.
These leaked objects were accounting for 3/4 of the memory leaked by the
backend, so this is a relatively major win.
* Reorganize SchedulingManager::getDelaySlotInfoForInstr so that it has
better code locality (making it easier to read).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2197 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
f3dd05ca03c9c649bf5b8891b73cda1e11ab914e 09-Apr-2002 Chris Lattner <sabre@nondot.org> Clean up the ownership model a bit so that nodes actually get deleted more
frequently. This still leaks edges quite a bit, but it leaks no nodes
(I think).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2190 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
0b0ffa0800c51589a3b2f2371c9f6a0092bddaeb 09-Apr-2002 Chris Lattner <sabre@nondot.org> Convert AddedInstrMapType to contain AddedInstrns by value instead of by
pointer so that they do not all get leaked!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2188 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
244212a80b7c86fde230d06e785063ab74d4bd24 09-Apr-2002 Chris Lattner <sabre@nondot.org> GCC3.0 is reported to die without an alloca definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2186 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
7884cd17aa830bc8d4af1c082cc2d1f7460ccf34 09-Apr-2002 Chris Lattner <sabre@nondot.org> Don't leak memory like a seive


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2185 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
69a34cddaf00ebd4ffdcbda15db0333134298703 09-Apr-2002 Chris Lattner <sabre@nondot.org> Value cannot be directly instantiated. I think that this code was TRYING to
make a PHI node, although it was badly broken. This keeps tests passing, so
we'll go with it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2184 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
b7653df0853f06112b741be09f1b7ae5a6aa6fde 09-Apr-2002 Chris Lattner <sabre@nondot.org> s/Method/Function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2180 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedPriorities.cpp
egAlloc/PhyRegAlloc.h
egAlloc/RegClass.h
4d669b510c1d609c6b3fe98ac14ae38bd7c011f6 09-Apr-2002 Chris Lattner <sabre@nondot.org> s/method/function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2177 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
egAlloc/RegClass.cpp
2fbfdcffd3e0cf41422aaa6c526c37cb02b81341 07-Apr-2002 Chris Lattner <sabre@nondot.org> Change references to the Method class to be references to the Function
class. The Method class is obsolete (renamed) and all references to it
are being converted over to Function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2144 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
achineFunction.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
1f818610285249f94626d53ebf54e9bf7cf65f5b 31-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add method clearCallInterference().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2071 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
fa79e6e869264f6bf8b134302e4218f08f1f0ced 31-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Include temp. values when computing max. size of stack frame!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2070 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
1792779edffe9e41cb0c07298b4dd0ef4acb0f2a 31-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Fix a bug in previous bug fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2069 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
1a53f03392ea21a47745430057f0b342129dd902 31-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Bug fix: address used by indirect call instruction should also
be marked as having a Call Interference, even though it may not
be live after the call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2068 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
79df7c0aaa18129e55968c8783ef8346807bd4af 26-Mar-2002 Chris Lattner <sabre@nondot.org> Change references from Method to Function
change references from MethodARgument to FunctionArgument


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1991 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
9c4f7268c6f149e0d81c7c1d24d73d944c1909ef 24-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Destroy MethodLiveVarInfo after register allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1976 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
97fb99bc540c1b5611d85d09191f4c5311cf075a 24-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Use deterministic iterator for SchedGraphs. This is actually not
useful right now when we only do local scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1975 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
1392d6903cff7a770674ddaa8651667c179c5c51 24-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Bug fix: nextToTry was not being initialized in one case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1974 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.cpp
7c7e46ae5fab1b672bb4f4cd5d04884f93f762c4 24-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add option to disable scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1973 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.h
802cec485f4d1a1b48df10a91b1f96945325c87e 24-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add option to disable scheduling.
Destroy live-variable information after scheduling so it is
recomputed before later phases (e.g., reg. allocation).
Use deterministic iterator to enumerate sched graphs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1972 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
cf8a98f2c20811c03b3cb7f0c6e00e141f9db24f 24-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Minor changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1971 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
ded1bf8cd8e5e289e038b8f2b30801d25fab6875 24-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Re-fix bug: Put back MachineCodeForInstruction::dropAllReferences.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1970 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
e4e4d4e2f9d49855712f6dc9e785d5d9416f0dab 24-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Fix padding for variables allocated on stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1969 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
c941b87397877a2fc76980935765e70262828e4c 24-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Major overhaul to FoldGetElemPtr to handle mixed array and struct refs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1968 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
4e7bc49b54c18440c1a5ffdffbee75c7371f857e 24-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Use deterministic iterator for treeRoots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1967 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
d95919cbd09007f3e363180c3059a63287f4edd1 24-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Change treeRoots data structure to make enumeration deterministic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1962 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
e7506a366e8bd56c97d10beb68e4db953aebaeca 23-Mar-2002 Chris Lattner <sabre@nondot.org> Rename Method to Function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1957 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.h
egAlloc/LiveRangeInfo.h
23a4c8fcb5135622d007b162a5e3fcd44dc2ac0c 18-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Big bug fix: getUsableUniRegAtMI needed to return values in arguments
but did not pass the arguments by reference!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1906 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
89e2da034a02cd33b306b59dbbf607650cca1c4c 18-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Added function computeOffsetforLocalVar to check how big the
offset-from-FP will be before allocating space for a local variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1905 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
c356e565a69e56993d018c7d94194e504a78285f 18-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Bug fix in setting CC register.
Also use distinct names for the three types of SetMachineOperand
to avoid painful overloading problems and errors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1904 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
42f632041dcce6335349512724f5ce648f46f08b 18-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Constants are now added to the constant pool only when a load
instruction is actually generated for them.
Rename the different versions of SetMachineOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1903 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
1ed009f66ed7b5311c8997d785f1a71cd82c9130 18-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Use vector for machine instructions returned by GetInstructionsByRule.
Fix constants in instructions generated for Phi elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1902 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
705f95e0b7cb36b9f3786d4e8397f5226e4acd05 18-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Big bug fix: getUsableUniRegAtMI needed to return values in arguments
but did not pass the arguments by reference!
Also added a function to get a register class by ID.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1901 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
155d2c93848cece13909a4c4c64a54bafcc8f24d 26-Feb-2002 Anand Shukla <ashukla@cs.uiuc.edu> Change to make it build with GCC 2.95.3


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1802 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.h
b91ca1f7d69172713e44fc04ce46a4db7dd64739 25-Feb-2002 Chris Lattner <sabre@nondot.org> * Make it compile with GCC 3.0.4


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1788 91177308-0d34-0410-b5e6-96231b3b80d8
achineFunction.cpp
dfb8b95c2d94d71ec8dd6aae27130b5b485b4718 25-Feb-2002 Chris Lattner <sabre@nondot.org> * Silence signed/unsigned warnings
* Make it compile with GCC 3.0.4


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1787 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedPriorities.h
455889aa79e3463a4b0f2161e3d9d72a683268b6 12-Feb-2002 Chris Lattner <sabre@nondot.org> * Pull BasicBlock::pred_* and BasicBlock::succ_* out of BasicBlock.h and into
llvm/Support/CFG.h
* Make pred & succ iterators for intervals global functions
* Add #includes that are now neccesary because BasicBlock.h doesn't include
InstrTypes.h anymore


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1750 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.h
nstrSelection/InstrSelection.cpp
221d688a5ef21a22c2368c9fff0e92d7966c95e5 12-Feb-2002 Chris Lattner <sabre@nondot.org> Method.h no longer includes BasicBlock.h
Method::inst_* is now in llvm/Support/InstIterator.h
GraphTraits specializations for BasicBlock and Methods are now in llvm/Support/CFG.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1746 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.cpp
nstrSelection/InstrForest.cpp
achineFunction.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
2f898d207466bf233b55607e404baca302bc7b5e 05-Feb-2002 Chris Lattner <sabre@nondot.org> Convert operand iterator over to work like an STL iterator


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1720 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
748697d2421051b3ff1263d13cccaf410f3e7034 05-Feb-2002 Chris Lattner <sabre@nondot.org> Minor change: Methods that return ValueSet's that are guaranteed to be valid
return references instead of pointers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1719 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.cpp
egAlloc/IGNode.cpp
egAlloc/IGNode.h
egAlloc/PhyRegAlloc.cpp
3773094a1da7d7fc76a2491211fadf734c3b8645 05-Feb-2002 Chris Lattner <sabre@nondot.org> * Code Cleanups
* Removal dependencies on Type.h & remove uses of getTypeID()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1718 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
569ea239f0556f1341a216eac8aed4d3cdaecbf1 05-Feb-2002 Chris Lattner <sabre@nondot.org> * Code Cleanups of IGNode.h
* Removal of getTypeID() methods, and dependence on llvm/Type.h, from IGNode & LiveRange


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1717 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
egAlloc/LiveRange.h
7471a7b019b2c4bb9d91a1e1aaf6328e2fc97256 05-Feb-2002 Chris Lattner <sabre@nondot.org> Must include SetOperations to do set_*


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1716 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
296b7730e355a657df9fc5355c2cbe4985219903 05-Feb-2002 Chris Lattner <sabre@nondot.org> * Eliminate the LiveVarSet class, making applyTranferFuncForMInst a static
function in the one .cpp file that uses it. Use ValueSet's instead.
* Prepare to delete LiveVarSet.h & LiveVarSet.cpp
* Eliminate the ValueSet class, making all old member functions into global
templates that will eventually be moved to Support.
* Eliminate some irrelevant const's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1712 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
5e5dfa307a6999cef7cba6d1a594f880ab72c043 05-Feb-2002 Chris Lattner <sabre@nondot.org> * Eliminate the LiveVarSet class, making applyTranferFuncForMInst a static
function in the one .cpp file that uses it. Use ValueSet's instead.
* Prepare to delete LiveVarSet.h & LiveVarSet.cpp
* Eliminate the ValueSet class, making all old member functions into global
templates that will eventually be moved to Support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1711 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedPriorities.cpp
egAlloc/LiveRangeInfo.h
egAlloc/PhyRegAlloc.h
0665a5f1f5716a69982f4bcd654e5ace975d0c0a 05-Feb-2002 Chris Lattner <sabre@nondot.org> * Code Cleanups
* Introduce RAV to allow stream I/O instead of using printValue


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1710 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
4996084acfd87c7a7eecb28f9b0c8ea4961c48f2 05-Feb-2002 Chris Lattner <sabre@nondot.org> * Add a #include not indirectly included any more


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1707 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.cpp
egAlloc/PhyRegAlloc.cpp
4d7fc119b8e717f221a4efaac79214b2d20d2ed1 04-Feb-2002 Chris Lattner <sabre@nondot.org> * RegisterAllocation _uses_ LiveVar analysis, instead of creating it's own copy


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1701 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
9adb7ad457b38de13dd16b86a90f645695dae5a0 04-Feb-2002 Chris Lattner <sabre@nondot.org> * The itf exposed by InstrScheduling is now a single function to create the right pass
* InstructionScheduling is now a real pass
* InstrSched _uses_ LiveVar analysis, instead of creating it's own copy many times
through a loop. In this was LiveVarAnalysis is actually even SHARED by Register
allocation.
* SchedPriorities is now passed the live var information in


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1700 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedPriorities.cpp
nstrSched/SchedPriorities.h
14ab1ce0209343b0e2c424ab8ba32261d4474349 04-Feb-2002 Chris Lattner <sabre@nondot.org> Switch register allocator over to using LoopInfo directly instead of indirectly through LoopDepthCalculator


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1696 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
4911c357e14a6972e7614c52ed87302b280f7c30 04-Feb-2002 Chris Lattner <sabre@nondot.org> Make LoopDeptCalculator be an internal artifact of how RegAlloc is implemented,
do not expose it. Additionally, have it be auto generated by the pass framework
for us.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1695 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
3e0f8288e774a88d837329d8f70c02fcbb7e3c69 04-Feb-2002 Chris Lattner <sabre@nondot.org> Make #include "llvm/Analysis/LoopDepth.h" be an internal artifact of how register allocation is implemented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1693 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
30adeb6d07e8017e890075d7904b2cefc89c603d 04-Feb-2002 Chris Lattner <sabre@nondot.org> * Add #includes removed from headers
* ValueSet interface converted from add/remove to insert/erase
* Minor cleanups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1689 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
f35f2fbbc29b593acfafb85846c4d83b90a505e7 04-Feb-2002 Chris Lattner <sabre@nondot.org> Remove dependence on BBLiveVar from InstrScheduling
Minor cleanups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1688 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedPriorities.h
2f9b28e59a1e10152cd32f2c717e89d47a2fd7e3 04-Feb-2002 Chris Lattner <sabre@nondot.org> Convert RegisterAllocator interface to opaque pass type, so that users do not
need to know _anything_ about RegAlloc to use it. Well in the end maybe.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1681 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
0a8ed9401dd5678f03752c2908890b32ba496b6b 04-Feb-2002 Chris Lattner <sabre@nondot.org> Add #includes neccesary since they were removed from .h files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1675 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
b99bd2b14501fe596de56120d8618042e48509e2 04-Feb-2002 Chris Lattner <sabre@nondot.org> Move instrIsFeasible from InstrScheduling.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1674 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.h
2182c785c22a3e805d7d38708e75e5d30c547fdf 04-Feb-2002 Chris Lattner <sabre@nondot.org> * Minor cleanups
* Reduce number of #includes, sometimes drastically (LiveRangeInfo.h lost _7_)
* Move instrIsFeasible() from InstrScheduling.h to SchedPriorities.h
* Delete blank lines at end of files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1672 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.h
egAlloc/PhyRegAlloc.h
egAlloc/RegAllocCommon.h
egAlloc/RegClass.h
77f66c131dd931b2a04c43f72068955a047bb2a4 04-Feb-2002 Chris Lattner <sabre@nondot.org> * Move command line parsing debug stuff to InstrScheduling internal header file
SchedPriorities.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1669 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.h
6dd98a6c317404b3b700573e6b3a7b627ba38ff4 04-Feb-2002 Chris Lattner <sabre@nondot.org> Split RegisterAllocation stuff OUT of Sparc.cpp into a well defined pass
that has a very minimal interface (like it should have).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1667 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
f2868ce228ca20f72d1c6fbe241de01975cfe609 03-Feb-2002 Chris Lattner <sabre@nondot.org> Code pulled out of MAchineInstr.(h|cpp)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1660 91177308-0d34-0410-b5e6-96231b3b80d8
achineCodeForInstruction.cpp
achineFunction.cpp
dd1e40b4ce5485e27a0369f5d46882cd4f6786c4 03-Feb-2002 Chris Lattner <sabre@nondot.org> Lots of code cleanups, no functional changes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1650 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
3801f6d38371b734d9de2fb8394ca75d2bf190eb 03-Feb-2002 Chris Lattner <sabre@nondot.org> * Prune #includes
* Remove MachineCodeFor(Method|VMInstr) code to their own .cpp files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1649 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
fb3b1ec98260d848dd9a4b74498994aec808e930 03-Feb-2002 Chris Lattner <sabre@nondot.org> * Switch over to cleaner TmpInstruction model


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1648 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
06cb1b738236969eb5bd804f950a2f2e2cfe5047 03-Feb-2002 Chris Lattner <sabre@nondot.org> * Straighten out #includes
* Switch to MAchineCodeForInstruction model instead of MachineCodeForVMInstr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1647 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
a8bbb6bcedda02058c5548b8eb99fcc1f348dde9 03-Feb-2002 Chris Lattner <sabre@nondot.org> * Swich to annotation model for MachineCodeForInstruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1646 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
de6dbabaee55de5693950ac5f8d7cb7cc10ba27f 03-Feb-2002 Chris Lattner <sabre@nondot.org> Remove extraneous #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1645 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
0861b0c3e6a5f66650b0027800ca8e64c6324d16 03-Feb-2002 Chris Lattner <sabre@nondot.org> * Straighten out #includes
* Switch from MachineCodeForVMInstr to MachineCodeForInstruction model


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1644 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
3462cae44fb12e22474e935e77d010f4461a6697 03-Feb-2002 Chris Lattner <sabre@nondot.org> * Get machine instrs from Instructin's by using MachineCodeForInstruction::get
* Convert a few (*X). to X->


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1643 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
29f4c06b7f12b0da25ee022014bd7e2a72b11142 03-Feb-2002 Chris Lattner <sabre@nondot.org> Add a class forward decl


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1637 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
92a12d5c6bf7df4f023000719cdb5c9a31542716 31-Jan-2002 Chris Lattner <sabre@nondot.org> LoopDepth calculation is now in CFG namespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1601 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
a16c3efb9faba1dadea565b0de89234086498ca2 23-Jan-2002 Chris Lattner <sabre@nondot.org> Make it build with 2.95.3


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1554 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.h
dbe5304f77215fd5d211e60c385fb01edf70b24a 21-Jan-2002 Chris Lattner <sabre@nondot.org> Oops lost a parenthesis somehow :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1504 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
697954c15da58bd8b186dbafdedd8b06db770201 20-Jan-2002 Chris Lattner <sabre@nondot.org> Changes to build successfully with GCC 3.02


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1503 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.cpp
nstrSched/SchedPriorities.h
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
achineInstr.cpp
egAlloc/IGNode.cpp
egAlloc/IGNode.h
egAlloc/InterferenceGraph.cpp
egAlloc/InterferenceGraph.h
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.cpp
egAlloc/LiveRangeInfo.h
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
egAlloc/RegClass.cpp
egAlloc/RegClass.h
ce773da22344a3942b41dc2019d839f3e9231c21 08-Jan-2002 Ruchira Sasanka <sasanka@students.uiuc.edu> Fixed a bug in spill cost estimation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1500 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegClass.cpp
6a3db8c117b75ebd87d5e7fff213570230d6c436 07-Jan-2002 Ruchira Sasanka <sasanka@students.uiuc.edu> PhyRegAlloc.cpp: Added temp area resetting before every call


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1499 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
4f3eb22e1fc8ee46cb8455f36162b5e7837473d8 07-Jan-2002 Ruchira Sasanka <sasanka@students.uiuc.edu> Added destructors and comments.
Added correct spill candidate selection logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1493 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.cpp
egAlloc/InterferenceGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
42bd177eae30b6bdef578b6efb21e6c609aa5204 07-Jan-2002 Ruchira Sasanka <sasanka@students.uiuc.edu> Added comments, destructors where necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1491 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.h
egAlloc/PhyRegAlloc.h
egAlloc/RegClass.h
fa24897f9f7b533a451baad86ab7e473c8d534e9 15-Dec-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Eliminate all uses of memInst->getIndicesBROKEN().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1485 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
7a1767520611d9ff6face702068de858e1cadf2c 04-Dec-2001 Chris Lattner <sabre@nondot.org> Renamed inst_const_iterator -> const_inst_iterator
Renamed op_const_iterator -> const_op_iterator
Renamed PointerType::getValueType() -> PointerType::getElementType()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1408 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.cpp
nstrSelection/InstrSelection.cpp
achineInstr.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
e9bb2df410f7a22decad9a883f7139d5857c1520 03-Dec-2001 Chris Lattner <sabre@nondot.org> Rename ConstPoolVal -> Constant
Rename ConstPool* -> Constant*
Rename ConstPoolVals.h -> ConstantVals.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1407 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelectionSupport.cpp
7061dc50b2513731d7b346ab16183cda4a44619f 03-Dec-2001 Chris Lattner <sabre@nondot.org> Split the PHINode class out from the iOther.h file into the iPHINode.h file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1405 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
cee8f9ae67104576b2028125b56e9ba4856a1d66 27-Nov-2001 Chris Lattner <sabre@nondot.org> Create a new #include "Support/..." directory structure to move things
from "llvm/Support/..." that are not llvm dependant.

Move files and fix #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1400 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.cpp
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
egAlloc/RegAllocCommon.h
4ed17bad69ef7f61bf6236e757732b9ecffa1c59 26-Nov-2001 Chris Lattner <sabre@nondot.org> Stuff after a #endif is not valid CPP input and breaks some compilers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1375 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
69a86e4e23de6811c7f63c22266da8ad8d365575 26-Nov-2001 Chris Lattner <sabre@nondot.org> The old getIndices has been deprecated, because it no longer works. It now
is named getIndicesBROKEN() and shall be removed when the codebase is updated
to not call it


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1338 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
f90870f622a18ae14d72d491eaf6e8dcfe431aff 15-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Commented some popTempArg.. since it leads to a bug


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1326 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
07c7086bd29b5c7223945cbdeae48494874de38f 15-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added naming to inserted phi copy values - for easy debugging


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1325 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
achineInstr.cpp
ba9d5dba2556de71bb8f3ecca5574450a0197949 15-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Fixed a bug in setReLRegsUsedByMI


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1323 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
825dd55429f6dfea37a6aeb095a1c0c48018c568 15-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Changed some names of methods, added const etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1322 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
egAlloc/PhyRegAlloc.h
7c47c7201d762c24bc6140b6e5a2ac511aec5cb1 15-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Modify AllocateLocalVar method to take a size argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1318 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f6dfca13955b1eef40745c2b18b81c0ae7f46d41 15-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> fixed setUsedRegAtMI


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1317 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
20ac79e3298d41be5a22ee8d27acc19eb358ca22 15-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Changed phi elimination code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1311 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
8d24337eea5f9462908b7ac07a997935e31ddd59 14-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Small changed to printing a machine operand - It the operand is a def, it prints
a star after it - only for debugging


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1309 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
ecd5813639e305d55ce8c2e3517228e819d5817b 14-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Don't assume constant operand can only be in position 1!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1308 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
9e29f780296feb1cddffbad640d2f813efc11b94 14-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Idiotic error in last fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1306 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
c81174515659e15f2907ec8ced09c6f775738dfa 14-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Don't need to load a NULL pointer constant from memory!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1305 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
cbddf49665ec3900f285b4972d571fcd90c99180 14-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added support method for setting interference for pseudo instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1303 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
22ccb1b90501893021c5dea546fd3cad0269c11d 14-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added interference for args in pseudo instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1300 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
65ea171409e8c25db20806fb09e820f46e3d11a2 14-Nov-2001 Chris Lattner <sabre@nondot.org> Remove much cruft from the MemAccessInst instruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1298 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelectionSupport.cpp
84dce16fb193b46d473dc4165f2ca71bd0f622d1 14-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> commented out lines printing code after scheduling


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1295 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
f221a2e0a8a37e8ee91ef9c98cac8eb5f8c3cbce 14-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Fixed a bug concering LR spilling. Earlier, added spilled code was not inserted
into the instruction stream correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1294 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
e85f2332dbdd7ed50635b9095d021b086d26f488 13-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Do the same for allocating spills to get their alignment right too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1285 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
00521d79bf4ee009f59e726a5eb227e04075f5c8 13-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> When allocating space on stack for writing a register,
use the size of the register, not the size of the Value type,
to get the right alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1284 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
e492c9d4d1a161cd0972bfb8bab33f073fb018b4 13-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Bug fix in offset alignment computations: don't subtract the padding
value from size *before* subtracting size from offset!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1283 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
7130938f94726af4c69bcce4d959c91ef024bdb8 12-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> For phi elimination, now we are generating only one instruction
using cpValue2Value instead of
passing vector to createCopyInstructionByType.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1272 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
200a4359661e5ef8ec952a088ecc723d4581f606 12-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Eliminate most uses of the machine instruction vector for each LLVM instr,
since some m. instr. may be generated by LLVM instrs. in other blocks.
Handle non-SSA (anti and output) edges and true edges uniformly by
working with machine instructions alone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1269 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
b2490fc4fbab28624aeef9cae6fcde31248ce797 12-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added phi elimination code - not final


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1264 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
d9beb975f20cea2d3e9c3f528068cd25b80a1b72 12-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Improved printing routines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1263 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
af00d485a409983639881b4d34f0cd89e1eb4d38 12-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Major improvement to how nodes are built for a BB.
LLVM instruction is no longer recorded in each node, but BB is.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1262 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.cpp
5567e942c03056cc566225e93a93f6516d73f305 12-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Adjust all stack variable offsets to be aligned by size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1261 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
f1a0a1081347ff6177b8b57dc16d841cde89e7fc 11-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Fix errors in computing downgrowing offsets, and in
computing size of extra outgoing args.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1256 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
5b43af962bea1e1e4ca0c8306e60bfbb39e6caba 11-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Only add true dep. edges from an earlier to a later instruction.
This wasn't a problem until we started putting copies for Phi values
that produced cycles in the SchedGraph!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1254 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
65480b75afbb856e91cf95d2a38bc784a2dc3d30 10-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Changed code to ignore Phi Nodes in PhyRegAlloc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1253 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
efaf9be8a44eb4c52981009ae8eb2a1e8af5fab6 10-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Coalesing bug fix - now checks for the same regType instead of the same
regClass since FP class has two reg Types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1236 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
ad1400924d9145b71d983c7ae37e38a12a3f0037 10-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> No major change


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1235 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
fb1a6c87d6ade700f6ef665588bd179b8a604dc5 09-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Use node->getOpCode() instead of node->getMachineInstr()->getOpCode().
Much nicer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1223 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
00d91c6cd8ecf8ec4c112bda8df3e57a45f59c33 08-Nov-2001 Chris Lattner <sabre@nondot.org> Add method decl


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1217 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
226f1f0b22853a879d142b848fa22e407efc9bd8 08-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> corrected insertCode4Spilled ... bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1212 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
5a61d85f9754e178ee434d27eed57e6d9a9b8971 08-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Uncommented LR spill code insertion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1207 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
e64574ce7198dc0967caf811dd295fd8df91409c 08-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Major change to how defs are found when adding dependences (they
are now found as part of the initial walk of the machine code).
Also memory load/store instructions can be generated for non-memory
LLVM instructions, which wasn't handled before. It is now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1199 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
af1d2c80e03b01e995e7a5cdbcdd625082a4ebfb 08-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> MachineCodeForMethod is now an annotation on class Method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1198 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
38f5d46affe2cd8837c69918b6387783cf73bff3 08-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Added two minor methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1187 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.h
12af164c87b57b275c4d9830e42b0dd23364c58a 08-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Removed class RegStackOffsets and used class MachineCodeForMethod
directly to manage stack frame.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1186 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
be49526193c5d8856d0b3c2721dfa6a4c4010d6d 08-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Major overhaul of stack frame management.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1185 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
achineInstr.cpp
d1565abd688daeff10f9398bd04df837b3d467ed 06-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Fixed bug - added code in pushUnconstrainedIGNodes() to check whether a node
is already pushed to stack by a previous call to the same method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1154 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegClass.cpp
04cc49be657c034e3427c452473bcf8e8b6e2583 06-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Bug fix: uninitialized variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1147 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegClass.cpp
c352d2c530d88e2f3960eefec65c2b70de40579a 05-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Modified graph construction to use one pass to find all defs.
Avoids having to handle some special cases that cause complex interactions
with instr. selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1138 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
df1c3b8398d1df253ebd389ac1068ec732a2f28f 05-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Make reg. numbers signed ints.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1137 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
8e7f4091695aad705f84398ede1fccc3796b1fad 04-Nov-2001 Chris Lattner <sabre@nondot.org> Minor method rename


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1119 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
a9e45c8d66b84971973d94a0c28cad770eac7cc4 03-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added an assertion since it seems like AdjList returns an errornous size in method
IGNode::pushOnStack().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1116 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.cpp
80b1a1a26aaebf13eda9ff6d9c9492b1a06a75de 03-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added support for correct spilling of %ccr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1112 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
51bc0e7994094662ad31ce8b1df8692b97900ba3 03-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Arranged stack frame - needs furhter organization


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1108 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
ef1b0cb9a5abc13750f67366d99a04d6bf7a2404 03-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Arranged stack frame - needs furhter organization
Moved InsertCallerSaveInstr to the SparcRegInfo.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1106 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
94e40ef064deec984d25eaceaf684795627f2d5b 28-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Record constants that need to be emitted in the assembly code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1010 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
d0d79c01b4e1f625c0b8d725626b2123dcae9c77 28-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Allow combinations of True/Anti/Output flags for each edge to
support, e.g., dependences on Call instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1009 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
a93bbac606cef2c5895a92b9630639d2209c16cf 28-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Add edges between call instructions and (a) load/store instructions, and
(b) any instructions that use or set CC registers. Whether or not the
latter are needed really should be machine-dependent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1008 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
20c82b12c909ed643e9b47f93a60fefc46753bcd 28-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added support for spilling


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@992 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
egAlloc/PhyRegAlloc.h
egAlloc/RegClass.h
174bded6ce100512679db768605611d3bdc3cec1 28-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added spill code support; moved insertCallerSaving to SparRegInfo since
we need to handle %ccr reg in a special way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@990 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
f7434f0e1d1b7f711d13749efeea18a5f364eeb5 23-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> added support to move "added instructions" after the delay slot


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@968 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
251d8db1331e75968231ad69976deb6c904caea3 23-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added support to move "added instructions" after the delay slot


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@967 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
c023be29a4efbcea096427029a610c12e6c2b2ac 22-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Use class MachineCodeForMethod to print machine code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@948 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
1d6158f98fb46ccf86af8285f066c8a513e453c5 22-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Added class MachineCodeForMethod.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@947 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
7ad104606557f7b46035556da4d912ad87792290 22-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Cosmetic changes only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@946 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
fb8c0533b46309296a3c404d58f6b5d7c337f0f1 22-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Modify code that processes delay slots so that it preserves any
useful instructions already inserted into delay slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@945 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
b3b6f5338c246ad1b209047cf9422fbf08fb1ddc 21-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added support for both call/jmpl instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@930 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
44d2b947cb05cf8cbb47ad6a3b63da41e24e2581 19-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added code to support unusable Suggested Colors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@922 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
egAlloc/PhyRegAlloc.h
0e62aa6d1425e26702b13692a56a966762dbb0d6 19-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added code to PhyRegAlloc to mark unusable suggested regs
Added initialization to AdjList to IGNode constructor - major bug fix


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@920 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.cpp
egAlloc/PhyRegAlloc.cpp
36f7707d2a06acfe4199a5533a60a9f50915ddf8 19-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Changed Call interference info


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@917 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
egAlloc/LiveRange.h
egAlloc/PhyRegAlloc.h
958faf3f5ac0804b264860ddb3d71fb3758aa8c4 19-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Corrected call interference bug


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@916 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
0fd8dc809975e6ac13fec7d2459d8d387e05a1fa 19-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> no major change


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@914 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
69917e27af9248cbce98bb56f1e1b5286aede759 19-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added implict operand printing for operator( ostream, MachineInstr&)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@912 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
97b8b4410a43bfef4e09a8db855e671b5013d060 19-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> removed some debug messages


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@910 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
6d35326cd549163a9af189dddca45c92f6014242 18-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> 1. Add a bottom-up pass on BURG trees that is used to fix constant operands.
Needs to be bottom up because constant values may be forward-substituted
to their uses (i.e., into the parent in the BURG tree).
2. Move most of the constant-fixup code into machine-indepedent file
InstrSelectionSupport.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@859 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
nstrSelection/InstrSelectionSupport.cpp
achineInstr.cpp
f43e3366efa9a3a9f54f886bd6022c2f003adf53 18-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Separate VM instruction that generates the instructions that compute a value
from the value itself (the one causing an edge) because the latter may be
a temporary used within the instruction sequence for the VM instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@858 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
85b46d6c6d2fa35c271b1fce7afa01546511c465 18-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@857 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
1b732fd0d628052be7709d393ced28980c0cd027 16-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> changed debugg message printing - no change to useful code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@850 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
47c1372e09fd371cb928c7073abfa62a6f24d246 16-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> No major change - commented some debug code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@849 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
c4d4b76efbe57025525edf75d6b91cec363d2fc4 16-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added support for caller saving


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@847 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAlloc.h
egAlloc/RegClass.cpp
634b352fa6ccb7313520dcf552359569bf1b7f47 15-Oct-2001 Chris Lattner <sabre@nondot.org> Print Debug Code to stderr instead of stdout so that it doesn't mess up the assembly output


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@841 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
egAlloc/RegClass.h
1e23ed7c653bb73984766cd3868da4d372ac47f8 15-Oct-2001 Chris Lattner <sabre@nondot.org> Output to cerr rather than cout so that debug info doesn't mess up assembly generation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@840 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAlloc/RegClass.cpp
a90e77061d52076d9edf09b2f1ae42db04ff14d4 15-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> updated suggesting/coloring of call & return args & implicit operands.
Changed added instr to a deque (from a vector)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@831 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
21721b63c3b5a314dfa0be14823b10273860787c 15-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> fixed a coalscing bug


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@828 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.h
egAlloc/PhyRegAlloc.h
80c685ff1569c899cc941297882af52ea1186579 13-Oct-2001 Chris Lattner <sabre@nondot.org> * Fix privacy issues on RegToRefVecMap
* Fix initialization order problems...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@762 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
d33238bb7b6ba1606061a6108e791339b8576c46 12-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> --corrected coalescing test: coalsed only if two are of the same reg class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@729 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
8d0ffa553fda8d3fe8bfbeb7a10f98c46f8afb4c 11-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Add graph edges due to implicit refs in each machine instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@724 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
6db77c55ff6c591739b41a5a5666c304405952f0 10-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Don't insert useful instructions in delay slot of a RETURN.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@721 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
a1d14f3555e6726198c892c3417e6366ee75d2b3 10-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Machine-independent code generation routines used in instruction
selection. These used to live in several different places before.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@719 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelectionSupport.cpp
9aba1d3307a3ce4a30fa95a08b6b68c445a49b8a 10-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Moved code generation support routines to InstrSelectionSupport.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@717 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
achineInstr.cpp
b00c582b6d40e6b9ff2d1ed4f5eaf7930e792ace 02-Oct-2001 Chris Lattner <sabre@nondot.org> Commit more code over to new cast style


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@697 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSelection/InstrForest.cpp
1d87bcf4909b06dcd86320722653341f08b8b396 01-Oct-2001 Chris Lattner <sabre@nondot.org> Convert more code to use new style casts
Eliminate old style casts from value.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@696 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
nstrSelection/InstrForest.cpp
achineInstr.cpp
9636a91649f168f41b477cba705287665e054f79 01-Oct-2001 Chris Lattner <sabre@nondot.org> Add support for new style casts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@694 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
71939033dee310ad85d3ef10691b6588e4cd4fe5 01-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> removing phy regaloc - incorrect file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@682 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAloc.cpp
64c2cedd6623770b3914942c7f3024598061dc40 01-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Change ! ( ...== ...) to !=.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@680 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
e949da5bb18f89de40b6781237dfe616cba7bfc9 01-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Improved dump for disp type operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@679 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
c5b4632c27566de7c3fc6679b43d7da4f4a29666 01-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Bug fixes:
(1) Ensure that delay slot instructions are not moved out of place (this
was happening for some CALL instructions). Basically, we need to
move all delay slot instructions out of the graph and handle them
along with the delayed control transfer instruction.
(2) Mark scheduled instructions correctly when instructions are scheduled
in more than one cycle in a single step (due to delay slots).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@678 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
4a87b38ba9ce13fd24d469a36360e947c01c12c9 01-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Minor changes for bug fixes in SchedGraph.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@677 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
5316f8fa2f2714e243f2dea787025f01f6750d07 01-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Two bug fixes:
(1) Add edges for Values that are written by multiple m/c instructions
(2) Add edges for LLVM operands that are not machine operands (e.g., Call args)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@676 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
ab304c42c2d7c3ab1109c423774bddb85867715f 01-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> added suggesting color support


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@673 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.h
egAlloc/PhyRegAlloc.h
a5ab9648a8e295a84817327d96ed4f83fa468d0c 01-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> --added suggesting colors; call/ret arg handling


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@670 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
3ff4387113d7e74a8aa73f80c3518cb95f09a64b 29-Sep-2001 Chris Lattner <sabre@nondot.org> Pull iterators out of CFG.h and CFGdecls and put them in Support directory


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@664 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.cpp
nstrSched/SchedPriorities.h
24fad613ba086343c55031067c6eb3808be9e3a5 20-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> -- removed debugging messages


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@651 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAloc.cpp
23d95af6326086aec0c667f00ebc1b6a1bbfc7ec 20-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> -fixed return value bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@650 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAloc.cpp
045e7c8434cc9b61413c0b4df3b8568e79fe28bf 19-Sep-2001 Chris Lattner <sabre@nondot.org> Change debug info from #define to command line option
Clean up extra debug info that wasn't guarded


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@647 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.cpp
6edcad89e7d5ff58dc347206e8d0c5c7a6459505 19-Sep-2001 Chris Lattner <sabre@nondot.org> Change debug info from #define to command line option


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@646 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegAllocCommon.h
4c3aaa4adb12aa140742eaa1f9e79c2bebf14596 19-Sep-2001 Chris Lattner <sabre@nondot.org> * REMOVE extraneous debug info if DEBUG_RA is not set
* Spell PhyRegAlloc right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@645 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAlloc.cpp
egAlloc/PhyRegAloc.cpp
80acc6cf43af185f406cbe29b3ba902a3528717f 19-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@634 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
e727f8553d713536f1ed8302019deeb8ab880602 19-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> -- updated printing


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@631 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAloc.cpp
7e5450312d6d8de18f4a4846cb40789f89c75299 18-Sep-2001 Chris Lattner <sabre@nondot.org> Remove a copy of a bunch of code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@630 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAloc.cpp
921b5e14715f241b5050dfbe063621ded1344893 18-Sep-2001 Chris Lattner <sabre@nondot.org> Don't check for null on delete


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@624 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
137f7202c75d44903d0df89971396684bcc66212 18-Sep-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Cast unsigned to int! It was causing a nice little bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@614 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAloc.cpp
6e447181928b95902c38ea89e57bc835ecd83cb5 18-Sep-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Minor changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@613 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
achineInstr.cpp
4c31fb5fbb9c2a3feaf9d8cc565f85cb805a8125 18-Sep-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Don't add instructions to subtree for Phi or Call.
Free tree nodes when done.
Avoid obscuring code with for_each and bind_obj :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@612 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
fe30f1f664500c6cd99baf02cae0fc3680864323 18-Sep-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Format file header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@611 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.cpp
f0ba28045f28b331fe722c21c9dfcaefbdbc393d 18-Sep-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Add new entry/exit edges when removing delay slot nodes from the graph.
Renamed some header files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@610 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
8b6d2456934612cc61b2ccafe3c3146c78dfbdb0 18-Sep-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Moved erase edge functions to class SchedGraph.
Add new dummy edges when deleting existing edges.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@609 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
851d44c52245ffaa4ad313204e78900c5fc3c9b5 18-Sep-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Renamed some header files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@608 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.h
f0b6d7960c26c5a2422f12448429eb460635fe01 18-Sep-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Moved erase-edge functions from SchedGraphNode to SchedGraph.
Renamed some header files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@607 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
4bc86976bb14ce66b734a534351a4e9fb027d17d 18-Sep-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Minor fixes: renamed target machine files; fold sched info into TargetMachine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@603 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegClass.h
6b0a8b5b1af555e7c902ccc806dbb7372e15b026 15-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> modified machine code printing


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@595 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAloc.cpp
6053b9337bedd7fdcdea3742199708d2f173d878 15-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> --added methods for printing


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@592 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/PhyRegAlloc.h
ed8f674b9a18312886355288ac49f9a2dd5e4e94 15-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> added setRegForValue to MachineOperand class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@591 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
0931a01f57c2ebcf7a35b5d2f1a6971822336f3b 15-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> fixed printing messages


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@590 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAloc.cpp
egAlloc/RegClass.cpp
4d0d6329274771168be50a77da57a892a86ea45b 15-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> -- debug messages dissabled


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@589 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/RegAllocCommon.h
1bf6d645cd8e167851660e841276dcc53be0e344 15-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> --reg alloc code added


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@587 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRangeInfo.h
egAlloc/PhyRegAlloc.h
egAlloc/RegClass.h
1f3b29fc72972c84a7c2f742ddd028dbd86dc0c9 15-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> -reg alloc code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@586 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/Makefile
1506aef6d4c31e1f8ddc31b1d838e2b10b9694be 14-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> added RegAlloc Directory to DIRS


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@581 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
8e6047920dbf22a1edcbd98e65a8bc57a56c0e17 14-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@580 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.cpp
egAlloc/InterferenceGraph.cpp
egAlloc/LiveRangeInfo.cpp
egAlloc/PhyRegAloc.cpp
egAlloc/RegClass.cpp
c0c77083ba7915fabbe86065a77f2b7bb5636bef 14-Sep-2001 Chris Lattner <sabre@nondot.org> Add a forward decl, oops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@573 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.h
46cbff625eb9593cf9ddac415c39311a54aa27fa 14-Sep-2001 Chris Lattner <sabre@nondot.org> Chris seems fond of #include <vector>. Fix these. Also convert use list in
Value to a vector instead of a list.

Move SchedGraph.h & SchedPriorities.h into lib/CodeGen/InstrScheduling


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@572 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
nstrSched/SchedGraph.h
nstrSched/SchedPriorities.cpp
nstrSched/SchedPriorities.h
e5bc8b06533ba0f50403158a63f99a0c83da0493 14-Sep-2001 Chris Lattner <sabre@nondot.org> Split Target/Machine.h into three files:
* Machine.h
* InstInfo.h
* SchedInfo.h

TODO: Split out reg info stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@567 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
egAlloc/RegClass.h
b26bcc5087029ffe8037ed9036ff74430c6054cf 14-Sep-2001 Chris Lattner <sabre@nondot.org> Make a new llvm/Target #include directory.
Move files from lib/CodeGen/TargetMachine to lib/Target
Move TargetData.h and TargetMachine.h to Target/{Data.h|Machine.h}
Prepare to split TargetMachine.h into several smaller files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@566 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
nstrSched/SchedGraph.cpp
akefile
egAlloc/RegClass.h
argetMachine/Makefile
argetMachine/TargetData.cpp
argetMachine/TargetMachine.cpp
f6e0e2813526b4ebea473427ea5ffd88bb1559ac 14-Sep-2001 Chris Lattner <sabre@nondot.org> Checkin changes to:
1. Clean up the TargetMachine structure. No more wierd pointers that have to
be cast around and taken care of by the target.
2. Instruction Scheduling now takes the schedinfo as an argument. The same
should be done with the instinfo, it just isn't now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@565 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
f6374bfd69f9acd7c128ca44f933df77614bcefd 14-Sep-2001 Chris Lattner <sabre@nondot.org> Move the sparc target to a new lib/Target directory


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@562 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Makefile
1fddfd18abde2578a487bb247110acfd2226d62b 14-Sep-2001 Chris Lattner <sabre@nondot.org> Move the contents of the CodeGen/TargetMachine/Sparc directory to Target/Sparc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@560 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Makefile
argetMachine/Sparc/Sparc.burg
argetMachine/Sparc/Sparc.cpp
argetMachine/Sparc/SparcInstrSelection.cpp
argetMachine/Sparc/SparcInternals.h
argetMachine/Sparc/SparcRegInfo.cpp
argetMachine/Sparc/SparcRegInfo.h
0e6530ee1b2641060736e161425e759c051a3544 14-Sep-2001 Chris Lattner <sabre@nondot.org> This checkin represents some cleanup of the backend, implementing the following things:

1. The TargetMachine structure is free to decide the process a particular target uses to generate code.
2. All of the gooee details of the sparc backend are now localized in the lib/CodeGen/TargetMAchine/Sparc directory. The Sparc.h file that is globally visible is just a stub.
3. The Sparc.h file that esxists now will dissapear entirely someday when we have multiple backends chosen by a factory of some sort.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@559 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
egAlloc/PhyRegAlloc.h
argetMachine/Sparc/Sparc.burg
argetMachine/Sparc/SparcInstrSelection.cpp
argetMachine/Sparc/SparcInternals.h
argetMachine/Sparc/SparcRegInfo.cpp
argetMachine/Sparc/SparcRegInfo.h
d8dc93d0ac1e4f0c6413eef2b48972ebfcef884d 14-Sep-2001 Chris Lattner <sabre@nondot.org> Updates to use local header files.

Note that this reverted changes that Ruchira commited that broke the build and
are unmaintainable without other checkins.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@557 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Sparc.cpp
5f6baf78ea26168d328444f15bc1da355afd88a8 12-Sep-2001 Chris Lattner <sabre@nondot.org> More cleanups, preparing to revamp InstrForest to, among other things,
not leak all its allocated memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@553 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
argetMachine/Sparc/Sparc.burg
4ddb4c82d7451f7ab0269a4d0ca948f96e80402e 12-Sep-2001 Chris Lattner <sabre@nondot.org> * Clean up InstrForest
* Fix ins sel problem, test case:
void "foo" (int *%x, int *%y)

begin
seteq int *%x, %y
ret void
end


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@552 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
argetMachine/Sparc/SparcInstrSelection.cpp
d268ad6e2e6c224c688a8e2a51de706e9e6f8165 12-Sep-2001 Chris Lattner <sabre@nondot.org> Eliminate 'BasicNode' from InstrForest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@551 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
argetMachine/Sparc/Sparc.burg
argetMachine/Sparc/SparcInstrSelection.cpp
c2a2396e17f8fd6c78afd81368d2b80e8cfe6c42 12-Sep-2001 Chris Lattner <sabre@nondot.org> Eliminate MainTreeNode function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@550 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
achineInstr.cpp
974e73a086e5faf8a3ebeec86df78abe4c4b248b 12-Sep-2001 Chris Lattner <sabre@nondot.org> Remove irrelevant gross K&R Cisms


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@549 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Sparc.burg
c4e09ec453af406db7dc92e7d994d727edc7663b 10-Sep-2001 Chris Lattner <sabre@nondot.org> Use type checking predicates


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@543 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/SparcInstrSelection.cpp
79a4aeb61c5af98e39dd657d7fff952908540de6 10-Sep-2001 Chris Lattner <sabre@nondot.org> Use correct casts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@542 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/TargetData.cpp
1a4f8ae3c8f859b5ff6a84ba93810b563e8015d6 10-Sep-2001 Chris Lattner <sabre@nondot.org> Use predicate for Value type test
Use builtin casts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@541 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
919758563deb865be67c7f861a9dfd2da4a895c8 10-Sep-2001 Chris Lattner <sabre@nondot.org> Use predicate for Value type test


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@540 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
b221a763862ccaed46dee3fbf56c384981d84fbd 10-Sep-2001 Chris Lattner <sabre@nondot.org> Fix a bug I introduced (assertion failed: Unknown operand type), and convert to predicate style for type checks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@531 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
52bdd8aaa34f2244ec426f3fd0f77992c31608d0 10-Sep-2001 Chris Lattner <sabre@nondot.org> Implement the subset of the GetConstantValueAsSignedInt function that is needed, locally. Remove the two support functions to inline their contents.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@525 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/SparcInstrSelection.cpp
990f2a5a1a0b16d0dc07cee486033c0a3864334e 10-Sep-2001 Chris Lattner <sabre@nondot.org> Implement the subset of the GetConstantValueAsSignedInt function that is needed, locally.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@524 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
e6fdb11e1ae823d69e646e76828ccb5d427a9d3a 10-Sep-2001 Chris Lattner <sabre@nondot.org> Fix problems with freeing memory twice


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@520 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9856e0c56bb13465cb7002d86ba600915ea1dc9a 09-Sep-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Handle cast float-to-float or cast double-to-double.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@512 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/SparcInstrSelection.cpp
56786d268feeb6d0e895b6c4cba60139285c47d6 09-Sep-2001 Chris Lattner <sabre@nondot.org> Fix build breakage. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@511 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
2e5309304a06b5f8b7356af806141972d4df827b 09-Sep-2001 Chris Lattner <sabre@nondot.org> I really don't like it when people break the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@510 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
7cd2ca13c1920e9db68695a364048cb6586bb324 08-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Committed for compliation. Not yet final.
--Ruchira


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@505 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/InterferenceGraph.h
egAlloc/PhyRegAlloc.h
egAlloc/RegAllocCommon.h
egAlloc/RegClass.h
c7136d2b09a796528d7ce790190394dceb3ab6c3 08-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> --Ruchira


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@504 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/LiveRange.h
egAlloc/LiveRangeInfo.h
1fa0c09e9deb4c680d26f304921e940cf549fe0e 07-Sep-2001 Chris Lattner <sabre@nondot.org> Updates to work with new lack of constant pool


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@490 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/SparcInstrSelection.cpp
15dedbc585b45ede9497d2084b8d54aa5c56e6b9 07-Sep-2001 Chris Lattner <sabre@nondot.org> Remove unneeded #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@489 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.cpp
c83e954025206605f253498f62f4c1bd218646fb 07-Sep-2001 Chris Lattner <sabre@nondot.org> Remove unnecesary #include add dump calls pulled out of .h file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@488 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
1ff63a121764f9fbda839bf5e4a31f1c9ffade44 07-Sep-2001 Chris Lattner <sabre@nondot.org> * Remove lots of #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@487 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
1b40a1bacd72494b01ae29d85d8509ff35ddd25b 07-Sep-2001 Chris Lattner <sabre@nondot.org> Add tags so emacs knows these are C++ files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@483 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
822b4fb896846b87dd11a330ae13f2239329aeef 07-Sep-2001 Chris Lattner <sabre@nondot.org> The header file for a translation unit should always be included first
System headers should be last


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@475 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
feb60593438460fc237353570d2df70153b95f2f 07-Sep-2001 Chris Lattner <sabre@nondot.org> A file should always include it's private header file *FIRST* see the
coding guidelines


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@474 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
97b7311e9f639dcd26c85ade79b54f2ccf9695cf 07-Sep-2001 Chris Lattner <sabre@nondot.org> annotations are now const


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@450 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/TargetData.cpp
f2a6477aee0939b18f2d32e6bd2809cb444cfc04 31-Aug-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@412 91177308-0d34-0410-b5e6-96231b3b80d8
egAlloc/IGNode.h
argetMachine/Sparc/Sparc.cpp
argetMachine/Sparc/SparcRegInfo.cpp
840f53ae8ea31f31c11ef555a3faf1d9b1fa8a4b 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Added nonterminals for arithmetic operations where one operand is constant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@406 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Sparc.burg
59e3b8220a0acf736bccb2231089e8981591c517 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Makefile for InstrSched/


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@403 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/Makefile
3b4d062eb37f14023293d8cace5845d04f10b52e 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Remove source list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@402 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/Makefile
4c182bf16fac4741a2b7346978a017e1d431ae41 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Added directory InstrSched.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@401 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
d4228a50669a7b0050ce911f9f02812cf940b4e6 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Major changes too hard to document :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@400 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/SparcInstrSelection.cpp
24084be5f2c94f0a988d5c8d302047b69b21a9a8 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Extensive additions for supporting instruction scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@398 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Sparc.cpp
bf2423369184b30c538c5c4e0fe005c6a30d44d6 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Added class MachineSchedInfo and several supporting classes
as a machine description for instruction scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@397 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/TargetMachine.cpp
0e1158f3401ca3c3407b6fb5b5250538b04dae1c 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Implementation of instruction scheduling for LLVM.
Currently schedules one basic block at a time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@396 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/InstrScheduling.cpp
37866b34376c3143006efde1b544cfce688f7ea9 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Class that encapsulates priority heuristics for instruction scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@395 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedPriorities.cpp
78ef1392f3c61ba71683437d895a26269cd6d916 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Scheduling DAG for instruction scheduling. Currently for a single basic block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@394 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSched/SchedGraph.cpp
89df1ae2c3243a8af03da57d4edf626bf4a6e597 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Moved debug options declaration to header file, and moved
a function to MachineInstr.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@393 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
5b79591450c47920139705712a402251af7eed79 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Moved function PrintMachineInstructions here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@392 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
9ff64a8c635d0212fd7c97564d384ec583e23f5d 27-Aug-2001 Chris Lattner <sabre@nondot.org> I suck


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@385 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/TargetData.cpp
e7fb36030bbaa56bfa46a9d62f96f84863f75908 27-Aug-2001 Chris Lattner <sabre@nondot.org> Initial checkin of TargetData code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@384 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/TargetData.cpp
e3860e5be5f3bbbfbe27a097aa38ba21f08e3961 27-Aug-2001 Chris Lattner <sabre@nondot.org> Convert to use the new factored out TargetData class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@381 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Sparc.cpp
argetMachine/Sparc/SparcInstrSelection.cpp
3a13c7e56fe7dd722ce8b9be6b4fde7f37569800 27-Aug-2001 Chris Lattner <sabre@nondot.org> Factor code out to the TargetData class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@380 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/TargetMachine.cpp
be88fd03e6d2d9eb8ce570031ce011cb5a6bfd35 27-Aug-2001 Chris Lattner <sabre@nondot.org> Demolish explicit source list


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
d6075728d26a27f49fb9fe7f5c2cd2e49c31ec8c 25-Aug-2001 Chris Lattner <sabre@nondot.org> Remove explicit source list


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Makefile
149977b48a02735861697d5b4df1fe5a8592245f 13-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Always set isDef for operand in position resultPos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
b0cdcda42a99b5fb4d99c773006acb175ef391a0 13-Aug-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Changed SetMachineOpernad calls in Set3OperandsFromInstr so that the
result position is a def (i.e., added true to the end of call) -- Ruchira


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
81cb20775a5bf9511020ac51b75094a83209e11f 13-Aug-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Changed case 64 to make the first arg of phi a defintion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/SparcInstrSelection.cpp
0b03c6a492a0e09049b6c0bd127bd0ede7732aa5 07-Aug-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
45c171ee25619f6650e90fa5e3102d9969fd82b3 07-Aug-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> added a default isDef arg to SetMachineOperand method - Ruchira


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
98a9c979e271ee24bf5f87baed5050cf9c8b236d 06-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Add CC operand as 4th operand of SUBcc, and mark it as a def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@348 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/SparcInstrSelection.cpp
0fae90e3a2de718e4d3ea1d23ae989024152b795 06-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Also, move burg rule to Makefile.common.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@346 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Makefile
811aad97c1f2b02278e807b854a27db113dc265b 06-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Better still, lets move pathname for Burg to Makefile.common.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@344 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Makefile
735c4ce808893ef95e23fc5d0a5152d0b636b75e 06-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Use full pathname for burg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Makefile
960066ad75e1dce3b908c6b211b3d69974380246 31-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Simplify command line options, and add option for printing
machine instructions without debugging info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
769939dbde3557fc6ec65714aac0e213a917f245 31-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Added tree nodes for Phi instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Sparc.burg
e4e77f9efced5862bc8e8f4d5f13dca70c68678c 31-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Generate tree nodes for Phi instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
1885da4f49cf32efde2d4c840365c4333a0c8579 31-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Allow machine instructions with variable numbers of arguments.
This is used only by Phi for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
74f4a130d2b4542668bd8b760462ed642b25f075 31-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Generate dummy Phi machine instruction, plus a bug fix for BrCond(boolreg).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@334 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/SparcInstrSelection.cpp
76d3520f3e2d9c3ff306155a32ddedfcfa26ad16 30-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Record machine instructions in the vector for each basic block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@331 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
3c3b713d55da4f0d13578c38644607716bebcca0 28-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Added UltraSparcInstrInfo class to specialize class MachineInstrInfo.
Relevant changes elsewhere:
Added MachineInstrInfo class and moved instruction-related members there.
Added several fields to MachineInstrDescriptor (and renamed it from
MachineInstrInfo. Latency fields are to support scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Sparc.cpp
9b0b1ec1ecc14d46a9e6e50e3ba4c054de239d83 28-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Eliminate unused function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
4f231661338dba94d3ba9c3c2dbbeff4fab85597 28-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Bug fixes:
Store bool result in register after SetCC if the bool value
is used by anything other than a branch.
Forward-substitute operand of a VM instruction for which no
machine instruction is generated (e.g., Cast).
Other changes due to changes to classes TargetMachine and MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/SparcInstrSelection.cpp
44a853cc530e13b3a9aa2692680a8c4c1006af85 28-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Added MachineInstrInfo class and moved instruction-related members there.
Added several fields to MachineInstrDescriptor (and renamed it from
MachineInstrInfo. Latency fields are to support scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/TargetMachine.cpp
6a175e01eb164baac5cc16311c474ff644ce17c1 28-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Eliminate separate enum for operand register type.
Use union for alternative data for different operand types.
Add iterator over Value* operands in a MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307 91177308-0d34-0410-b5e6-96231b3b80d8
achineInstr.cpp
1e78f36127fb0e405d2cf893e2ce3381300a667b 23-Jul-2001 Chris Lattner <sabre@nondot.org> CommandLine library cleanup. No longer use getValue/setValue, instead, just treat the commandline
args as the objects they represent and the "right thing" will happen


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
4bc3daaa3f3c9f22d5dd695e987e8d20f999791c 23-Jul-2001 Chris Lattner <sabre@nondot.org> Eliminated the Unique class in favor of NonCopyable and NonCopyableV


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
achineInstr.cpp
57dbb3ad63b6a0e77798edb156ef43daa3bfc67e 23-Jul-2001 Chris Lattner <sabre@nondot.org> Moved inline/llvm/Tools/* to include/llvm/Support/*


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
75279ccc759499704655a581bacb8dafb3c32b71 23-Jul-2001 Chris Lattner <sabre@nondot.org> Clean up hash table usage
Remove opaque pointer used for C compatibility which isn't an issue


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
6c5a32d545f65623fcbb69937406f80e0715931a 23-Jul-2001 Chris Lattner <sabre@nondot.org> Removal of the redundant CompileContext wrapper


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
argetMachine/Sparc/SparcInstrSelection.cpp
8f367bd3c0f56b7b318c46cee04f77735f617777 23-Jul-2001 Chris Lattner <sabre@nondot.org> Large scale changes to implement new command line argument facility


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
aceb9132b7c0f2b22a2e51d523d0bd46f2cb3817 22-Jul-2001 Chris Lattner <sabre@nondot.org> Privatize LLCOptions. It had no business being visible to the entire
program.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@267 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
68498cefe602bf5364168b4acd0bd5806cdd72ec 22-Jul-2001 Chris Lattner <sabre@nondot.org> Eliminate lots of unnecessary #includes and forward decls
there are probably more to kill


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
achineInstr.cpp
argetMachine/Sparc/Sparc.cpp
argetMachine/TargetMachine.cpp
942d99e4c8922af40345dce1f886a34d621462c7 22-Jul-2001 Chris Lattner <sabre@nondot.org> Eliminate many unneccesary #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
51a9ad93af64476678de425357955cef97e69bec 22-Jul-2001 Chris Lattner <sabre@nondot.org> Make code fit in 80 columns more


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/SparcInstrSelection.cpp
36765b0c3ff1f8ec86e02bc73e8ef8caad0c954e 22-Jul-2001 Chris Lattner <sabre@nondot.org> Remove unneccesary #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrSelection.cpp
57738965f8687f9f1fca5d444e7a0c173eafb31e 22-Jul-2001 Chris Lattner <sabre@nondot.org> Exterminate nasty Cisms


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Makefile
e23fb7c8ee180fe1783c3ecd7b776678f0cc4636 22-Jul-2001 Chris Lattner <sabre@nondot.org> Refer to include/llvm/CodeGen not Codegen


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@256 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Sparc.burg
7e583cfafeb07713e5ceadcfe28b70111a528d97 21-Jul-2001 Chris Lattner <sabre@nondot.org> Renamed include/llvm/Codegen to include/llvm/CodeGen


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
achineInstr.cpp
argetMachine/Sparc/Sparc.cpp
argetMachine/Sparc/SparcInstrSelection.cpp
argetMachine/TargetMachine.cpp
a21cf20411c595c81598a53b560a757d9daf299a 21-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Description of the SPARC as a target architecture.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Sparc/Makefile
argetMachine/Sparc/Sparc.burg
argetMachine/Sparc/Sparc.cpp
argetMachine/Sparc/SparcInstrSelection.cpp
daae69927f2fe65b15cf68fbbc4c6099e2afc009 21-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Base clas for a description of a target architecture.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232 91177308-0d34-0410-b5e6-96231b3b80d8
argetMachine/Makefile
argetMachine/TargetMachine.cpp
70bc4b5d1a3795a8f41be96723cfcbccac8e1671 21-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Instruction selection via pattern matching on instruction trees using BURG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231 91177308-0d34-0410-b5e6-96231b3b80d8
nstrSelection/InstrForest.cpp
nstrSelection/InstrSelection.cpp
nstrSelection/Makefile
achineInstr.cpp
05f4745c01db6705edc0c08f12a8da7c3d4f5910 21-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230 91177308-0d34-0410-b5e6-96231b3b80d8
akefile